Message ID | 20170427144319.23130-1-joel@jms.id.au |
---|---|
State | Changes Requested, archived |
Headers | show |
On Fri, 2017-04-28 at 00:13 +0930, Joel Stanley wrote: > The I2C binding changed when upstreaming the I2C driver. > > This adds aliases for the 14 built-in I2C busses to ensure userspace > sees the numbering that we had with the old driver. > > > Signed-off-by: Joel Stanley <joel@jms.id.au> > --- > > Boot tested on qemu-palmetto. We see the same i2c entries under /dev as before, > so the aliases work. Note that we can't use qemu for testing with the new > driver, tracked at https://github.com/openbmc/qemu/issues/5 > > arch/arm/boot/dts/aspeed-g4.dtsi | 173 ++++++++++++++++++++++------------ > arch/arm/boot/dts/aspeed-g5.dtsi | 197 +++++++++++++++++++++++++-------------- > 2 files changed, 241 insertions(+), 129 deletions(-) > > diff --git a/arch/arm/boot/dts/aspeed-g4.dtsi b/arch/arm/boot/dts/aspeed-g4.dtsi > index b9a6730cc831..f7767b999791 100644 > --- a/arch/arm/boot/dts/aspeed-g4.dtsi > +++ b/arch/arm/boot/dts/aspeed-g4.dtsi > @@ -18,6 +18,23 @@ > > }; > > }; > > > + aliases { > > + i2c0 = &i2c0; > > + i2c1 = &i2c1; > > + i2c2 = &i2c2; > > + i2c3 = &i2c3; > > + i2c4 = &i2c4; > > + i2c5 = &i2c5; > > + i2c6 = &i2c6; > > + i2c7 = &i2c7; > > + i2c8 = &i2c8; > > + i2c9 = &i2c9; > > + i2c10 = &i2c10; > > + i2c11 = &i2c11; > > + i2c12 = &i2c12; > > + i2c13 = &i2c13; > > + }; > + > > clocks { > > }; > > @@ -958,200 +975,240 @@ > > }; > > > > i2c: i2c@1e78a000 { > > + compatible = "simple-bus"; > > #address-cells = <1>; > > #size-cells = <1>; > > - #interrupt-cells = <1>; > - > > - compatible = "aspeed,ast2400-i2c-controller"; > > - reg = <0x1e78a000 0x40>; > > ranges = <0 0x1e78a000 0x1000>; > > - interrupts = <12>; > > - clocks = <&clk_apb>; > > - clock-ranges; > > - interrupt-controller; > + > > > + i2c_ic: interrupt-controller@0 { > > + #interrupt-cells = <1>; > > + compatible = "aspeed,ast2400-i2c-ic"; > > + reg = <0x0 0x40>; > > + interrupts = <12>; > > + interrupt-controller; > > + }; > > > > i2c0: i2c-bus@40 { > > #address-cells = <1>; > > #size-cells = <0>; > > + #interrupt-cells = <1>; > + > > reg = <0x40 0x40>; > > compatible = "aspeed,ast2400-i2c-bus"; > > - bus = <0>; > > - clock-frequency = <100000>; > > - status = "disabled"; > > + clocks = <&clk_apb>; > > + bus-frequency = <100000>; > > interrupts = <0>; > > - interrupt-parent = <&i2c>; > > + interrupt-parent = <&i2c_ic>; > > + status = "disabled"; > > /* Does not need pinctrl node */ > > }; > > > > i2c1: i2c-bus@80 { > > #address-cells = <1>; > > #size-cells = <0>; > > + #interrupt-cells = <1>; > + > > reg = <0x80 0x40>; > > compatible = "aspeed,ast2400-i2c-bus"; > > - bus = <1>; > > - clock-frequency = <100000>; > > - status = "disabled"; > > + clocks = <&clk_apb>; > > + bus-frequency = <100000>; > > interrupts = <1>; > > + interrupt-parent = <&i2c_ic>; > > + status = "disabled"; > > /* Does not need pinctrl node */ > > }; > > > > i2c2: i2c-bus@c0 { > > #address-cells = <1>; > > #size-cells = <0>; > > - reg = <0xC0 0x40>; > > + #interrupt-cells = <1>; > + > > + reg = <0xc0 0x40>; > > compatible = "aspeed,ast2400-i2c-bus"; > > - bus = <2>; > > - clock-frequency = <100000>; > > - status = "disabled"; > > + clocks = <&clk_apb>; > > + bus-frequency = <100000>; > > interrupts = <2>; > > - pinctrl-names = "default"; > - pinctrl-0 = <&pinctrl_i2c3_default>; We still need the pinctrl properties. > + interrupt-parent = <&i2c_ic>; > > + status = "disabled"; > > + /* Does not need pinctrl node */ > > }; > > > > i2c3: i2c-bus@100 { > > #address-cells = <1>; > > #size-cells = <0>; > > + #interrupt-cells = <1>; > + > > reg = <0x100 0x40>; > > compatible = "aspeed,ast2400-i2c-bus"; > > - bus = <3>; > > - clock-frequency = <100000>; > > - status = "disabled"; > > + clocks = <&clk_apb>; > > + bus-frequency = <100000>; > > interrupts = <3>; > > + interrupt-parent = <&i2c_ic>; > > pinctrl-names = "default"; > > pinctrl-0 = <&pinctrl_i2c4_default>; > > + status = "disabled"; > > }; > > > > i2c4: i2c-bus@140 { > > #address-cells = <1>; > > #size-cells = <0>; > > + #interrupt-cells = <1>; > + > > reg = <0x140 0x40>; > > compatible = "aspeed,ast2400-i2c-bus"; > > - bus = <4>; > > - clock-frequency = <100000>; > > - status = "disabled"; > > + clocks = <&clk_apb>; > > + bus-frequency = <100000>; > > interrupts = <4>; > > + interrupt-parent = <&i2c_ic>; > > pinctrl-names = "default"; > > pinctrl-0 = <&pinctrl_i2c5_default>; > > + status = "disabled"; > > }; > > > > i2c5: i2c-bus@180 { > > #address-cells = <1>; > > #size-cells = <0>; > > + #interrupt-cells = <1>; > + > > reg = <0x180 0x40>; > > compatible = "aspeed,ast2400-i2c-bus"; > > - bus = <5>; > > - clock-frequency = <100000>; > > - status = "disabled"; > > + clocks = <&clk_apb>; > > + bus-frequency = <100000>; > > interrupts = <5>; > > + interrupt-parent = <&i2c_ic>; > > pinctrl-names = "default"; > > pinctrl-0 = <&pinctrl_i2c6_default>; > > + status = "disabled"; > > }; > > > > i2c6: i2c-bus@1c0 { > > #address-cells = <1>; > > #size-cells = <0>; > > - reg = <0x1C0 0x40>; > > + #interrupt-cells = <1>; > + > > + reg = <0x1c0 0x40>; > > compatible = "aspeed,ast2400-i2c-bus"; > > - bus = <6>; > > - clock-frequency = <100000>; > > - status = "disabled"; > > + clocks = <&clk_apb>; > > + bus-frequency = <100000>; > > interrupts = <6>; > > + interrupt-parent = <&i2c_ic>; > > pinctrl-names = "default"; > > pinctrl-0 = <&pinctrl_i2c7_default>; > > + status = "disabled"; > > }; > > > > i2c7: i2c-bus@300 { > > #address-cells = <1>; > > #size-cells = <0>; > > + #interrupt-cells = <1>; > + > > reg = <0x300 0x40>; > > compatible = "aspeed,ast2400-i2c-bus"; > > - bus = <7>; > > - clock-frequency = <100000>; > > - status = "disabled"; > > + clocks = <&clk_apb>; > > + bus-frequency = <100000>; > > interrupts = <7>; > > + interrupt-parent = <&i2c_ic>; > > pinctrl-names = "default"; > > pinctrl-0 = <&pinctrl_i2c8_default>; > > + status = "disabled"; > > }; > > > > i2c8: i2c-bus@340 { > > #address-cells = <1>; > > #size-cells = <0>; > > + #interrupt-cells = <1>; > + > > reg = <0x340 0x40>; > > compatible = "aspeed,ast2400-i2c-bus"; > > - bus = <8>; > > - clock-frequency = <100000>; > > - status = "disabled"; > > + clocks = <&clk_apb>; > > + bus-frequency = <100000>; > > interrupts = <8>; > > + interrupt-parent = <&i2c_ic>; > > pinctrl-names = "default"; > > pinctrl-0 = <&pinctrl_i2c9_default>; > > + status = "disabled"; > > }; > > > > i2c9: i2c-bus@380 { > > #address-cells = <1>; > > #size-cells = <0>; > > + #interrupt-cells = <1>; > + > > reg = <0x380 0x40>; > > compatible = "aspeed,ast2400-i2c-bus"; > > - bus = <9>; > > - clock-frequency = <100000>; > > - status = "disabled"; > > + clocks = <&clk_apb>; > > + bus-frequency = <100000>; > > interrupts = <9>; > > + interrupt-parent = <&i2c_ic>; > > pinctrl-names = "default"; > > pinctrl-0 = <&pinctrl_i2c10_default>; > > + status = "disabled"; > > }; > > > > i2c10: i2c-bus@3c0 { > > #address-cells = <1>; > > #size-cells = <0>; > > + #interrupt-cells = <1>; > + > > reg = <0x3c0 0x40>; > > compatible = "aspeed,ast2400-i2c-bus"; > > - bus = <10>; > > - clock-frequency = <100000>; > > - status = "disabled"; > > + clocks = <&clk_apb>; > > + bus-frequency = <100000>; > > interrupts = <10>; > > + interrupt-parent = <&i2c_ic>; > > pinctrl-names = "default"; > > pinctrl-0 = <&pinctrl_i2c11_default>; > > + status = "disabled"; > > }; > > > > i2c11: i2c-bus@400 { > > #address-cells = <1>; > > #size-cells = <0>; > > + #interrupt-cells = <1>; > + > > reg = <0x400 0x40>; > > compatible = "aspeed,ast2400-i2c-bus"; > > - bus = <11>; > > - clock-frequency = <100000>; > > - status = "disabled"; > > + clocks = <&clk_apb>; > > + bus-frequency = <100000>; > > interrupts = <11>; > > + interrupt-parent = <&i2c_ic>; > > pinctrl-names = "default"; > > pinctrl-0 = <&pinctrl_i2c12_default>; > > + status = "disabled"; > > }; > > > > i2c12: i2c-bus@440 { > > #address-cells = <1>; > > #size-cells = <0>; > > + #interrupt-cells = <1>; > + > > reg = <0x440 0x40>; > > compatible = "aspeed,ast2400-i2c-bus"; > > - bus = <12>; > > - clock-frequency = <100000>; > > - status = "disabled"; > > + clocks = <&clk_apb>; > > + bus-frequency = <100000>; > > interrupts = <12>; > > + interrupt-parent = <&i2c_ic>; > > pinctrl-names = "default"; > > pinctrl-0 = <&pinctrl_i2c13_default>; > > + status = "disabled"; > > }; > > > > i2c13: i2c-bus@480 { > > #address-cells = <1>; > > #size-cells = <0>; > > + #interrupt-cells = <1>; > + > > reg = <0x480 0x40>; > > compatible = "aspeed,ast2400-i2c-bus"; > > - bus = <13>; > > - clock-frequency = <100000>; > > - status = "disabled"; > > + clocks = <&clk_apb>; > > + bus-frequency = <100000>; > > interrupts = <13>; > > - /* Does not need pinctrl node */ > > + interrupt-parent = <&i2c_ic>; > > + pinctrl-names = "default"; > > + pinctrl-0 = <&pinctrl_i2c14_default>; > > + status = "disabled"; > > }; > - > > }; > - > > }; > > }; > }; > diff --git a/arch/arm/boot/dts/aspeed-g5.dtsi b/arch/arm/boot/dts/aspeed-g5.dtsi > index ddfb729bb85a..6aef4b7fa529 100644 > --- a/arch/arm/boot/dts/aspeed-g5.dtsi > +++ b/arch/arm/boot/dts/aspeed-g5.dtsi > @@ -18,6 +18,23 @@ > > }; > > }; > > > + aliases { > > + i2c0 = &i2c0; > > + i2c1 = &i2c1; > > + i2c2 = &i2c2; > > + i2c3 = &i2c3; > > + i2c4 = &i2c4; > > + i2c5 = &i2c5; > > + i2c6 = &i2c6; > > + i2c7 = &i2c7; > > + i2c8 = &i2c8; > > + i2c9 = &i2c9; > > + i2c10 = &i2c10; > > + i2c11 = &i2c11; > > + i2c12 = &i2c12; > > + i2c13 = &i2c13; > > + }; > + > > ahb { > > compatible = "simple-bus"; > > #address-cells = <1>; > @@ -1149,199 +1166,237 @@ > > }; > > > > i2c: i2c@1e78a000 { > > + compatible = "simple-bus"; > > #address-cells = <1>; > > #size-cells = <1>; > > - #interrupt-cells = <1>; > - > > - compatible = "aspeed,ast2400-i2c-controller"; > > - reg = <0x1e78a000 0x40>; > > ranges = <0 0x1e78a000 0x1000>; > > - interrupts = <12>; > > - clocks = <&clk_apb>; > > - clock-ranges; > > - interrupt-controller; > + > > > + i2c_ic: interrupt-controller@0 { > > + #interrupt-cells = <1>; > > + compatible = "aspeed,ast2500-i2c-ic"; > > + reg = <0x0 0x40>; > > + interrupts = <12>; > > + interrupt-controller; > > + }; > > > > i2c0: i2c-bus@40 { > > #address-cells = <1>; > > #size-cells = <0>; > > + #interrupt-cells = <1>; > + > > reg = <0x40 0x40>; > > - compatible = "aspeed,ast2400-i2c-bus"; > > - bus = <0>; > > - clock-frequency = <100000>; > > - status = "disabled"; > > + compatible = "aspeed,ast2500-i2c-bus"; > > + clocks = <&clk_apb>; > > + bus-frequency = <100000>; > > interrupts = <0>; > > - interrupt-parent = <&i2c>; > > + interrupt-parent = <&i2c_ic>; > > + status = "disabled"; > > }; > > > > i2c1: i2c-bus@80 { > > #address-cells = <1>; > > #size-cells = <0>; > > + #interrupt-cells = <1>; > + > > reg = <0x80 0x40>; > > - compatible = "aspeed,ast2400-i2c-bus"; > > - bus = <1>; > > - clock-frequency = <100000>; > > - status = "disabled"; > > + compatible = "aspeed,ast2500-i2c-bus"; > > + clocks = <&clk_apb>; > > + bus-frequency = <100000>; > > interrupts = <1>; > > + interrupt-parent = <&i2c_ic>; > > + status = "disabled"; > > }; > > > > i2c2: i2c-bus@c0 { > > #address-cells = <1>; > > #size-cells = <0>; > > - reg = <0xC0 0x40>; > > - compatible = "aspeed,ast2400-i2c-bus"; > > - bus = <2>; > > - clock-frequency = <100000>; > > - status = "disabled"; > > + #interrupt-cells = <1>; > + > > + reg = <0xc0 0x40>; > > + compatible = "aspeed,ast2500-i2c-bus"; > > + clocks = <&clk_apb>; > > + bus-frequency = <100000>; > > interrupts = <2>; > > - pinctrl-names = "default"; > - pinctrl-0 = <&pinctrl_i2c3_default>; Again, we still need the pinctrl properties. > + interrupt-parent = <&i2c_ic>; > > + status = "disabled"; > > }; > > > > i2c3: i2c-bus@100 { > > #address-cells = <1>; > > #size-cells = <0>; > > + #interrupt-cells = <1>; > + > > reg = <0x100 0x40>; > > - compatible = "aspeed,ast2400-i2c-bus"; > > - bus = <3>; > > - clock-frequency = <100000>; > > - status = "disabled"; > > + compatible = "aspeed,ast2500-i2c-bus"; > > + clocks = <&clk_apb>; > > + bus-frequency = <100000>; > > interrupts = <3>; > > + interrupt-parent = <&i2c_ic>; > > pinctrl-names = "default"; > > pinctrl-0 = <&pinctrl_i2c4_default>; > > + status = "disabled"; > > }; > > > > i2c4: i2c-bus@140 { > > #address-cells = <1>; > > #size-cells = <0>; > > + #interrupt-cells = <1>; > + > > reg = <0x140 0x40>; > > - compatible = "aspeed,ast2400-i2c-bus"; > > - bus = <4>; > > - clock-frequency = <100000>; > > - status = "disabled"; > > + compatible = "aspeed,ast2500-i2c-bus"; > > + clocks = <&clk_apb>; > > + bus-frequency = <100000>; > > interrupts = <4>; > > + interrupt-parent = <&i2c_ic>; > > pinctrl-names = "default"; > > pinctrl-0 = <&pinctrl_i2c5_default>; > > + status = "disabled"; > > }; > > > > i2c5: i2c-bus@180 { > > #address-cells = <1>; > > #size-cells = <0>; > > + #interrupt-cells = <1>; > + > > reg = <0x180 0x40>; > > - compatible = "aspeed,ast2400-i2c-bus"; > > - bus = <5>; > > - clock-frequency = <100000>; > > - status = "disabled"; > > + compatible = "aspeed,ast2500-i2c-bus"; > > + clocks = <&clk_apb>; > > + bus-frequency = <100000>; > > interrupts = <5>; > > + interrupt-parent = <&i2c_ic>; > > pinctrl-names = "default"; > > pinctrl-0 = <&pinctrl_i2c6_default>; > > + status = "disabled"; > > }; > > > > i2c6: i2c-bus@1c0 { > > #address-cells = <1>; > > #size-cells = <0>; > > - reg = <0x1C0 0x40>; > > - compatible = "aspeed,ast2400-i2c-bus"; > > - bus = <6>; > > - clock-frequency = <100000>; > > - status = "disabled"; > > + #interrupt-cells = <1>; > + > > + reg = <0x1c0 0x40>; > > + compatible = "aspeed,ast2500-i2c-bus"; > > + clocks = <&clk_apb>; > > + bus-frequency = <100000>; > > interrupts = <6>; > > + interrupt-parent = <&i2c_ic>; > > pinctrl-names = "default"; > > pinctrl-0 = <&pinctrl_i2c7_default>; > > + status = "disabled"; > > }; > > > > i2c7: i2c-bus@300 { > > #address-cells = <1>; > > #size-cells = <0>; > > + #interrupt-cells = <1>; > + > > reg = <0x300 0x40>; > > - compatible = "aspeed,ast2400-i2c-bus"; > > - bus = <7>; > > - clock-frequency = <100000>; > > - status = "disabled"; > > + compatible = "aspeed,ast2500-i2c-bus"; > > + clocks = <&clk_apb>; > > + bus-frequency = <100000>; > > interrupts = <7>; > > + interrupt-parent = <&i2c_ic>; > > pinctrl-names = "default"; > > pinctrl-0 = <&pinctrl_i2c8_default>; > > + status = "disabled"; > > }; > > > > i2c8: i2c-bus@340 { > > #address-cells = <1>; > > #size-cells = <0>; > > + #interrupt-cells = <1>; > + > > reg = <0x340 0x40>; > > - compatible = "aspeed,ast2400-i2c-bus"; > > - bus = <8>; > > - clock-frequency = <100000>; > > - status = "disabled"; > > + compatible = "aspeed,ast2500-i2c-bus"; > > + clocks = <&clk_apb>; > > + bus-frequency = <100000>; > > interrupts = <8>; > > + interrupt-parent = <&i2c_ic>; > > pinctrl-names = "default"; > > pinctrl-0 = <&pinctrl_i2c9_default>; > > + status = "disabled"; > > }; > > > > i2c9: i2c-bus@380 { > > #address-cells = <1>; > > #size-cells = <0>; > > + #interrupt-cells = <1>; > + > > reg = <0x380 0x40>; > > - compatible = "aspeed,ast2400-i2c-bus"; > > - bus = <9>; > > - clock-frequency = <100000>; > > - status = "disabled"; > > + compatible = "aspeed,ast2500-i2c-bus"; > > + clocks = <&clk_apb>; > > + bus-frequency = <100000>; > > interrupts = <9>; > > + interrupt-parent = <&i2c_ic>; > > pinctrl-names = "default"; > > pinctrl-0 = <&pinctrl_i2c10_default>; > > + status = "disabled"; > > }; > > > > i2c10: i2c-bus@3c0 { > > #address-cells = <1>; > > #size-cells = <0>; > > + #interrupt-cells = <1>; > + > > reg = <0x3c0 0x40>; > > - compatible = "aspeed,ast2400-i2c-bus"; > > - bus = <10>; > > - clock-frequency = <100000>; > > - status = "disabled"; > > + compatible = "aspeed,ast2500-i2c-bus"; > > + clocks = <&clk_apb>; > > + bus-frequency = <100000>; > > interrupts = <10>; > > + interrupt-parent = <&i2c_ic>; > > pinctrl-names = "default"; > > pinctrl-0 = <&pinctrl_i2c11_default>; > > + status = "disabled"; > > }; > > > > i2c11: i2c-bus@400 { > > #address-cells = <1>; > > #size-cells = <0>; > > + #interrupt-cells = <1>; > + > > reg = <0x400 0x40>; > > - compatible = "aspeed,ast2400-i2c-bus"; > > - bus = <11>; > > - clock-frequency = <100000>; > > - status = "disabled"; > > + compatible = "aspeed,ast2500-i2c-bus"; > > + clocks = <&clk_apb>; > > + bus-frequency = <100000>; > > interrupts = <11>; > > + interrupt-parent = <&i2c_ic>; > > pinctrl-names = "default"; > > pinctrl-0 = <&pinctrl_i2c12_default>; > > + status = "disabled"; > > }; > > > > i2c12: i2c-bus@440 { > > #address-cells = <1>; > > #size-cells = <0>; > > + #interrupt-cells = <1>; > + > > reg = <0x440 0x40>; > > - compatible = "aspeed,ast2400-i2c-bus"; > > - bus = <12>; > > - clock-frequency = <100000>; > > - status = "disabled"; > > + compatible = "aspeed,ast2500-i2c-bus"; > > + clocks = <&clk_apb>; > > + bus-frequency = <100000>; > > interrupts = <12>; > > + interrupt-parent = <&i2c_ic>; > > pinctrl-names = "default"; > > pinctrl-0 = <&pinctrl_i2c13_default>; > > + status = "disabled"; > > }; > > > > i2c13: i2c-bus@480 { > > #address-cells = <1>; > > #size-cells = <0>; > > + #interrupt-cells = <1>; > + > > reg = <0x480 0x40>; > > - compatible = "aspeed,ast2400-i2c-bus"; > > - bus = <13>; > > - clock-frequency = <100000>; > > - status = "disabled"; > > + compatible = "aspeed,ast2500-i2c-bus"; > > + clocks = <&clk_apb>; > > + bus-frequency = <100000>; > > interrupts = <13>; > > + interrupt-parent = <&i2c_ic>; > > pinctrl-names = "default"; > > pinctrl-0 = <&pinctrl_i2c14_default>; > > + status = "disabled"; > > }; > - > > }; > - > > }; > > }; > }; Overall, should we give the i2c nodes the same treatment in store for the pinctrl nodes? That is, flatten the file out by moving them to an &i2c { }; section down the bottom to get them out of the way? It's all pretty tedious and a bit of a distraction from the other interesting parts of the structure. Cheers, Andrew
diff --git a/arch/arm/boot/dts/aspeed-g4.dtsi b/arch/arm/boot/dts/aspeed-g4.dtsi index b9a6730cc831..f7767b999791 100644 --- a/arch/arm/boot/dts/aspeed-g4.dtsi +++ b/arch/arm/boot/dts/aspeed-g4.dtsi @@ -18,6 +18,23 @@ }; }; + aliases { + i2c0 = &i2c0; + i2c1 = &i2c1; + i2c2 = &i2c2; + i2c3 = &i2c3; + i2c4 = &i2c4; + i2c5 = &i2c5; + i2c6 = &i2c6; + i2c7 = &i2c7; + i2c8 = &i2c8; + i2c9 = &i2c9; + i2c10 = &i2c10; + i2c11 = &i2c11; + i2c12 = &i2c12; + i2c13 = &i2c13; + }; + clocks { }; @@ -958,200 +975,240 @@ }; i2c: i2c@1e78a000 { + compatible = "simple-bus"; #address-cells = <1>; #size-cells = <1>; - #interrupt-cells = <1>; - - compatible = "aspeed,ast2400-i2c-controller"; - reg = <0x1e78a000 0x40>; ranges = <0 0x1e78a000 0x1000>; - interrupts = <12>; - clocks = <&clk_apb>; - clock-ranges; - interrupt-controller; + + i2c_ic: interrupt-controller@0 { + #interrupt-cells = <1>; + compatible = "aspeed,ast2400-i2c-ic"; + reg = <0x0 0x40>; + interrupts = <12>; + interrupt-controller; + }; i2c0: i2c-bus@40 { #address-cells = <1>; #size-cells = <0>; + #interrupt-cells = <1>; + reg = <0x40 0x40>; compatible = "aspeed,ast2400-i2c-bus"; - bus = <0>; - clock-frequency = <100000>; - status = "disabled"; + clocks = <&clk_apb>; + bus-frequency = <100000>; interrupts = <0>; - interrupt-parent = <&i2c>; + interrupt-parent = <&i2c_ic>; + status = "disabled"; /* Does not need pinctrl node */ }; i2c1: i2c-bus@80 { #address-cells = <1>; #size-cells = <0>; + #interrupt-cells = <1>; + reg = <0x80 0x40>; compatible = "aspeed,ast2400-i2c-bus"; - bus = <1>; - clock-frequency = <100000>; - status = "disabled"; + clocks = <&clk_apb>; + bus-frequency = <100000>; interrupts = <1>; + interrupt-parent = <&i2c_ic>; + status = "disabled"; /* Does not need pinctrl node */ }; i2c2: i2c-bus@c0 { #address-cells = <1>; #size-cells = <0>; - reg = <0xC0 0x40>; + #interrupt-cells = <1>; + + reg = <0xc0 0x40>; compatible = "aspeed,ast2400-i2c-bus"; - bus = <2>; - clock-frequency = <100000>; - status = "disabled"; + clocks = <&clk_apb>; + bus-frequency = <100000>; interrupts = <2>; - pinctrl-names = "default"; - pinctrl-0 = <&pinctrl_i2c3_default>; + interrupt-parent = <&i2c_ic>; + status = "disabled"; + /* Does not need pinctrl node */ }; i2c3: i2c-bus@100 { #address-cells = <1>; #size-cells = <0>; + #interrupt-cells = <1>; + reg = <0x100 0x40>; compatible = "aspeed,ast2400-i2c-bus"; - bus = <3>; - clock-frequency = <100000>; - status = "disabled"; + clocks = <&clk_apb>; + bus-frequency = <100000>; interrupts = <3>; + interrupt-parent = <&i2c_ic>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_i2c4_default>; + status = "disabled"; }; i2c4: i2c-bus@140 { #address-cells = <1>; #size-cells = <0>; + #interrupt-cells = <1>; + reg = <0x140 0x40>; compatible = "aspeed,ast2400-i2c-bus"; - bus = <4>; - clock-frequency = <100000>; - status = "disabled"; + clocks = <&clk_apb>; + bus-frequency = <100000>; interrupts = <4>; + interrupt-parent = <&i2c_ic>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_i2c5_default>; + status = "disabled"; }; i2c5: i2c-bus@180 { #address-cells = <1>; #size-cells = <0>; + #interrupt-cells = <1>; + reg = <0x180 0x40>; compatible = "aspeed,ast2400-i2c-bus"; - bus = <5>; - clock-frequency = <100000>; - status = "disabled"; + clocks = <&clk_apb>; + bus-frequency = <100000>; interrupts = <5>; + interrupt-parent = <&i2c_ic>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_i2c6_default>; + status = "disabled"; }; i2c6: i2c-bus@1c0 { #address-cells = <1>; #size-cells = <0>; - reg = <0x1C0 0x40>; + #interrupt-cells = <1>; + + reg = <0x1c0 0x40>; compatible = "aspeed,ast2400-i2c-bus"; - bus = <6>; - clock-frequency = <100000>; - status = "disabled"; + clocks = <&clk_apb>; + bus-frequency = <100000>; interrupts = <6>; + interrupt-parent = <&i2c_ic>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_i2c7_default>; + status = "disabled"; }; i2c7: i2c-bus@300 { #address-cells = <1>; #size-cells = <0>; + #interrupt-cells = <1>; + reg = <0x300 0x40>; compatible = "aspeed,ast2400-i2c-bus"; - bus = <7>; - clock-frequency = <100000>; - status = "disabled"; + clocks = <&clk_apb>; + bus-frequency = <100000>; interrupts = <7>; + interrupt-parent = <&i2c_ic>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_i2c8_default>; + status = "disabled"; }; i2c8: i2c-bus@340 { #address-cells = <1>; #size-cells = <0>; + #interrupt-cells = <1>; + reg = <0x340 0x40>; compatible = "aspeed,ast2400-i2c-bus"; - bus = <8>; - clock-frequency = <100000>; - status = "disabled"; + clocks = <&clk_apb>; + bus-frequency = <100000>; interrupts = <8>; + interrupt-parent = <&i2c_ic>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_i2c9_default>; + status = "disabled"; }; i2c9: i2c-bus@380 { #address-cells = <1>; #size-cells = <0>; + #interrupt-cells = <1>; + reg = <0x380 0x40>; compatible = "aspeed,ast2400-i2c-bus"; - bus = <9>; - clock-frequency = <100000>; - status = "disabled"; + clocks = <&clk_apb>; + bus-frequency = <100000>; interrupts = <9>; + interrupt-parent = <&i2c_ic>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_i2c10_default>; + status = "disabled"; }; i2c10: i2c-bus@3c0 { #address-cells = <1>; #size-cells = <0>; + #interrupt-cells = <1>; + reg = <0x3c0 0x40>; compatible = "aspeed,ast2400-i2c-bus"; - bus = <10>; - clock-frequency = <100000>; - status = "disabled"; + clocks = <&clk_apb>; + bus-frequency = <100000>; interrupts = <10>; + interrupt-parent = <&i2c_ic>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_i2c11_default>; + status = "disabled"; }; i2c11: i2c-bus@400 { #address-cells = <1>; #size-cells = <0>; + #interrupt-cells = <1>; + reg = <0x400 0x40>; compatible = "aspeed,ast2400-i2c-bus"; - bus = <11>; - clock-frequency = <100000>; - status = "disabled"; + clocks = <&clk_apb>; + bus-frequency = <100000>; interrupts = <11>; + interrupt-parent = <&i2c_ic>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_i2c12_default>; + status = "disabled"; }; i2c12: i2c-bus@440 { #address-cells = <1>; #size-cells = <0>; + #interrupt-cells = <1>; + reg = <0x440 0x40>; compatible = "aspeed,ast2400-i2c-bus"; - bus = <12>; - clock-frequency = <100000>; - status = "disabled"; + clocks = <&clk_apb>; + bus-frequency = <100000>; interrupts = <12>; + interrupt-parent = <&i2c_ic>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_i2c13_default>; + status = "disabled"; }; i2c13: i2c-bus@480 { #address-cells = <1>; #size-cells = <0>; + #interrupt-cells = <1>; + reg = <0x480 0x40>; compatible = "aspeed,ast2400-i2c-bus"; - bus = <13>; - clock-frequency = <100000>; - status = "disabled"; + clocks = <&clk_apb>; + bus-frequency = <100000>; interrupts = <13>; - /* Does not need pinctrl node */ + interrupt-parent = <&i2c_ic>; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_i2c14_default>; + status = "disabled"; }; - }; - }; }; }; diff --git a/arch/arm/boot/dts/aspeed-g5.dtsi b/arch/arm/boot/dts/aspeed-g5.dtsi index ddfb729bb85a..6aef4b7fa529 100644 --- a/arch/arm/boot/dts/aspeed-g5.dtsi +++ b/arch/arm/boot/dts/aspeed-g5.dtsi @@ -18,6 +18,23 @@ }; }; + aliases { + i2c0 = &i2c0; + i2c1 = &i2c1; + i2c2 = &i2c2; + i2c3 = &i2c3; + i2c4 = &i2c4; + i2c5 = &i2c5; + i2c6 = &i2c6; + i2c7 = &i2c7; + i2c8 = &i2c8; + i2c9 = &i2c9; + i2c10 = &i2c10; + i2c11 = &i2c11; + i2c12 = &i2c12; + i2c13 = &i2c13; + }; + ahb { compatible = "simple-bus"; #address-cells = <1>; @@ -1149,199 +1166,237 @@ }; i2c: i2c@1e78a000 { + compatible = "simple-bus"; #address-cells = <1>; #size-cells = <1>; - #interrupt-cells = <1>; - - compatible = "aspeed,ast2400-i2c-controller"; - reg = <0x1e78a000 0x40>; ranges = <0 0x1e78a000 0x1000>; - interrupts = <12>; - clocks = <&clk_apb>; - clock-ranges; - interrupt-controller; + + i2c_ic: interrupt-controller@0 { + #interrupt-cells = <1>; + compatible = "aspeed,ast2500-i2c-ic"; + reg = <0x0 0x40>; + interrupts = <12>; + interrupt-controller; + }; i2c0: i2c-bus@40 { #address-cells = <1>; #size-cells = <0>; + #interrupt-cells = <1>; + reg = <0x40 0x40>; - compatible = "aspeed,ast2400-i2c-bus"; - bus = <0>; - clock-frequency = <100000>; - status = "disabled"; + compatible = "aspeed,ast2500-i2c-bus"; + clocks = <&clk_apb>; + bus-frequency = <100000>; interrupts = <0>; - interrupt-parent = <&i2c>; + interrupt-parent = <&i2c_ic>; + status = "disabled"; }; i2c1: i2c-bus@80 { #address-cells = <1>; #size-cells = <0>; + #interrupt-cells = <1>; + reg = <0x80 0x40>; - compatible = "aspeed,ast2400-i2c-bus"; - bus = <1>; - clock-frequency = <100000>; - status = "disabled"; + compatible = "aspeed,ast2500-i2c-bus"; + clocks = <&clk_apb>; + bus-frequency = <100000>; interrupts = <1>; + interrupt-parent = <&i2c_ic>; + status = "disabled"; }; i2c2: i2c-bus@c0 { #address-cells = <1>; #size-cells = <0>; - reg = <0xC0 0x40>; - compatible = "aspeed,ast2400-i2c-bus"; - bus = <2>; - clock-frequency = <100000>; - status = "disabled"; + #interrupt-cells = <1>; + + reg = <0xc0 0x40>; + compatible = "aspeed,ast2500-i2c-bus"; + clocks = <&clk_apb>; + bus-frequency = <100000>; interrupts = <2>; - pinctrl-names = "default"; - pinctrl-0 = <&pinctrl_i2c3_default>; + interrupt-parent = <&i2c_ic>; + status = "disabled"; }; i2c3: i2c-bus@100 { #address-cells = <1>; #size-cells = <0>; + #interrupt-cells = <1>; + reg = <0x100 0x40>; - compatible = "aspeed,ast2400-i2c-bus"; - bus = <3>; - clock-frequency = <100000>; - status = "disabled"; + compatible = "aspeed,ast2500-i2c-bus"; + clocks = <&clk_apb>; + bus-frequency = <100000>; interrupts = <3>; + interrupt-parent = <&i2c_ic>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_i2c4_default>; + status = "disabled"; }; i2c4: i2c-bus@140 { #address-cells = <1>; #size-cells = <0>; + #interrupt-cells = <1>; + reg = <0x140 0x40>; - compatible = "aspeed,ast2400-i2c-bus"; - bus = <4>; - clock-frequency = <100000>; - status = "disabled"; + compatible = "aspeed,ast2500-i2c-bus"; + clocks = <&clk_apb>; + bus-frequency = <100000>; interrupts = <4>; + interrupt-parent = <&i2c_ic>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_i2c5_default>; + status = "disabled"; }; i2c5: i2c-bus@180 { #address-cells = <1>; #size-cells = <0>; + #interrupt-cells = <1>; + reg = <0x180 0x40>; - compatible = "aspeed,ast2400-i2c-bus"; - bus = <5>; - clock-frequency = <100000>; - status = "disabled"; + compatible = "aspeed,ast2500-i2c-bus"; + clocks = <&clk_apb>; + bus-frequency = <100000>; interrupts = <5>; + interrupt-parent = <&i2c_ic>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_i2c6_default>; + status = "disabled"; }; i2c6: i2c-bus@1c0 { #address-cells = <1>; #size-cells = <0>; - reg = <0x1C0 0x40>; - compatible = "aspeed,ast2400-i2c-bus"; - bus = <6>; - clock-frequency = <100000>; - status = "disabled"; + #interrupt-cells = <1>; + + reg = <0x1c0 0x40>; + compatible = "aspeed,ast2500-i2c-bus"; + clocks = <&clk_apb>; + bus-frequency = <100000>; interrupts = <6>; + interrupt-parent = <&i2c_ic>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_i2c7_default>; + status = "disabled"; }; i2c7: i2c-bus@300 { #address-cells = <1>; #size-cells = <0>; + #interrupt-cells = <1>; + reg = <0x300 0x40>; - compatible = "aspeed,ast2400-i2c-bus"; - bus = <7>; - clock-frequency = <100000>; - status = "disabled"; + compatible = "aspeed,ast2500-i2c-bus"; + clocks = <&clk_apb>; + bus-frequency = <100000>; interrupts = <7>; + interrupt-parent = <&i2c_ic>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_i2c8_default>; + status = "disabled"; }; i2c8: i2c-bus@340 { #address-cells = <1>; #size-cells = <0>; + #interrupt-cells = <1>; + reg = <0x340 0x40>; - compatible = "aspeed,ast2400-i2c-bus"; - bus = <8>; - clock-frequency = <100000>; - status = "disabled"; + compatible = "aspeed,ast2500-i2c-bus"; + clocks = <&clk_apb>; + bus-frequency = <100000>; interrupts = <8>; + interrupt-parent = <&i2c_ic>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_i2c9_default>; + status = "disabled"; }; i2c9: i2c-bus@380 { #address-cells = <1>; #size-cells = <0>; + #interrupt-cells = <1>; + reg = <0x380 0x40>; - compatible = "aspeed,ast2400-i2c-bus"; - bus = <9>; - clock-frequency = <100000>; - status = "disabled"; + compatible = "aspeed,ast2500-i2c-bus"; + clocks = <&clk_apb>; + bus-frequency = <100000>; interrupts = <9>; + interrupt-parent = <&i2c_ic>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_i2c10_default>; + status = "disabled"; }; i2c10: i2c-bus@3c0 { #address-cells = <1>; #size-cells = <0>; + #interrupt-cells = <1>; + reg = <0x3c0 0x40>; - compatible = "aspeed,ast2400-i2c-bus"; - bus = <10>; - clock-frequency = <100000>; - status = "disabled"; + compatible = "aspeed,ast2500-i2c-bus"; + clocks = <&clk_apb>; + bus-frequency = <100000>; interrupts = <10>; + interrupt-parent = <&i2c_ic>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_i2c11_default>; + status = "disabled"; }; i2c11: i2c-bus@400 { #address-cells = <1>; #size-cells = <0>; + #interrupt-cells = <1>; + reg = <0x400 0x40>; - compatible = "aspeed,ast2400-i2c-bus"; - bus = <11>; - clock-frequency = <100000>; - status = "disabled"; + compatible = "aspeed,ast2500-i2c-bus"; + clocks = <&clk_apb>; + bus-frequency = <100000>; interrupts = <11>; + interrupt-parent = <&i2c_ic>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_i2c12_default>; + status = "disabled"; }; i2c12: i2c-bus@440 { #address-cells = <1>; #size-cells = <0>; + #interrupt-cells = <1>; + reg = <0x440 0x40>; - compatible = "aspeed,ast2400-i2c-bus"; - bus = <12>; - clock-frequency = <100000>; - status = "disabled"; + compatible = "aspeed,ast2500-i2c-bus"; + clocks = <&clk_apb>; + bus-frequency = <100000>; interrupts = <12>; + interrupt-parent = <&i2c_ic>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_i2c13_default>; + status = "disabled"; }; i2c13: i2c-bus@480 { #address-cells = <1>; #size-cells = <0>; + #interrupt-cells = <1>; + reg = <0x480 0x40>; - compatible = "aspeed,ast2400-i2c-bus"; - bus = <13>; - clock-frequency = <100000>; - status = "disabled"; + compatible = "aspeed,ast2500-i2c-bus"; + clocks = <&clk_apb>; + bus-frequency = <100000>; interrupts = <13>; + interrupt-parent = <&i2c_ic>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_i2c14_default>; + status = "disabled"; }; - }; - }; }; };
The I2C binding changed when upstreaming the I2C driver. This adds aliases for the 14 built-in I2C busses to ensure userspace sees the numbering that we had with the old driver. Signed-off-by: Joel Stanley <joel@jms.id.au> --- Boot tested on qemu-palmetto. We see the same i2c entries under /dev as before, so the aliases work. Note that we can't use qemu for testing with the new driver, tracked at https://github.com/openbmc/qemu/issues/5 arch/arm/boot/dts/aspeed-g4.dtsi | 173 ++++++++++++++++++++++------------ arch/arm/boot/dts/aspeed-g5.dtsi | 197 +++++++++++++++++++++++++-------------- 2 files changed, 241 insertions(+), 129 deletions(-)