Symbol: adnp
drivers/gpio/gpio-adnp.c
103
struct adnp *adnp = gpiochip_get_data(chip);
drivers/gpio/gpio-adnp.c
105
guard(mutex)(&adnp->i2c_lock);
drivers/gpio/gpio-adnp.c
107
return __adnp_gpio_set(adnp, offset, value);
drivers/gpio/gpio-adnp.c
112
struct adnp *adnp = gpiochip_get_data(chip);
drivers/gpio/gpio-adnp.c
113
unsigned int reg = offset >> adnp->reg_shift;
drivers/gpio/gpio-adnp.c
118
guard(mutex)(&adnp->i2c_lock);
drivers/gpio/gpio-adnp.c
120
err = adnp_read(adnp, GPIO_DDR(adnp) + reg, &value);
drivers/gpio/gpio-adnp.c
126
err = adnp_write(adnp, GPIO_DDR(adnp) + reg, value);
drivers/gpio/gpio-adnp.c
130
err = adnp_read(adnp, GPIO_DDR(adnp) + reg, &value);
drivers/gpio/gpio-adnp.c
143
struct adnp *adnp = gpiochip_get_data(chip);
drivers/gpio/gpio-adnp.c
144
unsigned int reg = offset >> adnp->reg_shift;
drivers/gpio/gpio-adnp.c
149
guard(mutex)(&adnp->i2c_lock);
drivers/gpio/gpio-adnp.c
151
err = adnp_read(adnp, GPIO_DDR(adnp) + reg, &val);
drivers/gpio/gpio-adnp.c
157
err = adnp_write(adnp, GPIO_DDR(adnp) + reg, val);
drivers/gpio/gpio-adnp.c
161
err = adnp_read(adnp, GPIO_DDR(adnp) + reg, &val);
drivers/gpio/gpio-adnp.c
168
__adnp_gpio_set(adnp, offset, value);
drivers/gpio/gpio-adnp.c
175
struct adnp *adnp = gpiochip_get_data(chip);
drivers/gpio/gpio-adnp.c
176
unsigned int num_regs = 1 << adnp->reg_shift, i, j;
drivers/gpio/gpio-adnp.c
182
scoped_guard(mutex, &adnp->i2c_lock) {
drivers/gpio/gpio-adnp.c
183
err = adnp_read(adnp, GPIO_DDR(adnp) + i, &ddr);
drivers/gpio/gpio-adnp.c
187
err = adnp_read(adnp, GPIO_PLR(adnp) + i, &plr);
drivers/gpio/gpio-adnp.c
191
err = adnp_read(adnp, GPIO_IER(adnp) + i, &ier);
drivers/gpio/gpio-adnp.c
195
err = adnp_read(adnp, GPIO_ISR(adnp) + i, &isr);
drivers/gpio/gpio-adnp.c
202
unsigned int bit = (i << adnp->reg_shift) + j;
drivers/gpio/gpio-adnp.c
228
struct adnp *adnp = data;
drivers/gpio/gpio-adnp.c
231
num_regs = 1 << adnp->reg_shift;
drivers/gpio/gpio-adnp.c
234
unsigned int base = i << adnp->reg_shift, bit;
drivers/gpio/gpio-adnp.c
240
guard(mutex)(&adnp->i2c_lock);
drivers/gpio/gpio-adnp.c
242
err = adnp_read(adnp, GPIO_PLR(adnp) + i, &level);
drivers/gpio/gpio-adnp.c
246
err = adnp_read(adnp, GPIO_ISR(adnp) + i, &isr);
drivers/gpio/gpio-adnp.c
250
err = adnp_read(adnp, GPIO_IER(adnp) + i, &ier);
drivers/gpio/gpio-adnp.c
256
changed = level ^ adnp->irq_level[i];
drivers/gpio/gpio-adnp.c
259
pending = changed & ((adnp->irq_fall[i] & ~level) |
drivers/gpio/gpio-adnp.c
260
(adnp->irq_rise[i] & level));
drivers/gpio/gpio-adnp.c
263
pending |= (adnp->irq_high[i] & level) |
drivers/gpio/gpio-adnp.c
264
(adnp->irq_low[i] & ~level);
drivers/gpio/gpio-adnp.c
271
child_irq = irq_find_mapping(adnp->gpio.irq.domain,
drivers/gpio/gpio-adnp.c
283
struct adnp *adnp = gpiochip_get_data(gc);
drivers/gpio/gpio-adnp.c
284
unsigned int reg = d->hwirq >> adnp->reg_shift;
drivers/gpio/gpio-adnp.c
287
adnp->irq_enable[reg] &= ~BIT(pos);
drivers/gpio/gpio-adnp.c
294
struct adnp *adnp = gpiochip_get_data(gc);
drivers/gpio/gpio-adnp.c
295
unsigned int reg = d->hwirq >> adnp->reg_shift;
drivers/gpio/gpio-adnp.c
299
adnp->irq_enable[reg] |= BIT(pos);
drivers/gpio/gpio-adnp.c
305
struct adnp *adnp = gpiochip_get_data(gc);
drivers/gpio/gpio-adnp.c
306
unsigned int reg = d->hwirq >> adnp->reg_shift;
drivers/gpio/gpio-adnp.c
310
adnp->irq_rise[reg] |= BIT(pos);
drivers/gpio/gpio-adnp.c
312
adnp->irq_rise[reg] &= ~BIT(pos);
drivers/gpio/gpio-adnp.c
315
adnp->irq_fall[reg] |= BIT(pos);
drivers/gpio/gpio-adnp.c
317
adnp->irq_fall[reg] &= ~BIT(pos);
drivers/gpio/gpio-adnp.c
320
adnp->irq_high[reg] |= BIT(pos);
drivers/gpio/gpio-adnp.c
322
adnp->irq_high[reg] &= ~BIT(pos);
drivers/gpio/gpio-adnp.c
325
adnp->irq_low[reg] |= BIT(pos);
drivers/gpio/gpio-adnp.c
327
adnp->irq_low[reg] &= ~BIT(pos);
drivers/gpio/gpio-adnp.c
335
struct adnp *adnp = gpiochip_get_data(gc);
drivers/gpio/gpio-adnp.c
337
mutex_lock(&adnp->irq_lock);
drivers/gpio/gpio-adnp.c
343
struct adnp *adnp = gpiochip_get_data(gc);
drivers/gpio/gpio-adnp.c
344
unsigned int num_regs = 1 << adnp->reg_shift, i;
drivers/gpio/gpio-adnp.c
346
scoped_guard(mutex, &adnp->i2c_lock) {
drivers/gpio/gpio-adnp.c
348
adnp_write(adnp, GPIO_IER(adnp) + i,
drivers/gpio/gpio-adnp.c
349
adnp->irq_enable[i]);
drivers/gpio/gpio-adnp.c
352
mutex_unlock(&adnp->irq_lock);
drivers/gpio/gpio-adnp.c
366
static int adnp_irq_setup(struct adnp *adnp)
drivers/gpio/gpio-adnp.c
368
unsigned int num_regs = 1 << adnp->reg_shift, i;
drivers/gpio/gpio-adnp.c
369
struct gpio_chip *chip = &adnp->gpio;
drivers/gpio/gpio-adnp.c
372
mutex_init(&adnp->irq_lock);
drivers/gpio/gpio-adnp.c
38
static int adnp_read(struct adnp *adnp, unsigned offset, uint8_t *value)
drivers/gpio/gpio-adnp.c
382
adnp->irq_enable = devm_kcalloc(chip->parent, num_regs, 6,
drivers/gpio/gpio-adnp.c
384
if (!adnp->irq_enable)
drivers/gpio/gpio-adnp.c
387
adnp->irq_level = adnp->irq_enable + (num_regs * 1);
drivers/gpio/gpio-adnp.c
388
adnp->irq_rise = adnp->irq_enable + (num_regs * 2);
drivers/gpio/gpio-adnp.c
389
adnp->irq_fall = adnp->irq_enable + (num_regs * 3);
drivers/gpio/gpio-adnp.c
390
adnp->irq_high = adnp->irq_enable + (num_regs * 4);
drivers/gpio/gpio-adnp.c
391
adnp->irq_low = adnp->irq_enable + (num_regs * 5);
drivers/gpio/gpio-adnp.c
398
err = adnp_read(adnp, GPIO_PLR(adnp) + i, &adnp->irq_level[i]);
drivers/gpio/gpio-adnp.c
403
err = adnp_write(adnp, GPIO_IER(adnp) + i, 0);
drivers/gpio/gpio-adnp.c
407
adnp->irq_enable[i] = 0x00;
drivers/gpio/gpio-adnp.c
410
err = devm_request_threaded_irq(chip->parent, adnp->client->irq,
drivers/gpio/gpio-adnp.c
413
dev_name(chip->parent), adnp);
drivers/gpio/gpio-adnp.c
416
adnp->client->irq, err);
drivers/gpio/gpio-adnp.c
42
err = i2c_smbus_read_byte_data(adnp->client, offset);
drivers/gpio/gpio-adnp.c
423
static int adnp_gpio_setup(struct adnp *adnp, unsigned int num_gpios,
drivers/gpio/gpio-adnp.c
426
struct gpio_chip *chip = &adnp->gpio;
drivers/gpio/gpio-adnp.c
429
adnp->reg_shift = get_count_order(num_gpios) - 3;
drivers/gpio/gpio-adnp.c
44
dev_err(adnp->gpio.parent, "%s failed: %d\n",
drivers/gpio/gpio-adnp.c
442
chip->label = adnp->client->name;
drivers/gpio/gpio-adnp.c
443
chip->parent = &adnp->client->dev;
drivers/gpio/gpio-adnp.c
449
err = adnp_irq_setup(adnp);
drivers/gpio/gpio-adnp.c
465
err = devm_gpiochip_add_data(&adnp->client->dev, chip, adnp);
drivers/gpio/gpio-adnp.c
475
struct adnp *adnp;
drivers/gpio/gpio-adnp.c
483
adnp = devm_kzalloc(&client->dev, sizeof(*adnp), GFP_KERNEL);
drivers/gpio/gpio-adnp.c
484
if (!adnp)
drivers/gpio/gpio-adnp.c
487
err = devm_mutex_init(&client->dev, &adnp->i2c_lock);
drivers/gpio/gpio-adnp.c
491
adnp->client = client;
drivers/gpio/gpio-adnp.c
493
err = adnp_gpio_setup(adnp, num_gpios, device_property_read_bool(dev, "interrupt-controller"));
drivers/gpio/gpio-adnp.c
497
i2c_set_clientdata(client, adnp);
drivers/gpio/gpio-adnp.c
53
static int adnp_write(struct adnp *adnp, unsigned offset, uint8_t value)
drivers/gpio/gpio-adnp.c
57
err = i2c_smbus_write_byte_data(adnp->client, offset, value);
drivers/gpio/gpio-adnp.c
59
dev_err(adnp->gpio.parent, "%s failed: %d\n",
drivers/gpio/gpio-adnp.c
69
struct adnp *adnp = gpiochip_get_data(chip);
drivers/gpio/gpio-adnp.c
70
unsigned int reg = offset >> adnp->reg_shift;
drivers/gpio/gpio-adnp.c
75
err = adnp_read(adnp, GPIO_PLR(adnp) + reg, &value);
drivers/gpio/gpio-adnp.c
82
static int __adnp_gpio_set(struct adnp *adnp, unsigned int offset, int value)
drivers/gpio/gpio-adnp.c
84
unsigned int reg = offset >> adnp->reg_shift;
drivers/gpio/gpio-adnp.c
89
err = adnp_read(adnp, GPIO_PLR(adnp) + reg, &val);
drivers/gpio/gpio-adnp.c
98
return adnp_write(adnp, GPIO_PLR(adnp) + reg, val);