[PATCH v7 00/21] Add basic pinctrl drivers for JHB100 SoC
From: Changhuang Liang
Date: Mon Aug 31 2026 - 07:41:35 EST
The JHB100 SoC has 13 pinctrl domains - sys0, sys0h, sys1, sys2, per0, per1,
per2, per2pok, per3, adc0, adc1, emmc, and vga.
In the current series, we will only add the following pinctrl:
- sys0, sys0h, sys1, sys2
- per0, per1, per2, per2pok, per3
The remaining pinctrl will be implemented in future series.
This series depends on the series:
https://lore.kernel.org/all/20260508053632.818548-1-changhuang.liang@xxxxxxxxxxxxxxxx/
Change since v5:
PATCH 3/5/7/9/11/13/15/17/19/21:
- Change #interrupt-cells from 3 to 2.
- Change #gpio-cells from 3 to 2.
- Revert the gpio-ranges element from 5 to 4.
PATCH 4:
- Remove struct jhb100_gpio_bank
- Remove starfive_of_node_instance_match()
- Remove IRQF_SHARED in devm_request_irq()
- Remove the use of gpio_generic_chip_init() and switch to using the
custom jhb100_gpio_get/set().
- Replace of_device_get_match_data() with device_get_match_data().
- Add a set of macros to simplify getting GPIO register offsets and masks.
#define JHB100_NR_GPIOS_PER_BANK 32
#define JHB100_BANK_OFFSET(n) ((n) * 4)
#define JHB100_GPIO_BANK(gpio) ((gpio) / JHB100_NR_GPIOS_PER_BANK)
#define JHB100_GPIO_MASK(gpio) BIT((gpio) % JHB100_NR_GPIOS_PER_BANK)
#define JHB100_GPIO_REG_OFFSET(gpio) JHB100_BANK_OFFSET(JHB100_GPIO_BANK(gpio))
- Update jhb100_gpio_irq_handler() to support domains with more than 32 GPIOs.
v6: https://lore.kernel.org/all/20260829025720.23915-1-changhuang.liang@xxxxxxxxxxxxxxxx/
v5: https://lore.kernel.org/all/20260810063650.239303-1-changhuang.liang@xxxxxxxxxxxxxxxx/
v4: https://lore.kernel.org/all/20260801072711.153217-1-changhuang.liang@xxxxxxxxxxxxxxxx/
v3: https://lore.kernel.org/all/20260603055347.66845-1-changhuang.liang@xxxxxxxxxxxxxxxx/
v2: https://lore.kernel.org/all/20260514111218.94519-1-changhuang.liang@xxxxxxxxxxxxxxxx/
v1: https://lore.kernel.org/all/20260424111330.702272-1-changhuang.liang@xxxxxxxxxxxxxxxx/
Changhuang Liang (21):
dt-bindings: pincfg-node: Add property 'input-debounce-ns'
pinctrl: pinconf-generic: Add property 'input-debounce-ns'
dt-bindings: pinctrl: Add starfive,jhb100-sys0-pinctrl
pinctrl: starfive: Add StarFive JHB100 sys0 controller driver
dt-bindings: pinctrl: Add starfive,jhb100-sys0h-pinctrl
pinctrl: starfive: Add StarFive JHB100 sys0h controller driver
dt-bindings: pinctrl: Add starfive,jhb100-sys1-pinctrl
pinctrl: starfive: Add StarFive JHB100 sys1 controller driver
dt-bindings: pinctrl: Add starfive,jhb100-sys2-pinctrl
pinctrl: starfive: Add StarFive JHB100 sys2 controller driver
dt-bindings: pinctrl: Add starfive,jhb100-per0-pinctrl
pinctrl: starfive: Add StarFive JHB100 per0 controller driver
dt-bindings: pinctrl: Add starfive,jhb100-per1-pinctrl
pinctrl: starfive: Add StarFive JHB100 per1 controller driver
dt-bindings: pinctrl: Add starfive,jhb100-per2-pinctrl
pinctrl: starfive: Add StarFive JHB100 per2 controller driver
dt-bindings: pinctrl: Add starfive,jhb100-per2pok-pinctrl
pinctrl: starfive: Add StarFive JHB100 per2pok controller driver
dt-bindings: pinctrl: Add starfive,jhb100-per3-pinctrl
pinctrl: starfive: Add StarFive JHB100 per3 controller driver
riscv: dts: starfive: jhb100: Add pinctrl nodes
.../bindings/pinctrl/pincfg-node.yaml | 11 +
.../pinctrl/starfive,jhb100-per0-pinctrl.yaml | 179 ++
.../pinctrl/starfive,jhb100-per1-pinctrl.yaml | 178 ++
.../pinctrl/starfive,jhb100-per2-pinctrl.yaml | 168 ++
.../starfive,jhb100-per2pok-pinctrl.yaml | 162 ++
.../pinctrl/starfive,jhb100-per3-pinctrl.yaml | 166 ++
.../pinctrl/starfive,jhb100-sys0-pinctrl.yaml | 164 ++
.../starfive,jhb100-sys0h-pinctrl.yaml | 162 ++
.../pinctrl/starfive,jhb100-sys1-pinctrl.yaml | 164 ++
.../pinctrl/starfive,jhb100-sys2-pinctrl.yaml | 165 ++
MAINTAINERS | 9 +
arch/riscv/boot/dts/starfive/jhb100-evb1.dts | 3 +
.../boot/dts/starfive/jhb100-pinctrl.dtsi | 23 +
arch/riscv/boot/dts/starfive/jhb100.dtsi | 107 ++
drivers/pinctrl/pinconf-generic.c | 2 +
drivers/pinctrl/starfive/Kconfig | 107 ++
drivers/pinctrl/starfive/Makefile | 11 +
.../starfive/pinctrl-starfive-jhb100-per0.c | 152 ++
.../starfive/pinctrl-starfive-jhb100-per1.c | 162 ++
.../starfive/pinctrl-starfive-jhb100-per2.c | 123 ++
.../pinctrl-starfive-jhb100-per2pok.c | 95 ++
.../starfive/pinctrl-starfive-jhb100-per3.c | 117 ++
.../starfive/pinctrl-starfive-jhb100-sys0.c | 118 ++
.../starfive/pinctrl-starfive-jhb100-sys0h.c | 95 ++
.../starfive/pinctrl-starfive-jhb100-sys1.c | 91 ++
.../starfive/pinctrl-starfive-jhb100-sys2.c | 131 ++
.../starfive/pinctrl-starfive-jhb100.c | 1446 +++++++++++++++++
.../starfive/pinctrl-starfive-jhb100.h | 153 ++
.../pinctrl/starfive,jhb100-pinctrl.h | 247 +++
include/linux/pinctrl/pinconf-generic.h | 5 +
30 files changed, 4716 insertions(+)
create mode 100644 Documentation/devicetree/bindings/pinctrl/starfive,jhb100-per0-pinctrl.yaml
create mode 100644 Documentation/devicetree/bindings/pinctrl/starfive,jhb100-per1-pinctrl.yaml
create mode 100644 Documentation/devicetree/bindings/pinctrl/starfive,jhb100-per2-pinctrl.yaml
create mode 100644 Documentation/devicetree/bindings/pinctrl/starfive,jhb100-per2pok-pinctrl.yaml
create mode 100644 Documentation/devicetree/bindings/pinctrl/starfive,jhb100-per3-pinctrl.yaml
create mode 100644 Documentation/devicetree/bindings/pinctrl/starfive,jhb100-sys0-pinctrl.yaml
create mode 100644 Documentation/devicetree/bindings/pinctrl/starfive,jhb100-sys0h-pinctrl.yaml
create mode 100644 Documentation/devicetree/bindings/pinctrl/starfive,jhb100-sys1-pinctrl.yaml
create mode 100644 Documentation/devicetree/bindings/pinctrl/starfive,jhb100-sys2-pinctrl.yaml
create mode 100644 arch/riscv/boot/dts/starfive/jhb100-pinctrl.dtsi
create mode 100644 drivers/pinctrl/starfive/pinctrl-starfive-jhb100-per0.c
create mode 100644 drivers/pinctrl/starfive/pinctrl-starfive-jhb100-per1.c
create mode 100644 drivers/pinctrl/starfive/pinctrl-starfive-jhb100-per2.c
create mode 100644 drivers/pinctrl/starfive/pinctrl-starfive-jhb100-per2pok.c
create mode 100644 drivers/pinctrl/starfive/pinctrl-starfive-jhb100-per3.c
create mode 100644 drivers/pinctrl/starfive/pinctrl-starfive-jhb100-sys0.c
create mode 100644 drivers/pinctrl/starfive/pinctrl-starfive-jhb100-sys0h.c
create mode 100644 drivers/pinctrl/starfive/pinctrl-starfive-jhb100-sys1.c
create mode 100644 drivers/pinctrl/starfive/pinctrl-starfive-jhb100-sys2.c
create mode 100644 drivers/pinctrl/starfive/pinctrl-starfive-jhb100.c
create mode 100644 drivers/pinctrl/starfive/pinctrl-starfive-jhb100.h
create mode 100644 include/dt-bindings/pinctrl/starfive,jhb100-pinctrl.h
--
2.25.1