• Home
  • Raw
  • Download

Lines Matching +full:output +full:- +full:polarity +full:- +full:invert

1 // SPDX-License-Identifier: GPL-2.0-only
126 { "irq-gpios", &pca953x_irq_gpios, 1, ACPI_GPIO_QUIRK_ABSOLUTE_NUMBER },
138 ret = acpi_dev_gpio_irq_get_by(ACPI_COMPANION(dev), "irq-gpios", 0); in pca953x_acpi_get_irq()
152 * relative. Since first controller (gpio-sch.c) and
153 * second (gpio-dwapb.c) are at the fixed bases, we may
175 #define NBANK(chip) DIV_ROUND_UP(chip->gpio_chip.ngpio, BANK_SZ)
179 int output; member
181 int invert; member
186 .output = PCA953X_OUTPUT,
188 .invert = PCA953X_INVERT,
193 .output = PCA957X_OUT,
195 .invert = PCA957X_INVRT,
227 return fls((chip->gpio_chip.ngpio - 1) / BANK_SZ); in pca953x_bank_shift()
249 * - Standard set, below 0x40, each port can be replicated up to 8 times
250 * - PCA953x standard
252 * Output port 0x00 + 1 * bank_size RW
253 * Polarity Inversion port 0x00 + 2 * bank_size RW
255 * - PCA957x with mixed up registers
257 * Polarity Inversion port 0x00 + 1 * bank_size RW
260 * Output port 0x00 + 5 * bank_size RW
262 * - Extended set, above 0x40, often chip specific.
263 * - PCAL6524/PCAL9555A with custom PCAL IRQ handling:
265 * Pull-up/pull-down enable reg 0x40 + 3 * bank_size RW
266 * Pull-up/pull-down select reg 0x40 + 4 * bank_size RW
270 * - Registers with bit 0x80 set, the AI bit
280 int offset = reg & (BIT(bank_shift) - 1); in pca953x_check_register()
284 if (!(chip->driver_data & PCA_PCAL)) in pca953x_check_register()
316 * Handle lack of reserved registers after output port in pcal6534_check_register()
319 reg -= 0x54; in pcal6534_check_register()
326 reg -= 0x30; in pcal6534_check_register()
351 if (PCA_CHIP_TYPE(chip->driver_data) == PCA957X_TYPE) { in pca953x_readable_register()
360 if (chip->driver_data & PCA_PCAL) { in pca953x_readable_register()
366 return chip->check_reg(chip, reg, bank); in pca953x_readable_register()
374 if (PCA_CHIP_TYPE(chip->driver_data) == PCA957X_TYPE) { in pca953x_writeable_register()
382 if (chip->driver_data & PCA_PCAL) in pca953x_writeable_register()
386 return chip->check_reg(chip, reg, bank); in pca953x_writeable_register()
394 if (PCA_CHIP_TYPE(chip->driver_data) == PCA957X_TYPE) in pca953x_volatile_register()
399 if (chip->driver_data & PCA_PCAL) in pca953x_volatile_register()
402 return chip->check_reg(chip, reg, bank); in pca953x_volatile_register()
484 u8 regaddr = chip->recalc_addr(chip, reg, 0); in pca953x_write_regs()
491 ret = regmap_bulk_write(chip->regmap, regaddr, value, NBANK(chip)); in pca953x_write_regs()
493 dev_err(&chip->client->dev, "failed writing register\n"); in pca953x_write_regs()
502 u8 regaddr = chip->recalc_addr(chip, reg, 0); in pca953x_read_regs()
506 ret = regmap_bulk_read(chip->regmap, regaddr, value, NBANK(chip)); in pca953x_read_regs()
508 dev_err(&chip->client->dev, "failed reading register\n"); in pca953x_read_regs()
521 u8 dirreg = chip->recalc_addr(chip, chip->regs->direction, off); in pca953x_gpio_direction_input()
525 mutex_lock(&chip->i2c_lock); in pca953x_gpio_direction_input()
526 ret = regmap_write_bits(chip->regmap, dirreg, bit, bit); in pca953x_gpio_direction_input()
527 mutex_unlock(&chip->i2c_lock); in pca953x_gpio_direction_input()
535 u8 dirreg = chip->recalc_addr(chip, chip->regs->direction, off); in pca953x_gpio_direction_output()
536 u8 outreg = chip->recalc_addr(chip, chip->regs->output, off); in pca953x_gpio_direction_output()
540 mutex_lock(&chip->i2c_lock); in pca953x_gpio_direction_output()
541 /* set output level */ in pca953x_gpio_direction_output()
542 ret = regmap_write_bits(chip->regmap, outreg, bit, val ? bit : 0); in pca953x_gpio_direction_output()
547 ret = regmap_write_bits(chip->regmap, dirreg, bit, 0); in pca953x_gpio_direction_output()
549 mutex_unlock(&chip->i2c_lock); in pca953x_gpio_direction_output()
556 u8 inreg = chip->recalc_addr(chip, chip->regs->input, off); in pca953x_gpio_get_value()
561 mutex_lock(&chip->i2c_lock); in pca953x_gpio_get_value()
562 ret = regmap_read(chip->regmap, inreg, &reg_val); in pca953x_gpio_get_value()
563 mutex_unlock(&chip->i2c_lock); in pca953x_gpio_get_value()
573 u8 outreg = chip->recalc_addr(chip, chip->regs->output, off); in pca953x_gpio_set_value()
576 mutex_lock(&chip->i2c_lock); in pca953x_gpio_set_value()
577 regmap_write_bits(chip->regmap, outreg, bit, val ? bit : 0); in pca953x_gpio_set_value()
578 mutex_unlock(&chip->i2c_lock); in pca953x_gpio_set_value()
584 u8 dirreg = chip->recalc_addr(chip, chip->regs->direction, off); in pca953x_gpio_get_direction()
589 mutex_lock(&chip->i2c_lock); in pca953x_gpio_get_direction()
590 ret = regmap_read(chip->regmap, dirreg, &reg_val); in pca953x_gpio_get_direction()
591 mutex_unlock(&chip->i2c_lock); in pca953x_gpio_get_direction()
608 mutex_lock(&chip->i2c_lock); in pca953x_gpio_get_multiple()
609 ret = pca953x_read_regs(chip, chip->regs->input, reg_val); in pca953x_gpio_get_multiple()
610 mutex_unlock(&chip->i2c_lock); in pca953x_gpio_get_multiple()
614 bitmap_replace(bits, bits, reg_val, mask, gc->ngpio); in pca953x_gpio_get_multiple()
625 mutex_lock(&chip->i2c_lock); in pca953x_gpio_set_multiple()
626 ret = pca953x_read_regs(chip, chip->regs->output, reg_val); in pca953x_gpio_set_multiple()
630 bitmap_replace(reg_val, reg_val, bits, mask, gc->ngpio); in pca953x_gpio_set_multiple()
632 pca953x_write_regs(chip, chip->regs->output, reg_val); in pca953x_gpio_set_multiple()
634 mutex_unlock(&chip->i2c_lock); in pca953x_gpio_set_multiple()
643 u8 pull_en_reg = chip->recalc_addr(chip, PCAL953X_PULL_EN, offset); in pca953x_gpio_set_pull_up_down()
644 u8 pull_sel_reg = chip->recalc_addr(chip, PCAL953X_PULL_SEL, offset); in pca953x_gpio_set_pull_up_down()
649 * pull-up/pull-down configuration requires PCAL extended in pca953x_gpio_set_pull_up_down()
652 if (!(chip->driver_data & PCA_PCAL)) in pca953x_gpio_set_pull_up_down()
653 return -ENOTSUPP; in pca953x_gpio_set_pull_up_down()
655 mutex_lock(&chip->i2c_lock); in pca953x_gpio_set_pull_up_down()
657 /* Configure pull-up/pull-down */ in pca953x_gpio_set_pull_up_down()
659 ret = regmap_write_bits(chip->regmap, pull_sel_reg, bit, bit); in pca953x_gpio_set_pull_up_down()
661 ret = regmap_write_bits(chip->regmap, pull_sel_reg, bit, 0); in pca953x_gpio_set_pull_up_down()
667 /* Disable/Enable pull-up/pull-down */ in pca953x_gpio_set_pull_up_down()
669 ret = regmap_write_bits(chip->regmap, pull_en_reg, bit, 0); in pca953x_gpio_set_pull_up_down()
671 ret = regmap_write_bits(chip->regmap, pull_en_reg, bit, bit); in pca953x_gpio_set_pull_up_down()
674 mutex_unlock(&chip->i2c_lock); in pca953x_gpio_set_pull_up_down()
690 return -ENOTSUPP; in pca953x_gpio_set_config()
698 gc = &chip->gpio_chip; in pca953x_setup_gpio()
700 gc->direction_input = pca953x_gpio_direction_input; in pca953x_setup_gpio()
701 gc->direction_output = pca953x_gpio_direction_output; in pca953x_setup_gpio()
702 gc->get = pca953x_gpio_get_value; in pca953x_setup_gpio()
703 gc->set = pca953x_gpio_set_value; in pca953x_setup_gpio()
704 gc->get_direction = pca953x_gpio_get_direction; in pca953x_setup_gpio()
705 gc->get_multiple = pca953x_gpio_get_multiple; in pca953x_setup_gpio()
706 gc->set_multiple = pca953x_gpio_set_multiple; in pca953x_setup_gpio()
707 gc->set_config = pca953x_gpio_set_config; in pca953x_setup_gpio()
708 gc->can_sleep = true; in pca953x_setup_gpio()
710 gc->base = chip->gpio_start; in pca953x_setup_gpio()
711 gc->ngpio = gpios; in pca953x_setup_gpio()
712 gc->label = dev_name(&chip->client->dev); in pca953x_setup_gpio()
713 gc->parent = &chip->client->dev; in pca953x_setup_gpio()
714 gc->owner = THIS_MODULE; in pca953x_setup_gpio()
715 gc->names = chip->names; in pca953x_setup_gpio()
725 clear_bit(hwirq, chip->irq_mask); in pca953x_irq_mask()
736 set_bit(hwirq, chip->irq_mask); in pca953x_irq_unmask()
745 atomic_inc(&chip->wakeup_path); in pca953x_irq_set_wake()
747 atomic_dec(&chip->wakeup_path); in pca953x_irq_set_wake()
749 return irq_set_irq_wake(chip->client->irq, on); in pca953x_irq_set_wake()
757 mutex_lock(&chip->irq_lock); in pca953x_irq_bus_lock()
768 if (chip->driver_data & PCA_PCAL) { in pca953x_irq_bus_sync_unlock()
769 /* Enable latch on interrupt-enabled inputs */ in pca953x_irq_bus_sync_unlock()
770 pca953x_write_regs(chip, PCAL953X_IN_LATCH, chip->irq_mask); in pca953x_irq_bus_sync_unlock()
772 bitmap_complement(irq_mask, chip->irq_mask, gc->ngpio); in pca953x_irq_bus_sync_unlock()
779 pca953x_read_regs(chip, chip->regs->direction, reg_direction); in pca953x_irq_bus_sync_unlock()
781 bitmap_or(irq_mask, chip->irq_trig_fall, chip->irq_trig_raise, gc->ngpio); in pca953x_irq_bus_sync_unlock()
782 bitmap_complement(reg_direction, reg_direction, gc->ngpio); in pca953x_irq_bus_sync_unlock()
783 bitmap_and(irq_mask, irq_mask, reg_direction, gc->ngpio); in pca953x_irq_bus_sync_unlock()
786 for_each_set_bit(level, irq_mask, gc->ngpio) in pca953x_irq_bus_sync_unlock()
787 pca953x_gpio_direction_input(&chip->gpio_chip, level); in pca953x_irq_bus_sync_unlock()
789 mutex_unlock(&chip->irq_lock); in pca953x_irq_bus_sync_unlock()
799 dev_err(&chip->client->dev, "irq %d: unsupported type %d\n", in pca953x_irq_set_type()
800 d->irq, type); in pca953x_irq_set_type()
801 return -EINVAL; in pca953x_irq_set_type()
804 assign_bit(hwirq, chip->irq_trig_fall, type & IRQ_TYPE_EDGE_FALLING); in pca953x_irq_set_type()
805 assign_bit(hwirq, chip->irq_trig_raise, type & IRQ_TYPE_EDGE_RISING); in pca953x_irq_set_type()
816 clear_bit(hwirq, chip->irq_trig_raise); in pca953x_irq_shutdown()
817 clear_bit(hwirq, chip->irq_trig_fall); in pca953x_irq_shutdown()
824 seq_printf(p, dev_name(gc->parent)); in pca953x_irq_print_chip()
842 struct gpio_chip *gc = &chip->gpio_chip; in pca953x_irq_pending()
850 if (chip->driver_data & PCA_PCAL) { in pca953x_irq_pending()
857 ret = pca953x_read_regs(chip, chip->regs->input, cur_stat); in pca953x_irq_pending()
862 bitmap_replace(new_stat, chip->irq_trig_fall, chip->irq_trig_raise, cur_stat, gc->ngpio); in pca953x_irq_pending()
864 bitmap_and(pending, new_stat, trigger, gc->ngpio); in pca953x_irq_pending()
866 return !bitmap_empty(pending, gc->ngpio); in pca953x_irq_pending()
869 ret = pca953x_read_regs(chip, chip->regs->input, cur_stat); in pca953x_irq_pending()
873 /* Remove output pins from the equation */ in pca953x_irq_pending()
874 pca953x_read_regs(chip, chip->regs->direction, reg_direction); in pca953x_irq_pending()
876 bitmap_copy(old_stat, chip->irq_stat, gc->ngpio); in pca953x_irq_pending()
878 bitmap_and(new_stat, cur_stat, reg_direction, gc->ngpio); in pca953x_irq_pending()
879 bitmap_xor(cur_stat, new_stat, old_stat, gc->ngpio); in pca953x_irq_pending()
880 bitmap_and(trigger, cur_stat, chip->irq_mask, gc->ngpio); in pca953x_irq_pending()
882 bitmap_copy(chip->irq_stat, new_stat, gc->ngpio); in pca953x_irq_pending()
884 if (bitmap_empty(trigger, gc->ngpio)) in pca953x_irq_pending()
887 bitmap_and(cur_stat, chip->irq_trig_fall, old_stat, gc->ngpio); in pca953x_irq_pending()
888 bitmap_and(old_stat, chip->irq_trig_raise, new_stat, gc->ngpio); in pca953x_irq_pending()
889 bitmap_or(new_stat, old_stat, cur_stat, gc->ngpio); in pca953x_irq_pending()
890 bitmap_and(pending, new_stat, trigger, gc->ngpio); in pca953x_irq_pending()
892 return !bitmap_empty(pending, gc->ngpio); in pca953x_irq_pending()
898 struct gpio_chip *gc = &chip->gpio_chip; in pca953x_irq_handler()
905 mutex_lock(&chip->i2c_lock); in pca953x_irq_handler()
907 mutex_unlock(&chip->i2c_lock); in pca953x_irq_handler()
912 for_each_set_bit(level, pending, gc->ngpio) { in pca953x_irq_handler()
913 int nested_irq = irq_find_mapping(gc->irq.domain, level); in pca953x_irq_handler()
916 dev_warn_ratelimited(gc->parent, "unmapped interrupt %d\n", level); in pca953x_irq_handler()
930 struct i2c_client *client = chip->client; in pca953x_irq_setup()
937 ret = pca953x_acpi_get_irq(&client->dev); in pca953x_irq_setup()
939 client->irq = ret; in pca953x_irq_setup()
942 if (!client->irq) in pca953x_irq_setup()
945 if (irq_base == -1) in pca953x_irq_setup()
948 if (!(chip->driver_data & PCA_INT)) in pca953x_irq_setup()
951 ret = pca953x_read_regs(chip, chip->regs->input, irq_stat); in pca953x_irq_setup()
960 pca953x_read_regs(chip, chip->regs->direction, reg_direction); in pca953x_irq_setup()
961 bitmap_and(chip->irq_stat, irq_stat, reg_direction, chip->gpio_chip.ngpio); in pca953x_irq_setup()
962 mutex_init(&chip->irq_lock); in pca953x_irq_setup()
964 girq = &chip->gpio_chip.irq; in pca953x_irq_setup()
967 girq->parent_handler = NULL; in pca953x_irq_setup()
968 girq->num_parents = 0; in pca953x_irq_setup()
969 girq->parents = NULL; in pca953x_irq_setup()
970 girq->default_type = IRQ_TYPE_NONE; in pca953x_irq_setup()
971 girq->handler = handle_simple_irq; in pca953x_irq_setup()
972 girq->threaded = true; in pca953x_irq_setup()
973 girq->first = irq_base; /* FIXME: get rid of this */ in pca953x_irq_setup()
975 ret = devm_request_threaded_irq(&client->dev, client->irq, in pca953x_irq_setup()
978 dev_name(&client->dev), chip); in pca953x_irq_setup()
980 dev_err(&client->dev, "failed to request irq %d\n", in pca953x_irq_setup()
981 client->irq); in pca953x_irq_setup()
992 struct i2c_client *client = chip->client; in pca953x_irq_setup()
994 if (client->irq && irq_base != -1 && (chip->driver_data & PCA_INT)) in pca953x_irq_setup()
995 dev_warn(&client->dev, "interrupt support not compiled in\n"); in pca953x_irq_setup()
1001 static int device_pca95xx_init(struct pca953x_chip *chip, u32 invert) in device_pca95xx_init() argument
1007 regaddr = chip->recalc_addr(chip, chip->regs->output, 0); in device_pca95xx_init()
1008 ret = regcache_sync_region(chip->regmap, regaddr, in device_pca95xx_init()
1009 regaddr + NBANK(chip) - 1); in device_pca95xx_init()
1013 regaddr = chip->recalc_addr(chip, chip->regs->direction, 0); in device_pca95xx_init()
1014 ret = regcache_sync_region(chip->regmap, regaddr, in device_pca95xx_init()
1015 regaddr + NBANK(chip) - 1); in device_pca95xx_init()
1019 /* set platform specific polarity inversion */ in device_pca95xx_init()
1020 if (invert) in device_pca95xx_init()
1025 ret = pca953x_write_regs(chip, chip->regs->invert, val); in device_pca95xx_init()
1030 static int device_pca957x_init(struct pca953x_chip *chip, u32 invert) in device_pca957x_init() argument
1036 ret = device_pca95xx_init(chip, invert); in device_pca957x_init()
1059 u32 invert = 0; in pca953x_probe() local
1063 chip = devm_kzalloc(&client->dev, sizeof(*chip), GFP_KERNEL); in pca953x_probe()
1065 return -ENOMEM; in pca953x_probe()
1067 pdata = dev_get_platdata(&client->dev); in pca953x_probe()
1069 irq_base = pdata->irq_base; in pca953x_probe()
1070 chip->gpio_start = pdata->gpio_base; in pca953x_probe()
1071 invert = pdata->invert; in pca953x_probe()
1072 chip->names = pdata->names; in pca953x_probe()
1076 chip->gpio_start = -1; in pca953x_probe()
1080 * See if we need to de-assert a reset pin. in pca953x_probe()
1082 * There is no known ACPI-enabled platforms that are in pca953x_probe()
1086 reset_gpio = devm_gpiod_get_optional(&client->dev, "reset", in pca953x_probe()
1092 chip->client = client; in pca953x_probe()
1093 chip->driver_data = (uintptr_t)i2c_get_match_data(client); in pca953x_probe()
1094 if (!chip->driver_data) in pca953x_probe()
1095 return -ENODEV; in pca953x_probe()
1097 reg = devm_regulator_get(&client->dev, "vcc"); in pca953x_probe()
1099 return dev_err_probe(&client->dev, PTR_ERR(reg), "reg get err\n"); in pca953x_probe()
1103 dev_err(&client->dev, "reg en err: %d\n", ret); in pca953x_probe()
1106 chip->regulator = reg; in pca953x_probe()
1110 pca953x_setup_gpio(chip, chip->driver_data & PCA_GPIO_MASK); in pca953x_probe()
1112 if (NBANK(chip) > 2 || PCA_CHIP_TYPE(chip->driver_data) == PCA957X_TYPE) { in pca953x_probe()
1113 dev_info(&client->dev, "using AI\n"); in pca953x_probe()
1116 dev_info(&client->dev, "using no AI\n"); in pca953x_probe()
1120 if (PCA_CHIP_TYPE(chip->driver_data) == PCAL653X_TYPE) { in pca953x_probe()
1121 chip->recalc_addr = pcal6534_recalc_addr; in pca953x_probe()
1122 chip->check_reg = pcal6534_check_register; in pca953x_probe()
1124 chip->recalc_addr = pca953x_recalc_addr; in pca953x_probe()
1125 chip->check_reg = pca953x_check_register; in pca953x_probe()
1128 chip->regmap = devm_regmap_init_i2c(client, regmap_config); in pca953x_probe()
1129 if (IS_ERR(chip->regmap)) { in pca953x_probe()
1130 ret = PTR_ERR(chip->regmap); in pca953x_probe()
1134 regcache_mark_dirty(chip->regmap); in pca953x_probe()
1136 mutex_init(&chip->i2c_lock); in pca953x_probe()
1138 * In case we have an i2c-mux controlled by a GPIO provided by an in pca953x_probe()
1141 * subclass for chip->i2c_lock. in pca953x_probe()
1144 * false positives when the expander controlling the i2c-mux is on in pca953x_probe()
1150 * applied to all other i2c-controlled GPIO expanders (and potentially in pca953x_probe()
1151 * regmap-i2c). in pca953x_probe()
1153 lockdep_set_subclass(&chip->i2c_lock, in pca953x_probe()
1154 i2c_adapter_depth(client->adapter)); in pca953x_probe()
1159 if (PCA_CHIP_TYPE(chip->driver_data) == PCA957X_TYPE) { in pca953x_probe()
1160 chip->regs = &pca957x_regs; in pca953x_probe()
1161 ret = device_pca957x_init(chip, invert); in pca953x_probe()
1163 chip->regs = &pca953x_regs; in pca953x_probe()
1164 ret = device_pca95xx_init(chip, invert); in pca953x_probe()
1173 ret = devm_gpiochip_add_data(&client->dev, &chip->gpio_chip, chip); in pca953x_probe()
1177 if (pdata && pdata->setup) { in pca953x_probe()
1178 ret = pdata->setup(client, chip->gpio_chip.base, in pca953x_probe()
1179 chip->gpio_chip.ngpio, pdata->context); in pca953x_probe()
1181 dev_warn(&client->dev, "setup failed, %d\n", ret); in pca953x_probe()
1187 regulator_disable(chip->regulator); in pca953x_probe()
1193 struct pca953x_platform_data *pdata = dev_get_platdata(&client->dev); in pca953x_remove()
1196 if (pdata && pdata->teardown) { in pca953x_remove()
1197 pdata->teardown(client, chip->gpio_chip.base, in pca953x_remove()
1198 chip->gpio_chip.ngpio, pdata->context); in pca953x_remove()
1201 regulator_disable(chip->regulator); in pca953x_remove()
1212 * The ordering between direction and output is important, in pca953x_regcache_sync()
1215 regaddr = chip->recalc_addr(chip, chip->regs->direction, 0); in pca953x_regcache_sync()
1216 ret = regcache_sync_region(chip->regmap, regaddr, regaddr + NBANK(chip) - 1); in pca953x_regcache_sync()
1222 regaddr = chip->recalc_addr(chip, chip->regs->output, 0); in pca953x_regcache_sync()
1223 ret = regcache_sync_region(chip->regmap, regaddr, regaddr + NBANK(chip) - 1); in pca953x_regcache_sync()
1230 if (chip->driver_data & PCA_PCAL) { in pca953x_regcache_sync()
1231 regaddr = chip->recalc_addr(chip, PCAL953X_IN_LATCH, 0); in pca953x_regcache_sync()
1232 ret = regcache_sync_region(chip->regmap, regaddr, in pca953x_regcache_sync()
1233 regaddr + NBANK(chip) - 1); in pca953x_regcache_sync()
1240 regaddr = chip->recalc_addr(chip, PCAL953X_INT_MASK, 0); in pca953x_regcache_sync()
1241 ret = regcache_sync_region(chip->regmap, regaddr, in pca953x_regcache_sync()
1242 regaddr + NBANK(chip) - 1); in pca953x_regcache_sync()
1258 mutex_lock(&chip->i2c_lock); in pca953x_suspend()
1259 regcache_cache_only(chip->regmap, true); in pca953x_suspend()
1260 mutex_unlock(&chip->i2c_lock); in pca953x_suspend()
1262 if (atomic_read(&chip->wakeup_path)) in pca953x_suspend()
1265 regulator_disable(chip->regulator); in pca953x_suspend()
1275 if (!atomic_read(&chip->wakeup_path)) { in pca953x_resume()
1276 ret = regulator_enable(chip->regulator); in pca953x_resume()
1283 mutex_lock(&chip->i2c_lock); in pca953x_resume()
1284 regcache_cache_only(chip->regmap, false); in pca953x_resume()
1285 regcache_mark_dirty(chip->regmap); in pca953x_resume()
1288 mutex_unlock(&chip->i2c_lock); in pca953x_resume()
1292 ret = regcache_sync(chip->regmap); in pca953x_resume()
1293 mutex_unlock(&chip->i2c_lock); in pca953x_resume()
1303 /* convenience to stop overlong match-table lines */