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
112 &idio16gpio->reg->out0_7, &idio16gpio->reg->out8_15, in idio_16_gpio_get_multiple()
113 &idio16gpio->reg->in0_7, &idio16gpio->reg->in8_15, in idio_16_gpio_get_multiple()
150 struct idio_16_gpio *const idio16gpio = gpiochip_get_data(chip); in idio_16_gpio_set() local
161 base = &idio16gpio->reg->out8_15; in idio_16_gpio_set()
163 base = &idio16gpio->reg->out0_7; in idio_16_gpio_set()
165 raw_spin_lock_irqsave(&idio16gpio->lock, flags); in idio_16_gpio_set()
174 raw_spin_unlock_irqrestore(&idio16gpio->lock, flags); in idio_16_gpio_set()
180 struct idio_16_gpio *const idio16gpio = gpiochip_get_data(chip); in idio_16_gpio_set_multiple() local
184 raw_spin_lock_irqsave(&idio16gpio->lock, flags); in idio_16_gpio_set_multiple()
188 out_state = ioread8(&idio16gpio->reg->out0_7) & ~*mask; in idio_16_gpio_set_multiple()
190 iowrite8(out_state, &idio16gpio->reg->out0_7); in idio_16_gpio_set_multiple()
199 out_state = ioread8(&idio16gpio->reg->out8_15) & ~*mask; in idio_16_gpio_set_multiple()
201 iowrite8(out_state, &idio16gpio->reg->out8_15); in idio_16_gpio_set_multiple()
204 raw_spin_unlock_irqrestore(&idio16gpio->lock, flags); in idio_16_gpio_set_multiple()
214 struct idio_16_gpio *const idio16gpio = gpiochip_get_data(chip); in idio_16_irq_mask() local
218 idio16gpio->irq_mask &= ~mask; in idio_16_irq_mask()
220 if (!idio16gpio->irq_mask) { in idio_16_irq_mask()
221 raw_spin_lock_irqsave(&idio16gpio->lock, flags); in idio_16_irq_mask()
223 iowrite8(0, &idio16gpio->reg->irq_ctl); in idio_16_irq_mask()
225 raw_spin_unlock_irqrestore(&idio16gpio->lock, flags); in idio_16_irq_mask()
232 struct idio_16_gpio *const idio16gpio = gpiochip_get_data(chip); in idio_16_irq_unmask() local
234 const unsigned long prev_irq_mask = idio16gpio->irq_mask; in idio_16_irq_unmask()
237 idio16gpio->irq_mask |= mask; in idio_16_irq_unmask()
240 raw_spin_lock_irqsave(&idio16gpio->lock, flags); in idio_16_irq_unmask()
242 ioread8(&idio16gpio->reg->irq_ctl); in idio_16_irq_unmask()
244 raw_spin_unlock_irqrestore(&idio16gpio->lock, flags); in idio_16_irq_unmask()
268 struct idio_16_gpio *const idio16gpio = dev_id; in idio_16_irq_handler() local
270 struct gpio_chip *const chip = &idio16gpio->chip; in idio_16_irq_handler()
273 raw_spin_lock(&idio16gpio->lock); in idio_16_irq_handler()
275 irq_status = ioread8(&idio16gpio->reg->irq_status); in idio_16_irq_handler()
277 raw_spin_unlock(&idio16gpio->lock); in idio_16_irq_handler()
283 for_each_set_bit(gpio, &idio16gpio->irq_mask, chip->ngpio) in idio_16_irq_handler()
286 raw_spin_lock(&idio16gpio->lock); in idio_16_irq_handler()
289 iowrite8(0, &idio16gpio->reg->in0_7); in idio_16_irq_handler()
291 raw_spin_unlock(&idio16gpio->lock); in idio_16_irq_handler()
307 struct idio_16_gpio *idio16gpio; in idio_16_probe() local
312 idio16gpio = devm_kzalloc(dev, sizeof(*idio16gpio), GFP_KERNEL); in idio_16_probe()
313 if (!idio16gpio) in idio_16_probe()
328 idio16gpio->reg = pcim_iomap_table(pdev)[pci_bar_index]; in idio_16_probe()
331 iowrite8(0, &idio16gpio->reg->filter_ctl); in idio_16_probe()
333 idio16gpio->chip.label = name; in idio_16_probe()
334 idio16gpio->chip.parent = dev; in idio_16_probe()
335 idio16gpio->chip.owner = THIS_MODULE; in idio_16_probe()
336 idio16gpio->chip.base = -1; in idio_16_probe()
337 idio16gpio->chip.ngpio = IDIO_16_NGPIO; in idio_16_probe()
338 idio16gpio->chip.names = idio_16_names; in idio_16_probe()
339 idio16gpio->chip.get_direction = idio_16_gpio_get_direction; in idio_16_probe()
340 idio16gpio->chip.direction_input = idio_16_gpio_direction_input; in idio_16_probe()
341 idio16gpio->chip.direction_output = idio_16_gpio_direction_output; in idio_16_probe()
342 idio16gpio->chip.get = idio_16_gpio_get; in idio_16_probe()
343 idio16gpio->chip.get_multiple = idio_16_gpio_get_multiple; in idio_16_probe()
344 idio16gpio->chip.set = idio_16_gpio_set; in idio_16_probe()
345 idio16gpio->chip.set_multiple = idio_16_gpio_set_multiple; in idio_16_probe()
347 raw_spin_lock_init(&idio16gpio->lock); in idio_16_probe()
349 err = devm_gpiochip_add_data(dev, &idio16gpio->chip, idio16gpio); in idio_16_probe()
356 iowrite8(0, &idio16gpio->reg->irq_ctl); in idio_16_probe()
357 iowrite8(0, &idio16gpio->reg->in0_7); in idio_16_probe()
359 err = gpiochip_irqchip_add(&idio16gpio->chip, &idio_16_irqchip, 0, in idio_16_probe()
367 name, idio16gpio); in idio_16_probe()