Lines Matching refs:chip
79 struct htcpld_chip *chip; member
88 struct htcpld_chip *chip = irq_data_get_irq_chip_data(data); in htcpld_mask() local
89 chip->irqs_enabled &= ~(1 << (data->irq - chip->irq_start)); in htcpld_mask()
90 pr_debug("HTCPLD mask %d %04x\n", data->irq, chip->irqs_enabled); in htcpld_mask()
94 struct htcpld_chip *chip = irq_data_get_irq_chip_data(data); in htcpld_unmask() local
95 chip->irqs_enabled |= 1 << (data->irq - chip->irq_start); in htcpld_unmask()
96 pr_debug("HTCPLD unmask %d %04x\n", data->irq, chip->irqs_enabled); in htcpld_unmask()
101 struct htcpld_chip *chip = irq_data_get_irq_chip_data(data); in htcpld_set_type() local
110 chip->flow_type = flags; in htcpld_set_type()
146 struct htcpld_chip *chip = &htcpld->chip[i]; in htcpld_handler() local
151 if (!chip) { in htcpld_handler()
156 if (chip->nirqs == 0) in htcpld_handler()
159 client = chip->client; in htcpld_handler()
166 val = i2c_smbus_read_byte_data(client, chip->cache_out); in htcpld_handler()
169 dev_warn(chip->dev, "Unable to read from chip: %d\n", in htcpld_handler()
176 spin_lock_irqsave(&chip->lock, flags); in htcpld_handler()
179 old_val = chip->cache_in; in htcpld_handler()
182 chip->cache_in = uval; in htcpld_handler()
184 spin_unlock_irqrestore(&chip->lock, flags); in htcpld_handler()
190 for (irqpin = 0; irqpin < chip->nirqs; irqpin++) { in htcpld_handler()
191 unsigned oldb, newb, type = chip->flow_type; in htcpld_handler()
193 irq = chip->irq_start + irqpin; in htcpld_handler()
227 static void htcpld_chip_set(struct gpio_chip *chip, unsigned offset, int val) in htcpld_chip_set() argument
231 container_of(chip, struct htcpld_chip, chip_out); in htcpld_chip_set()
258 static int htcpld_chip_get(struct gpio_chip *chip, unsigned offset) in htcpld_chip_get() argument
263 if (!strncmp(chip->label, "htcpld-out", 10)) { in htcpld_chip_get()
264 chip_data = container_of(chip, struct htcpld_chip, chip_out); in htcpld_chip_get()
266 } else if (!strncmp(chip->label, "htcpld-in", 9)) { in htcpld_chip_get()
267 chip_data = container_of(chip, struct htcpld_chip, chip_in); in htcpld_chip_get()
275 static int htcpld_direction_output(struct gpio_chip *chip, in htcpld_direction_output() argument
278 htcpld_chip_set(chip, offset, value); in htcpld_direction_output()
282 static int htcpld_direction_input(struct gpio_chip *chip, in htcpld_direction_input() argument
289 return (offset < chip->ngpio) ? 0 : -EINVAL; in htcpld_direction_input()
292 static int htcpld_chip_to_irq(struct gpio_chip *chip, unsigned offset) in htcpld_chip_to_irq() argument
296 chip_data = container_of(chip, struct htcpld_chip, chip_in); in htcpld_chip_to_irq()
319 struct htcpld_chip *chip; in htcpld_setup_chip_irq() local
325 chip = &htcpld->chip[chip_index]; in htcpld_setup_chip_irq()
328 irq_end = chip->irq_start + chip->nirqs; in htcpld_setup_chip_irq()
329 for (irq = chip->irq_start; irq < irq_end; irq++) { in htcpld_setup_chip_irq()
332 irq_set_chip_data(irq, chip); in htcpld_setup_chip_irq()
350 struct htcpld_chip *chip; in htcpld_register_chip_i2c() local
359 chip = &htcpld->chip[chip_index]; in htcpld_register_chip_i2c()
360 plat_chip_data = &pdata->chip[chip_index]; in htcpld_register_chip_i2c()
379 info.platform_data = chip; in htcpld_register_chip_i2c()
390 i2c_set_clientdata(client, chip); in htcpld_register_chip_i2c()
392 chip->client = client; in htcpld_register_chip_i2c()
396 chip->cache_in = i2c_smbus_read_byte_data(client, chip->cache_out); in htcpld_register_chip_i2c()
406 struct htcpld_chip *chip; in htcpld_unregister_chip_i2c() local
410 chip = &htcpld->chip[chip_index]; in htcpld_unregister_chip_i2c()
412 if (chip->client) in htcpld_unregister_chip_i2c()
413 i2c_unregister_device(chip->client); in htcpld_unregister_chip_i2c()
423 struct htcpld_chip *chip; in htcpld_register_chip_gpio() local
431 chip = &htcpld->chip[chip_index]; in htcpld_register_chip_gpio()
432 plat_chip_data = &pdata->chip[chip_index]; in htcpld_register_chip_gpio()
435 gpio_chip = &(chip->chip_out); in htcpld_register_chip_gpio()
446 gpio_chip = &(chip->chip_in); in htcpld_register_chip_gpio()
459 ret = gpiochip_add(&(chip->chip_out)); in htcpld_register_chip_gpio()
466 ret = gpiochip_add(&(chip->chip_in)); in htcpld_register_chip_gpio()
470 gpiochip_remove(&(chip->chip_out)); in htcpld_register_chip_gpio()
490 htcpld->chip = devm_kzalloc(dev, sizeof(struct htcpld_chip) * htcpld->nchips, in htcpld_setup_chips()
492 if (!htcpld->chip) { in htcpld_setup_chips()
502 htcpld->chip[i].reset = pdata->chip[i].reset; in htcpld_setup_chips()
503 htcpld->chip[i].cache_out = pdata->chip[i].reset; in htcpld_setup_chips()
504 htcpld->chip[i].cache_in = 0; in htcpld_setup_chips()
505 htcpld->chip[i].dev = dev; in htcpld_setup_chips()
506 htcpld->chip[i].irq_start = pdata->chip[i].irq_base; in htcpld_setup_chips()
507 htcpld->chip[i].nirqs = pdata->chip[i].num_irqs; in htcpld_setup_chips()
509 INIT_WORK(&(htcpld->chip[i].set_val_work), &htcpld_chip_set_ni); in htcpld_setup_chips()
510 spin_lock_init(&(htcpld->chip[i].lock)); in htcpld_setup_chips()
533 dev_info(dev, "Registered chip at 0x%x\n", pdata->chip[i].addr); in htcpld_setup_chips()