Message ID | 20210205132505.20173-4-sakari.ailus@linux.intel.com |
---|---|
State | New |
Headers | show |
Series | Support running driver's probe for a device powered off | expand |
On 2/5/21 5:25 AM, Sakari Ailus wrote: > Document the use of the _DSE object for setting desirable power state > during probe. > > Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> > Reviewed-by: Tomasz Figa <tfiga@chromium.org> > --- > Documentation/firmware-guide/acpi/index.rst | 1 + > .../firmware-guide/acpi/low-power-probe.rst | 69 +++++++++++++++++++ > 2 files changed, 70 insertions(+) > create mode 100644 Documentation/firmware-guide/acpi/low-power-probe.rst > > diff --git a/Documentation/firmware-guide/acpi/low-power-probe.rst b/Documentation/firmware-guide/acpi/low-power-probe.rst > new file mode 100644 > index 0000000000000..b96804d959a6c > --- /dev/null > +++ b/Documentation/firmware-guide/acpi/low-power-probe.rst > @@ -0,0 +1,69 @@ > +.. 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. > + > +How it works > +============ > Hi, Please don't use ============ underlines for all section levels. Here is what Documentation/doc-guide/sphinx.rst says: Specific guidelines for the kernel documentation ------------------------------------------------ Here are some specific guidelines for the kernel documentation: * Please don't go overboard with reStructuredText markup. Keep it simple. For the most part the documentation should be plain text with just enough consistency in formatting that it can be converted to other formats. * Please keep the formatting changes minimal when converting existing documentation to reStructuredText. * Also update the content, not just the formatting, when converting documentation. * Please stick to this order of heading adornments: 1. ``=`` with overline for document title:: ============== Document title ============== 2. ``=`` for chapters:: Chapters ======== 3. ``-`` for sections:: Section ------- 4. ``~`` for subsections:: Subsection ~~~~~~~~~~ Although RST doesn't mandate a specific order ("Rather than imposing a fixed number and order of section title adornment styles, the order enforced will be the order as encountered."), having the higher levels the same overall makes it easier to follow the documents. thanks.
Hi Randy, On Fri, Feb 05, 2021 at 04:56:47PM -0800, Randy Dunlap wrote: > On 2/5/21 5:25 AM, Sakari Ailus wrote: > > Document the use of the _DSE object for setting desirable power state > > during probe. > > > > Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> > > Reviewed-by: Tomasz Figa <tfiga@chromium.org> > > --- > > Documentation/firmware-guide/acpi/index.rst | 1 + > > .../firmware-guide/acpi/low-power-probe.rst | 69 +++++++++++++++++++ > > 2 files changed, 70 insertions(+) > > create mode 100644 Documentation/firmware-guide/acpi/low-power-probe.rst > > > > > diff --git a/Documentation/firmware-guide/acpi/low-power-probe.rst b/Documentation/firmware-guide/acpi/low-power-probe.rst > > new file mode 100644 > > index 0000000000000..b96804d959a6c > > --- /dev/null > > +++ b/Documentation/firmware-guide/acpi/low-power-probe.rst > > @@ -0,0 +1,69 @@ > > +.. 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. > > + > > +How it works > > +============ > > > > Hi, > > Please don't use ============ underlines for all section levels. The sections under the title are intended to be on the same level.
On 2/8/21 12:01 AM, Sakari Ailus wrote: > Hi Randy, > > On Fri, Feb 05, 2021 at 04:56:47PM -0800, Randy Dunlap wrote: >> On 2/5/21 5:25 AM, Sakari Ailus wrote: >>> Document the use of the _DSE object for setting desirable power state >>> during probe. >>> >>> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> >>> Reviewed-by: Tomasz Figa <tfiga@chromium.org> >>> --- >>> Documentation/firmware-guide/acpi/index.rst | 1 + >>> .../firmware-guide/acpi/low-power-probe.rst | 69 +++++++++++++++++++ >>> 2 files changed, 70 insertions(+) >>> create mode 100644 Documentation/firmware-guide/acpi/low-power-probe.rst >>> >> >>> diff --git a/Documentation/firmware-guide/acpi/low-power-probe.rst b/Documentation/firmware-guide/acpi/low-power-probe.rst >>> new file mode 100644 >>> index 0000000000000..b96804d959a6c >>> --- /dev/null >>> +++ b/Documentation/firmware-guide/acpi/low-power-probe.rst >>> @@ -0,0 +1,69 @@ >>> +.. 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. >>> + >>> +How it works >>> +============ >>> >> >> Hi, >> >> Please don't use ============ underlines for all section levels. > > The sections under the title are intended to be on the same level. > Oops. My bad. Sorry about that.
diff --git a/Documentation/firmware-guide/acpi/index.rst b/Documentation/firmware-guide/acpi/index.rst index f72b5f1769fb2..d02712acccbc0 100644 --- a/Documentation/firmware-guide/acpi/index.rst +++ b/Documentation/firmware-guide/acpi/index.rst @@ -25,5 +25,6 @@ ACPI Support acpi-lid lpit video_extension + low-power-probe extcon-intel-int3496 intel-pmc-mux diff --git a/Documentation/firmware-guide/acpi/low-power-probe.rst b/Documentation/firmware-guide/acpi/low-power-probe.rst new file mode 100644 index 0000000000000..b96804d959a6c --- /dev/null +++ b/Documentation/firmware-guide/acpi/low-power-probe.rst @@ -0,0 +1,69 @@ +.. 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. + +How it works +============ + +The _DSE (Device State for Enumeration) object that evaluates to integer 0 may +be used to tell Linux the highest allowed D state for a device during probe. 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 +_DSE object evaluates to integer higher than the D state of the device, the +device will not be powered on (put in D0 state) for probe. + +The D states and thus also the allowed values for _DSE are listed below. Refer +to [1] for more information on device power states. + +.. code-block:: text + + Number State Description + 0 D0 Device fully powered on + 1 D1 + 2 D2 + 3 D3hot + 4 D3cold Off + +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. + +References +========== + +[1] https://uefi.org/specifications/ACPI/6.4/02_Definition_of_Terms/Definition_of_Terms.html#device-power-state-definitions + +Example +======= + +An ASL example describing an ACPI device using _DSE object to tell Operating +System the device should remain powered off during probe looks like this. Some +objects not relevant from the example point of view have been omitted. + +.. code-block:: text + + Device (CAM0) + { + Name (_HID, "SONY319A") + Name (_UID, Zero) + Name (_CRS, ResourceTemplate () + { + I2cSerialBus(0x0020, ControllerInitiated, 0x00061A80, + AddressingMode7Bit, "\\_SB.PCI0.I2C0", + 0x00, ResourceConsumer) + }) + Name (_DSE, 0, NotSerialized) + { + Return (0x4) + } + }