Commit c25e73d4 authored by Chris Packham's avatar Chris Packham Committed by Lee Jones
Browse files

dt-bindings: mfd: Add Realtek RTL9300 switch peripherals



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: default avatarChris Packham <chris.packham@alliedtelesis.co.nz>
Reviewed-by: default avatarKrzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://lore.kernel.org/r/20241031200350.274945-5-chris.packham@alliedtelesis.co.nz


Signed-off-by: default avatarLee Jones <lee@kernel.org>
parent 7beb2261
Loading
Loading
Loading
Loading
+114 −0
Original line number Diff line number Diff line
# 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>;
          };
        };
      };
    };