svn commit: r331906 - head/sys/arm/xilinx
Oleksandr Tymoshenko
gonzo at FreeBSD.org
Tue Apr 3 04:31:55 UTC 2018
Author: gonzo
Date: Tue Apr 3 04:31:54 2018
New Revision: 331906
URL: https://svnweb.freebsd.org/changeset/base/331906
Log:
Fix accidental USB port resets by GPIO on Zynq/Zedboard boards
The Zynq/Zedboard GPIO driver attempts to tri-state all GPIO pins on
boot up but the order in which I reset the hardware can cause the pins
to be briefly held low before being tri-stated. This is a problem on
boards that use GPIO pins to reset devices.
In particular, the Zybo and ZC-706 boards use a GPIO pin as a USB PHY
reset. If U-boot enables the USB port before booting the kernel, the
GPIO driver attach causes a glitch on the USB PHY reset and the USB
port loses power. My fix is to have the GPIO driver leave the pins in
whatever configuration U-boot placed them.
PR: 225713
Submitted by: Thomas Skibo <thoma555-bsd at yahoo.com>
MFC after: 1 week
Modified:
head/sys/arm/xilinx/zy7_gpio.c
Modified: head/sys/arm/xilinx/zy7_gpio.c
==============================================================================
--- head/sys/arm/xilinx/zy7_gpio.c Tue Apr 3 03:41:55 2018 (r331905)
+++ head/sys/arm/xilinx/zy7_gpio.c Tue Apr 3 04:31:54 2018 (r331906)
@@ -298,24 +298,6 @@ zy7_gpio_probe(device_t dev)
return (0);
}
-static void
-zy7_gpio_hw_reset(struct zy7_gpio_softc *sc)
-{
- int i;
-
- for (i = 0; i < NUMBANKS; i++) {
- WR4(sc, ZY7_GPIO_DATA(i), 0);
- WR4(sc, ZY7_GPIO_DIRM(i), 0);
- WR4(sc, ZY7_GPIO_OEN(i), 0);
- WR4(sc, ZY7_GPIO_INT_DIS(i), 0xffffffff);
- WR4(sc, ZY7_GPIO_INT_POLARITY(i), 0);
- WR4(sc, ZY7_GPIO_INT_TYPE(i),
- i == 1 ? 0x003fffff : 0xffffffff);
- WR4(sc, ZY7_GPIO_INT_ANY(i), 0);
- WR4(sc, ZY7_GPIO_INT_STAT(i), 0xffffffff);
- }
-}
-
static int zy7_gpio_detach(device_t dev);
static int
@@ -337,9 +319,6 @@ zy7_gpio_attach(device_t dev)
zy7_gpio_detach(dev);
return (ENOMEM);
}
-
- /* Completely reset. */
- zy7_gpio_hw_reset(sc);
sc->busdev = gpiobus_attach_bus(dev);
if (sc->busdev == NULL) {
More information about the svn-src-head
mailing list