On Tue, Sep 16, 2014 at 4:52 AM, Mika Westerberg <mika.westerberg@xxxxxxxxxxxxxxx> wrote: > This is a second revision of the patches first submitted here [1]. > > The recent publication of the ACPI 5.1 specification [2] adds a reserved name > for Device Specific Data (_DSD, Section 6.2.5). This mechanism allows for > passing arbitrary hardware description data to the OS. The exact format of the > _DSD data is specific to the UUID paired with it [3]. > > An ACPI Device Properties UUID has been defined [4] to provide a format > compatible with existing device tree schemas. The purpose for this was to > allow for the reuse of the existing schemas and encourage the development > of firmware agnostic device drivers. > > This series accomplishes the following (as well as some other dependencies): > > * Add _DSD support to the ACPI core > This simply reads the UUID and the accompanying Package > > * Add ACPI Device Properties _DSD format support > This understands the hierarchical key:value pair structure > defined by the Device Properties UUID > > * Add a unified device properties API with ACPI and OF backends > This provides for the firmware agnostic device properties > Interface to be used by drivers > > * Provides 3 example drivers that were previously Device Tree aware that > can now be used with either Device Tree or ACPI Device Properties. The > drivers use "PRP0001" as their _HID which means that the match should be > done using driver's .of_match_table instead. > > The patch series has been tested on Minnoboard and Minnowboard MAX and the > relevant part of DSDTs are at the end of this cover letter. > > This series does not provide for a means to append to a system DSDT. That > will ultimately be required to make the most effective use of the _DSD > mechanism. Work is underway on that as a separate effort. > > Most important changes to the previous RFC version: > > * Added wrapper functions for most used property types > * Return -EOVERFLOW in case integer would not fit to a type > * Dropped dev_prop_ops > * We now have dev_node_xxx() functions to access firmware node > properties without dev pointer > * The accessor function names try to be close to their corresponding of_* > counterpart > * Tried to have a bit better examples in the documentation patch > * gpiolib got support for _DSD and also it now understand firmware node > properties with dev_node_get_named_gpiod() that requests the GPIO > properly. > * Support for "PRP0001" _HID/_CID. This means that the match should be > done using driver .of_match_table instead. > * Add unified property support for at25 SPI eeprom driver as well. > > [1] https://lkml.org/lkml/2014/8/17/10 > [2] http://www.uefi.org/sites/default/files/resources/ACPI_5_1release.pdf > [3] http://www.uefi.org/sites/default/files/resources/_DSD-implementation-guide-toplevel.htm > [4] http://www.uefi.org/sites/default/files/resources/_DSD-device-properties-UUID.pdf > > Aaron Lu (2): > input: gpio_keys_polled - Add support for GPIO descriptors > input: gpio_keys_polled - Make use of device property API > > Max Eliaser (2): > leds: leds-gpio: Make use of device property API > leds: leds-gpio: Add ACPI probing support > > Mika Westerberg (11): > ACPI: Add support for device specific properties > ACPI: Allow drivers to match using Device Tree compatible property > ACPI: Document ACPI device specific properties > mfd: Add ACPI support > gpio / ACPI: Add support for _DSD device properties > gpio: Add support for unified device properties interface > gpio: sch: Consolidate core and resume banks > leds: leds-gpio: Add support for GPIO descriptors > input: gpio_keys_polled - Add ACPI probing support > misc: at25: Make use of device property API > misc: at25: Add ACPI probing support > > Rafael J. Wysocki (1): > Driver core: Unified device properties interface for platform firmware > I'm good with the LEDs change, please go ahead with my Ack Acked-by: Bryan Wu <cooloney@xxxxxxxxx> Thanks, -Bryan > Documentation/acpi/enumeration.txt | 27 ++ > Documentation/acpi/properties.txt | 410 +++++++++++++++++++++ > drivers/acpi/Makefile | 1 + > drivers/acpi/internal.h | 6 + > drivers/acpi/property.c | 584 ++++++++++++++++++++++++++++++ > drivers/acpi/scan.c | 93 ++++- > drivers/base/Makefile | 2 +- > drivers/base/property.c | 196 ++++++++++ > drivers/gpio/devres.c | 35 ++ > drivers/gpio/gpio-sch.c | 293 ++++++--------- > drivers/gpio/gpiolib-acpi.c | 78 +++- > drivers/gpio/gpiolib.c | 85 ++++- > drivers/gpio/gpiolib.h | 7 +- > drivers/input/keyboard/gpio_keys_polled.c | 169 +++++---- > drivers/leds/leds-gpio.c | 188 +++++----- > drivers/mfd/mfd-core.c | 40 ++ > drivers/misc/eeprom/at25.c | 41 +-- > drivers/of/base.c | 188 ++++++++++ > include/acpi/acpi_bus.h | 8 + > include/linux/acpi.h | 90 ++++- > include/linux/gpio/consumer.h | 7 + > include/linux/gpio_keys.h | 3 + > include/linux/leds.h | 1 + > include/linux/mfd/core.h | 3 + > include/linux/of.h | 37 ++ > include/linux/property.h | 193 ++++++++++ > 26 files changed, 2377 insertions(+), 408 deletions(-) > create mode 100644 Documentation/acpi/properties.txt > create mode 100644 drivers/acpi/property.c > create mode 100644 drivers/base/property.c > create mode 100644 include/linux/property.h > > DSDT modifications for Minnowboard (for leds-gpio.c and gpio_keys_polled.c) > --------------------------------------------------------------------------- > > Scope (\_SB.PCI0.LPC) > { > Device (LEDS) > { > Name (_HID, "PRP0001") > > Name (_CRS, ResourceTemplate () { > GpioIo (Exclusive, PullDown, 0, 0, IoRestrictionOutputOnly, > "\\_SB.PCI0.LPC", 0, ResourceConsumer) {10} > GpioIo (Exclusive, PullDown, 0, 0, IoRestrictionOutputOnly, > "\\_SB.PCI0.LPC", 0, ResourceConsumer) {11} > }) > > Name (_DSD, Package () { > ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), > Package () { > Package () {"compatible", Package () {"gpio-leds"}}, > } > }) > > Device (LEDH) > { > Name (_DSD, Package () { > ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), > Package () { > Package () {"label", "Heartbeat"}, > Package () {"gpios", Package () {^^LEDS, 0, 0, 0}}, > Package () {"linux,default-trigger", "heartbeat"}, > Package () {"linux,default-state", "off"}, > Package () {"linux,retain-state-suspended", 1}, > } > }) > } > > Device (LEDM) > { > Name (_DSD, Package () { > ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), > Package () { > Package () {"label", "MMC0 Activity"}, > Package () {"gpios", Package () {^^LEDS, 1, 0, 0}}, > Package () {"linux,default-trigger", "mmc0"}, > Package () {"linux,default-state", "off"}, > Package () {"linux,retain-state-suspended", 1}, > } > }) > } > } > > Device (BTNS) > { > Name (_HID, "PRP0001") > > Name (_CRS, ResourceTemplate () { > GpioIo (Exclusive, PullUp, 0, 0, IoRestrictionInputOnly, > "\\_SB.PCI0.LPC", 0, ResourceConsumer) {0, 1, 2, 3} > }) > > Name (_DSD, Package () { > ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), > Package () { > Package () {"compatible", Package () {"gpio-keys-polled"}}, > Package () {"poll-interval", 100}, > Package () {"autorepeat", 1} > } > }) > > Device (BTN0) > { > Name (_DSD, Package () { > ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), > Package () { > Package () {"linux,code", 105}, > Package () {"linux,input-type", 1}, > Package () {"gpios", Package () {^^BTNS, 0, 0, 1}}, > } > }) > } > > Device (BTN1) > { > Name (_DSD, Package () { > ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), > Package () { > Package () {"linux,code", 108}, > Package () {"linux,input-type", 1}, > Package () {"gpios", Package (4) {^^BTNS, 0, 1, 1}}, > } > }) > } > > Device (BTN2) > { > Name (_DSD, Package () { > ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), > Package () { > Package () {"linux,code", 103}, > Package () {"linux,input-type", 1}, > Package () {"gpios", Package () {^^BTNS, 0, 2, 1}}, > } > }) > } > > Device (BTN3) > { > Name (_DSD, Package () { > ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), > Package () > { > Package () {"linux,code", 106}, > Package () {"linux,input-type", 1}, > Package () {"gpios", Package (4) {^^BTNS, 0, 3, 1}}, > } > }) > } > } > } > > DSDT modifications for Minnowboard MAX (for at25.c) > --------------------------------------------------- > > Scope (\_SB.SPI1) > { > Device (AT25) > { > Name (_HID, "PRP0001") > Method (_CRS, 0, Serialized) { > Name (UBUF, ResourceTemplate () { > SpiSerialBus (0x0000, PolarityLow, FourWireMode, 0x08, > ControllerInitiated, 0x007A1200, ClockPolarityLow, > ClockPhaseSecond, "\\_SB.SPI1", > 0x00, ResourceConsumer) > }) > Return (UBUF) > } > > Name (_DSD, Package () { > ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), > Package () { > Package () {"compatible", Package () {"atmel,at25"}}, > Package () {"size", 1024}, > Package () {"pagesize", 32}, > Package () {"address-width", 16}, > } > }) > > Method (_STA, 0, NotSerialized) > { > Return (0xF) > } > } > } > -- > 2.1.0 > -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html