Lines Matching refs:it87_gpio

49  * struct it87_gpio - it87-specific GPIO chip
61 struct it87_gpio {
71 static struct it87_gpio it87_gpio_chip = {
158 struct it87_gpio *it87_gpio = gpiochip_get_data(chip);
163 spin_lock(&it87_gpio->lock);
172 if (group < it87_gpio->simple_size)
173 superio_set_mask(mask, group + it87_gpio->simple_base);
178 superio_clear_mask(mask, group + it87_gpio->output_base);
183 spin_unlock(&it87_gpio->lock);
191 struct it87_gpio *it87_gpio = gpiochip_get_data(chip);
194 reg = (gpio_num / 8) + it87_gpio->io_base;
203 struct it87_gpio *it87_gpio = gpiochip_get_data(chip);
208 spin_lock(&it87_gpio->lock);
215 superio_clear_mask(mask, group + it87_gpio->output_base);
220 spin_unlock(&it87_gpio->lock);
229 struct it87_gpio *it87_gpio = gpiochip_get_data(chip);
232 reg = (gpio_num / 8) + it87_gpio->io_base;
246 struct it87_gpio *it87_gpio = gpiochip_get_data(chip);
251 spin_lock(&it87_gpio->lock);
258 superio_set_mask(mask, group + it87_gpio->output_base);
265 spin_unlock(&it87_gpio->lock);
287 struct it87_gpio *it87_gpio = &it87_gpio_chip;
297 it87_gpio->chip = it87_template_chip;
302 it87_gpio->io_size = 8; /* it8613 only needs 6, use 8 for alignment */
303 it87_gpio->output_base = 0xc8;
304 it87_gpio->simple_base = 0xc0;
305 it87_gpio->simple_size = 6;
306 it87_gpio->chip.ngpio = 64; /* has 48, use 64 for convenient calc */
311 it87_gpio->io_size = 11;
312 it87_gpio->output_base = 0xc8;
313 it87_gpio->simple_size = 0;
314 it87_gpio->chip.ngpio = 64;
322 it87_gpio->io_size = 8;
323 it87_gpio->output_base = 0xc8;
324 it87_gpio->simple_base = 0xc0;
325 it87_gpio->simple_size = 5;
326 it87_gpio->chip.ngpio = 64;
330 it87_gpio->io_size = 4;
331 it87_gpio->output_base = 0xf0;
332 it87_gpio->simple_size = 0;
333 it87_gpio->chip.ngpio = 16;
351 it87_gpio->io_base = superio_inw(gpio_ba_reg);
356 chip_type, chip_rev, it87_gpio->chip.ngpio,
357 it87_gpio->io_base);
359 if (!request_region(it87_gpio->io_base, it87_gpio->io_size,
373 labels = kcalloc(it87_gpio->chip.ngpio, sizeof("it87_gpXY"),
375 labels_table = kcalloc(it87_gpio->chip.ngpio, sizeof(const char *),
383 for (i = 0; i < it87_gpio->chip.ngpio; i++) {
390 it87_gpio->chip.names = (const char *const*)labels_table;
392 rc = gpiochip_add_data(&it87_gpio->chip, it87_gpio);
401 release_region(it87_gpio->io_base, it87_gpio->io_size);
407 struct it87_gpio *it87_gpio = &it87_gpio_chip;
409 gpiochip_remove(&it87_gpio->chip);
410 release_region(it87_gpio->io_base, it87_gpio->io_size);
411 kfree(it87_gpio->chip.names[0]);
412 kfree(it87_gpio->chip.names);