Message ID | 20241106001835.2725522-2-chris.packham@alliedtelesis.co.nz |
---|---|
State | Handled Elsewhere |
Headers | show |
Series | RTL9300 support for reboot and i2c | expand |
On Wed, 06 Nov 2024 13:18:32 +1300, Chris Packham wrote: > Add device tree schema for the Realtek RTL9300 switches. The RTL9300 > family is made up of the RTL9301, RTL9302B, RTL9302C and RTL9303. These > have the same SoC differ in the Ethernet switch/SERDES arrangement. > > Currently the only supported features are the syscon-reboot and i2c > controllers. The syscon-reboot is needed to be able to reboot the board. > The I2C controllers are slightly unusual because they each own an SCL > pin (GPIO8 for the first controller, GPIO 17 for the second) but have 8 > common SDA pins which can be assigned to either controller (but not > both). > > Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz> > Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> > --- > > Notes: > Changes in v9: > - None > Changes in v8: > - Add r-by from Krzysztof > - At Lee's request I've separated the i2c binding into a separate patch. > This one still has a $ref to it so technically the i2c one needs to go > first but they'll be coming in via different trees so they may not > arrive in that order. > Changes in v7: > - Set additionalProperties: false > - Remove extraneous examples from i2c binding > Changes in v6: > - Drop wildcard compatible > - Add specific compatibles for the 4 known SoC variants > - For the i2c part of the binding accept realtek,rtl9301 as a fallback > for the other compatibles > - The overall switches will eventually differ because these will have > different SERDES/port arrangements so they aren't getting the same > fallback treatment > Changes in v5: > I've combined the two series I had in flight so this is the > combination of adding the switch syscon, the reboot and i2c. It makes > the changelog a bit meaningless so I've dropped the earlier > commentary. > > As requested I've put a more complete example in the main > rtl9300-switch.yaml. > > I've kept rtl9300-i2c.yaml separate for now but link to it with a $ref > from rtl9300-switch.yaml to reduce clutter. The example in > rtl9300-i2c.yaml is technically duplicating part of the example from > rtl9300-switch.yaml but I feel it's nice to be able to see the example > next to where the properties are defined. > > .../bindings/mfd/realtek,rtl9301-switch.yaml | 114 ++++++++++++++++++ > 1 file changed, 114 insertions(+) > create mode 100644 Documentation/devicetree/bindings/mfd/realtek,rtl9301-switch.yaml > My bot found errors running 'make dt_binding_check' on your patch: yamllint warnings/errors: dtschema/dtc warnings/errors: /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/mfd/realtek,rtl9301-switch.example.dtb: ethernet-switch@1b000000: reboot@c: 'offset' is a required property from schema $id: http://devicetree.org/schemas/mfd/realtek,rtl9301-switch.yaml# /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/mfd/realtek,rtl9301-switch.example.dtb: ethernet-switch@1b000000: reboot@c: 'reg' does not match any of the regexes: 'pinctrl-[0-9]+' from schema $id: http://devicetree.org/schemas/mfd/realtek,rtl9301-switch.yaml# /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/mfd/realtek,rtl9301-switch.example.dtb: ethernet-switch@1b000000: i2c@36c: False schema does not allow {'compatible': ['realtek,rtl9301-i2c'], 'reg': [[876, 20]], '#address-cells': 1, '#size-cells': 0, 'i2c@0': {'reg': [[0]], '#address-cells': 1, '#size-cells': 0, 'gpio@20': {'compatible': ['nxp,pca9555'], 'gpio-controller': True, '#gpio-cells': 2, 'reg': [[32]]}}, 'i2c@2': {'reg': [[2]], '#address-cells': 1, '#size-cells': 0, 'gpio@20': {'compatible': ['nxp,pca9555'], 'gpio-controller': True, '#gpio-cells': 2, 'reg': [[32]]}}} from schema $id: http://devicetree.org/schemas/mfd/realtek,rtl9301-switch.yaml# /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/mfd/realtek,rtl9301-switch.example.dtb: ethernet-switch@1b000000: i2c@388: False schema does not allow {'compatible': ['realtek,rtl9301-i2c'], 'reg': [[904, 20]], '#address-cells': 1, '#size-cells': 0, 'i2c@7': {'reg': [[7]], '#address-cells': 1, '#size-cells': 0, 'gpio@20': {'compatible': ['nxp,pca9555'], 'gpio-controller': True, '#gpio-cells': 2, 'reg': [[32]]}}} from schema $id: http://devicetree.org/schemas/mfd/realtek,rtl9301-switch.yaml# /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/mfd/realtek,rtl9301-switch.example.dtb: reboot@c: 'offset' is a required property from schema $id: http://devicetree.org/schemas/power/reset/syscon-reboot.yaml# /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/mfd/realtek,rtl9301-switch.example.dtb: reboot@c: 'reg' does not match any of the regexes: 'pinctrl-[0-9]+' from schema $id: http://devicetree.org/schemas/power/reset/syscon-reboot.yaml# Documentation/devicetree/bindings/mfd/realtek,rtl9301-switch.example.dtb: /example-0/ethernet-switch@1b000000/i2c@36c: failed to match any schema with compatible: ['realtek,rtl9301-i2c'] Documentation/devicetree/bindings/mfd/realtek,rtl9301-switch.example.dtb: /example-0/ethernet-switch@1b000000/i2c@388: failed to match any schema with compatible: ['realtek,rtl9301-i2c'] doc reference errors (make refcheckdocs): See https://patchwork.ozlabs.org/project/devicetree-bindings/patch/20241106001835.2725522-2-chris.packham@alliedtelesis.co.nz The base for the series is generally the latest rc1. A different dependency should be noted in *this* patch. If you already ran 'make dt_binding_check' and didn't see the above error(s), then make sure 'yamllint' is installed and dt-schema is up to date: pip3 install dtschema --upgrade Please check and re-submit after running the above command yourself. Note that DT_SCHEMA_FILES can be set to your schema file to speed up checking your schema. However, it must be unset to test all examples with your schema.
diff --git a/Documentation/devicetree/bindings/mfd/realtek,rtl9301-switch.yaml b/Documentation/devicetree/bindings/mfd/realtek,rtl9301-switch.yaml new file mode 100644 index 000000000000..f053303ab1e6 --- /dev/null +++ b/Documentation/devicetree/bindings/mfd/realtek,rtl9301-switch.yaml @@ -0,0 +1,114 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/mfd/realtek,rtl9301-switch.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Realtek Switch with Internal CPU + +maintainers: + - Chris Packham <chris.packham@alliedtelesis.co.nz> + +description: + The RTL9300 is a series of is an Ethernet switches with an integrated CPU. A + number of different peripherals are accessed through a common register block, + represented here as a syscon node. + +properties: + compatible: + items: + - enum: + - realtek,rtl9301-switch + - realtek,rtl9302b-switch + - realtek,rtl9302c-switch + - realtek,rtl9303-switch + - const: syscon + - const: simple-mfd + + reg: + maxItems: 1 + + '#address-cells': + const: 1 + + '#size-cells': + const: 1 + +patternProperties: + 'reboot@[0-9a-f]+$': + $ref: /schemas/power/reset/syscon-reboot.yaml# + + 'i2c@[0-9a-f]+$': + $ref: /schemas/i2c/realtek,rtl9301-i2c.yaml# + +required: + - compatible + - reg + +additionalProperties: false + +examples: + - | + ethernet-switch@1b000000 { + compatible = "realtek,rtl9301-switch", "syscon", "simple-mfd"; + reg = <0x1b000000 0x10000>; + #address-cells = <1>; + #size-cells = <1>; + + reboot@c { + compatible = "syscon-reboot"; + reg = <0x0c 0x4>; + value = <0x01>; + }; + + i2c@36c { + compatible = "realtek,rtl9301-i2c"; + reg = <0x36c 0x14>; + #address-cells = <1>; + #size-cells = <0>; + + i2c@0 { + reg = <0>; + #address-cells = <1>; + #size-cells = <0>; + gpio@20 { + compatible = "nxp,pca9555"; + gpio-controller; + #gpio-cells = <2>; + reg = <0x20>; + }; + }; + + i2c@2 { + reg = <2>; + #address-cells = <1>; + #size-cells = <0>; + gpio@20 { + compatible = "nxp,pca9555"; + gpio-controller; + #gpio-cells = <2>; + reg = <0x20>; + }; + }; + }; + + i2c@388 { + compatible = "realtek,rtl9301-i2c"; + reg = <0x388 0x14>; + #address-cells = <1>; + #size-cells = <0>; + + i2c@7 { + reg = <7>; + #address-cells = <1>; + #size-cells = <0>; + gpio@20 { + compatible = "nxp,pca9555"; + gpio-controller; + #gpio-cells = <2>; + reg = <0x20>; + }; + }; + }; + }; +