ACPI: docs: enumeration: Discourage to use custom _DSM methods
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Mon, 28 Feb 2022 22:39:30 +0000 (00:39 +0200)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Thu, 3 Mar 2022 19:34:44 +0000 (20:34 +0100)
Since we have _DSD established and specified (ACPI v5.1+) there is no
need to use custom _DSM methods. Rewrite documentation to use _DSD.

Fixes: f60e7074902a ("misc: at25: Make use of device property API")
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Documentation/firmware-guide/acpi/enumeration.rst

index 74b830b2fd59e0c59ca7d68c7a722d0290305016..cda41e4255ebf567772cce0e08b18b6d8cf3d383 100644 (file)
@@ -188,43 +188,37 @@ to at25 SPI eeprom driver (this is meant for the above ACPI snippet)::
        };
 
 Note that this driver actually needs more information like page size of the
-eeprom etc. but at the time writing this there is no standard way of
-passing those. One idea is to return this in _DSM method like::
+eeprom, etc. This information can be passed via _DSD method like::
 
        Device (EEP0)
        {
                ...
-               Method (_DSM, 4, NotSerialized)
+               Name (_DSD, Package ()
                {
-                       Store (Package (6)
+                       ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
+                       Package ()
                        {
-                               "byte-len", 1024,
-                               "addr-mode", 2,
-                               "page-size, 32
-                       }, Local0)
-
-                       // Check UUIDs etc.
-
-                       Return (Local0)
-               }
-
-Then the at25 SPI driver can get this configuration by calling _DSM on its
-ACPI handle like::
-
-       struct acpi_buffer output = { ACPI_ALLOCATE_BUFFER, NULL };
-       struct acpi_object_list input;
-       acpi_status status;
+                               Package () { "size", 1024 },
+                               Package () { "pagesize", 32 },
+                               Package () { "address-width", 16 },
+                       }
+               })
+       }
 
-       /* Fill in the input buffer */
+Then the at25 SPI driver can get this configuration by calling device property
+APIs during ->probe() phase like::
 
-       status = acpi_evaluate_object(ACPI_HANDLE(&spi->dev), "_DSM",
-                                     &input, &output);
-       if (ACPI_FAILURE(status))
-               /* Handle the error */
+       err = device_property_read_u32(dev, "size", &size);
+       if (err)
+               ...error handling...
 
-       /* Extract the data here */
+       err = device_property_read_u32(dev, "pagesize", &page_size);
+       if (err)
+               ...error handling...
 
-       kfree(output.pointer);
+       err = device_property_read_u32(dev, "address-width", &addr_width);
+       if (err)
+               ...error handling...
 
 I2C serial bus support
 ======================