diff mbox

[linux,2/2] ARM: dts: aspeed: zaius: Add I2C master selector and hotswap controller

Message ID 1479338955-5248-2-git-send-email-xow@google.com
State Accepted, archived
Headers show

Commit Message

Xo Wang Nov. 16, 2016, 11:29 p.m. UTC
Add device-tree bindings to instantiate the PCA9541A I2C master
selector. This driver allows mastering downstream devices after sending
an arbitration request to the PCA9541A. Downstream devices go into the
'i2c-arb' child node.

Instantiate the HWMON client driver for the TI LM5066I hotswap
controller present on Zaius EVT2 downstream of the master selector.

Signed-off-by: Xo Wang <xow@google.com>
---
 arch/arm/boot/dts/aspeed-bmc-opp-zaius.dts | 19 +++++++++++++++++--
 1 file changed, 17 insertions(+), 2 deletions(-)

Comments

Joel Stanley Nov. 17, 2016, 4:59 a.m. UTC | #1
Hi Xo,

On Thu, Nov 17, 2016 at 9:59 AM, Xo Wang <xow@google.com> wrote:
> Add device-tree bindings to instantiate the PCA9541A I2C master
> selector. This driver allows mastering downstream devices after sending
> an arbitration request to the PCA9541A. Downstream devices go into the
> 'i2c-arb' child node.

I took a look at the bindings document for i2c-mux[1] and it suggests
something different.

Is there a reason why you didn't follow what it says?

[1] https://www.kernel.org/doc/Documentation/devicetree/bindings/i2c/i2c-mux.txt

Cheers,

Joel


