mbox series

[v6,0/6] RTL9300 support for reboot and i2c

Message ID 20241015225948.3971924-1-chris.packham@alliedtelesis.co.nz
Headers show
Series RTL9300 support for reboot and i2c | expand

Message

Chris Packham Oct. 15, 2024, 10:59 p.m. UTC
As requested I've combined my two series into a single one to provide some
better context for reviewers. I'm not sure which trees the patches should go in
via. The first two are reasonably independent and could go in via linux-pm. I
guess technically the last one could go via linux-i2c but it needs the and the
bindings/dts updates which would probably make sense to come via linux-mips.

--
2.46.1

Chris Packham (6):
  dt-bindings: reset: syscon-reboot: Add reg property
  power: reset: syscon-reboot: Accept reg property
  dt-bindings: mfd: Add Realtek RTL9300 switch peripherals
  mips: dts: realtek: Add syscon-reboot node
  mips: dts: realtek: Add I2C controllers
  i2c: Add driver for the RTL9300 I2C controller

 .../bindings/i2c/realtek,rtl9301-i2c.yaml     |  99 ++++
 .../bindings/mfd/realtek,rtl9301-switch.yaml  | 114 +++++
 .../bindings/power/reset/syscon-reboot.yaml   |  11 +-
 MAINTAINERS                                   |   7 +
 .../cameo-rtl9302c-2x-rtl8224-2xge.dts        |   2 +-
 arch/mips/boot/dts/realtek/rtl9302c.dtsi      |  15 +
 arch/mips/boot/dts/realtek/rtl930x.dtsi       |  29 ++
 drivers/i2c/busses/Kconfig                    |  10 +
 drivers/i2c/busses/Makefile                   |   1 +
 drivers/i2c/busses/i2c-rtl9300.c              | 425 ++++++++++++++++++
 drivers/power/reset/syscon-reboot.c           |   3 +-
 11 files changed, 713 insertions(+), 3 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/i2c/realtek,rtl9301-i2c.yaml
 create mode 100644 Documentation/devicetree/bindings/mfd/realtek,rtl9301-switch.yaml
 create mode 100644 arch/mips/boot/dts/realtek/rtl9302c.dtsi
 create mode 100644 drivers/i2c/busses/i2c-rtl9300.c

Comments

Chris Packham Oct. 16, 2024, 8 p.m. UTC | #1
On 17/10/24 08:50, Chris Packham wrote:
>
> On 16/10/24 19:41, Krzysztof Kozlowski wrote:
>> On Wed, Oct 16, 2024 at 11:59:45AM +1300, Chris Packham wrote:
>>> +properties:
>>> +  compatible:
>>> +    oneOf:
>>> +      - items:
>>> +          - enum:
>>> +              - realtek,rtl9302b-i2c
>>> +              - realtek,rtl9302c-i2c
>>> +              - realtek,rtl9303-i2c
>>> +          - const: realtek,rtl9301-i2c
>>> +      - const: realtek,rtl9301-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
>> This has to be: additionalProperties: false
>
> Hmm, when I do that the dt_binding_check complains
>
> Documentation/devicetree/bindings/mfd/realtek,rtl9301-switch.example.dtb: 
> ethernet-switch@1b000000: i2c@36c:i2c@0: '#address-cells', 
> '#size-cells', 'gpio@20' do not match any of the regexes: 
> 'pinctrl-[0-9]+'
>         from schema $id: 
> http://devicetree.org/schemas/mfd/realtek,rtl9301-switch.yaml#
> Documentation/devicetree/bindings/mfd/realtek,rtl9301-switch.example.dtb: 
> ethernet-switch@1b000000: i2c@36c:i2c@2: '#address-cells', 
> '#size-cells', 'gpio@20' do not match any of the regexes: 
> 'pinctrl-[0-9]+'
>         from schema $id: 
> http://devicetree.org/schemas/mfd/realtek,rtl9301-switch.yaml#
> Documentation/devicetree/bindings/mfd/realtek,rtl9301-switch.example.dtb: 
> ethernet-switch@1b000000: i2c@388:i2c@7: '#address-cells', 
> '#size-cells', 'gpio@20' do not match any of the regexes: 
> 'pinctrl-[0-9]+'
>         from schema $id: 
> http://devicetree.org/schemas/mfd/realtek,rtl9301-switch.yaml#
> Documentation/devicetree/bindings/mfd/realtek,rtl9301-switch.example.dtb: 
> i2c@36c: i2c@0: '#address-cells', '#size-cells', 'gpio@20' do not 
> match any of the regexes: 'pinctrl-[0-9]+'
>         from schema $id: 
> http://devicetree.org/schemas/i2c/realtek,rtl9301-i2c.yaml#
> Documentation/devicetree/bindings/mfd/realtek,rtl9301-switch.example.dtb: 
> i2c@36c: i2c@2: '#address-cells', '#size-cells', 'gpio@20' do not 
> match any of the regexes: 'pinctrl-[0-9]+'
>         from schema $id: 
> http://devicetree.org/schemas/i2c/realtek,rtl9301-i2c.yaml#
> Documentation/devicetree/bindings/mfd/realtek,rtl9301-switch.example.dtb: 
> i2c@388: i2c@7: '#address-cells', '#size-cells', 'gpio@20' do not 
> match any of the regexes: 'pinctrl-[0-9]+'
>         from schema $id: 
> http://devicetree.org/schemas/i2c/realtek,rtl9301-i2c.yaml#
>
> Those properties should be getting defined via the i2c-controller.yaml 
> schema so I must be missing something, I'm just not sure what.

Silly me. I removed the wrong unevaluatedProperties. If I fix up the one 
you actually pointed out it's fine. v7 coming soon.

>
>>
>>> +
>>> +examples:
>>> +  - |
>>> +    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>;
>>> +      };
>>> +    };
>> Yoy have now multiple same examples. Keep only one, complete in the 
>> parent
>> schema.
>
> OK. I'll keep one example of a controller with a non-zero channel in 
> the i2c binding and leave a more complete example in the mfd.
>
>>> 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
>> Best regards,
>> Krzysztof
>>
Sebastian Reichel Oct. 16, 2024, 9:41 p.m. UTC | #2
On Wed, 16 Oct 2024 11:59:42 +1300, Chris Packham wrote:
> As requested I've combined my two series into a single one to provide some
> better context for reviewers. I'm not sure which trees the patches should go in
> via. The first two are reasonably independent and could go in via linux-pm. I
> guess technically the last one could go via linux-i2c but it needs the and the
> bindings/dts updates which would probably make sense to come via linux-mips.
> 
> --
> 2.46.1
> 
> [...]

Applied, thanks!

[1/6] dt-bindings: reset: syscon-reboot: Add reg property
      commit: e7af7d13316dc5e2293c4f777f71bd8331f5d7a5
[2/6] power: reset: syscon-reboot: Accept reg property
      commit: ce38cdc908557953604ffb0a91ef5ae3fbdf1c6b

Best regards,