linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] ARM: dts: imx6sx-sdb: Fix enet phy regulator
@ 2018-10-02 18:37 Leonard Crestez
  2018-10-02 19:56 ` Linus Walleij
  2018-10-03  2:25 ` Fabio Estevam
  0 siblings, 2 replies; 5+ messages in thread
From: Leonard Crestez @ 2018-10-02 18:37 UTC (permalink / raw)
  To: Fabio Estevam, Andy Duan, Shawn Guo
  Cc: Linus Walleij, Mark Brown, Liam Girdwood, linux-gpio,
	linux-kernel, dl-linux-imx, kernel

Bindings for "fixed-regulator" only explicitly support "gpio" property,
not "gpios". Fix by correcting the property name.

The enet PHYs on imx6sx-sdb needs to be explicitly reset after a power
cycle, handle this by adding the phy-reset-gpios property.

Both phys share a single reset, a scenario similar to imx7d-sdb.

This issue was exposed by commit efdfeb079cc3 ("regulator: fixed:
Convert to use GPIO descriptor only") which causes the "gpios" property
to also be parsed. Before that commit the "gpios" property had no
effect and PHY reset was only handled in the bootloader.

This fixes linux-next netboot failures previously reported here:
 https://lore.kernel.org/patchwork/patch/982437/#1177900
 https://lore.kernel.org/patchwork/patch/994091/#1178304

Signed-off-by: Leonard Crestez <leonard.crestez@nxp.com>
---
 arch/arm/boot/dts/imx6sx-sdb.dtsi | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

I'm not entirely certain sharing the phy reset is OK, maybe somebody
with more familiarity with the FEC driver can confirm? This design seems
to be similar between multiple imx boards with dual ethernet ports.

This took a surprising amount of digging.

diff --git a/arch/arm/boot/dts/imx6sx-sdb.dtsi b/arch/arm/boot/dts/imx6sx-sdb.dtsi
index 53b3408b5fab..1ed7a081c420 100644
--- a/arch/arm/boot/dts/imx6sx-sdb.dtsi
+++ b/arch/arm/boot/dts/imx6sx-sdb.dtsi
@@ -115,11 +115,11 @@
 		pinctrl-names = "default";
 		pinctrl-0 = <&pinctrl_enet_3v3>;
 		regulator-name = "enet_3v3";
 		regulator-min-microvolt = <3300000>;
 		regulator-max-microvolt = <3300000>;
-		gpios = <&gpio2 6 GPIO_ACTIVE_LOW>;
+		gpio = <&gpio2 6 GPIO_ACTIVE_LOW>;
 	};
 
 	reg_pcie_gpio: regulator-pcie-gpio {
 		compatible = "regulator-fixed";
 		pinctrl-names = "default";
@@ -178,10 +178,11 @@
 	pinctrl-names = "default";
 	pinctrl-0 = <&pinctrl_enet1>;
 	phy-supply = <&reg_enet_3v3>;
 	phy-mode = "rgmii";
 	phy-handle = <&ethphy1>;
+	phy-reset-gpios = <&gpio2 7 GPIO_ACTIVE_LOW>;
 	status = "okay";
 
 	mdio {
 		#address-cells = <1>;
 		#size-cells = <0>;
@@ -371,10 +372,12 @@
 				MX6SX_PAD_RGMII1_RD1__ENET1_RX_DATA_1	0x3081
 				MX6SX_PAD_RGMII1_RD2__ENET1_RX_DATA_2	0x3081
 				MX6SX_PAD_RGMII1_RD3__ENET1_RX_DATA_3	0x3081
 				MX6SX_PAD_RGMII1_RX_CTL__ENET1_RX_EN	0x3081
 				MX6SX_PAD_ENET2_RX_CLK__ENET2_REF_CLK_25M	0x91
+				/* phy reset */
+				MX6SX_PAD_ENET2_CRS__GPIO2_IO_7		0x80000000
 			>;
 		};
 
 		pinctrl_enet_3v3: enet3v3grp {
 			fsl,pins = <
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2018-10-04  9:02 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-10-02 18:37 [PATCH] ARM: dts: imx6sx-sdb: Fix enet phy regulator Leonard Crestez
2018-10-02 19:56 ` Linus Walleij
2018-10-03 11:49   ` Leonard Crestez
2018-10-04  9:02     ` Linus Walleij
2018-10-03  2:25 ` Fabio Estevam

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).