Deleted Added
full compact
28c28
< __FBSDID("$FreeBSD: stable/10/sys/arm/samsung/exynos/exynos5_ehci.c 266332 2014-05-17 17:54:38Z ian $");
---
> __FBSDID("$FreeBSD: stable/10/sys/arm/samsung/exynos/exynos5_ehci.c 266341 2014-05-17 19:37:04Z ian $");
38a39
> #include <sys/gpio.h>
56a58,59
> #include "gpio_if.h"
>
60,61d62
< #define GPIO_CON(x, v) ((v) << ((x) * 4))
< #define GPIO_MASK 0xf
64,66c65
< #define GPX3CON 0x0
< #define GPX3DAT 0x4
< #define PIN_USB 5
---
> #define PIN_USB 161
92a92
> device_t dev;
94c94
< struct resource *res[6];
---
> struct resource *res[5];
98d97
< bus_space_tag_t gpio_bst;
102d100
< bus_space_handle_t gpio_bsh;
111d108
< { SYS_RES_MEMORY, 4, RF_ACTIVE },
163c160
< int reg;
---
> device_t gpio_dev;
165,169c162,167
< /* Power control */
< reg = bus_space_read_4(esc->gpio_bst, esc->gpio_bsh, GPX3DAT);
< reg &= ~(1 << PIN_USB);
< reg |= (power << PIN_USB);
< bus_space_write_4(esc->gpio_bst, esc->gpio_bsh, GPX3DAT, reg);
---
> /* Get the GPIO device, we need this to give power to USB */
> gpio_dev = devclass_get_device(devclass_find("gpio"), 0);
> if (gpio_dev == NULL) {
> device_printf(esc->dev, "cant find gpio_dev\n");
> return (1);
> }
171,175c169,172
< /* Input/Output control */
< reg = bus_space_read_4(esc->gpio_bst, esc->gpio_bsh, GPX3CON);
< reg &= ~GPIO_CON(PIN_USB, GPIO_MASK);
< reg |= GPIO_CON(PIN_USB, dir);
< bus_space_write_4(esc->gpio_bst, esc->gpio_bsh, GPX3CON, reg);
---
> if (power)
> GPIO_PIN_SET(gpio_dev, PIN_USB, GPIO_PIN_HIGH);
> else
> GPIO_PIN_SET(gpio_dev, PIN_USB, GPIO_PIN_LOW);
176a174,178
> if (dir)
> GPIO_PIN_SETFLAGS(gpio_dev, PIN_USB, GPIO_PIN_OUTPUT);
> else
> GPIO_PIN_SETFLAGS(gpio_dev, PIN_USB, GPIO_PIN_INPUT);
>
226a229
> esc->dev = dev;
254,257d256
< /* GPIO */
< esc->gpio_bst = rman_get_bustag(esc->res[4]);
< esc->gpio_bsh = rman_get_bushandle(esc->res[4]);
<
275c274
< err = bus_setup_intr(dev, esc->res[5], INTR_TYPE_BIO | INTR_MPSAFE,
---
> err = bus_setup_intr(dev, esc->res[4], INTR_TYPE_BIO | INTR_MPSAFE,
288c287
< err = bus_teardown_intr(dev, esc->res[5],
---
> err = bus_teardown_intr(dev, esc->res[4],
309c308
< err = bus_teardown_intr(dev, esc->res[5],
---
> err = bus_teardown_intr(dev, esc->res[4],
348,349c347,348
< if (esc->res[5] && sc->sc_intr_hdl) {
< err = bus_teardown_intr(dev, esc->res[5],
---
> if (esc->res[4] && sc->sc_intr_hdl) {
> err = bus_teardown_intr(dev, esc->res[4],