[PATCH linux dev-4.10 v2 1/2] arm/dts: Add I2C master and ports to FSI cfam

Joel Stanley joel at jms.id.au
Mon Jul 3 18:38:42 AEST 2017


On Fri, Jun 30, 2017 at 2:12 AM, Eddie James <eajames at linux.vnet.ibm.com> wrote:
> From: "Edward A. James" <eajames at us.ibm.com>
>
> FSI I2C master algorithm probes port devices based on dts.
>
> Signed-off-by: Edward A. James <eajames at us.ibm.com>
> ---
>  arch/arm/boot/dts/aspeed-bmc-opp-romulus.dts     | 120 +++++++++++++++++
>  arch/arm/boot/dts/aspeed-bmc-opp-witherspoon.dts | 120 +++++++++++++++++
>  arch/arm/boot/dts/ibm-power9-cfam.dtsi           | 164 +++++++++++++++++++++++
>  3 files changed, 404 insertions(+)
>
> diff --git a/arch/arm/boot/dts/aspeed-bmc-opp-romulus.dts b/arch/arm/boot/dts/aspeed-bmc-opp-romulus.dts
> index d53dc59..4a1a390 100644
> --- a/arch/arm/boot/dts/aspeed-bmc-opp-romulus.dts
> +++ b/arch/arm/boot/dts/aspeed-bmc-opp-romulus.dts
> @@ -72,6 +72,126 @@
>
>  #include "ibm-power9-cfam.dtsi"
>
> +&cfam0_i2c0 {
> +       status = "okay";
> +};

The point of separating out the description and enabling of these i2c
nodes was so we could selectively enable the ones that are in use by
OpenBMC kernel drivers and userspace applications.

With this change we enable 30 i2c character devices, and consume the
associated kernel memory.

Did you make any progress with discovering the devices that are required?

I can see from a bug report that the SBE EEPROM is one use case:

 errorMessage  : ServerI2CInstruction::iic_open invalid device open
attempt /dev/i2c-100

Could we enable just that one on each processor to unblock people
using it for this use case while you investigate other uses?

Cheers,

