在 2022/11/8 下午11:28, Krzysztof Kozlowski 写道:
On 08/11/2022 10:21, Yinbo Zhu wrote:Add the Loongson series gpio binding with DT schema format using json-schema. Signed-off-by: Yinbo Zhu <zhuyinbo@xxxxxxxxxxx> --- .../bindings/gpio/loongson,ls-gpio.yaml | 154 ++++++++++++++++++ MAINTAINERS | 11 ++ 2 files changed, 165 insertions(+) create mode 100644 Documentation/devicetree/bindings/gpio/loongson,ls-gpio.yaml diff --git a/Documentation/devicetree/bindings/gpio/loongson,ls-gpio.yaml b/Documentation/devicetree/bindings/gpio/loongson,ls-gpio.yaml new file mode 100644 index 000000000000..9d335262ddcc --- /dev/null +++ b/Documentation/devicetree/bindings/gpio/loongson,ls-gpio.yaml @@ -0,0 +1,154 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/gpio/loongson,ls-gpio.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Loongson series GPIO controller. + +maintainers: + - Yinbo Zhu <zhuyinbo@xxxxxxxxxxx> + +properties: + compatible: + enum: + - loongson,ls2k-gpio + - loongson,ls7a-gpio + + reg: + maxItems: 1 + + ngpios: trueminimum? maximum?
okay, I got it.
+ + "#gpio-cells": + const: 2 + + gpio-controller: true + + gpio-ranges: true + + loongson,conf_offset:No underscores in node names. Plus comments from Linus seem to apply here as well. Drop it entirely or explain why this is not part of compatible, why this is needed and why encoding programming model address in DT matches the DT...
Add it is to distinguish differnt address in different platform. and I had drop them and initial them in kernel driver that depend on diffent compatible.
+ $ref: /schemas/types.yaml#/definitions/uint32 + description: + This option indicate this GPIO configuration offset address. + + loongson,out_offset: + $ref: /schemas/types.yaml#/definitions/uint32 + description: + This option indicate this GPIO output value offset address.Drop+ + loongson,in_offset: + $ref: /schemas/types.yaml#/definitions/uint32 + description: + This option indicate this GPIO input value offset address.Drop+ + loongson,gpio_base: + $ref: /schemas/types.yaml#/definitions/uint32 + description: + This option indicate the first GPIO number in this node.Drop+ + loongson,support_irq: + $ref: /schemas/types.yaml#/definitions/flag + description: + This option indicate this GPIO whether support interrupt.Drop+ + interrupts: + minItems: 1 + maxItems: 64 + +required: + - compatible + - reg + - ngpios + - "#gpio-cells" + - gpio-controller + - gpio-ranges + - interrupts + +additionalProperties: false + +examples: + - | + #include <dt-bindings/interrupt-controller/irq.h> + + gpio0: gpio@1fe00500 { + compatible = "loongson,ls2k-gpio"; + reg = <0x1fe00500 0x38>; + ngpios = <64>; + #gpio-cells = <2>; + gpio-controller; + gpio-ranges = <&pctrl 0 0 15>, + <&pctrl 16 16 15>, + <&pctrl 32 32 10>, + <&pctrl 44 44 20>; + loongson,conf_offset = <0>; + loongson,out_offset = <0x10>; + loongson,in_offset = <0x20>; + loongson,gpio_base = <0>; + loongson,support_irq; + interrupt-parent = <&liointc1>; + interrupts = <28 IRQ_TYPE_LEVEL_LOW>, + <29 IRQ_TYPE_LEVEL_LOW>, + <30 IRQ_TYPE_LEVEL_LOW>, + <30 IRQ_TYPE_LEVEL_LOW>, + <26 IRQ_TYPE_LEVEL_LOW>, + <26 IRQ_TYPE_LEVEL_LOW>, + <26 IRQ_TYPE_LEVEL_LOW>, + <26 IRQ_TYPE_LEVEL_LOW>, + <26 IRQ_TYPE_LEVEL_LOW>, + <26 IRQ_TYPE_LEVEL_LOW>, + <26 IRQ_TYPE_LEVEL_LOW>, + <26 IRQ_TYPE_LEVEL_LOW>, + <26 IRQ_TYPE_LEVEL_LOW>, + <26 IRQ_TYPE_LEVEL_LOW>, + <26 IRQ_TYPE_LEVEL_LOW>, + <>, + <26 IRQ_TYPE_LEVEL_LOW>, + <26 IRQ_TYPE_LEVEL_LOW>, + <26 IRQ_TYPE_LEVEL_LOW>, + <26 IRQ_TYPE_LEVEL_LOW>, + <26 IRQ_TYPE_LEVEL_LOW>, + <26 IRQ_TYPE_LEVEL_LOW>, + <26 IRQ_TYPE_LEVEL_LOW>, + <26 IRQ_TYPE_LEVEL_LOW>, + <26 IRQ_TYPE_LEVEL_LOW>, + <26 IRQ_TYPE_LEVEL_LOW>, + <26 IRQ_TYPE_LEVEL_LOW>, + <26 IRQ_TYPE_LEVEL_LOW>, + <26 IRQ_TYPE_LEVEL_LOW>, + <26 IRQ_TYPE_LEVEL_LOW>, + <26 IRQ_TYPE_LEVEL_LOW>, + <26 IRQ_TYPE_LEVEL_LOW>, + <27 IRQ_TYPE_LEVEL_LOW>, + <27 IRQ_TYPE_LEVEL_LOW>, + <27 IRQ_TYPE_LEVEL_LOW>, + <27 IRQ_TYPE_LEVEL_LOW>, + <27 IRQ_TYPE_LEVEL_LOW>, + <>,What's this?
There was no interrupt function in this gpio.
+ <27 IRQ_TYPE_LEVEL_LOW>, + <27 IRQ_TYPE_LEVEL_LOW>, + <27 IRQ_TYPE_LEVEL_LOW>, + <27 IRQ_TYPE_LEVEL_LOW>, + <>, + <>,What's this?+ <27 IRQ_TYPE_LEVEL_LOW>, + <27 IRQ_TYPE_LEVEL_LOW>, + <27 IRQ_TYPE_LEVEL_LOW>, + <27 IRQ_TYPE_LEVEL_LOW>, + <27 IRQ_TYPE_LEVEL_LOW>, + <27 IRQ_TYPE_LEVEL_LOW>, + <27 IRQ_TYPE_LEVEL_LOW>, + <27 IRQ_TYPE_LEVEL_LOW>, + <27 IRQ_TYPE_LEVEL_LOW>, + <27 IRQ_TYPE_LEVEL_LOW>, + <27 IRQ_TYPE_LEVEL_LOW>, + <27 IRQ_TYPE_LEVEL_LOW>, + <27 IRQ_TYPE_LEVEL_LOW>, + <27 IRQ_TYPE_LEVEL_LOW>, + <27 IRQ_TYPE_LEVEL_LOW>, + <27 IRQ_TYPE_LEVEL_LOW>, + <27 IRQ_TYPE_LEVEL_LOW>, + <27 IRQ_TYPE_LEVEL_LOW>, + <27 IRQ_TYPE_LEVEL_LOW>, + <27 IRQ_TYPE_LEVEL_LOW>; + }; diff --git a/MAINTAINERS b/MAINTAINERS index 916b2d9cffc0..878b8320ac3b 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -12048,6 +12048,17 @@ S: Maintained F: Documentation/devicetree/bindings/hwinfo/loongson,ls2k-chipid.yaml F: drivers/soc/loongson/loongson2_guts.c+LOONGSON SERIES GPIO DRIVER+M: Richard Liu, STMicroelectronics <richard.liu@xxxxxx> +M: Arnaud Patard <apatard@xxxxxxxxxxxx> +M: Hongbing Hu <huhb@xxxxxxxxxx> +M: Huacai Chen <chenhuacai@xxxxxxxxxx> +M: Yinbo Zhu <zhuyinbo@xxxxxxxxxxx>Are they all maintainers of this driver?
add huacai and myself as maintainer.
+L: linux-gpio@xxxxxxxxxxxxxxx +S: Maintained +F: Documentation/devicetree/bindings/gpio/loongson,ls-gpio.yaml +F: drivers/gpio/gpio-loongson.c + LSILOGIC MPT FUSION DRIVERS (FC/SAS/SPI) M: Sathya Prakash <sathya.prakash@xxxxxxxxxxxx> M: Sreekanth Reddy <sreekanth.reddy@xxxxxxxxxxxx>Best regards, Krzysztof