Lines Matching refs:idio16gpio
84 struct idio_16_gpio *const idio16gpio = gpiochip_get_data(chip); in idio_16_gpio_get() local
88 return !!(ioread8(&idio16gpio->reg->out0_7) & mask); in idio_16_gpio_get()
91 return !!(ioread8(&idio16gpio->reg->out8_15) & (mask >> 8)); in idio_16_gpio_get()
94 return !!(ioread8(&idio16gpio->reg->in0_7) & (mask >> 16)); in idio_16_gpio_get()
96 return !!(ioread8(&idio16gpio->reg->in8_15) & (mask >> 24)); in idio_16_gpio_get()
102 struct idio_16_gpio *const idio16gpio = gpiochip_get_data(chip); in idio_16_gpio_get_multiple() local
106 &idio16gpio->reg->out0_7, &idio16gpio->reg->out8_15, in idio_16_gpio_get_multiple()
107 &idio16gpio->reg->in0_7, &idio16gpio->reg->in8_15, in idio_16_gpio_get_multiple()
128 struct idio_16_gpio *const idio16gpio = gpiochip_get_data(chip); in idio_16_gpio_set() local
139 base = &idio16gpio->reg->out8_15; in idio_16_gpio_set()
141 base = &idio16gpio->reg->out0_7; in idio_16_gpio_set()
143 raw_spin_lock_irqsave(&idio16gpio->lock, flags); in idio_16_gpio_set()
152 raw_spin_unlock_irqrestore(&idio16gpio->lock, flags); in idio_16_gpio_set()
158 struct idio_16_gpio *const idio16gpio = gpiochip_get_data(chip); in idio_16_gpio_set_multiple() local
162 &idio16gpio->reg->out0_7, &idio16gpio->reg->out8_15, in idio_16_gpio_set_multiple()
176 raw_spin_lock_irqsave(&idio16gpio->lock, flags); in idio_16_gpio_set_multiple()
182 raw_spin_unlock_irqrestore(&idio16gpio->lock, flags); in idio_16_gpio_set_multiple()
193 struct idio_16_gpio *const idio16gpio = gpiochip_get_data(chip); in idio_16_irq_mask() local
197 idio16gpio->irq_mask &= ~mask; in idio_16_irq_mask()
199 if (!idio16gpio->irq_mask) { in idio_16_irq_mask()
200 raw_spin_lock_irqsave(&idio16gpio->lock, flags); in idio_16_irq_mask()
202 iowrite8(0, &idio16gpio->reg->irq_ctl); in idio_16_irq_mask()
204 raw_spin_unlock_irqrestore(&idio16gpio->lock, flags); in idio_16_irq_mask()
211 struct idio_16_gpio *const idio16gpio = gpiochip_get_data(chip); in idio_16_irq_unmask() local
213 const unsigned long prev_irq_mask = idio16gpio->irq_mask; in idio_16_irq_unmask()
216 idio16gpio->irq_mask |= mask; in idio_16_irq_unmask()
219 raw_spin_lock_irqsave(&idio16gpio->lock, flags); in idio_16_irq_unmask()
221 ioread8(&idio16gpio->reg->irq_ctl); in idio_16_irq_unmask()
223 raw_spin_unlock_irqrestore(&idio16gpio->lock, flags); in idio_16_irq_unmask()
247 struct idio_16_gpio *const idio16gpio = dev_id; in idio_16_irq_handler() local
249 struct gpio_chip *const chip = &idio16gpio->chip; in idio_16_irq_handler()
252 raw_spin_lock(&idio16gpio->lock); in idio_16_irq_handler()
254 irq_status = ioread8(&idio16gpio->reg->irq_status); in idio_16_irq_handler()
256 raw_spin_unlock(&idio16gpio->lock); in idio_16_irq_handler()
262 for_each_set_bit(gpio, &idio16gpio->irq_mask, chip->ngpio) in idio_16_irq_handler()
265 raw_spin_lock(&idio16gpio->lock); in idio_16_irq_handler()
268 iowrite8(0, &idio16gpio->reg->in0_7); in idio_16_irq_handler()
270 raw_spin_unlock(&idio16gpio->lock); in idio_16_irq_handler()
285 struct idio_16_gpio *const idio16gpio = gpiochip_get_data(gc); in idio_16_irq_init_hw() local
288 iowrite8(0, &idio16gpio->reg->irq_ctl); in idio_16_irq_init_hw()
289 iowrite8(0, &idio16gpio->reg->in0_7); in idio_16_irq_init_hw()
297 struct idio_16_gpio *idio16gpio; in idio_16_probe() local
303 idio16gpio = devm_kzalloc(dev, sizeof(*idio16gpio), GFP_KERNEL); in idio_16_probe()
304 if (!idio16gpio) in idio_16_probe()
319 idio16gpio->reg = pcim_iomap_table(pdev)[pci_bar_index]; in idio_16_probe()
322 iowrite8(0, &idio16gpio->reg->filter_ctl); in idio_16_probe()
324 idio16gpio->chip.label = name; in idio_16_probe()
325 idio16gpio->chip.parent = dev; in idio_16_probe()
326 idio16gpio->chip.owner = THIS_MODULE; in idio_16_probe()
327 idio16gpio->chip.base = -1; in idio_16_probe()
328 idio16gpio->chip.ngpio = IDIO_16_NGPIO; in idio_16_probe()
329 idio16gpio->chip.names = idio_16_names; in idio_16_probe()
330 idio16gpio->chip.get_direction = idio_16_gpio_get_direction; in idio_16_probe()
331 idio16gpio->chip.direction_input = idio_16_gpio_direction_input; in idio_16_probe()
332 idio16gpio->chip.direction_output = idio_16_gpio_direction_output; in idio_16_probe()
333 idio16gpio->chip.get = idio_16_gpio_get; in idio_16_probe()
334 idio16gpio->chip.get_multiple = idio_16_gpio_get_multiple; in idio_16_probe()
335 idio16gpio->chip.set = idio_16_gpio_set; in idio_16_probe()
336 idio16gpio->chip.set_multiple = idio_16_gpio_set_multiple; in idio_16_probe()
338 girq = &idio16gpio->chip.irq; in idio_16_probe()
348 raw_spin_lock_init(&idio16gpio->lock); in idio_16_probe()
350 err = devm_gpiochip_add_data(dev, &idio16gpio->chip, idio16gpio); in idio_16_probe()
357 name, idio16gpio); in idio_16_probe()