Lines Matching refs:it87_gpio
66 struct it87_gpio { struct
76 static struct it87_gpio it87_gpio_chip = { argument
80 static inline struct it87_gpio *to_it87_gpio(struct gpio_chip *chip) in to_it87_gpio()
82 return container_of(chip, struct it87_gpio, chip); in to_it87_gpio()
168 struct it87_gpio *it87_gpio = to_it87_gpio(chip); in it87_gpio_request() local
173 spin_lock(&it87_gpio->lock); in it87_gpio_request()
182 if (group < it87_gpio->simple_size) in it87_gpio_request()
183 superio_set_mask(mask, group + it87_gpio->simple_base); in it87_gpio_request()
188 superio_clear_mask(mask, group + it87_gpio->output_base); in it87_gpio_request()
193 spin_unlock(&it87_gpio->lock); in it87_gpio_request()
201 struct it87_gpio *it87_gpio = to_it87_gpio(chip); in it87_gpio_get() local
204 reg = (gpio_num / 8) + it87_gpio->io_base; in it87_gpio_get()
213 struct it87_gpio *it87_gpio = to_it87_gpio(chip); in it87_gpio_direction_in() local
218 spin_lock(&it87_gpio->lock); in it87_gpio_direction_in()
225 superio_clear_mask(mask, group + it87_gpio->output_base); in it87_gpio_direction_in()
230 spin_unlock(&it87_gpio->lock); in it87_gpio_direction_in()
239 struct it87_gpio *it87_gpio = to_it87_gpio(chip); in it87_gpio_set() local
242 reg = (gpio_num / 8) + it87_gpio->io_base; in it87_gpio_set()
256 struct it87_gpio *it87_gpio = to_it87_gpio(chip); in it87_gpio_direction_out() local
261 spin_lock(&it87_gpio->lock); in it87_gpio_direction_out()
268 superio_set_mask(mask, group + it87_gpio->output_base); in it87_gpio_direction_out()
275 spin_unlock(&it87_gpio->lock); in it87_gpio_direction_out()
297 struct it87_gpio *it87_gpio = &it87_gpio_chip; in it87_gpio_init() local
307 it87_gpio->chip = it87_template_chip; in it87_gpio_init()
313 it87_gpio->io_size = 8; in it87_gpio_init()
314 it87_gpio->output_base = 0xc8; in it87_gpio_init()
315 it87_gpio->simple_base = 0xc0; in it87_gpio_init()
316 it87_gpio->simple_size = 5; in it87_gpio_init()
317 it87_gpio->chip.ngpio = 64; in it87_gpio_init()
321 it87_gpio->io_size = 4; in it87_gpio_init()
322 it87_gpio->output_base = 0xf0; in it87_gpio_init()
323 it87_gpio->simple_size = 0; in it87_gpio_init()
324 it87_gpio->chip.ngpio = 16; in it87_gpio_init()
342 it87_gpio->io_base = superio_inw(gpio_ba_reg); in it87_gpio_init()
347 chip_type, chip_rev, it87_gpio->chip.ngpio, in it87_gpio_init()
348 it87_gpio->io_base); in it87_gpio_init()
350 if (!request_region(it87_gpio->io_base, it87_gpio->io_size, in it87_gpio_init()
364 labels = kcalloc(it87_gpio->chip.ngpio, sizeof("it87_gpXY"), in it87_gpio_init()
366 labels_table = kcalloc(it87_gpio->chip.ngpio, sizeof(const char *), in it87_gpio_init()
374 for (i = 0; i < it87_gpio->chip.ngpio; i++) { in it87_gpio_init()
381 it87_gpio->chip.names = (const char *const*)labels_table; in it87_gpio_init()
383 rc = gpiochip_add(&it87_gpio->chip); in it87_gpio_init()
392 release_region(it87_gpio->io_base, it87_gpio->io_size); in it87_gpio_init()
398 struct it87_gpio *it87_gpio = &it87_gpio_chip; in it87_gpio_exit() local
400 gpiochip_remove(&it87_gpio->chip); in it87_gpio_exit()
401 release_region(it87_gpio->io_base, it87_gpio->io_size); in it87_gpio_exit()
402 kfree(it87_gpio->chip.names[0]); in it87_gpio_exit()
403 kfree(it87_gpio->chip.names); in it87_gpio_exit()