ACPI: Update GPIO documentation to mention _DSD
authorMika Westerberg <mika.westerberg@linux.intel.com>
Tue, 17 Mar 2015 10:40:12 +0000 (12:40 +0200)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Wed, 18 Mar 2015 01:02:35 +0000 (02:02 +0100)
Make sure that the ACPI enumeration.txt provides latest information on how
to describe and retrieve GPIOs now that we can take advantage of _DSD
device properties.

Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Documentation/acpi/enumeration.txt

index 9b121a569ab4397841ac9611aad90502fefb16b7..750401f9134190a210c8c24089a08ca9cb16559c 100644 (file)
@@ -254,8 +254,13 @@ GPIO support
 ~~~~~~~~~~~~
 ACPI 5 introduced two new resources to describe GPIO connections: GpioIo
 and GpioInt. These resources are used be used to pass GPIO numbers used by
-the device to the driver. For example:
+the device to the driver. ACPI 5.1 extended this with _DSD (Device
+Specific Data) which made it possible to name the GPIOs among other things.
 
+For example:
+
+Device (DEV)
+{
        Method (_CRS, 0, NotSerialized)
        {
                Name (SBUF, ResourceTemplate()
@@ -285,6 +290,18 @@ the device to the driver. For example:
                Return (SBUF)
        }
 
+       // ACPI 5.1 _DSD used for naming the GPIOs
+       Name (_DSD, Package ()
+       {
+               ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
+               Package ()
+               {
+                       Package () {"power-gpios", Package() {^DEV, 0, 0, 0 }},
+                       Package () {"irq-gpios", Package() {^DEV, 1, 0, 0 }},
+               }
+       })
+       ...
+
 These GPIO numbers are controller relative and path "\\_SB.PCI0.GPI0"
 specifies the path to the controller. In order to use these GPIOs in Linux
 we need to translate them to the corresponding Linux GPIO descriptors.
@@ -300,11 +317,11 @@ a code like this:
 
        struct gpio_desc *irq_desc, *power_desc;
 
-       irq_desc = gpiod_get_index(dev, NULL, 1);
+       irq_desc = gpiod_get(dev, "irq");
        if (IS_ERR(irq_desc))
                /* handle error */
 
-       power_desc = gpiod_get_index(dev, NULL, 0);
+       power_desc = gpiod_get(dev, "power");
        if (IS_ERR(power_desc))
                /* handle error */
 
@@ -313,6 +330,9 @@ a code like this:
 There are also devm_* versions of these functions which release the
 descriptors once the device is released.
 
+See Documentation/acpi/gpio-properties.txt for more information about the
+_DSD binding related to GPIOs.
+
 MFD devices
 ~~~~~~~~~~~
 The MFD devices register their children as platform devices. For the child
This page took 0.028126 seconds and 5 git commands to generate.