Lines Matching +full:gpio +full:- +full:dir
1 /*-
37 #include <sys/gpio.h>
43 #include <dev/gpio/gpiobusvar.h>
44 #include <dev/gpio/qoriq_gpio.h>
57 return (sc->busdev); in qoriq_gpio_get_bus()
80 *caps = sc->sc_pins[pin].gp_caps; in qoriq_gpio_pin_getcaps()
96 name[GPIOMAXNAME-1] = '\0'; in qoriq_gpio_pin_getname()
109 if ((flags & sc->sc_pins[pin].gp_caps) != flags) { in qoriq_gpio_pin_configure()
114 reg = bus_read_4(sc->sc_mem, GPIO_GPDIR); in qoriq_gpio_pin_configure()
115 reg &= ~(1 << (31 - pin)); in qoriq_gpio_pin_configure()
116 bus_write_4(sc->sc_mem, GPIO_GPDIR, reg); in qoriq_gpio_pin_configure()
119 reg = bus_read_4(sc->sc_mem, GPIO_GPDIR); in qoriq_gpio_pin_configure()
120 reg |= (1 << (31 - pin)); in qoriq_gpio_pin_configure()
121 bus_write_4(sc->sc_mem, GPIO_GPDIR, reg); in qoriq_gpio_pin_configure()
122 reg = bus_read_4(sc->sc_mem, GPIO_GPODR); in qoriq_gpio_pin_configure()
124 reg |= (1 << (31 - pin)); in qoriq_gpio_pin_configure()
126 reg &= ~(1 << (31 - pin)); in qoriq_gpio_pin_configure()
127 bus_write_4(sc->sc_mem, GPIO_GPODR, reg); in qoriq_gpio_pin_configure()
129 sc->sc_pins[pin].gp_flags = flags; in qoriq_gpio_pin_configure()
165 *pflags = sc->sc_pins[pin].gp_flags; in qoriq_gpio_pin_getflags()
183 pinbit = 31 - pin; in qoriq_gpio_pin_set()
185 outvals = bus_read_4(sc->sc_mem, GPIO_GPDAT); in qoriq_gpio_pin_set()
188 bus_write_4(sc->sc_mem, GPIO_GPDAT, outvals); in qoriq_gpio_pin_set()
204 *value = (bus_read_4(sc->sc_mem, GPIO_GPDAT) >> (31 - pin)) & 1; in qoriq_gpio_pin_get()
221 val = bus_read_4(sc->sc_mem, GPIO_GPDAT); in qoriq_gpio_pin_toggle()
222 val ^= (1 << (31 - pin)); in qoriq_gpio_pin_toggle()
223 bus_write_4(sc->sc_mem, GPIO_GPDAT, val); in qoriq_gpio_pin_toggle()
231 {"fsl,pq3-gpio", 1},
232 {"fsl,mpc8572-gpio", 1},
233 {"fsl,qoriq-gpio", 1},
241 if (ofw_bus_search_compatible(dev, gpio_matches)->ocd_data == 0) in qoriq_gpio_probe()
244 device_set_desc(dev, "Freescale QorIQ GPIO driver"); in qoriq_gpio_probe()
262 hwstate = bus_read_4(sc->sc_mem, GPIO_GPDAT); in qoriq_gpio_pin_access_32()
263 bus_write_4(sc->sc_mem, GPIO_GPDAT, in qoriq_gpio_pin_access_32()
277 uint32_t dir, odr, mask, reg; in qoriq_gpio_pin_config_32() local
287 dir = odr = mask = 0; in qoriq_gpio_pin_config_32()
295 dir &= ~(1 << i); in qoriq_gpio_pin_config_32()
298 dir |= (1 << i); in qoriq_gpio_pin_config_32()
312 reg = (bus_read_4(sc->sc_mem, GPIO_GPDIR) & ~mask) | dir; in qoriq_gpio_pin_config_32()
313 bus_write_4(sc->sc_mem, GPIO_GPDIR, reg); in qoriq_gpio_pin_config_32()
315 reg = (bus_read_4(sc->sc_mem, GPIO_GPODR) & ~mask) | odr; in qoriq_gpio_pin_config_32()
316 bus_write_4(sc->sc_mem, GPIO_GPODR, reg); in qoriq_gpio_pin_config_32()
319 sc->sc_pins[i].gp_flags = newflags[i]; in qoriq_gpio_pin_config_32()
355 sc->dev = dev; in qoriq_gpio_attach()
361 sc->sc_mem = bus_alloc_resource_any(dev, in qoriq_gpio_attach()
363 if (sc->sc_mem == NULL) { in qoriq_gpio_attach()
370 sc->sc_pins[i].gp_caps = DEFAULT_CAPS; in qoriq_gpio_attach()
373 * Enable the GPIO Input Buffer for all GPIOs. in qoriq_gpio_attach()
377 if (ofw_bus_is_compatible(dev, "fsl,qoriq-gpio")) in qoriq_gpio_attach()
378 bus_write_4(sc->sc_mem, GPIO_GPIBE, 0xffffffff); in qoriq_gpio_attach()
382 sc->busdev = gpiobus_add_bus(dev); in qoriq_gpio_attach()
383 if (sc->busdev == NULL) { in qoriq_gpio_attach()
399 if (sc->sc_mem != NULL) { in qoriq_gpio_detach()
402 rman_get_rid(sc->sc_mem), sc->sc_mem); in qoriq_gpio_detach()
416 /* GPIO protocol */
434 DEFINE_CLASS_0(gpio, qoriq_gpio_driver, qoriq_gpio_methods,