Re: [PATCH v4 5/6] at24: Support probing while off

From: Sakari Ailus
Date: Tue Aug 11 2020 - 04:00:45 EST


Hi Bartosz,

On Mon, Aug 10, 2020 at 08:12:00PM +0200, Bartosz Golaszewski wrote:
> On Mon, Aug 10, 2020 at 10:26 AM Sakari Ailus <sakari.ailus@xxxxxx> wrote:
> >
>
> [snip]
>
> > >
> > > Rafael: I think that there are two issues with patch 1/5:
> > > 1. It adds a very specific boolean flag to a structure that's meant to
> > > be very general. As I pointed out in the i2c patch: at the very least
> > > this could be made into an int storing flag values, instead of a
> > > boolean field. But rather than that - it looks to me more like a
> > > device (or bus) feature than a driver feature. Is there any ACPI flag
> > > we could use to pass this information to the driver model without
> > > changing the driver structure?
> >
> > To my knowledge there isn't. The fact that I²C devices are powered on for
> > probe in ACPI based systems is specific to Linux kernel and not ACPI as
> > such.
> >
> > The reason this needs to be in a generic struct is that the device's power
> > state will be changed before any interaction with the driver takes place as
> > it's the I²C framework that powers on the device.
> >
>
> I'm not sure I'm following. Looking at patch 1/6 struct device already
> exists so why can't this information be conveyed "per device" as
> opposed to "per driver"?

It's both driver and device.

Suppose there's no indication of driver support. If you add the property
telling the device shouldn't be powered on for probe, it won't be. And if
the driver doesn't support that, probe will fail. That could happen e.g.
when running an older kernel on a system that happens to specify this
property for a given device.

You could view this as a driver bug of course. I still think it's better to
make driver support for this explicit, and avoid making this a practical
problem anywhere.

--
Kind regards,

Sakari Ailus