Joel
> +
> +&cfam0_i2c1 {
> +       status = "okay";
> +};
> +
> +&cfam0_i2c2 {
> +       status = "okay";
> +};
> +
> +&cfam0_i2c3 {
> +       status = "okay";
> +};
> +
> +&cfam0_i2c4 {
> +       status = "okay";
> +};
> +
> +&cfam0_i2c5 {
> +       status = "okay";
> +};
> +
> +&cfam0_i2c6 {
> +       status = "okay";
> +};
> +
> +&cfam0_i2c7 {
> +       status = "okay";
> +};
> +
> +&cfam0_i2c8 {
> +       status = "okay";
> +};
> +
> +&cfam0_i2c9 {
> +       status = "okay";
> +};
> +
> +&cfam0_i2c10 {
> +       status = "okay";
> +};
> +
> +&cfam0_i2c11 {
> +       status = "okay";
> +};
> +
> +&cfam0_i2c12 {
> +       status = "okay";
> +};
> +
> +&cfam0_i2c13 {
> +       status = "okay";
> +};
> +
> +&cfam0_i2c14 {
> +       status = "okay";
> +};
> +
> +&cfam1_i2c0 {
> +       status = "okay";
> +};
> +
> +&cfam1_i2c1 {
> +       status = "okay";
> +};
> +
> +&cfam1_i2c2 {
> +       status = "okay";
> +};
> +
> +&cfam1_i2c3 {
> +       status = "okay";
> +};
> +
> +&cfam1_i2c4 {
> +       status = "okay";
> +};
> +
> +&cfam1_i2c5 {
> +       status = "okay";
> +};
> +
> +&cfam1_i2c6 {
> +       status = "okay";
> +};
> +
> +&cfam1_i2c7 {
> +       status = "okay";
> +};
> +
> +&cfam1_i2c8 {
> +       status = "okay";
> +};
> +
> +&cfam1_i2c9 {
> +       status = "okay";
> +};
> +
> +&cfam1_i2c10 {
> +       status = "okay";
> +};
> +
> +&cfam1_i2c11 {
> +       status = "okay";
> +};
> +
> +&cfam1_i2c12 {
> +       status = "okay";
> +};
> +
> +&cfam1_i2c13 {
> +       status = "okay";
> +};
> +
> +&cfam1_i2c14 {
> +       status = "okay";
> +};
> +
>  &fmc {
>         status = "okay";
>         flash at 0 {
> diff --git a/arch/arm/boot/dts/aspeed-bmc-opp-witherspoon.dts b/arch/arm/boot/dts/aspeed-bmc-opp-witherspoon.dts
> index 31315d0..4cc99e2 100644
> --- a/arch/arm/boot/dts/aspeed-bmc-opp-witherspoon.dts
> +++ b/arch/arm/boot/dts/aspeed-bmc-opp-witherspoon.dts
> @@ -84,6 +84,126 @@
>
>  #include "ibm-power9-cfam.dtsi"
>
> +&cfam0_i2c0 {
> +       status = "okay";
> +};
> +
> +&cfam0_i2c1 {
> +       status = "okay";
> +};
> +
> +&cfam0_i2c2 {
> +       status = "okay";
> +};
> +
> +&cfam0_i2c3 {
> +       status = "okay";
> +};
> +
> +&cfam0_i2c4 {
> +       status = "okay";
> +};
> +
> +&cfam0_i2c5 {
> +       status = "okay";
> +};
> +
> +&cfam0_i2c6 {
> +       status = "okay";
> +};
> +
> +&cfam0_i2c7 {
> +       status = "okay";
> +};
> +
> +&cfam0_i2c8 {
> +       status = "okay";
> +};
> +
> +&cfam0_i2c9 {
> +       status = "okay";
> +};
> +
> +&cfam0_i2c10 {
> +       status = "okay";
> +};
> +
> +&cfam0_i2c11 {
> +       status = "okay";
> +};
> +
> +&cfam0_i2c12 {
> +       status = "okay";
> +};
> +
> +&cfam0_i2c13 {
> +       status = "okay";
> +};
> +
> +&cfam0_i2c14 {
> +       status = "okay";
> +};
> +
> +&cfam1_i2c0 {
> +       status = "okay";
> +};
> +
> +&cfam1_i2c1 {
> +       status = "okay";
> +};
> +
> +&cfam1_i2c2 {
> +       status = "okay";
> +};
> +
> +&cfam1_i2c3 {
> +       status = "okay";
> +};
> +
> +&cfam1_i2c4 {
> +       status = "okay";
> +};
> +
> +&cfam1_i2c5 {
> +       status = "okay";
> +};
> +
> +&cfam1_i2c6 {
> +       status = "okay";
> +};
> +
> +&cfam1_i2c7 {
> +       status = "okay";
> +};
> +
> +&cfam1_i2c8 {
> +       status = "okay";
> +};
> +
> +&cfam1_i2c9 {
> +       status = "okay";
> +};
> +
> +&cfam1_i2c10 {
> +       status = "okay";
> +};
> +
> +&cfam1_i2c11 {
> +       status = "okay";
> +};
> +
> +&cfam1_i2c12 {
> +       status = "okay";
> +};
> +
> +&cfam1_i2c13 {
> +       status = "okay";
> +};
> +
> +&cfam1_i2c14 {
> +       status = "okay";
> +};
> +
>  &fmc {
>         status = "okay";
>         flash at 0 {
> diff --git a/arch/arm/boot/dts/ibm-power9-cfam.dtsi b/arch/arm/boot/dts/ibm-power9-cfam.dtsi
> index f29c6e3..ede778d 100644
> --- a/arch/arm/boot/dts/ibm-power9-cfam.dtsi
> +++ b/arch/arm/boot/dts/ibm-power9-cfam.dtsi
> @@ -4,6 +4,88 @@
>                 #address-cells = <1>;
>                 #size-cells = <1>;
>
> +               i2c at 1800 {
> +                       compatible = "ibm,fsi-i2c-master";
> +                       reg = <0x1800 0x400>;
> +                       #address-cells = <1>;
> +                       #size-cells = <0>;
> +
> +                       cfam0_i2c0: i2c-bus at 0 {
> +                               status = "disabled";
> +                               reg = <0>;
> +                       };
> +
> +                       cfam0_i2c1: i2c-bus at 1 {
> +                               status = "disabled";
> +                               reg = <1>;
> +                       };
> +
> +                       cfam0_i2c2: i2c-bus at 2 {
> +                               status = "disabled";
> +                               reg = <2>;
> +                       };
> +
> +                       cfam0_i2c3: i2c-bus at 3 {
> +                               status = "disabled";
> +                               reg = <3>;
> +                       };
> +
> +                       cfam0_i2c4: i2c-bus at 4 {
> +                               status = "disabled";
> +                               reg = <4>;
> +                       };
> +
> +                       cfam0_i2c5: i2c-bus at 5 {
> +                               status = "disabled";
> +                               reg = <5>;
> +                       };
> +
> +                       cfam0_i2c6: i2c-bus at 6 {
> +                               status = "disabled";
> +                               reg = <6>;
> +                       };
> +
> +                       cfam0_i2c7: i2c-bus at 7 {
> +                               status = "disabled";
> +                               reg = <7>;
> +                       };
> +
> +                       cfam0_i2c8: i2c-bus at 8 {
> +                               status = "disabled";
> +                               reg = <8>;
> +                       };
> +
> +                       cfam0_i2c9: i2c-bus at 9 {
> +                               status = "disabled";
> +                               reg = <9>;
> +                       };
> +
> +                       cfam0_i2c10: i2c-bus at 10 {
> +                               status = "disabled";
> +                               reg = <10>;
> +                       };
> +
> +                       cfam0_i2c11: i2c-bus at 11 {
> +                               status = "disabled";
> +                               reg = <11>;
> +                       };
> +
> +                       cfam0_i2c12: i2c-bus at 12 {
> +                               status = "disabled";
> +                               reg = <12>;
> +                       };
> +
> +                       cfam0_i2c13: i2c-bus at 13 {
> +                               status = "disabled";
> +                               reg = <13>;
> +                       };
> +
> +                       cfam0_i2c14: i2c-bus at 14 {
> +                               status = "disabled";
> +                               reg = <14>;
> +                       };
> +               };
> +
>                 sbefifo at 2400 {
>                         compatible = "ibm,p9-sbefifo";
>                         reg = <0x2400 0x400>;
> @@ -31,6 +113,88 @@
>                                 #address-cells = <1>;
>                                 #size-cells = <1>;
>
> +                               i2c at 1800 {
> +                                       compatible = "ibm,fsi-i2c-master";
> +                                       reg = <0x1800 0x400>;
> +                                       #address-cells = <1>;
> +                                       #size-cells = <0>;
> +
> +                                       cfam1_i2c0: i2c-bus at 0 {
> +                                               status = "disabled";
> +                                               reg = <0>;
> +                                       };
> +
> +                                       cfam1_i2c1: i2c-bus at 1 {
> +                                               status = "disabled";
> +                                               reg = <1>;
> +                                       };
> +
> +                                       cfam1_i2c2: i2c-bus at 2 {
> +                                               status = "disabled";
> +                                               reg = <2>;
> +                                       };
> +
> +                                       cfam1_i2c3: i2c-bus at 3 {
> +                                               status = "disabled";
> +                                               reg = <3>;
> +                                       };
> +
> +                                       cfam1_i2c4: i2c-bus at 4 {
> +                                               status = "disabled";
> +                                               reg = <4>;
> +                                       };
> +
> +                                       cfam1_i2c5: i2c-bus at 5 {
> +                                               status = "disabled";
> +                                               reg = <5>;
> +                                       };
> +
> +                                       cfam1_i2c6: i2c-bus at 6 {
> +                                               status = "disabled";
> +                                               reg = <6>;
> +                                       };
> +
> +                                       cfam1_i2c7: i2c-bus at 7 {
> +                                               status = "disabled";
> +                                               reg = <7>;
> +                                       };
> +
> +                                       cfam1_i2c8: i2c-bus at 8 {
> +                                               status = "disabled";
> +                                               reg = <8>;
> +                                       };
> +
> +                                       cfam1_i2c9: i2c-bus at 9 {
> +                                               status = "disabled";
> +                                               reg = <9>;
> +                                       };
> +
> +                                       cfam1_i2c10: i2c-bus at 10 {
> +                                               status = "disabled";
> +                                               reg = <10>;
> +                                       };
> +
> +                                       cfam1_i2c11: i2c-bus at 11 {
> +                                               status = "disabled";
> +                                               reg = <11>;
> +                                       };
> +
> +                                       cfam1_i2c12: i2c-bus at 12 {
> +                                               status = "disabled";
> +                                               reg = <12>;
> +                                       };
> +
> +                                       cfam1_i2c13: i2c-bus at 13 {
> +                                               status = "disabled";
> +                                               reg = <13>;
> +                                       };
> +
> +                                       cfam1_i2c14: i2c-bus at 14 {
> +                                               status = "disabled";
> +                                               reg = <14>;
> +                                       };
> +                               };
> +
>                                 sbefifo at 2400 {
>                                         compatible = "ibm,p9-sbefifo";
>                                         reg = <0x2400 0x400>;
> --
> 1.8.3.1
>


More information about the openbmc mailing list