ARM: tegra: make all I2C ports open-drain
PATCH 1/1 ARM: tegra: make all I2C ports open-drain
From: Stephen Warren <[email protected]>
I2C protocol requires open-drain IOs. Fix the Dalmore and Venice2 pinmux tables to configure the IOs correctly. Without this, Tegra may actively drive the lines high while an external device is actively driving the lines low, which can only lead to bad things.
---
This should be applied for v2014.04
board/nvidia/dalmore/pinmux-config-dalmore.h | 16 ++++++++-------- board/nvidia/venice2/pinmux-config-venice2.h | 16 ++++++++-------- 2 files changed, 16 insertions(+), 16 deletions(-)
board/nvidia/dalmore/pinmux-config-dalmore.h +8 -8
@@ -132,8 +132,8 @@ static struct pingroup_config tegra114_pinmux_common[] = {DEFAULT_PINMUX (ULPI_STP ,ULPI ,NORMAL ,NORMAL ,OUTPUT ),/* I2C3 pinmux */ -I2C_PINMUX (CAM_I2C_SCL ,I2C3 ,NORMAL ,NORMAL ,INPUT ,DEFAULT ,DISABLE ), -I2C_PINMUX (CAM_I2C_SDA ,I2C3 ,NORMAL ,NORMAL ,INPUT ,DEFAULT ,DISABLE ), +I2C_PINMUX (CAM_I2C_SCL ,I2C3 ,NORMAL ,NORMAL ,INPUT ,DEFAULT ,ENABLE ), +I2C_PINMUX (CAM_I2C_SDA ,I2C3 ,NORMAL ,NORMAL ,INPUT ,DEFAULT ,ENABLE ),/* VI pinmux */ VI_PINMUX(CAM_MCLK, VI_ALT3, NORMAL, NORMAL, OUTPUT, DEFAULT, DEFAULT),
@@ -145,8 +145,8 @@ static struct pingroup_config tegra114_pinmux_common[] = {VI_PINMUX (GPIO_PBB4 ,VGP4 ,NORMAL ,NORMAL ,OUTPUT ,DEFAULT ,DEFAULT ),/* I2C2 pinmux */ -I2C_PINMUX (GEN2_I2C_SCL ,I2C2 ,NORMAL ,NORMAL ,INPUT ,DEFAULT ,DISABLE ), -I2C_PINMUX (GEN2_I2C_SDA ,I2C2 ,NORMAL ,NORMAL ,INPUT ,DEFAULT ,DISABLE ), +I2C_PINMUX (GEN2_I2C_SCL ,I2C2 ,NORMAL ,NORMAL ,INPUT ,DEFAULT ,ENABLE ), +I2C_PINMUX (GEN2_I2C_SDA ,I2C2 ,NORMAL ,NORMAL ,INPUT ,DEFAULT ,ENABLE ),/* UARTD pinmux */ DEFAULT_PINMUX(GMI_A16, UARTD, NORMAL, NORMAL, OUTPUT),
@@ -224,8 +224,8 @@ static struct pingroup_config tegra114_pinmux_common[] = {DEFAULT_PINMUX (KB_ROW9 ,UARTA ,NORMAL ,NORMAL ,OUTPUT ),/* I2CPWR pinmux (I2C5) */ -I2C_PINMUX (PWR_I2C_SCL ,I2CPWR ,NORMAL ,NORMAL ,INPUT ,DEFAULT ,DISABLE ), -I2C_PINMUX (PWR_I2C_SDA ,I2CPWR ,NORMAL ,NORMAL ,INPUT ,DEFAULT ,DISABLE ), +I2C_PINMUX (PWR_I2C_SCL ,I2CPWR ,NORMAL ,NORMAL ,INPUT ,DEFAULT ,ENABLE ), +I2C_PINMUX (PWR_I2C_SDA ,I2CPWR ,NORMAL ,NORMAL ,INPUT ,DEFAULT ,ENABLE ),/* SYSCLK pinmux */ DEFAULT_PINMUX(SYS_CLK_REQ, SYSCLK, NORMAL, NORMAL, OUTPUT),
@@ -252,8 +252,8 @@ static struct pingroup_config tegra114_pinmux_common[] = {DEFAULT_PINMUX (CLK3_OUT ,EXTPERIPH3 ,NORMAL ,NORMAL ,OUTPUT ),/* I2C1 pinmux */ -I2C_PINMUX (GEN1_I2C_SCL ,I2C1 ,NORMAL ,NORMAL ,INPUT ,DEFAULT ,DISABLE ), -I2C_PINMUX (GEN1_I2C_SDA ,I2C1 ,NORMAL ,NORMAL ,INPUT ,DEFAULT ,DISABLE ), +I2C_PINMUX (GEN1_I2C_SCL ,I2C1 ,NORMAL ,NORMAL ,INPUT ,DEFAULT ,ENABLE ), +I2C_PINMUX (GEN1_I2C_SDA ,I2C1 ,NORMAL ,NORMAL ,INPUT ,DEFAULT ,ENABLE ),/* UARTB pinmux */ DEFAULT_PINMUX(UART2_CTS_N, UARTB, NORMAL, TRISTATE, INPUT),
board/nvidia/venice2/pinmux-config-venice2.h +8 -8
@@ -124,12 +124,12 @@ static struct pingroup_config tegra124_pinmux_common[] = {DEFAULT_PINMUX (ULPI_STP ,SPI1 ,NORMAL ,NORMAL ,INPUT ),/* I2C3 (TPM) pinmux */ -I2C_PINMUX (CAM_I2C_SCL ,I2C3 ,NORMAL ,NORMAL ,INPUT ,DEFAULT ,DISABLE ), -I2C_PINMUX (CAM_I2C_SDA ,I2C3 ,NORMAL ,NORMAL ,INPUT ,DEFAULT ,DISABLE ), +I2C_PINMUX (CAM_I2C_SCL ,I2C3 ,NORMAL ,NORMAL ,INPUT ,DEFAULT ,ENABLE ), +I2C_PINMUX (CAM_I2C_SDA ,I2C3 ,NORMAL ,NORMAL ,INPUT ,DEFAULT ,ENABLE ),/* I2C2 pinmux */ -I2C_PINMUX (GEN2_I2C_SCL ,I2C2 ,NORMAL ,NORMAL ,INPUT ,DEFAULT ,DISABLE ), -I2C_PINMUX (GEN2_I2C_SDA ,I2C2 ,NORMAL ,NORMAL ,INPUT ,DEFAULT ,DISABLE ), +I2C_PINMUX (GEN2_I2C_SCL ,I2C2 ,NORMAL ,NORMAL ,INPUT ,DEFAULT ,ENABLE ), +I2C_PINMUX (GEN2_I2C_SDA ,I2C2 ,NORMAL ,NORMAL ,INPUT ,DEFAULT ,ENABLE ),/* UARTD pinmux (UART4 on Servo board, unused) */ DEFAULT_PINMUX(GPIO_PJ7, UARTD, NORMAL, NORMAL, OUTPUT),
@@ -198,8 +198,8 @@ static struct pingroup_config tegra124_pinmux_common[] = {DEFAULT_PINMUX (KB_ROW10 ,UARTA ,UP ,TRISTATE ,INPUT ),/* I2CPWR pinmux (I2C5) */ -I2C_PINMUX (PWR_I2C_SCL ,I2CPWR ,NORMAL ,NORMAL ,INPUT ,DEFAULT ,DISABLE ), -I2C_PINMUX (PWR_I2C_SDA ,I2CPWR ,NORMAL ,NORMAL ,INPUT ,DEFAULT ,DISABLE ), +I2C_PINMUX (PWR_I2C_SCL ,I2CPWR ,NORMAL ,NORMAL ,INPUT ,DEFAULT ,ENABLE ), +I2C_PINMUX (PWR_I2C_SDA ,I2CPWR ,NORMAL ,NORMAL ,INPUT ,DEFAULT ,ENABLE ),/* RTCK pinmux */ DEFAULT_PINMUX(JTAG_RTCK, RTCK, NORMAL, NORMAL, INPUT),
@@ -223,8 +223,8 @@ static struct pingroup_config tegra124_pinmux_common[] = {DEFAULT_PINMUX (CLK3_OUT ,EXTPERIPH3 ,NORMAL ,NORMAL ,OUTPUT ),/* I2C1 pinmux */ -I2C_PINMUX (GEN1_I2C_SCL ,I2C1 ,NORMAL ,NORMAL ,INPUT ,DEFAULT ,DISABLE ), -I2C_PINMUX (GEN1_I2C_SDA ,I2C1 ,NORMAL ,NORMAL ,INPUT ,DEFAULT ,DISABLE ), +I2C_PINMUX (GEN1_I2C_SCL ,I2C1 ,NORMAL ,NORMAL ,INPUT ,DEFAULT ,ENABLE ), +I2C_PINMUX (GEN1_I2C_SDA ,I2C1 ,NORMAL ,NORMAL ,INPUT ,DEFAULT ,ENABLE ),/* UARTB, GPS */ DEFAULT_PINMUX(UART2_CTS_N, UARTB, NORMAL, TRISTATE, INPUT),
Signature · 1 line
1.8.1.5
PATCH 1/1 ARM: tegra: make all I2C ports open-drain
Quoted 6 lines · Stephen Warren
From: Stephen Warren <[email protected]>
I2C protocol requires open-drain IOs. Fix the Dalmore and Venice2 pinmux tables to configure the IOs correctly. Without this, Tegra may actively drive the lines high while an external device is actively driving the lines low, which can only lead to bad things.
Tom (or Tom or Albert),
This one patch should really be applied as a bug-fix for v2014.04. It'd be good to get it applied soon.
The other large pinmux series I sent can obviously wait until the next release.
PATCH 1/1 ARM: tegra: make all I2C ports open-drain
I've updated u-boot-tegra/next with this patch, rebased it against ARM master, and pushed it to Denx. All tegra boards build OK.
Albert - if you want, you can use u-boot-tegra/next to bring in this patch, or apply it to ARM master yourself, or I can do a formal PR. Let me know. Or TomR can just apply it to Denx master.
Tom
Quoted 15 lines
-----Original Message-----
From: Stephen Warren [mailto:swarren at wwwdotorg.org]
Sent: Friday, March 21, 2014 11:31 AM
To: u-boot at lists.denx.de; Simon Glass; Tom Warren; Stephen Warren
Cc: Tom Rini
Subject: Re: [U-Boot] [PATCH] ARM: tegra: make all I2C ports open-drainQuoted 6 lines · Stephen Warren
From: Stephen Warren <[email protected]>
I2C protocol requires open-drain IOs. Fix the Dalmore and Venice2 pinmux tables to configure the IOs correctly. Without this, Tegra may actively drive the lines high while an external device is actively driving the lines low, which can only lead to bad things.
Quoted 6 lines
Tom (or Tom or Albert),
This one patch should really be applied as a bug-fix for v2014.04. It'd be good to get it applied soon.
The other large pinmux series I sent can obviously wait until the next release.
-----------------------------------------------------------------------------------
This email message is for the sole use of the intended recipient(s) and may contain confidential information. Any unauthorized review, use, disclosure or distribution is prohibited. If you are not the intended recipient, please contact the sender by reply email and destroy all copies of the original message.
-----------------------------------------------------------------------------------
PATCH 1/1 ARM: tegra: make all I2C ports open-drain
Quoted 3 lines · Tom Warren
I've updated u-boot-tegra/next with this patch, rebased it against ARM master, and pushed it to Denx. All tegra boards build OK.
Albert - if you want, you can use u-boot-tegra/next to bring in this patch, or apply it to ARM master yourself, or I can do a formal PR. Let me know. Or TomR can just apply it to Denx master.
I haven't seen any response to this, so I assume simply sending a pull request is the best way forward.
Quoted 23 lines
Tom
Quoted 21 lines
-----Original Message-----
From: Stephen Warren [mailto:swarren at wwwdotorg.org]
Sent: Friday, March 21, 2014 11:31 AM
To: u-boot at lists.denx.de; Simon Glass; Tom Warren; Stephen Warren
Cc: Tom Rini
Subject: Re: [U-Boot] [PATCH] ARM: tegra: make all I2C ports open-drainQuoted 6 lines · Stephen Warren
From: Stephen Warren <[email protected]>
I2C protocol requires open-drain IOs. Fix the Dalmore and Venice2 pinmux tables to configure the IOs correctly. Without this, Tegra may actively drive the lines high while an external device is actively driving the lines low, which can only lead to bad things.
Tom (or Tom or Albert),
This one patch should really be applied as a bug-fix for v2014.04. It'd be good to get it applied soon.
The other large pinmux series I sent can obviously wait until the next release.
PATCH 1/1 ARM: tegra: make all I2C ports open-drain
Quoted 7 lines · Stephen Warren
Quoted 3 lines · Tom Warren
I've updated u-boot-tegra/next with this patch, rebased it against ARM master, and pushed it to Denx. All tegra boards build OK.
Albert - if you want, you can use u-boot-tegra/next to bring in this patch, or apply it to ARM master yourself, or I can do a formal PR. Let me know. Or TomR can just apply it to Denx master.
I haven't seen any response to this, so I assume simply sending a pull request is the best way forward.
Yes, please shoot out pull requests, thanks!
Signature · 8 lines
Tom -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 836 bytes Desc: Digital signature URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140328/6a2542b7/attachment.pgp>
PATCH 1/1 ARM: tegra: make all I2C ports open-drain
In reply to Stephen WarrenQuoted 8 lines · Stephen Warren
From: Stephen Warren <[email protected]>
I2C protocol requires open-drain IOs. Fix the Dalmore and Venice2 pinmux tables to configure the IOs correctly. Without this, Tegra may actively drive the lines high while an external device is actively driving the lines low, which can only lead to bad things.
Signed-off-by Stephen Warren <[email protected]>