>
> Instantiate the HWMON client driver for the TI LM5066I hotswap
> controller present on Zaius EVT2 downstream of the master selector.
>
> Signed-off-by: Xo Wang <xow@google.com>
> ---
>  arch/arm/boot/dts/aspeed-bmc-opp-zaius.dts | 19 +++++++++++++++++--
>  1 file changed, 17 insertions(+), 2 deletions(-)
>
> diff --git a/arch/arm/boot/dts/aspeed-bmc-opp-zaius.dts b/arch/arm/boot/dts/aspeed-bmc-opp-zaius.dts
> index 3d997d9..136eb1d 100644
> --- a/arch/arm/boot/dts/aspeed-bmc-opp-zaius.dts
> +++ b/arch/arm/boot/dts/aspeed-bmc-opp-zaius.dts
> @@ -210,8 +210,23 @@
>  &i2c7 {
>         status = "okay";
>
> -       /* MUX PCA9541A (other master: CPU0 PCIe 1)
> -        *   ADM1272 PMBUS @10h
> +       pca9541a@70 {
> +               compatible = "nxp,pca9541";
> +               reg = <0x70>;
> +
> +               i2c-arb {
> +                       #address-cells = <1>;
> +                       #size-cells = <0>;
> +
> +                       hotswap@10 {
> +                               compatible = "ti,lm5066";
> +                               reg = <0x10>;
> +                       };
> +               };
> +       };
> +
> +       /* Master selector PCA9541A @70h (other master: CPU0)
> +        *   LM5066I PMBUS @10h
>          */
>         /* 12V SMPS Q54SH12050NNDH @61h */
>         /* CPU0 VR ISL68137 0.7V, 0.96V PMBUS @64h */
> --
> 2.8.0.rc3.226.g39d4020
>
> _______________________________________________
> openbmc mailing list
> openbmc@lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/openbmc
Xo Wang Nov. 17, 2016, 9:53 p.m. UTC | #2
Hi Joel,

On Wed, Nov 16, 2016 at 8:59 PM, Joel Stanley <joel@jms.id.au> wrote:
> Hi Xo,
>
> On Thu, Nov 17, 2016 at 9:59 AM, Xo Wang <xow@google.com> wrote:
>> Add device-tree bindings to instantiate the PCA9541A I2C master
>> selector. This driver allows mastering downstream devices after sending
>> an arbitration request to the PCA9541A. Downstream devices go into the
>> 'i2c-arb' child node.
>
> I took a look at the bindings document for i2c-mux[1] and it suggests
> something different.
>
> Is there a reason why you didn't follow what it says?
>
> [1] https://www.kernel.org/doc/Documentation/devicetree/bindings/i2c/i2c-mux.txt
>

I was following the I2C arbitration bus doc, which has its i2c slave
device nodes in an "i2c-arb" child node. I'm not sure why it was
written differently from "i2c-mux" bindings.

To be clear, I haven't 100% tested the LM5066I instantiation since the
motherboard I have actually has an ADI ADM1272 at address 0x10
downstream of the NXP PCA9541A.

https://www.kernel.org/doc/Documentation/devicetree/bindings/i2c/i2c-arb.txt

cheers
xo

> Cheers,
>
> Joel
>
>
>>
>> Instantiate the HWMON client driver for the TI LM5066I hotswap
>> controller present on Zaius EVT2 downstream of the master selector.
>>
>> Signed-off-by: Xo Wang <xow@google.com>
>> ---
>>  arch/arm/boot/dts/aspeed-bmc-opp-zaius.dts | 19 +++++++++++++++++--
>>  1 file changed, 17 insertions(+), 2 deletions(-)
>>
>> diff --git a/arch/arm/boot/dts/aspeed-bmc-opp-zaius.dts b/arch/arm/boot/dts/aspeed-bmc-opp-zaius.dts
>> index 3d997d9..136eb1d 100644
>> --- a/arch/arm/boot/dts/aspeed-bmc-opp-zaius.dts
>> +++ b/arch/arm/boot/dts/aspeed-bmc-opp-zaius.dts
>> @@ -210,8 +210,23 @@
>>  &i2c7 {
>>         status = "okay";
>>
>> -       /* MUX PCA9541A (other master: CPU0 PCIe 1)
>> -        *   ADM1272 PMBUS @10h
>> +       pca9541a@70 {
>> +               compatible = "nxp,pca9541";
>> +               reg = <0x70>;
>> +
>> +               i2c-arb {
>> +                       #address-cells = <1>;
>> +                       #size-cells = <0>;
>> +
>> +                       hotswap@10 {
>> +                               compatible = "ti,lm5066";
>> +                               reg = <0x10>;
>> +                       };
>> +               };
>> +       };
>> +
>> +       /* Master selector PCA9541A @70h (other master: CPU0)
>> +        *   LM5066I PMBUS @10h
>>          */
>>         /* 12V SMPS Q54SH12050NNDH @61h */
>>         /* CPU0 VR ISL68137 0.7V, 0.96V PMBUS @64h */
>> --
>> 2.8.0.rc3.226.g39d4020
>>
>> _______________________________________________
>> openbmc mailing list
>> openbmc@lists.ozlabs.org
>> https://lists.ozlabs.org/listinfo/openbmc
Joel Stanley Nov. 18, 2016, 2:51 a.m. UTC | #3
On Fri, Nov 18, 2016 at 8:23 AM, Xo Wang <xow@google.com> wrote:
> Hi Joel,
>
> On Wed, Nov 16, 2016 at 8:59 PM, Joel Stanley <joel@jms.id.au> wrote:
>> Hi Xo,
>>
>> On Thu, Nov 17, 2016 at 9:59 AM, Xo Wang <xow@google.com> wrote:
>>> Add device-tree bindings to instantiate the PCA9541A I2C master
>>> selector. This driver allows mastering downstream devices after sending
>>> an arbitration request to the PCA9541A. Downstream devices go into the
>>> 'i2c-arb' child node.
>>
>> I took a look at the bindings document for i2c-mux[1] and it suggests
>> something different.
>>
>> Is there a reason why you didn't follow what it says?
>>
>> [1] https://www.kernel.org/doc/Documentation/devicetree/bindings/i2c/i2c-mux.txt
>>
>
> I was following the I2C arbitration bus doc, which has its i2c slave
> device nodes in an "i2c-arb" child node. I'm not sure why it was
> written differently from "i2c-mux" bindings.
>
> To be clear, I haven't 100% tested the LM5066I instantiation since the
> motherboard I have actually has an ADI ADM1272 at address 0x10
> downstream of the NXP PCA9541A.
>
> https://www.kernel.org/doc/Documentation/devicetree/bindings/i2c/i2c-arb.txt
>

Okay. Thanks for the explanation. I have merged both patches into dev-4.7.

Cheers,

Joel
diff mbox

Patch

diff --git a/arch/arm/boot/dts/aspeed-bmc-opp-zaius.dts b/arch/arm/boot/dts/aspeed-bmc-opp-zaius.dts
index 3d997d9..136eb1d 100644
--- a/arch/arm/boot/dts/aspeed-bmc-opp-zaius.dts
+++ b/arch/arm/boot/dts/aspeed-bmc-opp-zaius.dts
@@ -210,8 +210,23 @@ 
 &i2c7 {
 	status = "okay";
 
-	/* MUX PCA9541A (other master: CPU0 PCIe 1)
-	 *   ADM1272 PMBUS @10h
+	pca9541a@70 {
+		compatible = "nxp,pca9541";
+		reg = <0x70>;
+
+		i2c-arb {
+			#address-cells = <1>;
+			#size-cells = <0>;
+
+			hotswap@10 {
+				compatible = "ti,lm5066";
+				reg = <0x10>;
+			};
+		};
+	};
+
+	/* Master selector PCA9541A @70h (other master: CPU0)
+	 *   LM5066I PMBUS @10h
 	 */
 	/* 12V SMPS Q54SH12050NNDH @61h */
 	/* CPU0 VR ISL68137 0.7V, 0.96V PMBUS @64h */