Basic pinctrl support for StarFive JH7110 RISC-V SoC
Subsystems (5)
Hal Feng
maintainerv4 cover Basic pinctrl support for StarFive JH7110 RISC-V SoC
This patch series adds basic pinctrl support for StarFive JH7110 SoC.
Changes since v3:
- Rebased on Linus's "devel" branch of linux-pinctrl repo, which was based on on tag v6.2-rc1.
- Dropped patch 1.
Patch 2 & 3:
- Added a reference for '-pins$' patternProperties.
- Put "additionalProperties: false" before properties section. (by Rob)
- Improved the description.
- Changed the node name in examples from "gpio" to "pinctrl". Patch 4:
- Added some missing headers. (by Andreas)
v3: https://lore.kernel.org/all/[email protected]/
Changes since v2:
- Rebased on tag v6.1.
Patch 1:
- Renamed pinctrl-starfive-jh7110.h to
starfive,jh7110-pinctrl.h. (by Krzysztof)
- Separated the register values in the binding header and stored them in a new file arch/riscv/boot/dts/starfive/jh7110-pinfunc.h. (by Krzysztof)
- Split patch 1 into sys part and aon part. Merged them into patch 2 and patch 3 respectively.
Patch 2 & 3:
- Dropped "reg-names" and the description of "interrupts". Dropped quotes behind "$ref" and kept consisitent quotes. (by Krzysztof)
- Moved gpio properties behind interrupt properties.
- Moved "required" behind "patternProperties". (by Krzysztof)
- Rewrote the examples of bindings. (by Krzysztof and Emil)
- Added Co-developed-by tag for Emil.
- Dropped unused "clocks" property in patch 3.
Patch 4 & 5:
- Renamed "pinctrl-starfive.*" to "pinctrl-starfive-jh7110.*" and replaced all "starfive_" prefix with "jh7110_" in these files. (by Emil)
- Dropped macro GPIO_NUM_PER_WORD. (by Emil)
- Dropped unused flag member in starfive_pinctrl_soc_info structure. (by Emil)
- Renamed "pinctrl-jh7110-sys.c" to "pinctrl-starfive-jh7110-sys.c". Renamed "pinctrl-jh7110-aon.c" to "pinctrl-starfive-jh7110-aon.c". (by Emil)
- Added individual Kconfig options for sys and aon pinctrl drivers. (by Emil)
- Made the sys and aon pinctrl drivers be modules. (by Emil)
- Added "JH7110_" prefix for macro SYS_GPO_PDA_0_74_CFG, SYS_GPO_PDA_89_94_CFG and AON_GPO_PDA_0_5_CFG. (by Emil)
- Dropped jh7110_sys_pinctrl_probe() and jh7110_aon_pinctrl_probe(). Got the match data in the common jh7110_pinctrl_probe() and used it to probe. (by Emil)
- Dropped the of_match_ptr macro(). (by Emil)
- Set the MODULE_LICENSE as "GPL" according to commit bf7fbeeae6db.
v2: https://lore.kernel.org/all/[email protected]/
Changes since v1:
- Rebased on tag v6.1-rc5.
- Dropped patch 22 and 23 since they were merged in v6.1-rc1.
- Removed some unused macros and register values which do not belong to bindings. Simplified pinctrl definitions in patch 24. (by Krzysztof)
- Split the bindings into sys pinctrl bindings and aon pinctrl bindings, and split patch 25 into two patches.
- Made the bindings follow generic pinctrl bindings. (by Krzysztof)
- Fixed some wrong indentation in bindings, and checked it with make dt_binding_check.
- Split the patch 26 into two patches which added sys and aon pinctrl driver respectively.
- Restructured the pinctrl drivers so made them follow generic pinctrl bindings. Rewrote dt_node_to_map and extracted the public code to make it clearer.
v1: https://lore.kernel.org/all/[email protected]/
Jianlong Huang (4):
dt-bindings: pinctrl: Add StarFive JH7110 sys pinctrl
dt-bindings: pinctrl: Add StarFive JH7110 aon pinctrl
pinctrl: starfive: Add StarFive JH7110 sys controller driver
pinctrl: starfive: Add StarFive JH7110 aon controller driver
.../pinctrl/starfive,jh7110-aon-pinctrl.yaml | 123 +++ .../pinctrl/starfive,jh7110-sys-pinctrl.yaml | 141 +++ MAINTAINERS | 8 +- drivers/pinctrl/starfive/Kconfig | 33 + drivers/pinctrl/starfive/Makefile | 4 + .../starfive/pinctrl-starfive-jh7110-aon.c | 177 ++++ .../starfive/pinctrl-starfive-jh7110-sys.c | 449 ++++++++ .../starfive/pinctrl-starfive-jh7110.c | 982 ++++++++++++++++++ .../starfive/pinctrl-starfive-jh7110.h | 70 ++ .../pinctrl/starfive,jh7110-pinctrl.h | 137 +++ 10 files changed, 2121 insertions(+), 3 deletions(-) create mode 100644 Documentation/devicetree/bindings/pinctrl/starfive,jh7110-aon-pinctrl.yaml create mode 100644 Documentation/devicetree/bindings/pinctrl/starfive,jh7110-sys-pinctrl.yaml create mode 100644 drivers/pinctrl/starfive/pinctrl-starfive-jh7110-aon.c create mode 100644 drivers/pinctrl/starfive/pinctrl-starfive-jh7110-sys.c create mode 100644 drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c create mode 100644 drivers/pinctrl/starfive/pinctrl-starfive-jh7110.h create mode 100644 include/dt-bindings/pinctrl/starfive,jh7110-pinctrl.h
Signature · 1 line
2.38.1
Hal Feng
maintainerPATCH v4 1/4 dt-bindings: pinctrl: Add StarFive JH7110 sys pinctrl
From: Jianlong Huang <[email protected]>
Add pinctrl bindings for StarFive JH7110 SoC sys pinctrl controller.
--- .../pinctrl/starfive,jh7110-sys-pinctrl.yaml | 141 ++++++++++++++++++ MAINTAINERS | 6 +- .../pinctrl/starfive,jh7110-pinctrl.h | 115 ++++++++++++++ 3 files changed, 260 insertions(+), 2 deletions(-) create mode 100644 Documentation/devicetree/bindings/pinctrl/starfive,jh7110-sys-pinctrl.yaml create mode 100644 include/dt-bindings/pinctrl/starfive,jh7110-pinctrl.h
Documentation/devicetree/bindings/pinctrl/starfive,jh7110-sys-pinctrl.yaml new file +141 -0
@@ -0,0 +1,141 @@ +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/pinctrl/starfive,jh7110-sys-pinctrl.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: StarFive JH7110 SYS Pin Controller + +description: | + Bindings for the JH7110 RISC-V SoC from StarFive Technology Ltd. + + Out of the SoC's many pins only the ones named PAD_GPIO0 to PAD_GPIO63 + can be multiplexed and have configurable bias, drive strength, + schmitt trigger etc. + Some peripherals have their I/O go through the 64 "GPIOs". This also + includes a number of other UARTs, I2Cs, SPIs, PWMs etc. + All these peripherals are connected to all 64 GPIOs such that + any GPIO can be set up to be controlled by any of the peripherals. + +maintainers: + - Jianlong Huang <[email protected]> + +properties: + compatible: + const: starfive,jh7110-sys-pinctrl + + reg: + maxItems: 1 + + clocks: + maxItems: 1 + + resets: + maxItems: 1 + + interrupts: + maxItems: 1 + + interrupt-controller: true + + '#interrupt-cells': + const: 2 + + gpio-controller: true + + '#gpio-cells': + const: 2 + +patternProperties: + '-[0-9]+$': + type: object + additionalProperties: false + patternProperties: + '-pins$': + type: object + description: | + A pinctrl node should contain at least one subnode representing the + pinctrl groups available on the machine. Each subnode will list the + pins it needs, and how they should be configured, with regard to + muxer configuration, bias, input enable/disable, input schmitt + trigger enable/disable, slew-rate and drive strength. + $ref: /schemas/pinctrl/pincfg-node.yaml + additionalProperties: false + + properties: + pinmux: + description: | + The list of GPIOs and their mux settings that properties in the + node apply to. This should be set using the GPIOMUX or PINMUX + macros. + $ref: /schemas/pinctrl/pinmux-node.yaml#/properties/pinmux + + bias-disable: true + + bias-pull-up: + type: boolean + + bias-pull-down: + type: boolean + + drive-strength: + enum: [ 2, 4, 8, 12 ] + + input-enable: true + + input-disable: true + + input-schmitt-enable: true + + input-schmitt-disable: true + + slew-rate: + maximum: 1 + +required: + - compatible + - reg + - clocks + - interrupts + - interrupt-controller + - '#interrupt-cells' + - gpio-controller + - '#gpio-cells' + +additionalProperties: false + +examples: + - | + pinctrl@13040000 { + compatible = "starfive,jh7110-sys-pinctrl"; + reg = <0x13040000 0x10000>; + clocks = <&syscrg 112>; + resets = <&syscrg 2>; + interrupts = <86>; + interrupt-controller; + #interrupt-cells = <2>; + gpio-controller; + #gpio-cells = <2>; + + uart0-0 { + tx-pins { + pinmux = <0xff140005>; + bias-disable; + drive-strength = <12>; + input-disable; + input-schmitt-disable; + slew-rate = <0>; + }; + + rx-pins { + pinmux = <0x0E000406>; + bias-pull-up; + drive-strength = <2>; + input-enable; + input-schmitt-enable; + slew-rate = <0>; + }; + }; + }; + +...
MAINTAINERS +4 -2
@@ -19890,13 +19890,15 @@ F: Documentation/devicetree/bindings/clock/starfive,jh7100-*.yaml F: drivers/clk/starfive/clk-starfive-jh7100* F: include/dt-bindings/clock/starfive-jh7100*.h -STARFIVE JH7100 PINCTRL DRIVER +STARFIVE JH71X0 PINCTRL DRIVERS M: Emil Renner Berthing <[email protected]> +M: Jianlong Huang <[email protected]> L: [email protected] S: Maintained -F: Documentation/devicetree/bindings/pinctrl/starfive,jh7100-pinctrl.yaml +F: Documentation/devicetree/bindings/pinctrl/starfive,jh71*.yaml F: drivers/pinctrl/starfive/ F: include/dt-bindings/pinctrl/pinctrl-starfive-jh7100.h +F: include/dt-bindings/pinctrl/starfive,jh7110-pinctrl.h STARFIVE JH7100 RESET CONTROLLER DRIVER M: Emil Renner Berthing <[email protected]>
include/dt-bindings/pinctrl/starfive,jh7110-pinctrl.h new file +115 -0
115 lines not on this page · raw message
Signature · 1 line
2.38.1
Re: [PATCH v4 1/4] dt-bindings: pinctrl: Add StarFive JH7110 sys pinctrl
Quoted 8 lines · Hal Feng
From: Jianlong Huang <[email protected]>
Add pinctrl bindings for StarFive JH7110 SoC sys pinctrl controller.
Signed-off-by Jianlong Huang <[email protected]>Co-developed-by Emil Renner Berthing <[email protected]>Signed-off-by Emil Renner Berthing <[email protected]>Signed-off-by Hal Feng <[email protected]>
Quoted 8 lines
--- .../pinctrl/starfive,jh7110-sys-pinctrl.yaml | 141 ++++++++++++++++++ MAINTAINERS | 6 +- .../pinctrl/starfive,jh7110-pinctrl.h | 115 ++++++++++++++ 3 files changed, 260 insertions(+), 2 deletions(-) create mode 100644 Documentation/devicetree/bindings/pinctrl/starfive,jh7110-sys-pinctrl.yaml create mode 100644 include/dt-bindings/pinctrl/starfive,jh7110-pinctrl.h
Rob Herring
maintainerRe: [PATCH v4 1/4] dt-bindings: pinctrl: Add StarFive JH7110 sys pinctrl
In reply to Hal FengQuoted 74 lines · Hal Feng
From: Jianlong Huang <[email protected]>
Add pinctrl bindings for StarFive JH7110 SoC sys pinctrl controller.
Signed-off-by Jianlong Huang <[email protected]>Co-developed-by Emil Renner Berthing <[email protected]>Signed-off-by Emil Renner Berthing <[email protected]>Signed-off-by Hal Feng <[email protected]>--- .../pinctrl/starfive,jh7110-sys-pinctrl.yaml | 141 ++++++++++++++++++ MAINTAINERS | 6 +- .../pinctrl/starfive,jh7110-pinctrl.h | 115 ++++++++++++++ 3 files changed, 260 insertions(+), 2 deletions(-) create mode 100644 Documentation/devicetree/bindings/pinctrl/starfive,jh7110-sys-pinctrl.yaml create mode 100644 include/dt-bindings/pinctrl/starfive,jh7110-pinctrl.hDocumentation/devicetree/bindings/pinctrl/starfive,jh7110-sys-pinctrl.yaml new file +52
-0@@ -0,0 +1,141 @@ +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/pinctrl/starfive,jh7110-sys-pinctrl.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: StarFive JH7110 SYS Pin Controller + +description: | + Bindings for the JH7110 RISC-V SoC from StarFive Technology Ltd. + + Out of the SoC's many pins only the ones named PAD_GPIO0 to PAD_GPIO63 + can be multiplexed and have configurable bias, drive strength, + schmitt trigger etc. + Some peripherals have their I/O go through the 64 "GPIOs". This also + includes a number of other UARTs, I2Cs, SPIs, PWMs etc. + All these peripherals are connected to all 64 GPIOs such that + any GPIO can be set up to be controlled by any of the peripherals. + +maintainers: + - Jianlong Huang <[email protected]> + +properties: + compatible: + const: starfive,jh7110-sys-pinctrl + + reg: + maxItems: 1 + + clocks: + maxItems: 1 + + resets: + maxItems: 1 + + interrupts: + maxItems: 1 + + interrupt-controller: true + + '#interrupt-cells': + const: 2 + + gpio-controller: true + + '#gpio-cells': + const: 2 + +patternProperties: + '-[0-9]+$': + type: object + additionalProperties: false
Documentation/devicetree/bindings/pinctrl/starfive,jh7110-sys-pinctrl.yaml line 62
Quoted 10 lines
Documentation/devicetree/bindings/pinctrl/starfive,jh7110-sys-pinctrl.yaml new file +10
-0+ patternProperties: + '-pins$': + type: object + description: | + A pinctrl node should contain at least one subnode representing the + pinctrl groups available on the machine. Each subnode will list the + pins it needs, and how they should be configured, with regard to + muxer configuration, bias, input enable/disable, input schmitt + trigger enable/disable, slew-rate and drive strength. + $ref: /schemas/pinctrl/pincfg-node.yaml
On 2nd look, this should be:
allOf:
- $ref: /schemas/pinctrl/pincfg-node.yaml
- $ref: /schemas/pinctrl/pinmux-node.yaml
Documentation/devicetree/bindings/pinctrl/starfive,jh7110-sys-pinctrl.yaml line 71
Quoted 9 lines
Documentation/devicetree/bindings/pinctrl/starfive,jh7110-sys-pinctrl.yaml new file +9
-0+ additionalProperties: false + + properties: + pinmux: + description: | + The list of GPIOs and their mux settings that properties in the + node apply to. This should be set using the GPIOMUX or PINMUX + macros. + $ref: /schemas/pinctrl/pinmux-node.yaml#/properties/pinmux
And drop this.
Same in other patch. With that, Reviewed-by stands.
Quoted 216 lines
Documentation/devicetree/bindings/pinctrl/starfive,jh7110-sys-pinctrl.yaml new file +70
-0+ + bias-disable: true + + bias-pull-up: + type: boolean + + bias-pull-down: + type: boolean + + drive-strength: + enum: [ 2, 4, 8, 12 ] + + input-enable: true + + input-disable: true + + input-schmitt-enable: true + + input-schmitt-disable: true + + slew-rate: + maximum: 1 + +required: + - compatible + - reg + - clocks + - interrupts + - interrupt-controller + - '#interrupt-cells' + - gpio-controller + - '#gpio-cells' + +additionalProperties: false + +examples: + - | + pinctrl@13040000 { + compatible = "starfive,jh7110-sys-pinctrl"; + reg = <0x13040000 0x10000>; + clocks = <&syscrg 112>; + resets = <&syscrg 2>; + interrupts = <86>; + interrupt-controller; + #interrupt-cells = <2>; + gpio-controller; + #gpio-cells = <2>; + + uart0-0 { + tx-pins { + pinmux = <0xff140005>; + bias-disable; + drive-strength = <12>; + input-disable; + input-schmitt-disable; + slew-rate = <0>; + }; + + rx-pins { + pinmux = <0x0E000406>; + bias-pull-up; + drive-strength = <2>; + input-enable; + input-schmitt-enable; + slew-rate = <0>; + }; + }; + }; + +...MAINTAINERS +4
-2@@ -19890,13 +19890,15 @@ F: Documentation/devicetree/bindings/clock/starfive,jh7100-*.yaml F: drivers/clk/starfive/clk-starfive-jh7100* F: include/dt-bindings/clock/starfive-jh7100*.h -STARFIVE JH7100 PINCTRL DRIVER +STARFIVE JH71X0 PINCTRL DRIVERS M: Emil Renner Berthing <[email protected]> +M: Jianlong Huang <[email protected]> L: [email protected] S: Maintained -F: Documentation/devicetree/bindings/pinctrl/starfive,jh7100-pinctrl.yaml +F: Documentation/devicetree/bindings/pinctrl/starfive,jh71*.yaml F: drivers/pinctrl/starfive/ F: include/dt-bindings/pinctrl/pinctrl-starfive-jh7100.h +F: include/dt-bindings/pinctrl/starfive,jh7110-pinctrl.h STARFIVE JH7100 RESET CONTROLLER DRIVER M: Emil Renner Berthing <[email protected]>include/dt-bindings/pinctrl/starfive,jh7110-pinctrl.h new file +115
-0@@ -0,0 +1,115 @@ +/* SPDX-License-Identifier: GPL-2.0 OR MIT */ +/* +* Copyright (C) 2022 Emil Renner Berthing <[email protected]> +* Copyright (C) 2022 StarFive Technology Co., Ltd. +*/ + +#ifndef __DT_BINDINGS_PINCTRL_STARFIVE_JH7110_H__ +#define __DT_BINDINGS_PINCTRL_STARFIVE_JH7110_H__ + +/* sys_iomux pins */ +#define PAD_GPIO0 0 +#define PAD_GPIO1 1 +#define PAD_GPIO2 2 +#define PAD_GPIO3 3 +#define PAD_GPIO4 4 +#define PAD_GPIO5 5 +#define PAD_GPIO6 6 +#define PAD_GPIO7 7 +#define PAD_GPIO8 8 +#define PAD_GPIO9 9 +#define PAD_GPIO10 10 +#define PAD_GPIO11 11 +#define PAD_GPIO12 12 +#define PAD_GPIO13 13 +#define PAD_GPIO14 14 +#define PAD_GPIO15 15 +#define PAD_GPIO16 16 +#define PAD_GPIO17 17 +#define PAD_GPIO18 18 +#define PAD_GPIO19 19 +#define PAD_GPIO20 20 +#define PAD_GPIO21 21 +#define PAD_GPIO22 22 +#define PAD_GPIO23 23 +#define PAD_GPIO24 24 +#define PAD_GPIO25 25 +#define PAD_GPIO26 26 +#define PAD_GPIO27 27 +#define PAD_GPIO28 28 +#define PAD_GPIO29 29 +#define PAD_GPIO30 30 +#define PAD_GPIO31 31 +#define PAD_GPIO32 32 +#define PAD_GPIO33 33 +#define PAD_GPIO34 34 +#define PAD_GPIO35 35 +#define PAD_GPIO36 36 +#define PAD_GPIO37 37 +#define PAD_GPIO38 38 +#define PAD_GPIO39 39 +#define PAD_GPIO40 40 +#define PAD_GPIO41 41 +#define PAD_GPIO42 42 +#define PAD_GPIO43 43 +#define PAD_GPIO44 44 +#define PAD_GPIO45 45 +#define PAD_GPIO46 46 +#define PAD_GPIO47 47 +#define PAD_GPIO48 48 +#define PAD_GPIO49 49 +#define PAD_GPIO50 50 +#define PAD_GPIO51 51 +#define PAD_GPIO52 52 +#define PAD_GPIO53 53 +#define PAD_GPIO54 54 +#define PAD_GPIO55 55 +#define PAD_GPIO56 56 +#define PAD_GPIO57 57 +#define PAD_GPIO58 58 +#define PAD_GPIO59 59 +#define PAD_GPIO60 60 +#define PAD_GPIO61 61 +#define PAD_GPIO62 62 +#define PAD_GPIO63 63 +#define PAD_SD0_CLK 64 +#define PAD_SD0_CMD 65 +#define PAD_SD0_DATA0 66 +#define PAD_SD0_DATA1 67 +#define PAD_SD0_DATA2 68 +#define PAD_SD0_DATA3 69 +#define PAD_SD0_DATA4 70 +#define PAD_SD0_DATA5 71 +#define PAD_SD0_DATA6 72 +#define PAD_SD0_DATA7 73 +#define PAD_SD0_STRB 74 +#define PAD_GMAC1_MDC 75 +#define PAD_GMAC1_MDIO 76 +#define PAD_GMAC1_RXD0 77 +#define PAD_GMAC1_RXD1 78 +#define PAD_GMAC1_RXD2 79 +#define PAD_GMAC1_RXD3 80 +#define PAD_GMAC1_RXDV 81 +#define PAD_GMAC1_RXC 82 +#define PAD_GMAC1_TXD0 83 +#define PAD_GMAC1_TXD1 84 +#define PAD_GMAC1_TXD2 85 +#define PAD_GMAC1_TXD3 86 +#define PAD_GMAC1_TXEN 87 +#define PAD_GMAC1_TXC 88 +#define PAD_QSPI_SCLK 89 +#define PAD_QSPI_CS0 90 +#define PAD_QSPI_DATA0 91 +#define PAD_QSPI_DATA1 92 +#define PAD_QSPI_DATA2 93 +#define PAD_QSPI_DATA3 94 + +#define GPOUT_LOW 0 +#define GPOUT_HIGH 1 + +#define GPOEN_ENABLE 0 +#define GPOEN_DISABLE 1 + +#define GPI_NONE 255 + +#endif Signature · 1 line
2.38.1
Hal Feng
maintainerRe: [PATCH v4 1/4] dt-bindings: pinctrl: Add StarFive JH7110 sys pinctrl
Quoted 72 lines · Rob Herring
Quoted 58 lines · Hal Feng
Documentation/devicetree/bindings/pinctrl/starfive,jh7110-sys-pinctrl.yaml new file +52
-0@@ -0,0 +1,141 @@ +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/pinctrl/starfive,jh7110-sys-pinctrl.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: StarFive JH7110 SYS Pin Controller + +description: | + Bindings for the JH7110 RISC-V SoC from StarFive Technology Ltd. + + Out of the SoC's many pins only the ones named PAD_GPIO0 to PAD_GPIO63 + can be multiplexed and have configurable bias, drive strength, + schmitt trigger etc. + Some peripherals have their I/O go through the 64 "GPIOs". This also + includes a number of other UARTs, I2Cs, SPIs, PWMs etc. + All these peripherals are connected to all 64 GPIOs such that + any GPIO can be set up to be controlled by any of the peripherals. + +maintainers: + - Jianlong Huang <[email protected]> + +properties: + compatible: + const: starfive,jh7110-sys-pinctrl + + reg: + maxItems: 1 + + clocks: + maxItems: 1 + + resets: + maxItems: 1 + + interrupts: + maxItems: 1 + + interrupt-controller: true + + '#interrupt-cells': + const: 2 + + gpio-controller: true + + '#gpio-cells': + const: 2 + +patternProperties: + '-[0-9]+$': + type: object + additionalProperties: falseDocumentation/devicetree/bindings/pinctrl/starfive,jh7110-sys-pinctrl.yaml line 62
Quoted 10 lines
Documentation/devicetree/bindings/pinctrl/starfive,jh7110-sys-pinctrl.yaml new file +10
-0+ patternProperties: + '-pins$': + type: object + description: | + A pinctrl node should contain at least one subnode representing the + pinctrl groups available on the machine. Each subnode will list the + pins it needs, and how they should be configured, with regard to + muxer configuration, bias, input enable/disable, input schmitt + trigger enable/disable, slew-rate and drive strength. + $ref: /schemas/pinctrl/pincfg-node.yamlOn 2nd look, this should be:
Quoted 3 lines
allOf:
- $ref: /schemas/pinctrl/pincfg-node.yaml
- $ref: /schemas/pinctrl/pinmux-node.yaml
Will fix accordingly. Thanks.
Quoted 11 lines
Documentation/devicetree/bindings/pinctrl/starfive,jh7110-sys-pinctrl.yaml line 71
Quoted 10 lines
Documentation/devicetree/bindings/pinctrl/starfive,jh7110-sys-pinctrl.yaml new file +9
-0+ additionalProperties: false + + properties: + pinmux: + description: | + The list of GPIOs and their mux settings that properties in the + node apply to. This should be set using the GPIOMUX or PINMUX + macros. + $ref: /schemas/pinctrl/pinmux-node.yaml#/properties/pinmux
Quoted 3 lines
And drop this.
Same in other patch. With that, Reviewed-by stands.
Will fix it. Thank you for your review.
Best regards,
Hal
Hal Feng
maintainerPATCH v4 2/4 dt-bindings: pinctrl: Add StarFive JH7110 aon pinctrl
In reply to Hal FengFrom: Jianlong Huang <[email protected]>
Add pinctrl bindings for StarFive JH7110 SoC aon pinctrl controller.
--- .../pinctrl/starfive,jh7110-aon-pinctrl.yaml | 123 ++++++++++++++++++ .../pinctrl/starfive,jh7110-pinctrl.h | 22 ++++ 2 files changed, 145 insertions(+) create mode 100644 Documentation/devicetree/bindings/pinctrl/starfive,jh7110-aon-pinctrl.yaml
Documentation/devicetree/bindings/pinctrl/starfive,jh7110-aon-pinctrl.yaml new file +123 -0
@@ -0,0 +1,123 @@ +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/pinctrl/starfive,jh7110-aon-pinctrl.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: StarFive JH7110 AON Pin Controller + +description: | + Bindings for the JH7110 RISC-V SoC from StarFive Technology Ltd. + + Out of the SoC's many pins only the ones named PAD_RGPIO0 to PAD_RGPIO3 + can be multiplexed and have configurable bias, drive strength, + schmitt trigger etc. + Some peripherals such as PWM have their I/O go through the 4 "GPIOs". + +maintainers: + - Jianlong Huang <[email protected]> + +properties: + compatible: + const: starfive,jh7110-aon-pinctrl + + reg: + maxItems: 1 + + resets: + maxItems: 1 + + interrupts: + maxItems: 1 + + interrupt-controller: true + + '#interrupt-cells': + const: 2 + + gpio-controller: true + + '#gpio-cells': + const: 2 + +patternProperties: + '-[0-9]+$': + type: object + additionalProperties: false + patternProperties: + '-pins$': + type: object + description: | + A pinctrl node should contain at least one subnode representing the + pinctrl groups available on the machine. Each subnode will list the + pins it needs, and how they should be configured, with regard to + muxer configuration, bias, input enable/disable, input schmitt + trigger enable/disable, slew-rate and drive strength. + $ref: /schemas/pinctrl/pincfg-node.yaml + additionalProperties: false + + properties: + pinmux: + description: | + The list of GPIOs and their mux settings that properties in the + node apply to. This should be set using the GPIOMUX macro. + $ref: /schemas/pinctrl/pinmux-node.yaml#/properties/pinmux + + bias-disable: true + + bias-pull-up: + type: boolean + + bias-pull-down: + type: boolean + + drive-strength: + enum: [ 2, 4, 8, 12 ] + + input-enable: true + + input-disable: true + + input-schmitt-enable: true + + input-schmitt-disable: true + + slew-rate: + maximum: 1 + +required: + - compatible + - reg + - interrupts + - interrupt-controller + - '#interrupt-cells' + - gpio-controller + - '#gpio-cells' + +additionalProperties: false + +examples: + - | + pinctrl@17020000 { + compatible = "starfive,jh7110-aon-pinctrl"; + reg = <0x17020000 0x10000>; + resets = <&aoncrg 2>; + interrupts = <85>; + interrupt-controller; + #interrupt-cells = <2>; + gpio-controller; + #gpio-cells = <2>; + + pwm-0 { + pwm-pins { + pinmux = <0xff030802>; + bias-disable; + drive-strength = <12>; + input-disable; + input-schmitt-disable; + slew-rate = <0>; + }; + }; + }; + +...
include/dt-bindings/pinctrl/starfive,jh7110-pinctrl.h +22 -0
@@ -104,6 +104,28 @@#define PAD_QSPI_DATA2 93#define PAD_QSPI_DATA3 94 +/* aon_iomux pins */ +#define PAD_TESTEN 0 +#define PAD_RGPIO0 1 +#define PAD_RGPIO1 2 +#define PAD_RGPIO2 3 +#define PAD_RGPIO3 4 +#define PAD_RSTN 5 +#define PAD_GMAC0_MDC 6 +#define PAD_GMAC0_MDIO 7 +#define PAD_GMAC0_RXD0 8 +#define PAD_GMAC0_RXD1 9 +#define PAD_GMAC0_RXD2 10 +#define PAD_GMAC0_RXD3 11 +#define PAD_GMAC0_RXDV 12 +#define PAD_GMAC0_RXC 13 +#define PAD_GMAC0_TXD0 14 +#define PAD_GMAC0_TXD1 15 +#define PAD_GMAC0_TXD2 16 +#define PAD_GMAC0_TXD3 17 +#define PAD_GMAC0_TXEN 18 +#define PAD_GMAC0_TXC 19 +#define GPOUT_LOW 0#define GPOUT_HIGH 1
Signature · 1 line
2.38.1
Re: [PATCH v4 2/4] dt-bindings: pinctrl: Add StarFive JH7110 aon pinctrl
Quoted 8 lines · Hal Feng
From: Jianlong Huang <[email protected]>
Add pinctrl bindings for StarFive JH7110 SoC aon pinctrl controller.
Signed-off-by Jianlong Huang <[email protected]>Co-developed-by Emil Renner Berthing <[email protected]>Signed-off-by Emil Renner Berthing <[email protected]>Signed-off-by Hal Feng <[email protected]>
Quoted 6 lines
--- .../pinctrl/starfive,jh7110-aon-pinctrl.yaml | 123 ++++++++++++++++++ .../pinctrl/starfive,jh7110-pinctrl.h | 22 ++++ 2 files changed, 145 insertions(+) create mode 100644 Documentation/devicetree/bindings/pinctrl/starfive,jh7110-aon-pinctrl.yaml
With the issue noted fixed:
Hal Feng
maintainerRe: [PATCH v4 2/4] dt-bindings: pinctrl: Add StarFive JH7110 aon pinctrl
Quoted 16 lines · Rob Herring
Quoted 8 lines · Hal Feng
From: Jianlong Huang <[email protected]>
Add pinctrl bindings for StarFive JH7110 SoC aon pinctrl controller.
Signed-off-by Jianlong Huang <[email protected]>Co-developed-by Emil Renner Berthing <[email protected]>Signed-off-by Emil Renner Berthing <[email protected]>Signed-off-by Hal Feng <[email protected]>Quoted 6 lines
--- .../pinctrl/starfive,jh7110-aon-pinctrl.yaml | 123 ++++++++++++++++++ .../pinctrl/starfive,jh7110-pinctrl.h | 22 ++++ 2 files changed, 145 insertions(+) create mode 100644 Documentation/devicetree/bindings/pinctrl/starfive,jh7110-aon-pinctrl.yaml
Quoted 3 lines
With the issue noted fixed:
Reviewed-by Rob Herring <[email protected]>
Will fix accordingly. Thank you again for spending time to review.
Best regards,
Hal
Hal Feng
maintainerPATCH v4 3/4 pinctrl: starfive: Add StarFive JH7110 sys controller driver
In reply to Hal FengFrom: Jianlong Huang <[email protected]>
Add pinctrl driver for StarFive JH7110 SoC sys pinctrl controller.
--- MAINTAINERS | 2 +- drivers/pinctrl/starfive/Kconfig | 21 + drivers/pinctrl/starfive/Makefile | 3 + .../starfive/pinctrl-starfive-jh7110-sys.c | 449 ++++++++ .../starfive/pinctrl-starfive-jh7110.c | 982 ++++++++++++++++++ .../starfive/pinctrl-starfive-jh7110.h | 70 ++ 6 files changed, 1526 insertions(+), 1 deletion(-) create mode 100644 drivers/pinctrl/starfive/pinctrl-starfive-jh7110-sys.c create mode 100644 drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c create mode 100644 drivers/pinctrl/starfive/pinctrl-starfive-jh7110.h
MAINTAINERS +1 -1
@@ -19896,7 +19896,7 @@ M: Jianlong Huang <[email protected]> L: [email protected] S: Maintained F: Documentation/devicetree/bindings/pinctrl/starfive,jh71*.yaml -F: drivers/pinctrl/starfive/ +F: drivers/pinctrl/starfive/pinctrl-starfive-jh71* F: include/dt-bindings/pinctrl/pinctrl-starfive-jh7100.h F: include/dt-bindings/pinctrl/starfive,jh7110-pinctrl.h
drivers/pinctrl/starfive/Kconfig +21 -0
@@ -16,3 +16,24 @@ config PINCTRL_STARFIVE_JH7100 This also provides an interface to the GPIO pins not used by other peripherals supporting inputs, outputs, configuring pull-up/pull-down and interrupts on input changes. + +config PINCTRL_STARFIVE_JH7110 + bool + select GENERIC_PINCTRL_GROUPS + select GENERIC_PINMUX_FUNCTIONS + select GENERIC_PINCONF + select GPIOLIB + select GPIOLIB_IRQCHIP + select OF_GPIO + +config PINCTRL_STARFIVE_JH7110_SYS + tristate "System pinctrl and GPIO driver for the StarFive JH7110 SoC" + depends on SOC_STARFIVE || COMPILE_TEST + depends on OF + select PINCTRL_STARFIVE_JH7110 + default SOC_STARFIVE + help + Say yes here to support system pin control on the StarFive JH7110 SoC. + This also provides an interface to the GPIO pins not used by other + peripherals supporting inputs, outputs, configuring pull-up/pull-down + and interrupts on input changes.
drivers/pinctrl/starfive/Makefile +3 -0
@@ -1,3 +1,6 @@ # SPDX-License-Identifier: GPL-2.0 obj-$(CONFIG_PINCTRL_STARFIVE_JH7100) += pinctrl-starfive-jh7100.o + +obj-$(CONFIG_PINCTRL_STARFIVE_JH7110) += pinctrl-starfive-jh7110.o +obj-$(CONFIG_PINCTRL_STARFIVE_JH7110_SYS) += pinctrl-starfive-jh7110-sys.o
drivers/pinctrl/starfive/pinctrl-starfive-jh7110-sys.c new file +449 -0
449 lines not on this page · raw message
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c new file +982 -0
982 lines not on this page · raw message
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.h new file +70 -0
70 lines not on this page · raw message
Signature · 1 line
2.38.1
Hal Feng
maintainerPATCH v4 4/4 pinctrl: starfive: Add StarFive JH7110 aon controller driver
In reply to Hal FengFrom: Jianlong Huang <[email protected]>
Add pinctrl driver for StarFive JH7110 SoC aon pinctrl controller.
--- drivers/pinctrl/starfive/Kconfig | 12 ++ drivers/pinctrl/starfive/Makefile | 1 + .../starfive/pinctrl-starfive-jh7110-aon.c | 177 ++++++++++++++++++ 3 files changed, 190 insertions(+) create mode 100644 drivers/pinctrl/starfive/pinctrl-starfive-jh7110-aon.c
drivers/pinctrl/starfive/Kconfig +12 -0
@@ -37,3 +37,15 @@ config PINCTRL_STARFIVE_JH7110_SYS This also provides an interface to the GPIO pins not used by other peripherals supporting inputs, outputs, configuring pull-up/pull-down and interrupts on input changes. + +config PINCTRL_STARFIVE_JH7110_AON + tristate "Always-on pinctrl and GPIO driver for the StarFive JH7110 SoC" + depends on SOC_STARFIVE || COMPILE_TEST + depends on OF + select PINCTRL_STARFIVE_JH7110 + default SOC_STARFIVE + help + Say yes here to support always-on pin control on the StarFive JH7110 SoC. + This also provides an interface to the GPIO pins not used by other + peripherals supporting inputs, outputs, configuring pull-up/pull-down + and interrupts on input changes.
drivers/pinctrl/starfive/Makefile +1 -0
@@ -4,3 +4,4 @@ obj-$(CONFIG_PINCTRL_STARFIVE_JH7100) += pinctrl-starfive-jh7100.o obj-$(CONFIG_PINCTRL_STARFIVE_JH7110) += pinctrl-starfive-jh7110.o obj-$(CONFIG_PINCTRL_STARFIVE_JH7110_SYS) += pinctrl-starfive-jh7110-sys.o +obj-$(CONFIG_PINCTRL_STARFIVE_JH7110_AON) += pinctrl-starfive-jh7110-aon.o
drivers/pinctrl/starfive/pinctrl-starfive-jh7110-aon.c new file +177 -0
177 lines not on this page · raw message
Signature · 1 line
2.38.1
Hal Feng
maintainerQuoted 14 lines · Hal Feng
This patch series adds basic pinctrl support for StarFive JH7110 SoC.
Changes since v3:
- Rebased on Linus's "devel" branch of linux-pinctrl repo, which was based on on tag v6.2-rc1.
- Dropped patch 1.
Patch 2 & 3:
- Added a reference for '-pins$' patternProperties.
- Put "additionalProperties: false" before properties section. (by Rob)
- Improved the description.
- Changed the node name in examples from "gpio" to "pinctrl". Patch 4:
- Added some missing headers. (by Andreas)
Quoted 1 line
Hi, Linus,
I have resent the patches rebased on your "devel" branch. Rob has added Reviewed-by tags for DT bindings, but the DT binding patches still need to be modified a little bit. Could you apply this series if I modify the DT bindings patches and resend as v5? Or it need another round of review?
Best regards,
Hal
Quoted 4 lines · Hal Feng
I have resent the patches rebased on your "devel" branch. Rob has added Reviewed-by tags for DT bindings, but the DT binding patches still need to be modified a little bit. Could you apply this series if I modify the DT bindings patches and resend as v5? Or it need another round of review?
No more review needed for small fixes. Just resend a v5 and include the review tags and I will apply it. After a few revisions this is usually fine.
Yours,
Linus Walleij
_______________________________________________
linux-riscv mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-riscv