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
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>;
+ };
+ };
+ };
+ };
+
--
2.47.0
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.
© 2016 - 2024 Red Hat, Inc.