Symbol: adnp
drivers/gpio/gpio-adnp.c
104
struct adnp *adnp = gpiochip_get_data(chip);
drivers/gpio/gpio-adnp.c
106
guard(mutex)(&adnp->i2c_lock);
drivers/gpio/gpio-adnp.c
108
return __adnp_gpio_set(adnp, offset, value);
drivers/gpio/gpio-adnp.c
113
struct adnp *adnp = gpiochip_get_data(chip);
drivers/gpio/gpio-adnp.c
114
unsigned int reg = offset >> adnp->reg_shift;
drivers/gpio/gpio-adnp.c
119
guard(mutex)(&adnp->i2c_lock);
drivers/gpio/gpio-adnp.c
121
err = adnp_read(adnp, GPIO_DDR(adnp) + reg, &value);
drivers/gpio/gpio-adnp.c
127
err = adnp_write(adnp, GPIO_DDR(adnp) + reg, value);
drivers/gpio/gpio-adnp.c
131
err = adnp_read(adnp, GPIO_DDR(adnp) + reg, &value);
drivers/gpio/gpio-adnp.c
144
struct adnp *adnp = gpiochip_get_data(chip);
drivers/gpio/gpio-adnp.c
145
unsigned int reg = offset >> adnp->reg_shift;
drivers/gpio/gpio-adnp.c
150
guard(mutex)(&adnp->i2c_lock);
drivers/gpio/gpio-adnp.c
152
err = adnp_read(adnp, GPIO_DDR(adnp) + reg, &val);
drivers/gpio/gpio-adnp.c
158
err = adnp_write(adnp, GPIO_DDR(adnp) + reg, val);
drivers/gpio/gpio-adnp.c
162
err = adnp_read(adnp, GPIO_DDR(adnp) + reg, &val);
drivers/gpio/gpio-adnp.c
169
__adnp_gpio_set(adnp, offset, value);
drivers/gpio/gpio-adnp.c
176
struct adnp *adnp = gpiochip_get_data(chip);
drivers/gpio/gpio-adnp.c
177
unsigned int num_regs = 1 << adnp->reg_shift, i, j;
drivers/gpio/gpio-adnp.c
183
scoped_guard(mutex, &adnp->i2c_lock) {
drivers/gpio/gpio-adnp.c
184
err = adnp_read(adnp, GPIO_DDR(adnp) + i, &ddr);
drivers/gpio/gpio-adnp.c
188
err = adnp_read(adnp, GPIO_PLR(adnp) + i, &plr);
drivers/gpio/gpio-adnp.c
192
err = adnp_read(adnp, GPIO_IER(adnp) + i, &ier);
drivers/gpio/gpio-adnp.c
196
err = adnp_read(adnp, GPIO_ISR(adnp) + i, &isr);
drivers/gpio/gpio-adnp.c
203
unsigned int bit = (i << adnp->reg_shift) + j;
drivers/gpio/gpio-adnp.c
229
struct adnp *adnp = data;
drivers/gpio/gpio-adnp.c
232
num_regs = 1 << adnp->reg_shift;
drivers/gpio/gpio-adnp.c
235
unsigned int base = i << adnp->reg_shift, bit;
drivers/gpio/gpio-adnp.c
240
scoped_guard(mutex, &adnp->i2c_lock) {
drivers/gpio/gpio-adnp.c
241
err = adnp_read(adnp, GPIO_PLR(adnp) + i, &level);
drivers/gpio/gpio-adnp.c
245
err = adnp_read(adnp, GPIO_ISR(adnp) + i, &isr);
drivers/gpio/gpio-adnp.c
249
err = adnp_read(adnp, GPIO_IER(adnp) + i, &ier);
drivers/gpio/gpio-adnp.c
255
changed = level ^ adnp->irq_level[i];
drivers/gpio/gpio-adnp.c
258
pending = changed & ((adnp->irq_fall[i] & ~level) |
drivers/gpio/gpio-adnp.c
259
(adnp->irq_rise[i] & level));
drivers/gpio/gpio-adnp.c
262
pending |= (adnp->irq_high[i] & level) |
drivers/gpio/gpio-adnp.c
263
(adnp->irq_low[i] & ~level);
drivers/gpio/gpio-adnp.c
270
child_irq = irq_find_mapping(adnp->gpio.irq.domain,
drivers/gpio/gpio-adnp.c
282
struct adnp *adnp = gpiochip_get_data(gc);
drivers/gpio/gpio-adnp.c
283
unsigned int reg = d->hwirq >> adnp->reg_shift;
drivers/gpio/gpio-adnp.c
286
adnp->irq_enable[reg] &= ~BIT(pos);
drivers/gpio/gpio-adnp.c
293
struct adnp *adnp = gpiochip_get_data(gc);
drivers/gpio/gpio-adnp.c
294
unsigned int reg = d->hwirq >> adnp->reg_shift;
drivers/gpio/gpio-adnp.c
298
adnp->irq_enable[reg] |= BIT(pos);
drivers/gpio/gpio-adnp.c
304
struct adnp *adnp = gpiochip_get_data(gc);
drivers/gpio/gpio-adnp.c
305
unsigned int reg = d->hwirq >> adnp->reg_shift;
drivers/gpio/gpio-adnp.c
309
adnp->irq_rise[reg] |= BIT(pos);
drivers/gpio/gpio-adnp.c
311
adnp->irq_rise[reg] &= ~BIT(pos);
drivers/gpio/gpio-adnp.c
314
adnp->irq_fall[reg] |= BIT(pos);
drivers/gpio/gpio-adnp.c
316
adnp->irq_fall[reg] &= ~BIT(pos);
drivers/gpio/gpio-adnp.c
319
adnp->irq_high[reg] |= BIT(pos);
drivers/gpio/gpio-adnp.c
321
adnp->irq_high[reg] &= ~BIT(pos);
drivers/gpio/gpio-adnp.c
324
adnp->irq_low[reg] |= BIT(pos);
drivers/gpio/gpio-adnp.c
326
adnp->irq_low[reg] &= ~BIT(pos);
drivers/gpio/gpio-adnp.c
334
struct adnp *adnp = gpiochip_get_data(gc);
drivers/gpio/gpio-adnp.c
336
mutex_lock(&adnp->irq_lock);
drivers/gpio/gpio-adnp.c
342
struct adnp *adnp = gpiochip_get_data(gc);
drivers/gpio/gpio-adnp.c
343
unsigned int num_regs = 1 << adnp->reg_shift, i;
drivers/gpio/gpio-adnp.c
345
scoped_guard(mutex, &adnp->i2c_lock) {
drivers/gpio/gpio-adnp.c
347
adnp_write(adnp, GPIO_IER(adnp) + i,
drivers/gpio/gpio-adnp.c
348
adnp->irq_enable[i]);
drivers/gpio/gpio-adnp.c
351
mutex_unlock(&adnp->irq_lock);
drivers/gpio/gpio-adnp.c
365
static int adnp_irq_setup(struct adnp *adnp)
drivers/gpio/gpio-adnp.c
367
unsigned int num_regs = 1 << adnp->reg_shift, i;
drivers/gpio/gpio-adnp.c
368
struct gpio_chip *chip = &adnp->gpio;
drivers/gpio/gpio-adnp.c
371
mutex_init(&adnp->irq_lock);
drivers/gpio/gpio-adnp.c
381
adnp->irq_enable = devm_kcalloc(chip->parent, num_regs, 6,
drivers/gpio/gpio-adnp.c
383
if (!adnp->irq_enable)
drivers/gpio/gpio-adnp.c
386
adnp->irq_level = adnp->irq_enable + (num_regs * 1);
drivers/gpio/gpio-adnp.c
387
adnp->irq_rise = adnp->irq_enable + (num_regs * 2);
drivers/gpio/gpio-adnp.c
388
adnp->irq_fall = adnp->irq_enable + (num_regs * 3);
drivers/gpio/gpio-adnp.c
389
adnp->irq_high = adnp->irq_enable + (num_regs * 4);
drivers/gpio/gpio-adnp.c
39
static int adnp_read(struct adnp *adnp, unsigned offset, uint8_t *value)
drivers/gpio/gpio-adnp.c
390
adnp->irq_low = adnp->irq_enable + (num_regs * 5);
drivers/gpio/gpio-adnp.c
397
err = adnp_read(adnp, GPIO_PLR(adnp) + i, &adnp->irq_level[i]);
drivers/gpio/gpio-adnp.c
402
err = adnp_write(adnp, GPIO_IER(adnp) + i, 0);
drivers/gpio/gpio-adnp.c
406
adnp->irq_enable[i] = 0x00;
drivers/gpio/gpio-adnp.c
409
err = devm_request_threaded_irq(chip->parent, adnp->client->irq,
drivers/gpio/gpio-adnp.c
412
dev_name(chip->parent), adnp);
drivers/gpio/gpio-adnp.c
415
adnp->client->irq, err);
drivers/gpio/gpio-adnp.c
422
static int adnp_gpio_setup(struct adnp *adnp, unsigned int num_gpios,
drivers/gpio/gpio-adnp.c
425
struct gpio_chip *chip = &adnp->gpio;
drivers/gpio/gpio-adnp.c
428
adnp->reg_shift = get_count_order(num_gpios) - 3;
drivers/gpio/gpio-adnp.c
43
err = i2c_smbus_read_byte_data(adnp->client, offset);
drivers/gpio/gpio-adnp.c
441
chip->label = adnp->client->name;
drivers/gpio/gpio-adnp.c
442
chip->parent = &adnp->client->dev;
drivers/gpio/gpio-adnp.c
448
err = adnp_irq_setup(adnp);
drivers/gpio/gpio-adnp.c
45
dev_err(adnp->gpio.parent, "%s failed: %d\n",
drivers/gpio/gpio-adnp.c
464
err = devm_gpiochip_add_data(&adnp->client->dev, chip, adnp);
drivers/gpio/gpio-adnp.c
474
struct adnp *adnp;
drivers/gpio/gpio-adnp.c
482
adnp = devm_kzalloc(&client->dev, sizeof(*adnp), GFP_KERNEL);
drivers/gpio/gpio-adnp.c
483
if (!adnp)
drivers/gpio/gpio-adnp.c
486
err = devm_mutex_init(&client->dev, &adnp->i2c_lock);
drivers/gpio/gpio-adnp.c
490
adnp->client = client;
drivers/gpio/gpio-adnp.c
492
err = adnp_gpio_setup(adnp, num_gpios, device_property_read_bool(dev, "interrupt-controller"));
drivers/gpio/gpio-adnp.c
496
i2c_set_clientdata(client, adnp);
drivers/gpio/gpio-adnp.c
54
static int adnp_write(struct adnp *adnp, unsigned offset, uint8_t value)
drivers/gpio/gpio-adnp.c
58
err = i2c_smbus_write_byte_data(adnp->client, offset, value);
drivers/gpio/gpio-adnp.c
60
dev_err(adnp->gpio.parent, "%s failed: %d\n",
drivers/gpio/gpio-adnp.c
70
struct adnp *adnp = gpiochip_get_data(chip);
drivers/gpio/gpio-adnp.c
71
unsigned int reg = offset >> adnp->reg_shift;
drivers/gpio/gpio-adnp.c
76
err = adnp_read(adnp, GPIO_PLR(adnp) + reg, &value);
drivers/gpio/gpio-adnp.c
83
static int __adnp_gpio_set(struct adnp *adnp, unsigned int offset, int value)
drivers/gpio/gpio-adnp.c
85
unsigned int reg = offset >> adnp->reg_shift;
drivers/gpio/gpio-adnp.c
90
err = adnp_read(adnp, GPIO_PLR(adnp) + reg, &val);
drivers/gpio/gpio-adnp.c
99
return adnp_write(adnp, GPIO_PLR(adnp) + reg, val);