Home | History | Annotate | Download | only in gemini

Lines Matching refs:gpio

41 #include "gpio.h"
65 #include <sys/gpio.h>
66 #include <dev/gpio/gpiovar.h>
105 #define GPIO_READ(gpio, reg) \
106 bus_space_read_4((gpio)->gpio_memt, (gpio)->gpio_memh, (reg))
107 #define GPIO_WRITE(gpio, reg, val) \
108 bus_space_write_4((gpio)->gpio_memt, (gpio)->gpio_memh, (reg), (val))
113 struct gpio_softc * const gpio = PIC_TO_SOFTC(pic);
116 gpio->gpio_enable_mask |= irq_mask;
121 GPIO_WRITE(gpio, GEMINI_GPIO_INTRENB, gpio->gpio_enable_mask);
122 if (irq_mask & gpio->gpio_level_mask)
123 GPIO_WRITE(gpio, GEMINI_GPIO_INTRCLR,
124 irq_mask & gpio->gpio_level_mask);
130 struct gpio_softc * const gpio = PIC_TO_SOFTC(pic);
133 gpio->gpio_enable_mask &= ~irq_mask;
134 GPIO_WRITE(gpio, GEMINI_GPIO_INTRENB, ~irq_mask);
139 if (irq_mask & gpio->gpio_edge_mask)
140 GPIO_WRITE(gpio, GEMINI_GPIO_INTRCLR,
141 irq_mask & gpio->gpio_edge_mask);
147 struct gpio_softc * const gpio = PIC_TO_SOFTC(pic);
150 pending = GPIO_READ(gpio, GEMINI_GPIO_INTRMSKSTATE);
151 KASSERT((pending & ~gpio->gpio_enable_mask) == 0);
158 (void) pic_mark_pending_sources(&gpio->gpio_pic, 0, pending);
166 struct gpio_softc * const gpio = PIC_TO_SOFTC(pic);
178 gpio->gpio_enable_mask &= ~irq_mask;
179 GPIO_WRITE(gpio, GEMINI_GPIO_INTRENB, gpio->gpio_enable_mask);
180 GPIO_WRITE(gpio, GEMINI_GPIO_INTRCLR, irq_mask);
183 * Convert the type to a gpio type and figure out which bits in what
186 gpio->gpio_edge_rising_mask &= ~irq_mask;
187 gpio->gpio_edge_falling_mask &= ~irq_mask;
188 gpio->gpio_level_hi_mask &= ~irq_mask;
189 gpio->gpio_level_lo_mask &= ~irq_mask;
191 case IST_LEVEL_LOW: gpio->gpio_level_lo_mask |= irq_mask; break;
192 case IST_LEVEL_HIGH: gpio->gpio_level_hi_mask |= irq_mask; break;
193 case IST_EDGE_FALLING: gpio->gpio_edge_falling_mask |= irq_mask; break;
194 case IST_EDGE_RISING: gpio->gpio_edge_rising_mask |= irq_mask; break;
196 gpio->gpio_edge_rising_mask |= irq_mask;
197 gpio->gpio_edge_falling_mask |= irq_mask;
202 gpio->gpio_edge_mask =
203 gpio->gpio_edge_rising_mask | gpio->gpio_edge_falling_mask;
204 gpio->gpio_level_mask =
205 gpio->gpio_level_hi_mask|gpio->gpio_level_lo_mask;
206 gpio->gpio_inuse_mask |= irq_mask;
211 GPIO_WRITE(gpio, GEMINI_GPIO_INTRTRIG, gpio->gpio_level_mask);
212 GPIO_WRITE(gpio, GEMINI_GPIO_INTREDGEBOTH,
213 gpio->gpio_edge_rising_mask & gpio->gpio_edge_falling_mask);
214 GPIO_WRITE(gpio, GEMINI_GPIO_INTRDIR,
215 gpio->gpio_edge_falling_mask | gpio->gpio_level_lo_mask);
220 v = GPIO_READ(gpio, GEMINI_GPIO_PINDIR);
222 GPIO_WRITE(gpio, GEMINI_GPIO_PINDIR, v);
231 is = gpio->gpio_is;
252 struct gpio_softc * const gpio = device_private(arg);
254 return (GPIO_READ(gpio, GEMINI_GPIO_DATAIN) >> pin) & 1;
260 struct gpio_softc * const gpio = device_private(arg);
264 GPIO_WRITE(gpio, GEMINI_GPIO_DATASET, mask);
266 GPIO_WRITE(gpio, GEMINI_GPIO_DATACLR, mask);
272 struct gpio_softc * const gpio = device_private(arg);
276 old = GPIO_READ(gpio, GEMINI_GPIO_PINDIR);
284 GPIO_WRITE(gpio, GEMINI_GPIO_PINDIR, new);
290 struct gpio_softc * const gpio = device_private(self);
291 struct gpio_chipset_tag * const gp = &gpio->gpio_chipset;
297 gp->gp_cookie = gpio->gpio_dev;
303 gba.gba_pins = gpio->gpio_pins;
304 gba.gba_npins = __arraycount(gpio->gpio_pins);
306 dir = GPIO_READ(gpio, GEMINI_GPIO_PINDIR);
307 valueout = GPIO_READ(gpio, GEMINI_GPIO_DATAOUT);
308 valuein = GPIO_READ(gpio, GEMINI_GPIO_DATAIN);
309 for (pin = 0, mask = 1, pins = gpio->gpio_pins;
312 if (gpio->gpio_inuse_mask & mask)
345 struct gpio_softc * const gpio = device_private(self);
354 gpio->gpio_dev = self;
355 gpio->gpio_memt = oa->obio_iot;
357 0, &gpio->gpio_memh);
366 gpio->gpio_pic.pic_ops = &gpio_pic_ops;
367 strlcpy(gpio->gpio_pic.pic_name, device_xname(self),
368 sizeof(gpio->gpio_pic.pic_name));
369 gpio->gpio_pic.pic_maxsources = 32;
370 pic_add(&gpio->gpio_pic, oa->obio_intrbase);
373 gpio->gpio_is = intr_establish(oa->obio_intr,
374 IPL_HIGH, IST_LEVEL_HIGH, pic_handle_intr, &gpio->gpio_pic);
375 KASSERT(gpio->gpio_is != NULL);