diff mbox

[U-Boot] ARM: tegra: rm Jetson TK1 PMIC GPIO programming

Message ID 1453141396-18350-1-git-send-email-swarren@wwwdotorg.org
State Accepted
Commit 7fb82986be6252acf5aa05ac1ba7225548134a18
Delegated to: Tom Warren
Headers show

Commit Message

Stephen Warren Jan. 18, 2016, 6:23 p.m. UTC
From: Stephen Warren <swarren@nvidia.com>

The PMIC is configured such that its GPIOs have the correct configuration
at power-up, so no programming is required.

In fact, the current programming is actively wrong, since:

(a) the AS3722 driver configures the GPIO to be an output before setting
its output value, which causes a 0v glitch on the output.

(b) the AS3722 driver configures the GPIO to drive a high voltage from its
VSUP_GPIO power source rather than its VDD_GPIO_LV power source, so the pin
drives 5V not 1.8V as desired.

Solve these problems by removing the code which configures the PMIC GPIOs.

Note that this patch was tested directly on top of v2016.01; since then,
commit 96350f729c42 "dm: tegra: net: Convert tegra boards to driver model
for Ethernet" prevents PCIe from being initialized. Alternatively, simply
revert that commit to get PCIe Ethernet working again, then apply this
patch to test.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
---
 board/nvidia/jetson-tk1/jetson-tk1.c | 13 -------------
 1 file changed, 13 deletions(-)

Comments

Thierry Reding Jan. 19, 2016, 1:10 p.m. UTC | #1
On Mon, Jan 18, 2016 at 11:23:16AM -0700, Stephen Warren wrote:
> From: Stephen Warren <swarren@nvidia.com>
> 
> The PMIC is configured such that its GPIOs have the correct configuration
> at power-up, so no programming is required.
> 
> In fact, the current programming is actively wrong, since:
> 
> (a) the AS3722 driver configures the GPIO to be an output before setting
> its output value, which causes a 0v glitch on the output.
> 
> (b) the AS3722 driver configures the GPIO to drive a high voltage from its
> VSUP_GPIO power source rather than its VDD_GPIO_LV power source, so the pin
> drives 5V not 1.8V as desired.
> 
> Solve these problems by removing the code which configures the PMIC GPIOs.
> 
> Note that this patch was tested directly on top of v2016.01; since then,
> commit 96350f729c42 "dm: tegra: net: Convert tegra boards to driver model
> for Ethernet" prevents PCIe from being initialized. Alternatively, simply
> revert that commit to get PCIe Ethernet working again, then apply this
> patch to test.
> 
> Signed-off-by: Stephen Warren <swarren@nvidia.com>
> ---
>  board/nvidia/jetson-tk1/jetson-tk1.c | 13 -------------
>  1 file changed, 13 deletions(-)

Looks reasonable to me:

Acked-by: Thierry Reding <treding@nvidia.com>
Thierry Reding Jan. 22, 2016, 3:52 p.m. UTC | #2
On Mon, Jan 18, 2016 at 11:23:16AM -0700, Stephen Warren wrote:
> From: Stephen Warren <swarren@nvidia.com>
> 
> The PMIC is configured such that its GPIOs have the correct configuration
> at power-up, so no programming is required.
> 
> In fact, the current programming is actively wrong, since:
> 
> (a) the AS3722 driver configures the GPIO to be an output before setting
> its output value, which causes a 0v glitch on the output.
> 
> (b) the AS3722 driver configures the GPIO to drive a high voltage from its
> VSUP_GPIO power source rather than its VDD_GPIO_LV power source, so the pin
> drives 5V not 1.8V as desired.
> 
> Solve these problems by removing the code which configures the PMIC GPIOs.
> 
> Note that this patch was tested directly on top of v2016.01; since then,
> commit 96350f729c42 "dm: tegra: net: Convert tegra boards to driver model
> for Ethernet" prevents PCIe from being initialized. Alternatively, simply
> revert that commit to get PCIe Ethernet working again, then apply this
> patch to test.
> 
> Signed-off-by: Stephen Warren <swarren@nvidia.com>
> ---
>  board/nvidia/jetson-tk1/jetson-tk1.c | 13 -------------
>  1 file changed, 13 deletions(-)

After applying your other patch:

	pci: restore initialization for DM_PCI

to restore PCI networking on Jetson TK1 I was able to verify that this
still works for me. Interestingly the code before seems to trigger a
visual glitch in the serial output, though I'm not sure I had seen one
like that back when I initially added this support.

Either way, this patch:

Tested-by: Thierry Reding <treding@nvidia.com>
Stephen Warren Jan. 28, 2016, 5:11 p.m. UTC | #3
On 01/18/2016 12:16 PM, Tom Warren wrote:
> Stephen Warren wrotea tMonday, January 18, 2016 11:23 AM:
>> The PMIC is configured such that its GPIOs have the correct configuration at
>> power-up, so no programming is required.
>>
>> In fact, the current programming is actively wrong, since:
>>
>> (a) the AS3722 driver configures the GPIO to be an output before setting its
>> output value, which causes a 0v glitch on the output.
>>
>> (b) the AS3722 driver configures the GPIO to drive a high voltage from its
>> VSUP_GPIO power source rather than its VDD_GPIO_LV power source, so the
>> pin drives 5V not 1.8V as desired.
>>
>> Solve these problems by removing the code which configures the PMIC GPIOs.
>>
>> Note that this patch was tested directly on top of v2016.01; since then, commit
>> 96350f729c42 "dm: tegra: net: Convert tegra boards to driver model for
>> Ethernet" prevents PCIe from being initialized. Alternatively, simply revert that
>> commit to get PCIe Ethernet working again, then apply this patch to test.
>>
> Acked-by: Tom Warren <twarren@nvidia.com>
> I'll apply this to u-boot-tegra/next ASAP.

I don't see this patch there yet. It'd be good to get it pulled upstream 
ASAP since the merge window for v2016.03 closes this weekend.
diff mbox

Patch

diff --git a/board/nvidia/jetson-tk1/jetson-tk1.c b/board/nvidia/jetson-tk1/jetson-tk1.c
index e929a1c1ea27..a66b710cddab 100644
--- a/board/nvidia/jetson-tk1/jetson-tk1.c
+++ b/board/nvidia/jetson-tk1/jetson-tk1.c
@@ -60,19 +60,6 @@  int tegra_pcie_board_init(void)
 		return err;
 	}
 
-	err = as3722_gpio_configure(pmic, 1, AS3722_GPIO_OUTPUT_VDDH |
-					     AS3722_GPIO_INVERT);
-	if (err < 0) {
-		error("failed to configure GPIO#1 as output: %d\n", err);
-		return err;
-	}
-
-	err = as3722_gpio_direction_output(pmic, 2, 1);
-	if (err < 0) {
-		error("failed to set GPIO#2 high: %d\n", err);
-		return err;
-	}
-
 	return 0;
 }
 #endif /* PCI */