adnp 36 drivers/gpio/gpio-adnp.c static int adnp_read(struct adnp *adnp, unsigned offset, uint8_t *value) adnp 40 drivers/gpio/gpio-adnp.c err = i2c_smbus_read_byte_data(adnp->client, offset); adnp 42 drivers/gpio/gpio-adnp.c dev_err(adnp->gpio.parent, "%s failed: %d\n", adnp 51 drivers/gpio/gpio-adnp.c static int adnp_write(struct adnp *adnp, unsigned offset, uint8_t value) adnp 55 drivers/gpio/gpio-adnp.c err = i2c_smbus_write_byte_data(adnp->client, offset, value); adnp 57 drivers/gpio/gpio-adnp.c dev_err(adnp->gpio.parent, "%s failed: %d\n", adnp 67 drivers/gpio/gpio-adnp.c struct adnp *adnp = gpiochip_get_data(chip); adnp 68 drivers/gpio/gpio-adnp.c unsigned int reg = offset >> adnp->reg_shift; adnp 73 drivers/gpio/gpio-adnp.c err = adnp_read(adnp, GPIO_PLR(adnp) + reg, &value); adnp 80 drivers/gpio/gpio-adnp.c static void __adnp_gpio_set(struct adnp *adnp, unsigned offset, int value) adnp 82 drivers/gpio/gpio-adnp.c unsigned int reg = offset >> adnp->reg_shift; adnp 87 drivers/gpio/gpio-adnp.c err = adnp_read(adnp, GPIO_PLR(adnp) + reg, &val); adnp 96 drivers/gpio/gpio-adnp.c adnp_write(adnp, GPIO_PLR(adnp) + reg, val); adnp 101 drivers/gpio/gpio-adnp.c struct adnp *adnp = gpiochip_get_data(chip); adnp 103 drivers/gpio/gpio-adnp.c mutex_lock(&adnp->i2c_lock); adnp 104 drivers/gpio/gpio-adnp.c __adnp_gpio_set(adnp, offset, value); adnp 105 drivers/gpio/gpio-adnp.c mutex_unlock(&adnp->i2c_lock); adnp 110 drivers/gpio/gpio-adnp.c struct adnp *adnp = gpiochip_get_data(chip); adnp 111 drivers/gpio/gpio-adnp.c unsigned int reg = offset >> adnp->reg_shift; adnp 116 drivers/gpio/gpio-adnp.c mutex_lock(&adnp->i2c_lock); adnp 118 drivers/gpio/gpio-adnp.c err = adnp_read(adnp, GPIO_DDR(adnp) + reg, &value); adnp 124 drivers/gpio/gpio-adnp.c err = adnp_write(adnp, GPIO_DDR(adnp) + reg, value); adnp 128 drivers/gpio/gpio-adnp.c err = adnp_read(adnp, GPIO_DDR(adnp) + reg, &value); adnp 140 drivers/gpio/gpio-adnp.c mutex_unlock(&adnp->i2c_lock); adnp 147 drivers/gpio/gpio-adnp.c struct adnp *adnp = gpiochip_get_data(chip); adnp 148 drivers/gpio/gpio-adnp.c unsigned int reg = offset >> adnp->reg_shift; adnp 153 drivers/gpio/gpio-adnp.c mutex_lock(&adnp->i2c_lock); adnp 155 drivers/gpio/gpio-adnp.c err = adnp_read(adnp, GPIO_DDR(adnp) + reg, &val); adnp 161 drivers/gpio/gpio-adnp.c err = adnp_write(adnp, GPIO_DDR(adnp) + reg, val); adnp 165 drivers/gpio/gpio-adnp.c err = adnp_read(adnp, GPIO_DDR(adnp) + reg, &val); adnp 174 drivers/gpio/gpio-adnp.c __adnp_gpio_set(adnp, offset, value); adnp 178 drivers/gpio/gpio-adnp.c mutex_unlock(&adnp->i2c_lock); adnp 184 drivers/gpio/gpio-adnp.c struct adnp *adnp = gpiochip_get_data(chip); adnp 185 drivers/gpio/gpio-adnp.c unsigned int num_regs = 1 << adnp->reg_shift, i, j; adnp 191 drivers/gpio/gpio-adnp.c mutex_lock(&adnp->i2c_lock); adnp 193 drivers/gpio/gpio-adnp.c err = adnp_read(adnp, GPIO_DDR(adnp) + i, &ddr); adnp 197 drivers/gpio/gpio-adnp.c err = adnp_read(adnp, GPIO_PLR(adnp) + i, &plr); adnp 201 drivers/gpio/gpio-adnp.c err = adnp_read(adnp, GPIO_IER(adnp) + i, &ier); adnp 205 drivers/gpio/gpio-adnp.c err = adnp_read(adnp, GPIO_ISR(adnp) + i, &isr); adnp 209 drivers/gpio/gpio-adnp.c mutex_unlock(&adnp->i2c_lock); adnp 212 drivers/gpio/gpio-adnp.c unsigned int bit = (i << adnp->reg_shift) + j; adnp 238 drivers/gpio/gpio-adnp.c mutex_unlock(&adnp->i2c_lock); adnp 241 drivers/gpio/gpio-adnp.c static int adnp_gpio_setup(struct adnp *adnp, unsigned int num_gpios) adnp 243 drivers/gpio/gpio-adnp.c struct gpio_chip *chip = &adnp->gpio; adnp 246 drivers/gpio/gpio-adnp.c adnp->reg_shift = get_count_order(num_gpios) - 3; adnp 259 drivers/gpio/gpio-adnp.c chip->label = adnp->client->name; adnp 260 drivers/gpio/gpio-adnp.c chip->parent = &adnp->client->dev; adnp 264 drivers/gpio/gpio-adnp.c err = devm_gpiochip_add_data(&adnp->client->dev, chip, adnp); adnp 273 drivers/gpio/gpio-adnp.c struct adnp *adnp = data; adnp 276 drivers/gpio/gpio-adnp.c num_regs = 1 << adnp->reg_shift; adnp 279 drivers/gpio/gpio-adnp.c unsigned int base = i << adnp->reg_shift, bit; adnp 284 drivers/gpio/gpio-adnp.c mutex_lock(&adnp->i2c_lock); adnp 286 drivers/gpio/gpio-adnp.c err = adnp_read(adnp, GPIO_PLR(adnp) + i, &level); adnp 288 drivers/gpio/gpio-adnp.c mutex_unlock(&adnp->i2c_lock); adnp 292 drivers/gpio/gpio-adnp.c err = adnp_read(adnp, GPIO_ISR(adnp) + i, &isr); adnp 294 drivers/gpio/gpio-adnp.c mutex_unlock(&adnp->i2c_lock); adnp 298 drivers/gpio/gpio-adnp.c err = adnp_read(adnp, GPIO_IER(adnp) + i, &ier); adnp 300 drivers/gpio/gpio-adnp.c mutex_unlock(&adnp->i2c_lock); adnp 304 drivers/gpio/gpio-adnp.c mutex_unlock(&adnp->i2c_lock); adnp 307 drivers/gpio/gpio-adnp.c changed = level ^ adnp->irq_level[i]; adnp 310 drivers/gpio/gpio-adnp.c pending = changed & ((adnp->irq_fall[i] & ~level) | adnp 311 drivers/gpio/gpio-adnp.c (adnp->irq_rise[i] & level)); adnp 314 drivers/gpio/gpio-adnp.c pending |= (adnp->irq_high[i] & level) | adnp 315 drivers/gpio/gpio-adnp.c (adnp->irq_low[i] & ~level); adnp 322 drivers/gpio/gpio-adnp.c child_irq = irq_find_mapping(adnp->gpio.irq.domain, adnp 334 drivers/gpio/gpio-adnp.c struct adnp *adnp = gpiochip_get_data(gc); adnp 335 drivers/gpio/gpio-adnp.c unsigned int reg = d->hwirq >> adnp->reg_shift; adnp 338 drivers/gpio/gpio-adnp.c adnp->irq_enable[reg] &= ~BIT(pos); adnp 344 drivers/gpio/gpio-adnp.c struct adnp *adnp = gpiochip_get_data(gc); adnp 345 drivers/gpio/gpio-adnp.c unsigned int reg = d->hwirq >> adnp->reg_shift; adnp 348 drivers/gpio/gpio-adnp.c adnp->irq_enable[reg] |= BIT(pos); adnp 354 drivers/gpio/gpio-adnp.c struct adnp *adnp = gpiochip_get_data(gc); adnp 355 drivers/gpio/gpio-adnp.c unsigned int reg = d->hwirq >> adnp->reg_shift; adnp 359 drivers/gpio/gpio-adnp.c adnp->irq_rise[reg] |= BIT(pos); adnp 361 drivers/gpio/gpio-adnp.c adnp->irq_rise[reg] &= ~BIT(pos); adnp 364 drivers/gpio/gpio-adnp.c adnp->irq_fall[reg] |= BIT(pos); adnp 366 drivers/gpio/gpio-adnp.c adnp->irq_fall[reg] &= ~BIT(pos); adnp 369 drivers/gpio/gpio-adnp.c adnp->irq_high[reg] |= BIT(pos); adnp 371 drivers/gpio/gpio-adnp.c adnp->irq_high[reg] &= ~BIT(pos); adnp 374 drivers/gpio/gpio-adnp.c adnp->irq_low[reg] |= BIT(pos); adnp 376 drivers/gpio/gpio-adnp.c adnp->irq_low[reg] &= ~BIT(pos); adnp 384 drivers/gpio/gpio-adnp.c struct adnp *adnp = gpiochip_get_data(gc); adnp 386 drivers/gpio/gpio-adnp.c mutex_lock(&adnp->irq_lock); adnp 392 drivers/gpio/gpio-adnp.c struct adnp *adnp = gpiochip_get_data(gc); adnp 393 drivers/gpio/gpio-adnp.c unsigned int num_regs = 1 << adnp->reg_shift, i; adnp 395 drivers/gpio/gpio-adnp.c mutex_lock(&adnp->i2c_lock); adnp 398 drivers/gpio/gpio-adnp.c adnp_write(adnp, GPIO_IER(adnp) + i, adnp->irq_enable[i]); adnp 400 drivers/gpio/gpio-adnp.c mutex_unlock(&adnp->i2c_lock); adnp 401 drivers/gpio/gpio-adnp.c mutex_unlock(&adnp->irq_lock); adnp 413 drivers/gpio/gpio-adnp.c static int adnp_irq_setup(struct adnp *adnp) adnp 415 drivers/gpio/gpio-adnp.c unsigned int num_regs = 1 << adnp->reg_shift, i; adnp 416 drivers/gpio/gpio-adnp.c struct gpio_chip *chip = &adnp->gpio; adnp 419 drivers/gpio/gpio-adnp.c mutex_init(&adnp->irq_lock); adnp 429 drivers/gpio/gpio-adnp.c adnp->irq_enable = devm_kcalloc(chip->parent, num_regs, 6, adnp 431 drivers/gpio/gpio-adnp.c if (!adnp->irq_enable) adnp 434 drivers/gpio/gpio-adnp.c adnp->irq_level = adnp->irq_enable + (num_regs * 1); adnp 435 drivers/gpio/gpio-adnp.c adnp->irq_rise = adnp->irq_enable + (num_regs * 2); adnp 436 drivers/gpio/gpio-adnp.c adnp->irq_fall = adnp->irq_enable + (num_regs * 3); adnp 437 drivers/gpio/gpio-adnp.c adnp->irq_high = adnp->irq_enable + (num_regs * 4); adnp 438 drivers/gpio/gpio-adnp.c adnp->irq_low = adnp->irq_enable + (num_regs * 5); adnp 445 drivers/gpio/gpio-adnp.c err = adnp_read(adnp, GPIO_PLR(adnp) + i, &adnp->irq_level[i]); adnp 450 drivers/gpio/gpio-adnp.c err = adnp_write(adnp, GPIO_IER(adnp) + i, 0); adnp 454 drivers/gpio/gpio-adnp.c adnp->irq_enable[i] = 0x00; adnp 457 drivers/gpio/gpio-adnp.c err = devm_request_threaded_irq(chip->parent, adnp->client->irq, adnp 460 drivers/gpio/gpio-adnp.c dev_name(chip->parent), adnp); adnp 463 drivers/gpio/gpio-adnp.c adnp->client->irq, err); adnp 478 drivers/gpio/gpio-adnp.c gpiochip_set_nested_irqchip(chip, &adnp_irq_chip, adnp->client->irq); adnp 487 drivers/gpio/gpio-adnp.c struct adnp *adnp; adnp 499 drivers/gpio/gpio-adnp.c adnp = devm_kzalloc(&client->dev, sizeof(*adnp), GFP_KERNEL); adnp 500 drivers/gpio/gpio-adnp.c if (!adnp) adnp 503 drivers/gpio/gpio-adnp.c mutex_init(&adnp->i2c_lock); adnp 504 drivers/gpio/gpio-adnp.c adnp->client = client; adnp 506 drivers/gpio/gpio-adnp.c err = adnp_gpio_setup(adnp, num_gpios); adnp 511 drivers/gpio/gpio-adnp.c err = adnp_irq_setup(adnp); adnp 516 drivers/gpio/gpio-adnp.c i2c_set_clientdata(client, adnp);