]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-client.git/commitdiff
pinctrl: cy8c95x0: Don't miss reading the last bank registers
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Mon, 23 Feb 2026 18:06:51 +0000 (19:06 +0100)
committerLinus Walleij <linusw@kernel.org>
Thu, 26 Feb 2026 22:41:04 +0000 (23:41 +0100)
When code had been changed to use for_each_set_clump8(), it mistakenly
switched from chip->nport to chip->tpin since the cy8c9540 and cy8c9560
have a 4-pin gap. This, in particular, led to the missed read of
the last bank interrupt status register and hence missing interrupts
on those pins. Restore the upper limit in for_each_set_clump8() to take
into consideration that gap.

Fixes: 83e29a7a1fdf ("pinctrl: cy8c95x0; Switch to use for_each_set_clump8()")
Cc: stable@vger.kernel.org
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Linus Walleij <linusw@kernel.org>
drivers/pinctrl/pinctrl-cy8c95x0.c

index a4b04bf6d081f6b26acfe887ea536a50e69b45b3..5c055d344ac9d56181524afbcf8788290a5cac26 100644 (file)
@@ -627,7 +627,7 @@ static int cy8c95x0_write_regs_mask(struct cy8c95x0_pinctrl *chip, int reg,
        bitmap_scatter(tmask, mask, chip->map, MAX_LINE);
        bitmap_scatter(tval, val, chip->map, MAX_LINE);
 
-       for_each_set_clump8(offset, bits, tmask, chip->tpin) {
+       for_each_set_clump8(offset, bits, tmask, chip->nport * BANK_SZ) {
                unsigned int i = offset / 8;
 
                write_val = bitmap_get_value8(tval, offset);
@@ -655,7 +655,7 @@ static int cy8c95x0_read_regs_mask(struct cy8c95x0_pinctrl *chip, int reg,
        bitmap_scatter(tmask, mask, chip->map, MAX_LINE);
        bitmap_scatter(tval, val, chip->map, MAX_LINE);
 
-       for_each_set_clump8(offset, bits, tmask, chip->tpin) {
+       for_each_set_clump8(offset, bits, tmask, chip->nport * BANK_SZ) {
                unsigned int i = offset / 8;
 
                ret = cy8c95x0_regmap_read_bits(chip, reg, i, bits, &read_val);