[PATCH v9 0/6] RTL8231 GPIO expander support

Sander Vanheule posted 6 patches 1 month, 3 weeks ago
.../bindings/leds/realtek,rtl8231-leds.yaml   | 136 +++++
.../bindings/mfd/realtek,rtl8231.yaml         | 199 +++++++
MAINTAINERS                                   |  10 +
drivers/leds/Kconfig                          |  10 +
drivers/leds/Makefile                         |   1 +
drivers/leds/leds-rtl8231.c                   | 285 ++++++++++
drivers/mfd/Kconfig                           |   9 +
drivers/mfd/Makefile                          |   1 +
drivers/mfd/rtl8231.c                         | 188 ++++++
drivers/pinctrl/Kconfig                       |  12 +
drivers/pinctrl/Makefile                      |   1 +
drivers/pinctrl/pinctrl-rtl8231.c             | 533 ++++++++++++++++++
include/linux/mfd/rtl8231.h                   |  73 +++
13 files changed, 1458 insertions(+)
create mode 100644 Documentation/devicetree/bindings/leds/realtek,rtl8231-leds.yaml
create mode 100644 Documentation/devicetree/bindings/mfd/realtek,rtl8231.yaml
create mode 100644 drivers/leds/leds-rtl8231.c
create mode 100644 drivers/mfd/rtl8231.c
create mode 100644 drivers/pinctrl/pinctrl-rtl8231.c
create mode 100644 include/linux/mfd/rtl8231.h
[PATCH v9 0/6] RTL8231 GPIO expander support
Posted by Sander Vanheule 1 month, 3 weeks ago
The RTL8231 GPIO and LED expander can be configured for use as an MDIO
or SMI bus device. Currently only the MDIO mode is supported, although
SMI mode support should be fairly straightforward, once an SMI bus
driver is available.

Provided features by the RTL8231:
  - Up to 37 GPIOs
    - Configurable drive strength: 8mA or 4mA (currently unsupported)
    - Input debouncing on GPIOs 31-36
  - Up to 88 LEDs in multiple scan matrix groups
    - On, off, or one of six toggling intervals
    - "single-color mode": 2×36 single color LEDs + 8 bi-color LEDs
    - "bi-color mode": (12 + 2×6) bi-color LEDs + 24 single color LEDs
  - Up to one PWM output (currently unsupported)
    - Fixed duty cycle, 8 selectable frequencies (1.2kHz - 4.8kHz)

The patches have been in use downstream by OpenWrt for some months. As
the original patches are already a few years old, I would like to request
all patches to be reviewed again (and I've dropped all provided tags and
changelogs until v6).

---
Changes since v8:
Link: https://lore.kernel.org/lkml/20251119200306.60569-1-sander@svanheule.net/
- Rebase on top of v6.19-rc1
- Drop no longer needed __maybe_unused for PM functions
- No abbreviations in user messages
- Replace {0,RTL8231_REG_COUNT-1} with RTL8231_REG_{START,END}
- Replace led_start regmap_field with direct regmap operations
- Replace SIMPLE_DEV_PM_OPS with DEFINE_SIMPLE_DEV_PM_OPS
- Switch to REGCACHE_FLAT_S for improved cache performance

Changes since v7:
Link: https://lore.kernel.org/lkml/20251117215138.4353-1-sander@svanheule.net/
- All drivers can now be built independently with COMPILE_TEST
- Fix storage size of pinfunction flags in a more compatible way
- Add missing OF dependency to pinctrl driver
- Improve referenced properties in bindings

Changes since v6:
Link: https://lore.kernel.org/lkml/20251021142407.307753-1-sander@svanheule.net/
- Drop already merged regmap_gpio changes
- Devicetree bindings:
  - Relax description formatting
  - Use absolute paths for schema references
  - Enforce address format for led node names
  - Add pinctrl properties to led-controller node in example
- mfd driver:
  - Small code refactors, variable renames
  - Header include sorting
  - regmap/regcache usage updates
- pinctrl driver:
  - Fixed build issue on 64b platforms
  - Simplify safe direction startup config
  - Add GPIOLIB dependency

RFC for gpio-regmap changes:
Link: https://lore.kernel.org/lkml/20251020115636.55417-1-sander@svanheule.net/

Patch series v5 (June 2021):
Link: https://lore.kernel.org/lkml/cover.1623532208.git.sander@svanheule.net/

Sander Vanheule (6):
  dt-bindings: leds: Binding for RTL8231 scan matrix
  dt-bindings: mfd: Binding for RTL8231
  mfd: Add RTL8231 core device
  pinctrl: Add RTL8231 pin control and GPIO support
  leds: Add support for RTL8231 LED scan matrix
  MAINTAINERS: Add RTL8231 MFD driver

 .../bindings/leds/realtek,rtl8231-leds.yaml   | 136 +++++
 .../bindings/mfd/realtek,rtl8231.yaml         | 199 +++++++
 MAINTAINERS                                   |  10 +
 drivers/leds/Kconfig                          |  10 +
 drivers/leds/Makefile                         |   1 +
 drivers/leds/leds-rtl8231.c                   | 285 ++++++++++
 drivers/mfd/Kconfig                           |   9 +
 drivers/mfd/Makefile                          |   1 +
 drivers/mfd/rtl8231.c                         | 188 ++++++
 drivers/pinctrl/Kconfig                       |  12 +
 drivers/pinctrl/Makefile                      |   1 +
 drivers/pinctrl/pinctrl-rtl8231.c             | 533 ++++++++++++++++++
 include/linux/mfd/rtl8231.h                   |  73 +++
 13 files changed, 1458 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/leds/realtek,rtl8231-leds.yaml
 create mode 100644 Documentation/devicetree/bindings/mfd/realtek,rtl8231.yaml
 create mode 100644 drivers/leds/leds-rtl8231.c
 create mode 100644 drivers/mfd/rtl8231.c
 create mode 100644 drivers/pinctrl/pinctrl-rtl8231.c
 create mode 100644 include/linux/mfd/rtl8231.h

-- 
2.52.0