Hello Andy, Hans, Ilpo, Arnd, Gregory, and others, this is v7 of the series adding Turris Omnia MCU driver. This series depends on the immutable branch between LEDs and locking, introducing devm_mutex_init(), see the PR https://lore.kernel.org/linux-leds/20240412084616.GR2399047@xxxxxxxxxx/ See also cover letters for v1, v2, v3, v4, v5 and v6: https://patchwork.kernel.org/project/linux-soc/cover/20230823161012.6986-1-kabel@xxxxxxxxxx/ https://patchwork.kernel.org/project/linux-soc/cover/20230919103815.16818-1-kabel@xxxxxxxxxx/ https://patchwork.kernel.org/project/linux-soc/cover/20231023143130.11602-1-kabel@xxxxxxxxxx/ https://patchwork.kernel.org/project/linux-soc/cover/20231026161803.16750-1-kabel@xxxxxxxxxx/ https://patchwork.kernel.org/project/linux-soc/cover/20240323164359.21642-1-kabel@xxxxxxxxxx/ https://patchwork.kernel.org/project/linux-soc/cover/20240418121116.22184-1-kabel@xxxxxxxxxx/ Changes since v6: - moved the DT binding from arm/cznic,turris-omnia-mcu.yaml to firmware/cznic,turris-omnia-mcu.yaml, as suggested by Conor Dooley (patch 1) - dropped the devm-helpers.h additions, for the reasons see https://lore.kernel.org/soc/20240423184346.37eb0915@thinkpad/ - use gpiod_to_irq(gpiochip_get_desc(...)) instead of irq_create_mapping(), as suggested by Andy Shevchenko (patches 6 and 7) - added a dummy read of TRNG entropy when registering TRNG, in case someone cleared the TRNG interrupt before probing the driver, but did not read the entropy (the MCU won't send a new TRNG interrupt if the entropy is not collected) (patch 6) - fixed a bug in TRNG probing, wherein if the Marek Behún (9): dt-bindings: arm: add cznic,turris-omnia-mcu binding platform: cznic: Add preliminary support for Turris Omnia MCU platform: cznic: turris-omnia-mcu: Add support for MCU connected GPIOs platform: cznic: turris-omnia-mcu: Add support for poweroff and wakeup platform: cznic: turris-omnia-mcu: Add support for MCU watchdog platform: cznic: turris-omnia-mcu: Add support for MCU provided TRNG platform: cznic: turris-omnia-mcu: Add support for digital message signing via debugfs ARM: dts: turris-omnia: Add MCU system-controller node ARM: dts: turris-omnia: Add GPIO key node for front button .../ABI/testing/debugfs-turris-omnia-mcu | 13 + .../sysfs-bus-i2c-devices-turris-omnia-mcu | 126 ++ .../firmware/cznic,turris-omnia-mcu.yaml | 86 ++ MAINTAINERS | 5 + .../dts/marvell/armada-385-turris-omnia.dts | 35 +- drivers/platform/Kconfig | 2 + drivers/platform/Makefile | 1 + drivers/platform/cznic/Kconfig | 51 + drivers/platform/cznic/Makefile | 9 + .../platform/cznic/turris-omnia-mcu-base.c | 439 +++++++ .../platform/cznic/turris-omnia-mcu-debugfs.c | 216 ++++ .../platform/cznic/turris-omnia-mcu-gpio.c | 1047 +++++++++++++++++ .../cznic/turris-omnia-mcu-sys-off-wakeup.c | 258 ++++ .../platform/cznic/turris-omnia-mcu-trng.c | 109 ++ .../cznic/turris-omnia-mcu-watchdog.c | 123 ++ drivers/platform/cznic/turris-omnia-mcu.h | 188 +++ include/linux/turris-omnia-mcu-interface.h | 249 ++++ 17 files changed, 2956 insertions(+), 1 deletion(-) create mode 100644 Documentation/ABI/testing/debugfs-turris-omnia-mcu create mode 100644 Documentation/ABI/testing/sysfs-bus-i2c-devices-turris-omnia-mcu create mode 100644 Documentation/devicetree/bindings/firmware/cznic,turris-omnia-mcu.yaml create mode 100644 drivers/platform/cznic/Kconfig create mode 100644 drivers/platform/cznic/Makefile create mode 100644 drivers/platform/cznic/turris-omnia-mcu-base.c create mode 100644 drivers/platform/cznic/turris-omnia-mcu-debugfs.c create mode 100644 drivers/platform/cznic/turris-omnia-mcu-gpio.c create mode 100644 drivers/platform/cznic/turris-omnia-mcu-sys-off-wakeup.c create mode 100644 drivers/platform/cznic/turris-omnia-mcu-trng.c create mode 100644 drivers/platform/cznic/turris-omnia-mcu-watchdog.c create mode 100644 drivers/platform/cznic/turris-omnia-mcu.h create mode 100644 include/linux/turris-omnia-mcu-interface.h -- 2.43.2