Lines Matching +full:reg +full:- +full:names

4  * Copyright (C) 2007-2009  Andres Salomon <dilinger@collabora.co.uk>
20 #define DRV_NAME "cs5535-gpio"
24 * 31-29,23 : reserved (always mask out)
27 * 22-16 : LPC
60 unsigned int reg) in errata_outl() argument
62 unsigned long addr = chip->base + 0x80 + reg; in errata_outl()
67 * non-selected bits; the recommended workaround is a in errata_outl()
68 * read-modify-write operation. in errata_outl()
73 if (reg != GPIO_POSITIVE_EDGE_STS && reg != GPIO_NEGATIVE_EDGE_STS) { in errata_outl()
83 unsigned int reg) in __cs5535_gpio_set() argument
87 outl(1 << offset, chip->base + reg); in __cs5535_gpio_set()
90 errata_outl(chip, 1 << (offset - 16), reg); in __cs5535_gpio_set()
93 void cs5535_gpio_set(unsigned offset, unsigned int reg) in cs5535_gpio_set() argument
98 spin_lock_irqsave(&chip->lock, flags); in cs5535_gpio_set()
99 __cs5535_gpio_set(chip, offset, reg); in cs5535_gpio_set()
100 spin_unlock_irqrestore(&chip->lock, flags); in cs5535_gpio_set()
105 unsigned int reg) in __cs5535_gpio_clear() argument
109 outl(1 << (offset + 16), chip->base + reg); in __cs5535_gpio_clear()
112 errata_outl(chip, 1 << offset, reg); in __cs5535_gpio_clear()
115 void cs5535_gpio_clear(unsigned offset, unsigned int reg) in cs5535_gpio_clear() argument
120 spin_lock_irqsave(&chip->lock, flags); in cs5535_gpio_clear()
121 __cs5535_gpio_clear(chip, offset, reg); in cs5535_gpio_clear()
122 spin_unlock_irqrestore(&chip->lock, flags); in cs5535_gpio_clear()
126 int cs5535_gpio_isset(unsigned offset, unsigned int reg) in cs5535_gpio_isset() argument
132 spin_lock_irqsave(&chip->lock, flags); in cs5535_gpio_isset()
135 val = inl(chip->base + reg); in cs5535_gpio_isset()
138 val = inl(chip->base + 0x80 + reg); in cs5535_gpio_isset()
139 offset -= 16; in cs5535_gpio_isset()
141 spin_unlock_irqrestore(&chip->lock, flags); in cs5535_gpio_isset()
152 return -EINVAL; in cs5535_gpio_set_irq()
180 spin_lock_irqsave(&chip->lock, flags); in cs5535_gpio_setup_event()
181 val = inl(chip->base + offset); in cs5535_gpio_setup_event()
193 outl(val, chip->base + offset); in cs5535_gpio_setup_event()
194 spin_unlock_irqrestore(&chip->lock, flags); in cs5535_gpio_setup_event()
207 spin_lock_irqsave(&chip->lock, flags); in chip_gpio_request()
211 dev_info(&chip->pdev->dev, in chip_gpio_request()
213 spin_unlock_irqrestore(&chip->lock, flags); in chip_gpio_request()
214 return -EINVAL; in chip_gpio_request()
224 spin_unlock_irqrestore(&chip->lock, flags); in chip_gpio_request()
247 spin_lock_irqsave(&chip->lock, flags); in chip_direction_input()
250 spin_unlock_irqrestore(&chip->lock, flags); in chip_direction_input()
260 spin_lock_irqsave(&chip->lock, flags); in chip_direction_output()
269 spin_unlock_irqrestore(&chip->lock, flags); in chip_direction_output()
292 .names = cs5535_gpio_names,
306 int err = -EIO; in cs5535_gpio_probe()
318 dev_err(&pdev->dev, "can't fetch device resource info\n"); in cs5535_gpio_probe()
322 if (!request_region(res->start, resource_size(res), pdev->name)) { in cs5535_gpio_probe()
323 dev_err(&pdev->dev, "can't request region\n"); in cs5535_gpio_probe()
327 /* set up the driver-specific struct */ in cs5535_gpio_probe()
328 cs5535_gpio_chip.base = res->start; in cs5535_gpio_probe()
332 dev_info(&pdev->dev, "reserved resource region %pR\n", res); in cs5535_gpio_probe()
342 dev_info(&pdev->dev, "mask changed from 0x%08lX to 0x%08lX\n", in cs5535_gpio_probe()
353 release_region(res->start, resource_size(res)); in cs5535_gpio_probe()
366 dev_err(&pdev->dev, "unable to remove gpio_chip?\n"); in cs5535_gpio_remove()
371 release_region(r->start, resource_size(r)); in cs5535_gpio_remove()