Commit 83e29a7a authored by Andy Shevchenko's avatar Andy Shevchenko Committed by Linus Walleij
Browse files

pinctrl: cy8c95x0; Switch to use for_each_set_clump8()



for_each_set_clump8() has embedded check for unset clump to skip.
Switch driver to use for_each_set_clump8().

Signed-off-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/20250205095243.512292-3-andriy.shevchenko@linux.intel.com


Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent e9330dc9
Loading
Loading
Loading
Loading
+9 −15
Original line number Diff line number Diff line
@@ -617,21 +617,18 @@ static int cy8c95x0_write_regs_mask(struct cy8c95x0_pinctrl *chip, int reg,
{
	DECLARE_BITMAP(tmask, MAX_LINE);
	DECLARE_BITMAP(tval, MAX_LINE);
	unsigned long bits, offset;
	int write_val;
	u8 bits;
	int ret;

	/* Add the 4 bit gap of Gport2 */
	bitmap_scatter(tmask, mask, chip->map, MAX_LINE);
	bitmap_scatter(tval, val, chip->map, MAX_LINE);

	for (unsigned int i = 0; i < chip->nport; i++) {
		/* Skip over unused banks */
		bits = bitmap_get_value8(tmask, i * BANK_SZ);
		if (!bits)
			continue;
	for_each_set_clump8(offset, bits, tmask, chip->tpin) {
		unsigned int i = offset / 8;

		write_val = bitmap_get_value8(tval, i * BANK_SZ);
		write_val = bitmap_get_value8(tval, offset);

		ret = cy8c95x0_regmap_update_bits(chip, reg, i, bits, write_val);
		if (ret < 0) {
@@ -648,19 +645,16 @@ static int cy8c95x0_read_regs_mask(struct cy8c95x0_pinctrl *chip, int reg,
{
	DECLARE_BITMAP(tmask, MAX_LINE);
	DECLARE_BITMAP(tval, MAX_LINE);
	unsigned long bits, offset;
	int read_val;
	u8 bits;
	int ret;

	/* Add the 4 bit gap of Gport2 */
	bitmap_scatter(tmask, mask, chip->map, MAX_LINE);
	bitmap_scatter(tval, val, chip->map, MAX_LINE);

	for (unsigned int i = 0; i < chip->nport; i++) {
		/* Skip over unused banks */
		bits = bitmap_get_value8(tmask, i * BANK_SZ);
		if (!bits)
			continue;
	for_each_set_clump8(offset, bits, tmask, chip->tpin) {
		unsigned int i = offset / 8;

		ret = cy8c95x0_regmap_read(chip, reg, i, &read_val);
		if (ret < 0) {
@@ -669,8 +663,8 @@ static int cy8c95x0_read_regs_mask(struct cy8c95x0_pinctrl *chip, int reg,
		}

		read_val &= bits;
		read_val |= bitmap_get_value8(tval, i * BANK_SZ) & ~bits;
		bitmap_set_value8(tval, read_val, i * BANK_SZ);
		read_val |= bitmap_get_value8(tval, offset) & ~bits;
		bitmap_set_value8(tval, read_val, offset);
	}

	/* Fill the 4 bit gap of Gport2 */