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 = {
150 struct it87_gpio *it87_gpio = gpiochip_get_data(chip);
155 spin_lock(&it87_gpio->lock);
164 if (group < it87_gpio->simple_size)
165 superio_set_mask(mask, group + it87_gpio->simple_base);
170 superio_clear_mask(mask, group + it87_gpio->output_base);
175 spin_unlock(&it87_gpio->lock);
183 struct it87_gpio *it87_gpio = gpiochip_get_data(chip);
186 reg = (gpio_num / 8) + it87_gpio->io_base;
195 struct it87_gpio *it87_gpio = gpiochip_get_data(chip);
200 spin_lock(&it87_gpio->lock);
207 superio_clear_mask(mask, group + it87_gpio->output_base);
212 spin_unlock(&it87_gpio->lock);
221 struct it87_gpio *it87_gpio = gpiochip_get_data(chip);
224 reg = (gpio_num / 8) + it87_gpio->io_base;
238 struct it87_gpio *it87_gpio = gpiochip_get_data(chip);
243 spin_lock(&it87_gpio->lock);
250 superio_set_mask(mask, group + it87_gpio->output_base);
257 spin_unlock(&it87_gpio->lock);
279 struct it87_gpio *it87_gpio = &it87_gpio_chip;
289 it87_gpio->chip = it87_template_chip;
294 it87_gpio->io_size = 8; /* it8613 only needs 6, use 8 for alignment */
295 it87_gpio->output_base = 0xc8;
296 it87_gpio->simple_base = 0xc0;
297 it87_gpio->simple_size = 6;
298 it87_gpio->chip.ngpio = 64; /* has 48, use 64 for convenient calc */
303 it87_gpio->io_size = 11;
304 it87_gpio->output_base = 0xc8;
305 it87_gpio->simple_size = 0;
306 it87_gpio->chip.ngpio = 64;
314 it87_gpio->io_size = 8;
315 it87_gpio->output_base = 0xc8;
316 it87_gpio->simple_base = 0xc0;
317 it87_gpio->simple_size = 5;
318 it87_gpio->chip.ngpio = 64;
322 it87_gpio->io_size = 4;
323 it87_gpio->output_base = 0xf0;
324 it87_gpio->simple_size = 0;
325 it87_gpio->chip.ngpio = 16;
343 it87_gpio->io_base = superio_inw(gpio_ba_reg);
348 chip_type, chip_rev, it87_gpio->chip.ngpio,
349 it87_gpio->io_base);
351 if (!request_region(it87_gpio->io_base, it87_gpio->io_size,
365 labels = kcalloc(it87_gpio->chip.ngpio, sizeof("it87_gpXY"),
367 labels_table = kcalloc(it87_gpio->chip.ngpio, sizeof(const char *),
375 for (i = 0; i < it87_gpio->chip.ngpio; i++) {
382 it87_gpio->chip.names = (const char *const*)labels_table;
384 rc = gpiochip_add_data(&it87_gpio->chip, it87_gpio);
393 release_region(it87_gpio->io_base, it87_gpio->io_size);
399 struct it87_gpio *it87_gpio = &it87_gpio_chip;
401 gpiochip_remove(&it87_gpio->chip);
402 release_region(it87_gpio->io_base, it87_gpio->io_size);
403 kfree(it87_gpio->chip.names[0]);
404 kfree(it87_gpio->chip.names);