Lines Matching defs:idi48gpio
66 struct idi_48_gpio *const idi48gpio = gpiochip_get_data(chip);
77 return !!(inb(idi48gpio->base + base_offset) & mask);
87 struct idi_48_gpio *const idi48gpio = gpiochip_get_data(chip);
98 port_addr = idi48gpio->base + ports[offset / 8];
114 struct idi_48_gpio *const idi48gpio = gpiochip_get_data(chip);
126 idi48gpio->irq_mask[boundary] &= ~mask;
128 if (!idi48gpio->irq_mask[boundary]) {
129 idi48gpio->cos_enb &= ~BIT(boundary);
131 raw_spin_lock_irqsave(&idi48gpio->lock, flags);
133 outb(idi48gpio->cos_enb, idi48gpio->base + 7);
135 raw_spin_unlock_irqrestore(&idi48gpio->lock,
146 struct idi_48_gpio *const idi48gpio = gpiochip_get_data(chip);
158 prev_irq_mask = idi48gpio->irq_mask[boundary];
160 idi48gpio->irq_mask[boundary] |= mask;
163 idi48gpio->cos_enb |= BIT(boundary);
165 raw_spin_lock_irqsave(&idi48gpio->lock, flags);
167 outb(idi48gpio->cos_enb, idi48gpio->base + 7);
169 raw_spin_unlock_irqrestore(&idi48gpio->lock,
197 struct idi_48_gpio *const idi48gpio = dev_id;
203 struct gpio_chip *const chip = &idi48gpio->chip;
205 spin_lock(&idi48gpio->ack_lock);
207 raw_spin_lock(&idi48gpio->lock);
209 cos_status = inb(idi48gpio->base + 7);
211 raw_spin_unlock(&idi48gpio->lock);
215 spin_unlock(&idi48gpio->ack_lock);
223 irq_mask = idi48gpio->irq_mask[boundary];
233 spin_unlock(&idi48gpio->ack_lock);
252 struct idi_48_gpio *const idi48gpio = gpiochip_get_data(gc);
255 outb(0, idi48gpio->base + 7);
256 inb(idi48gpio->base + 7);
263 struct idi_48_gpio *idi48gpio;
268 idi48gpio = devm_kzalloc(dev, sizeof(*idi48gpio), GFP_KERNEL);
269 if (!idi48gpio)
278 idi48gpio->chip.label = name;
279 idi48gpio->chip.parent = dev;
280 idi48gpio->chip.owner = THIS_MODULE;
281 idi48gpio->chip.base = -1;
282 idi48gpio->chip.ngpio = IDI48_NGPIO;
283 idi48gpio->chip.names = idi48_names;
284 idi48gpio->chip.get_direction = idi_48_gpio_get_direction;
285 idi48gpio->chip.direction_input = idi_48_gpio_direction_input;
286 idi48gpio->chip.get = idi_48_gpio_get;
287 idi48gpio->chip.get_multiple = idi_48_gpio_get_multiple;
288 idi48gpio->base = base[id];
290 girq = &idi48gpio->chip.irq;
300 raw_spin_lock_init(&idi48gpio->lock);
301 spin_lock_init(&idi48gpio->ack_lock);
303 err = devm_gpiochip_add_data(dev, &idi48gpio->chip, idi48gpio);
310 name, idi48gpio);