Message ID | 1387565233-16144-6-git-send-email-troy.kisky@boundarydevices.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 12/20/2013 11:47 AM, Troy Kisky wrote: > This works around a hardware bug. > >From "Chip Errata for the i.MX 6Dual/6Quad" > > ERR006687 ENET: Only the ENET wake-up interrupt request can wake the > system from Wait mode. > > The ENET block generates many interrupts. Only one of these interrupt lines > is connected to the General Power Controller (GPC) block, but a logical OR > of all of the ENET interrupts is connected to the General Interrupt Controller > (GIC). When the system enters Wait mode, a normal RX Done or TX Done does not > wake up the system because the GPC cannot see this interrupt. This impacts > performance of the ENET block because its interrupts are serviced only when > the chip exits Wait mode due to an interrupt from some other wake-up source. > > Before this patch, ping times of a Sabre Lite board are quite > random: > ping 192.168.0.13 -i.5 -c5 > PING 192.168.0.13 (192.168.0.13) 56(84) bytes of data. > 64 bytes from 192.168.0.13: icmp_req=1 ttl=64 time=15.7 ms > 64 bytes from 192.168.0.13: icmp_req=2 ttl=64 time=14.4 ms > 64 bytes from 192.168.0.13: icmp_req=3 ttl=64 time=13.4 ms > 64 bytes from 192.168.0.13: icmp_req=4 ttl=64 time=12.4 ms > 64 bytes from 192.168.0.13: icmp_req=5 ttl=64 time=11.4 ms > > --- 192.168.0.13 ping statistics --- > 5 packets transmitted, 5 received, 0% packet loss, time 2004ms > rtt min/avg/max/mdev = 11.431/13.501/15.746/1.508 ms > ____________________________________________________ > After this patch: > > ping 192.168.0.13 -i.5 -c5 > PING 192.168.0.13 (192.168.0.13) 56(84) bytes of data. > 64 bytes from 192.168.0.13: icmp_req=1 ttl=64 time=0.120 ms > 64 bytes from 192.168.0.13: icmp_req=2 ttl=64 time=0.175 ms > 64 bytes from 192.168.0.13: icmp_req=3 ttl=64 time=0.169 ms > 64 bytes from 192.168.0.13: icmp_req=4 ttl=64 time=0.168 ms > 64 bytes from 192.168.0.13: icmp_req=5 ttl=64 time=0.172 ms > > --- 192.168.0.13 ping statistics --- > 5 packets transmitted, 5 received, 0% packet loss, time 1999ms > rtt min/avg/max/mdev = 0.120/0.160/0.175/0.026 ms > ____________________________________________________ > > Also, apply same change to imx6qdl-nitrogen6x. > > This change may not be appropriate for all boards. > Sabre Lite uses GPIO6 as a power down output for a ov5642 > camera. As this expansion board does not yet work with mainline, > this is not yet a conflict. It would be nice to have an alternative > fix for boards where this is a problem. > > For example Sabre SD uses GPIO6 for I2C3_SDA. It also > has long ping times currently. But cannot use this fix > without giving up a touchscreen. > > Its ping times are also random. > > ping 192.168.0.19 -i.5 -c5 > PING 192.168.0.19 (192.168.0.19) 56(84) bytes of data. > 64 bytes from 192.168.0.19: icmp_req=1 ttl=64 time=16.0 ms > 64 bytes from 192.168.0.19: icmp_req=2 ttl=64 time=15.4 ms > 64 bytes from 192.168.0.19: icmp_req=3 ttl=64 time=14.4 ms > 64 bytes from 192.168.0.19: icmp_req=4 ttl=64 time=13.4 ms > 64 bytes from 192.168.0.19: icmp_req=5 ttl=64 time=12.4 ms > > --- 192.168.0.19 ping statistics --- > 5 packets transmitted, 5 received, 0% packet loss, time 2003ms > rtt min/avg/max/mdev = 12.451/14.369/16.057/1.316 ms > > Signed-off-by: Troy Kisky <troy.kisky@boundarydevices.com> > CC: ra5478@freescale.com Sorry, I forgot to change this to CC: Ranjani Vaidyanathan<ra5478@freescale.com> > --- > arch/arm/boot/dts/imx6qdl-nitrogen6x.dtsi | 3 +++ > arch/arm/boot/dts/imx6qdl-sabrelite.dtsi | 3 +++ > 2 files changed, 6 insertions(+) > > diff --git a/arch/arm/boot/dts/imx6qdl-nitrogen6x.dtsi b/arch/arm/boot/dts/imx6qdl-nitrogen6x.dtsi > index 34145d1..e83ffc7 100644 > --- a/arch/arm/boot/dts/imx6qdl-nitrogen6x.dtsi > +++ b/arch/arm/boot/dts/imx6qdl-nitrogen6x.dtsi > @@ -165,6 +165,8 @@ > txd1-skew-ps = <0>; > txd2-skew-ps = <0>; > txd3-skew-ps = <0>; > + interrupts-extended = <&gpio1 6 IRQ_TYPE_LEVEL_HIGH>, > + <&intc 0 119 IRQ_TYPE_LEVEL_HIGH>; > status = "okay"; > }; > > @@ -211,6 +213,7 @@ > MX6QDL_ENET_PINGRP_RGMII_MD(0x1b0b0, 0x100b0) > /* Phy reset */ > MX6QDL_PAD_ENET_RXD0__GPIO1_IO27 0x000b0 > + MX6QDL_PAD_GPIO_6__ENET_IRQ 0x000b1 > >; > }; > > diff --git a/arch/arm/boot/dts/imx6qdl-sabrelite.dtsi b/arch/arm/boot/dts/imx6qdl-sabrelite.dtsi > index 4d156f5..24c2c1b 100644 > --- a/arch/arm/boot/dts/imx6qdl-sabrelite.dtsi > +++ b/arch/arm/boot/dts/imx6qdl-sabrelite.dtsi > @@ -164,6 +164,8 @@ > txd1-skew-ps = <0>; > txd2-skew-ps = <0>; > txd3-skew-ps = <0>; > + interrupts-extended = <&gpio1 6 IRQ_TYPE_LEVEL_HIGH>, > + <&intc 0 119 IRQ_TYPE_LEVEL_HIGH>; > status = "okay"; > }; > > @@ -210,6 +212,7 @@ > MX6QDL_ENET_PINGRP_RGMII_MD(0x1b0b0, 0x100b0) > /* Phy reset */ > MX6QDL_PAD_EIM_D23__GPIO3_IO23 0x000b0 > + MX6QDL_PAD_GPIO_6__ENET_IRQ 0x000b1 > >; > }; >
On Fri, Dec 20, 2013 at 12:02:13PM -0700, Troy Kisky wrote: > >Signed-off-by: Troy Kisky <troy.kisky@boundarydevices.com> > >CC: ra5478@freescale.com > > Sorry, I forgot to change this to > > CC: Ranjani Vaidyanathan<ra5478@freescale.com> I fixed it up and applied the series. Shawn
diff --git a/arch/arm/boot/dts/imx6qdl-nitrogen6x.dtsi b/arch/arm/boot/dts/imx6qdl-nitrogen6x.dtsi index 34145d1..e83ffc7 100644 --- a/arch/arm/boot/dts/imx6qdl-nitrogen6x.dtsi +++ b/arch/arm/boot/dts/imx6qdl-nitrogen6x.dtsi @@ -165,6 +165,8 @@ txd1-skew-ps = <0>; txd2-skew-ps = <0>; txd3-skew-ps = <0>; + interrupts-extended = <&gpio1 6 IRQ_TYPE_LEVEL_HIGH>, + <&intc 0 119 IRQ_TYPE_LEVEL_HIGH>; status = "okay"; }; @@ -211,6 +213,7 @@ MX6QDL_ENET_PINGRP_RGMII_MD(0x1b0b0, 0x100b0) /* Phy reset */ MX6QDL_PAD_ENET_RXD0__GPIO1_IO27 0x000b0 + MX6QDL_PAD_GPIO_6__ENET_IRQ 0x000b1 >; }; diff --git a/arch/arm/boot/dts/imx6qdl-sabrelite.dtsi b/arch/arm/boot/dts/imx6qdl-sabrelite.dtsi index 4d156f5..24c2c1b 100644 --- a/arch/arm/boot/dts/imx6qdl-sabrelite.dtsi +++ b/arch/arm/boot/dts/imx6qdl-sabrelite.dtsi @@ -164,6 +164,8 @@ txd1-skew-ps = <0>; txd2-skew-ps = <0>; txd3-skew-ps = <0>; + interrupts-extended = <&gpio1 6 IRQ_TYPE_LEVEL_HIGH>, + <&intc 0 119 IRQ_TYPE_LEVEL_HIGH>; status = "okay"; }; @@ -210,6 +212,7 @@ MX6QDL_ENET_PINGRP_RGMII_MD(0x1b0b0, 0x100b0) /* Phy reset */ MX6QDL_PAD_EIM_D23__GPIO3_IO23 0x000b0 + MX6QDL_PAD_GPIO_6__ENET_IRQ 0x000b1 >; };