Message ID | b1cdc96ce8bb15059d7eea282f6586a826bee124.1416566157.git.marcel@ziswiler.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Fri, 2014-11-21 at 11:41 +0100, Marcel Ziswiler wrote: > Looks like Ethernet only ever worked if U-Boot properly brought it up > as both the reset as well as the VBUS lines were not actively handled > in-kernel. > This patch fixes this by just pulling up the reset GPIO Doing automatic power-cycle tests revealed that this is still not enough and a proper reset-cycle might be required. However I don't know as of yet how one can easily do that in mainline with a USB device otherwise not mentioned anywhere in the device tree. Any ideas? > and properly > enabling VBUS via a GPIO enabled fixed regulator VBUS supply. > > Signed-off-by: Marcel Ziswiler <marcel@ziswiler.com>
On Fri, 2014-11-21 at 12:57 +0100, Marcel Ziswiler wrote: > Doing automatic power-cycle tests revealed that this is still not enough > and a proper reset-cycle might be required. However I don't know as of > yet how one can easily do that in mainline with a USB device otherwise > not mentioned anywhere in the device tree. Any ideas? OK, looks like I need something as follows just wondering how far it can go (e.g. not even in -next as of yet): http://thread.gmane.org/gmane.linux.kernel/1682436
diff --git a/arch/arm/boot/dts/tegra30-colibri.dtsi b/arch/arm/boot/dts/tegra30-colibri.dtsi index c4ed1be..ddbdb77 100644 --- a/arch/arm/boot/dts/tegra30-colibri.dtsi +++ b/arch/arm/boot/dts/tegra30-colibri.dtsi @@ -167,6 +167,22 @@ nvidia,pull = <TEGRA_PIN_PULL_UP>; nvidia,tristate = <TEGRA_PIN_DISABLE>; }; + + /* LAN_RESET# */ + pex_l0_prsnt_n_pdd0 { + nvidia,pins = "pex_l0_prsnt_n_pdd0"; + nvidia,function = "rsvd3"; + nvidia,pull = <TEGRA_PIN_PULL_UP>; + nvidia,tristate = <TEGRA_PIN_DISABLE>; + }; + + /* LAN_V_BUS */ + pex_l0_clkreq_n_pdd2 { + nvidia,pins = "pex_l0_clkreq_n_pdd2"; + nvidia,function = "rsvd3"; + nvidia,pull = <TEGRA_PIN_PULL_NONE>; + nvidia,tristate = <TEGRA_PIN_DISABLE>; + }; }; }; @@ -345,6 +361,7 @@ usb-phy@7d004000 { status = "okay"; nvidia,is-wired = <1>; + vbus-supply = <&lan_vbus_reg>; }; clocks { @@ -382,5 +399,17 @@ regulator-max-microvolt = <5000000>; regulator-always-on; }; + + /* LAN_V_BUS */ + lan_vbus_reg: regulator@102 { + compatible = "regulator-fixed"; + reg = <102>; + regulator-name = "lan_vbus"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + gpio = <&gpio TEGRA_GPIO(DD, 2) GPIO_ACTIVE_HIGH>; + enable-active-high; + vin-supply = <&charge_pump_5v0_reg>; + }; }; };
Looks like Ethernet only ever worked if U-Boot properly brought it up as both the reset as well as the VBUS lines were not actively handled in-kernel. This patch fixes this by just pulling up the reset GPIO and properly enabling VBUS via a GPIO enabled fixed regulator VBUS supply. Signed-off-by: Marcel Ziswiler <marcel@ziswiler.com> --- Don't know whether this one could still make it into the current RC cycle as it is clearly a bug fix. arch/arm/boot/dts/tegra30-colibri.dtsi | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+)