Lines Matching refs:idi48gpio

66 	struct idi_48_gpio *const idi48gpio = gpiochip_get_data(chip);  in idi_48_gpio_get()  local
77 return !!(inb(idi48gpio->base + base_offset) & mask); in idi_48_gpio_get()
87 struct idi_48_gpio *const idi48gpio = gpiochip_get_data(chip); in idi_48_gpio_get_multiple() local
98 port_addr = idi48gpio->base + ports[offset / 8]; in idi_48_gpio_get_multiple()
114 struct idi_48_gpio *const idi48gpio = gpiochip_get_data(chip); in idi_48_irq_mask() local
126 idi48gpio->irq_mask[boundary] &= ~mask; in idi_48_irq_mask()
128 if (!idi48gpio->irq_mask[boundary]) { in idi_48_irq_mask()
129 idi48gpio->cos_enb &= ~BIT(boundary); in idi_48_irq_mask()
131 raw_spin_lock_irqsave(&idi48gpio->lock, flags); in idi_48_irq_mask()
133 outb(idi48gpio->cos_enb, idi48gpio->base + 7); in idi_48_irq_mask()
135 raw_spin_unlock_irqrestore(&idi48gpio->lock, flags); in idi_48_irq_mask()
145 struct idi_48_gpio *const idi48gpio = gpiochip_get_data(chip); in idi_48_irq_unmask() local
157 prev_irq_mask = idi48gpio->irq_mask[boundary]; in idi_48_irq_unmask()
159 idi48gpio->irq_mask[boundary] |= mask; in idi_48_irq_unmask()
162 idi48gpio->cos_enb |= BIT(boundary); in idi_48_irq_unmask()
164 raw_spin_lock_irqsave(&idi48gpio->lock, flags); in idi_48_irq_unmask()
166 outb(idi48gpio->cos_enb, idi48gpio->base + 7); in idi_48_irq_unmask()
168 raw_spin_unlock_irqrestore(&idi48gpio->lock, flags); in idi_48_irq_unmask()
195 struct idi_48_gpio *const idi48gpio = dev_id; in idi_48_irq_handler() local
201 struct gpio_chip *const chip = &idi48gpio->chip; in idi_48_irq_handler()
203 spin_lock(&idi48gpio->ack_lock); in idi_48_irq_handler()
205 raw_spin_lock(&idi48gpio->lock); in idi_48_irq_handler()
207 cos_status = inb(idi48gpio->base + 7); in idi_48_irq_handler()
209 raw_spin_unlock(&idi48gpio->lock); in idi_48_irq_handler()
213 spin_unlock(&idi48gpio->ack_lock); in idi_48_irq_handler()
221 irq_mask = idi48gpio->irq_mask[boundary]; in idi_48_irq_handler()
231 spin_unlock(&idi48gpio->ack_lock); in idi_48_irq_handler()
250 struct idi_48_gpio *const idi48gpio = gpiochip_get_data(gc); in idi_48_irq_init_hw() local
253 outb(0, idi48gpio->base + 7); in idi_48_irq_init_hw()
254 inb(idi48gpio->base + 7); in idi_48_irq_init_hw()
261 struct idi_48_gpio *idi48gpio; in idi_48_probe() local
266 idi48gpio = devm_kzalloc(dev, sizeof(*idi48gpio), GFP_KERNEL); in idi_48_probe()
267 if (!idi48gpio) in idi_48_probe()
276 idi48gpio->chip.label = name; in idi_48_probe()
277 idi48gpio->chip.parent = dev; in idi_48_probe()
278 idi48gpio->chip.owner = THIS_MODULE; in idi_48_probe()
279 idi48gpio->chip.base = -1; in idi_48_probe()
280 idi48gpio->chip.ngpio = IDI48_NGPIO; in idi_48_probe()
281 idi48gpio->chip.names = idi48_names; in idi_48_probe()
282 idi48gpio->chip.get_direction = idi_48_gpio_get_direction; in idi_48_probe()
283 idi48gpio->chip.direction_input = idi_48_gpio_direction_input; in idi_48_probe()
284 idi48gpio->chip.get = idi_48_gpio_get; in idi_48_probe()
285 idi48gpio->chip.get_multiple = idi_48_gpio_get_multiple; in idi_48_probe()
286 idi48gpio->base = base[id]; in idi_48_probe()
288 girq = &idi48gpio->chip.irq; in idi_48_probe()
298 raw_spin_lock_init(&idi48gpio->lock); in idi_48_probe()
299 spin_lock_init(&idi48gpio->ack_lock); in idi_48_probe()
301 err = devm_gpiochip_add_data(dev, &idi48gpio->chip, idi48gpio); in idi_48_probe()
308 name, idi48gpio); in idi_48_probe()