Lines Matching refs:dio48egpio

85 	struct dio48e_gpio *const dio48egpio = gpiochip_get_data(chip);  in dio48e_gpio_get_direction()  local
87 if (i8255_get_direction(dio48egpio->ppi_state, offset)) in dio48e_gpio_get_direction()
95 struct dio48e_gpio *const dio48egpio = gpiochip_get_data(chip); in dio48e_gpio_direction_input() local
97 i8255_direction_input(dio48egpio->reg->ppi, dio48egpio->ppi_state, in dio48e_gpio_direction_input()
106 struct dio48e_gpio *const dio48egpio = gpiochip_get_data(chip); in dio48e_gpio_direction_output() local
108 i8255_direction_output(dio48egpio->reg->ppi, dio48egpio->ppi_state, in dio48e_gpio_direction_output()
116 struct dio48e_gpio *const dio48egpio = gpiochip_get_data(chip); in dio48e_gpio_get() local
118 return i8255_get(dio48egpio->reg->ppi, offset); in dio48e_gpio_get()
124 struct dio48e_gpio *const dio48egpio = gpiochip_get_data(chip); in dio48e_gpio_get_multiple() local
126 i8255_get_multiple(dio48egpio->reg->ppi, mask, bits, chip->ngpio); in dio48e_gpio_get_multiple()
133 struct dio48e_gpio *const dio48egpio = gpiochip_get_data(chip); in dio48e_gpio_set() local
135 i8255_set(dio48egpio->reg->ppi, dio48egpio->ppi_state, offset, value); in dio48e_gpio_set()
141 struct dio48e_gpio *const dio48egpio = gpiochip_get_data(chip); in dio48e_gpio_set_multiple() local
143 i8255_set_multiple(dio48egpio->reg->ppi, dio48egpio->ppi_state, mask, in dio48e_gpio_set_multiple()
154 struct dio48e_gpio *const dio48egpio = gpiochip_get_data(chip); in dio48e_irq_mask() local
162 raw_spin_lock_irqsave(&dio48egpio->lock, flags); in dio48e_irq_mask()
165 dio48egpio->irq_mask &= ~BIT(0); in dio48e_irq_mask()
167 dio48egpio->irq_mask &= ~BIT(1); in dio48e_irq_mask()
170 if (!dio48egpio->irq_mask) in dio48e_irq_mask()
172 ioread8(&dio48egpio->reg->enable_interrupt); in dio48e_irq_mask()
174 raw_spin_unlock_irqrestore(&dio48egpio->lock, flags); in dio48e_irq_mask()
180 struct dio48e_gpio *const dio48egpio = gpiochip_get_data(chip); in dio48e_irq_unmask() local
188 raw_spin_lock_irqsave(&dio48egpio->lock, flags); in dio48e_irq_unmask()
190 if (!dio48egpio->irq_mask) { in dio48e_irq_unmask()
192 iowrite8(0x00, &dio48egpio->reg->clear_interrupt); in dio48e_irq_unmask()
193 iowrite8(0x00, &dio48egpio->reg->enable_interrupt); in dio48e_irq_unmask()
198 dio48egpio->irq_mask |= BIT(0); in dio48e_irq_unmask()
200 dio48egpio->irq_mask |= BIT(1); in dio48e_irq_unmask()
202 raw_spin_unlock_irqrestore(&dio48egpio->lock, flags); in dio48e_irq_unmask()
231 struct dio48e_gpio *const dio48egpio = dev_id; in dio48e_irq_handler() local
232 struct gpio_chip *const chip = &dio48egpio->chip; in dio48e_irq_handler()
233 const unsigned long irq_mask = dio48egpio->irq_mask; in dio48e_irq_handler()
240 raw_spin_lock(&dio48egpio->lock); in dio48e_irq_handler()
242 iowrite8(0x00, &dio48egpio->reg->clear_interrupt); in dio48e_irq_handler()
244 raw_spin_unlock(&dio48egpio->lock); in dio48e_irq_handler()
271 struct dio48e_gpio *const dio48egpio = gpiochip_get_data(gc); in dio48e_irq_init_hw() local
274 ioread8(&dio48egpio->reg->enable_interrupt); in dio48e_irq_init_hw()
296 struct dio48e_gpio *dio48egpio; in dio48e_probe() local
301 dio48egpio = devm_kzalloc(dev, sizeof(*dio48egpio), GFP_KERNEL); in dio48e_probe()
302 if (!dio48egpio) in dio48e_probe()
311 dio48egpio->reg = devm_ioport_map(dev, base[id], DIO48E_EXTENT); in dio48e_probe()
312 if (!dio48egpio->reg) in dio48e_probe()
315 dio48egpio->chip.label = name; in dio48e_probe()
316 dio48egpio->chip.parent = dev; in dio48e_probe()
317 dio48egpio->chip.owner = THIS_MODULE; in dio48e_probe()
318 dio48egpio->chip.base = -1; in dio48e_probe()
319 dio48egpio->chip.ngpio = DIO48E_NGPIO; in dio48e_probe()
320 dio48egpio->chip.names = dio48e_names; in dio48e_probe()
321 dio48egpio->chip.get_direction = dio48e_gpio_get_direction; in dio48e_probe()
322 dio48egpio->chip.direction_input = dio48e_gpio_direction_input; in dio48e_probe()
323 dio48egpio->chip.direction_output = dio48e_gpio_direction_output; in dio48e_probe()
324 dio48egpio->chip.get = dio48e_gpio_get; in dio48e_probe()
325 dio48egpio->chip.get_multiple = dio48e_gpio_get_multiple; in dio48e_probe()
326 dio48egpio->chip.set = dio48e_gpio_set; in dio48e_probe()
327 dio48egpio->chip.set_multiple = dio48e_gpio_set_multiple; in dio48e_probe()
329 girq = &dio48egpio->chip.irq; in dio48e_probe()
339 raw_spin_lock_init(&dio48egpio->lock); in dio48e_probe()
341 i8255_state_init(dio48egpio->ppi_state, DIO48E_NUM_PPI); in dio48e_probe()
342 dio48e_init_ppi(dio48egpio->reg->ppi, dio48egpio->ppi_state); in dio48e_probe()
344 err = devm_gpiochip_add_data(dev, &dio48egpio->chip, dio48egpio); in dio48e_probe()
351 dio48egpio); in dio48e_probe()