From: Chris Packham <chris.packham@alliedtelesis.co.nz>
To: andi.shyti@kernel.org, robh@kernel.org, krzk+dt@kernel.org,
conor+dt@kernel.org, lee@kernel.org, sre@kernel.org,
tsbogend@alpha.franken.de
Cc: linux-i2c@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org,
linux-mips@vger.kernel.org,
Chris Packham <chris.packham@alliedtelesis.co.nz>
Subject: [PATCH v5 3/6] dt-bindings: mfd: Add Realtek RTL9300 switch peripherals
Date: Thu, 26 Sep 2024 09:58:44 +1200 [thread overview]
Message-ID: <20240925215847.3594898-4-chris.packham@alliedtelesis.co.nz> (raw)
In-Reply-To: <20240925215847.3594898-1-chris.packham@alliedtelesis.co.nz>
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>
---
Notes:
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/i2c/realtek,rtl9300-i2c.yaml | 98 +++++++++++++++
.../bindings/mfd/realtek,rtl9300-switch.yaml | 115 ++++++++++++++++++
2 files changed, 213 insertions(+)
create mode 100644 Documentation/devicetree/bindings/i2c/realtek,rtl9300-i2c.yaml
create mode 100644 Documentation/devicetree/bindings/mfd/realtek,rtl9300-switch.yaml
diff --git a/Documentation/devicetree/bindings/i2c/realtek,rtl9300-i2c.yaml b/Documentation/devicetree/bindings/i2c/realtek,rtl9300-i2c.yaml
new file mode 100644
index 000000000000..e8cf328b2710
--- /dev/null
+++ b/Documentation/devicetree/bindings/i2c/realtek,rtl9300-i2c.yaml
@@ -0,0 +1,98 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/i2c/realtek,rtl9300-i2c.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Realtek RTL I2C Controller
+
+maintainers:
+ - Chris Packham <chris.packham@alliedtelesis.co.nz>
+
+description:
+ The RTL9300 SoC has two I2C controllers. Each of these has an SCL line (which
+ if not-used for SCL can be a GPIO). There are 8 common SDA lines that can be
+ assigned to either I2C controller.
+
+properties:
+ compatible:
+ items:
+ - enum:
+ - realtek,rtl9301-i2c
+ - realtek,rtl9302b-i2c
+ - realtek,rtl9302c-i2c
+ - realtek,rtl9303-i2c
+ - const: realtek,rtl9300-i2c
+
+ reg:
+ description: Register offset and size this I2C controller.
+
+ "#address-cells":
+ const: 1
+
+ "#size-cells":
+ const: 0
+
+patternProperties:
+ '^i2c@[0-7]$':
+ $ref: /schemas/i2c/i2c-controller.yaml
+ unevaluatedProperties: false
+
+ properties:
+ reg:
+ description: The SDA pin associated with the I2C bus.
+ maxItems: 1
+
+ required:
+ - reg
+
+required:
+ - compatible
+ - reg
+
+unevaluatedProperties: false
+
+examples:
+ - |
+ i2c@36c {
+ compatible = "realtek,rtl9302c-i2c", "realtek,rtl9300-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,rtl9302c-i2c", "realtek,rtl9300-i2c";
+ reg = <0x388 0x14>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ i2c@7 {
+ reg = <7>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ };
+ };
diff --git a/Documentation/devicetree/bindings/mfd/realtek,rtl9300-switch.yaml b/Documentation/devicetree/bindings/mfd/realtek,rtl9300-switch.yaml
new file mode 100644
index 000000000000..a8e75b1bd286
--- /dev/null
+++ b/Documentation/devicetree/bindings/mfd/realtek,rtl9300-switch.yaml
@@ -0,0 +1,115 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/mfd/realtek,rtl9300-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 RTL9302 is an Ethernet switch 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: realtek,rtl9300-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,rtl9300-i2c.yaml#
+
+required:
+ - compatible
+ - reg
+
+additionalProperties: false
+
+examples:
+ - |
+ ethernet-switch@1b000000 {
+ compatible = "realtek,rtl9302c-switch", "realtek,rtl9300-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,rtl9302c-i2c", "realtek,rtl9300-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,rtl9302c-i2c", "realtek,rtl9300-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.46.2
next prev parent reply other threads:[~2024-09-25 22:00 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-25 21:58 [PATCH v5 0/6] RTL9300 support for reboot and i2c Chris Packham
2024-09-25 21:58 ` [PATCH v5 1/6] dt-bindings: reset: syscon-reboot: Add reg property Chris Packham
2024-09-26 6:34 ` Krzysztof Kozlowski
2024-09-25 21:58 ` [PATCH v5 2/6] power: reset: syscon-reboot: Accept " Chris Packham
2024-09-26 6:35 ` Krzysztof Kozlowski
2024-09-25 21:58 ` Chris Packham [this message]
2024-09-26 6:36 ` [PATCH v5 3/6] dt-bindings: mfd: Add Realtek RTL9300 switch peripherals Krzysztof Kozlowski
2024-09-26 7:45 ` Lee Jones
2024-09-26 7:47 ` Krzysztof Kozlowski
2024-09-25 21:58 ` [PATCH v5 4/6] mips: dts: realtek: Add syscon-reboot node Chris Packham
2024-09-26 6:36 ` Krzysztof Kozlowski
2024-09-25 21:58 ` [PATCH v5 5/6] mips: dts: realtek: Add I2C controllers Chris Packham
2024-09-26 6:37 ` Krzysztof Kozlowski
2024-09-26 20:52 ` Chris Packham
2024-09-26 20:58 ` [PATCH v5] fixup! i2c: Add driver for the RTL9300 I2C controller Chris Packham
2024-09-25 21:58 ` [PATCH v5 6/6] " Chris Packham
2024-09-29 2:41 ` kernel test robot
2024-09-29 8:45 ` Markus Elfring
2024-09-29 20:17 ` Chris Packham
2024-09-30 7:55 ` Markus Elfring
2024-09-30 8:12 ` Javier Carrasco
2024-09-29 20:09 ` [PATCH] fixup! " Chris Packham
2024-10-02 10:57 ` Andi Shyti
2024-10-14 0:48 ` Chris Packham
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240925215847.3594898-4-chris.packham@alliedtelesis.co.nz \
--to=chris.packham@alliedtelesis.co.nz \
--cc=andi.shyti@kernel.org \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=krzk+dt@kernel.org \
--cc=lee@kernel.org \
--cc=linux-i2c@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mips@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=robh@kernel.org \
--cc=sre@kernel.org \
--cc=tsbogend@alpha.franken.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).