Message ID | 20200901210333.8462-1-sakari.ailus@linux.intel.com |
---|---|
Headers | show |
Series | Support running driver's probe for a device powered off | expand |
On Tue, Sep 1, 2020 at 11:03 PM Sakari Ailus <sakari.ailus@linux.intel.com> wrote: > > Document the probe-low-power _DSD property and how it is used with I²C > drivers. I would reorder the series to make this go right after the [1/6] or maybe even fold it into that patch. The point is that the changes in [1/6] clearly depend on the property defined here. > Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> > --- > .../acpi/dsd/allow-low-power-probe.rst | 28 +++++++++++++++++++ > Documentation/firmware-guide/acpi/index.rst | 1 + > 2 files changed, 29 insertions(+) > create mode 100644 Documentation/firmware-guide/acpi/dsd/allow-low-power-probe.rst > > diff --git a/Documentation/firmware-guide/acpi/dsd/allow-low-power-probe.rst b/Documentation/firmware-guide/acpi/dsd/allow-low-power-probe.rst > new file mode 100644 > index 0000000000000..6fcc89162b898 > --- /dev/null > +++ b/Documentation/firmware-guide/acpi/dsd/allow-low-power-probe.rst > @@ -0,0 +1,28 @@ > +.. SPDX-License-Identifier: GPL-2.0 > + > +====================================== > +Probing I²C devices in low power state > +====================================== > + > +Introduction > +============ > + > +In some cases it may be preferred to leave certain devices powered off for the > +entire system bootup if powering on these devices has adverse side effects, > +beyond just powering on the said device. Linux recognizes the _DSD property > +"allow-low-power-probe" that can be used for this purpose. It would be good to refer to the document defining the generic _DSD properties mechanism and the GUID used for that from here. The meaning of "_DSD property" may not be entirely clear to the reader as it stands. And maybe call the property "i2c-allow-low-power-probe" or similar, to indicate that it is specific to i2c. > + > +How it works > +============ > + > +The property "allow-low-power-probe" boolean property may be used to tell Linux "boolean device property" ? > +that the I²C framework should instruct the kernel ACPI framework to leave the > +device in the low power state. If the driver indicates its support for this by > +setting the I2C_DRV_FL_ALLOW_LOW_POWER_PROBE flag in struct i2c_driver.flags > +field and the "allow-low-power-probe" property is present, the device will not > +be powered on for probe. > + > +The downside is that as the device is not powered on, even if there's a problem > +with the device, the driver likely probes just fine but the first user will > +find out the device doesn't work, instead of a failure at probe time. This > +feature should thus be used sparingly. It would be good to give an ASL example with this property provided. > diff --git a/Documentation/firmware-guide/acpi/index.rst b/Documentation/firmware-guide/acpi/index.rst > index ad3b5afdae77e..0070fcde9e669 100644 > --- a/Documentation/firmware-guide/acpi/index.rst > +++ b/Documentation/firmware-guide/acpi/index.rst > @@ -11,6 +11,7 @@ ACPI Support > dsd/graph > dsd/data-node-references > dsd/leds > + dsd/allow-low-power-probe > enumeration > osi > method-customizing > --
Hi Rafael, Thank you for the review. On Wed, Sep 02, 2020 at 05:57:01PM +0200, Rafael J. Wysocki wrote: > On Tue, Sep 1, 2020 at 11:03 PM Sakari Ailus > <sakari.ailus@linux.intel.com> wrote: > > > > Document the probe-low-power _DSD property and how it is used with I²C > > drivers. > > I would reorder the series to make this go right after the [1/6] or > maybe even fold it into that patch. > > The point is that the changes in [1/6] clearly depend on the property > defined here. Ack. > > > Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> > > --- > > .../acpi/dsd/allow-low-power-probe.rst | 28 +++++++++++++++++++ > > Documentation/firmware-guide/acpi/index.rst | 1 + > > 2 files changed, 29 insertions(+) > > create mode 100644 Documentation/firmware-guide/acpi/dsd/allow-low-power-probe.rst > > > > diff --git a/Documentation/firmware-guide/acpi/dsd/allow-low-power-probe.rst b/Documentation/firmware-guide/acpi/dsd/allow-low-power-probe.rst > > new file mode 100644 > > index 0000000000000..6fcc89162b898 > > --- /dev/null > > +++ b/Documentation/firmware-guide/acpi/dsd/allow-low-power-probe.rst > > @@ -0,0 +1,28 @@ > > +.. SPDX-License-Identifier: GPL-2.0 > > + > > +====================================== > > +Probing I²C devices in low power state > > +====================================== > > + > > +Introduction > > +============ > > + > > +In some cases it may be preferred to leave certain devices powered off for the > > +entire system bootup if powering on these devices has adverse side effects, > > +beyond just powering on the said device. Linux recognizes the _DSD property > > +"allow-low-power-probe" that can be used for this purpose. > > It would be good to refer to the document defining the generic _DSD > properties mechanism and the GUID used for that from here. I'll add a reference to the device properties UUID for _DSD spec. > > The meaning of "_DSD property" may not be entirely clear to the > reader as it stands. > > And maybe call the property "i2c-allow-low-power-probe" or similar, to > indicate that it is specific to i2c. The bus determines that already, and it's only defined for I²C here. Should we need this in the future for e.g. I3C, there would be no need to think of renaming it, just changing the documentation and implementation. I don't have a strong opinion on that though. > > > + > > +How it works > > +============ > > + > > +The property "allow-low-power-probe" boolean property may be used to tell Linux > > "boolean device property" ? Oops. The other "property" was supposed to be removed by now. But yes, I agree with the suggestion. > > > +that the I²C framework should instruct the kernel ACPI framework to leave the > > +device in the low power state. If the driver indicates its support for this by > > +setting the I2C_DRV_FL_ALLOW_LOW_POWER_PROBE flag in struct i2c_driver.flags > > +field and the "allow-low-power-probe" property is present, the device will not > > +be powered on for probe. > > + > > +The downside is that as the device is not powered on, even if there's a problem > > +with the device, the driver likely probes just fine but the first user will > > +find out the device doesn't work, instead of a failure at probe time. This > > +feature should thus be used sparingly. > > It would be good to give an ASL example with this property provided. I'll add that for v8. > > > diff --git a/Documentation/firmware-guide/acpi/index.rst b/Documentation/firmware-guide/acpi/index.rst > > index ad3b5afdae77e..0070fcde9e669 100644 > > --- a/Documentation/firmware-guide/acpi/index.rst > > +++ b/Documentation/firmware-guide/acpi/index.rst > > @@ -11,6 +11,7 @@ ACPI Support > > dsd/graph > > dsd/data-node-references > > dsd/leds > > + dsd/allow-low-power-probe > > enumeration > > osi > > method-customizing > > --
On Wed, Sep 02, 2020 at 06:34:30PM +0200, Rafael J. Wysocki wrote: > On Wed, Sep 2, 2020 at 6:31 PM Sakari Ailus > <sakari.ailus@linux.intel.com> wrote: > > > > Hi Rafael, > > > > Thank you for the review. > > > > On Wed, Sep 02, 2020 at 05:57:01PM +0200, Rafael J. Wysocki wrote: > > > On Tue, Sep 1, 2020 at 11:03 PM Sakari Ailus > > > <sakari.ailus@linux.intel.com> wrote: > > > > > > > > Document the probe-low-power _DSD property and how it is used with I²C > > > > drivers. > > > > > > I would reorder the series to make this go right after the [1/6] or > > > maybe even fold it into that patch. > > > > > > The point is that the changes in [1/6] clearly depend on the property > > > defined here. > > > > Ack. > > > > > > > > > Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> > > > > --- > > > > .../acpi/dsd/allow-low-power-probe.rst | 28 +++++++++++++++++++ > > > > Documentation/firmware-guide/acpi/index.rst | 1 + > > > > 2 files changed, 29 insertions(+) > > > > create mode 100644 Documentation/firmware-guide/acpi/dsd/allow-low-power-probe.rst > > > > > > > > diff --git a/Documentation/firmware-guide/acpi/dsd/allow-low-power-probe.rst b/Documentation/firmware-guide/acpi/dsd/allow-low-power-probe.rst > > > > new file mode 100644 > > > > index 0000000000000..6fcc89162b898 > > > > --- /dev/null > > > > +++ b/Documentation/firmware-guide/acpi/dsd/allow-low-power-probe.rst > > > > @@ -0,0 +1,28 @@ > > > > +.. SPDX-License-Identifier: GPL-2.0 > > > > + > > > > +====================================== > > > > +Probing I²C devices in low power state > > > > +====================================== > > > > + > > > > +Introduction > > > > +============ > > > > + > > > > +In some cases it may be preferred to leave certain devices powered off for the > > > > +entire system bootup if powering on these devices has adverse side effects, > > > > +beyond just powering on the said device. Linux recognizes the _DSD property > > > > +"allow-low-power-probe" that can be used for this purpose. > > > > > > It would be good to refer to the document defining the generic _DSD > > > properties mechanism and the GUID used for that from here. > > > > I'll add a reference to the device properties UUID for _DSD spec. > > > > > > > > The meaning of "_DSD property" may not be entirely clear to the > > > reader as it stands. > > > > > > And maybe call the property "i2c-allow-low-power-probe" or similar, to > > > indicate that it is specific to i2c. > > > > The bus determines that already, and it's only defined for I²C here. Should > > we need this in the future for e.g. I3C, there would be no need to think of > > renaming it, just changing the documentation and implementation. > > > > I don't have a strong opinion on that though. > > The point is that the property is not going to be recognized beyond i2c. Not right now, that is true. Sure, I can change it for v8.