This is a proposal for adding ACPI support to pin controller. The patch supports following resources introduced in ACPI from v6.2 - PinFunction - PinConfig - PinGroupFunction - PinGroupConfig - PinGroup The patch has been tested on NXP I.MX8MP platform with ACPI. Please checkout [1] and [2] to see prototype driver and firmware implementation. -- V3: 1, Reworked interface between pinctrl-acpi subsystem and driver 2, Dropped API to get ACPI pin groups as they are no longer required 3, Fix styling issues pointed out by Mika Westerberg 4, Added helper functions and refactored code for simplicity 5, Added documentation V2: 1, Fix styling issues pointed out by Mika Westerberg 2, Added a new interface to free pin group descriptor 3, Added vendor length to the descriptors 4, Reworked map_config_acpi_to_general to pass an error value 5, Few refactoring to keep functions shorter 6, Dropped new generic pinconf types added in v1 [1] https://github.com/nsait-linaro/linux-patches/blob/main/0001-imx8mp-add-ACPI-support-for-pin-controller.patch [2] https://github.com/nsait-linaro/linux-patches/blob/main/0001-add-acpi-pinctrl-support-for-i2c-controllers.patch Niyas Sait (2): pinctrl: add support for ACPI pin function and config resources pinctrl: add support for ACPI pin groups Documentation/driver-api/index.rst | 1 + Documentation/driver-api/pin-control-acpi.rst | 297 ++++++++ drivers/pinctrl/Makefile | 1 + drivers/pinctrl/core.c | 18 +- drivers/pinctrl/core.h | 3 + drivers/pinctrl/pinctrl-acpi.c | 672 ++++++++++++++++++ drivers/pinctrl/pinctrl-acpi.h | 77 ++ include/linux/pinctrl/pinctrl.h | 15 + 8 files changed, 1080 insertions(+), 4 deletions(-) create mode 100644 Documentation/driver-api/pin-control-acpi.rst create mode 100644 drivers/pinctrl/pinctrl-acpi.c create mode 100644 drivers/pinctrl/pinctrl-acpi.h -- 2.25.1