[PATCH v9 0/9] Turris Omnia MCU driver

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello Andy, Hans, Ilpo, Arnd, Gregory, and others,

this is v9 of the series adding Turris Omnia MCU driver.

This series still 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, v6, v7 and v8:
  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/
  https://patchwork.kernel.org/project/linux-soc/cover/20240424173809.7214-1-kabel@xxxxxxxxxx/
  https://patchwork.kernel.org/project/linux-soc/cover/20240430115111.3453-1-kabel@xxxxxxxxxx/

Changes since v8:
- removed the MACH_ARMADA_38X || COMPILE_TEST dependency for the
  CZNIC_PLATFORMS Kconfig option in the Kconfig file, as suggested
  by Andy (patch 2)
- fixed the issues in the global header turris-omnia-mcu-interface.h
  pointed out by Andy and Ilpo: added the "OMNIA_" prefix to all
  enumerator entries, added trailing commas, converted to use
  FIELD_PREP_CONST() (patches 2-7)
- added comment why we can't use ether_addr_copy(), as requested by
  Andy (patch 2)
- rewritten the error message for when the MCU does not support
  reporting features, requested by Andy (patch 2)
- changed how the nul-byte is assigned to the end of bin2hex() result,
  requested by Andy (patch 2)
- made the omnia_cmd_write_read() function final in patch 2, instead of
  updating it in subsequent patches, requested by Andy
- in order to be more consistent, changed the omnia_cmd_read_u8() and
  omnia_cmd_read_u16() functions to return zero on success and the read
  value is passed into a pointer, and then added a new function
  omnia_cmd_read_u32(), as requested by Ilpo (he did not like the
  inconsistency in omnia_mcu_read_features(), where the
  omnia_cmd_read_u16() hid the le16_to_cpu() call, but then we did an
  explicit call to le32_to_cpu() when reading 32-bit features) (patch 2)
- some other minor tweaks (changed the version type from u8[] to char[],
  changed len type from size_t to unsigned int in omnia_cmd_write())
  (patches 2 & 3)
- dropped the "gpio%u." prefix from GPIO line names, Andy pointed out
  why this is wrong (patch 3)
- decoupled GPIOs information struct definition and assignment and put
  filling macros before the assignment, requested by Andy (patch 3)
- moved return value check into the guarded scope, suggested by Andy
  (patch 3)
- put some assignments into the definition lines, suggested by Andy
  (patch 3)
- fixed some typos (patches 2 & 3)
- refactored the reply length computation into a new function
  omnia_compute_reply_length(), as requested by Andy (patch 3)

Marek Behún (9):
  dt-bindings: firmware: 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                |   50 +
 drivers/platform/cznic/Makefile               |    9 +
 .../platform/cznic/turris-omnia-mcu-base.c    |  451 +++++++
 .../platform/cznic/turris-omnia-mcu-debugfs.c |  207 ++++
 .../platform/cznic/turris-omnia-mcu-gpio.c    | 1040 +++++++++++++++++
 .../cznic/turris-omnia-mcu-sys-off-wakeup.c   |  258 ++++
 .../platform/cznic/turris-omnia-mcu-trng.c    |  103 ++
 .../cznic/turris-omnia-mcu-watchdog.c         |  127 ++
 drivers/platform/cznic/turris-omnia-mcu.h     |  210 ++++
 include/linux/turris-omnia-mcu-interface.h    |  249 ++++
 17 files changed, 2971 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





[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]


  Powered by Linux