Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

iio: adc: max1363: Fix MAX1363_4X_CHANS/MAX1363_8X_CHANS[]

Since commit 2718f15403fb ("iio: sanity check available_scan_masks array"),
booting a board populated with a MAX11601 results in a flood of warnings:

max1363 1-0064: available_scan_mask 8 subset of 0. Never used
max1363 1-0064: available_scan_mask 9 subset of 0. Never used
max1363 1-0064: available_scan_mask 10 subset of 0. Never used
max1363 1-0064: available_scan_mask 11 subset of 0. Never used
max1363 1-0064: available_scan_mask 12 subset of 0. Never used
max1363 1-0064: available_scan_mask 13 subset of 0. Never used
...

These warnings are caused by incorrect offsets used for differential
channels in the MAX1363_4X_CHANS() and MAX1363_8X_CHANS() macros.

The max1363_mode_table[] defines the differential channel mappings as
follows:

MAX1363_MODE_DIFF_SINGLE(0, 1, 1 << 12),
MAX1363_MODE_DIFF_SINGLE(2, 3, 1 << 13),
MAX1363_MODE_DIFF_SINGLE(4, 5, 1 << 14),
MAX1363_MODE_DIFF_SINGLE(6, 7, 1 << 15),
MAX1363_MODE_DIFF_SINGLE(8, 9, 1 << 16),
MAX1363_MODE_DIFF_SINGLE(10, 11, 1 << 17),
MAX1363_MODE_DIFF_SINGLE(1, 0, 1 << 18),
MAX1363_MODE_DIFF_SINGLE(3, 2, 1 << 19),
MAX1363_MODE_DIFF_SINGLE(5, 4, 1 << 20),
MAX1363_MODE_DIFF_SINGLE(7, 6, 1 << 21),
MAX1363_MODE_DIFF_SINGLE(9, 8, 1 << 22),
MAX1363_MODE_DIFF_SINGLE(11, 10, 1 << 23),

Update the macros to follow this same pattern, ensuring that the scan masks
are valid and preventing the warnings.

Cc: stable@vger.kernel.org
Suggested-by: Jonathan Cameron <jic23@kernel.org>
Signed-off-by: Fabio Estevam <festevam@denx.de>
Acked-by: Matti Vaittinen <mazziesaccount@gmail.com>
Link: https://patch.msgid.link/20250516173900.677821-1-festevam@gmail.com
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>

authored by

Fabio Estevam and committed by
Jonathan Cameron
6d21f2c2 e8ad5950

+12 -12
+12 -12
drivers/iio/adc/max1363.c
··· 511 511 MAX1363_CHAN_U(1, _s1, 1, bits, ev_spec, num_ev_spec), \ 512 512 MAX1363_CHAN_U(2, _s2, 2, bits, ev_spec, num_ev_spec), \ 513 513 MAX1363_CHAN_U(3, _s3, 3, bits, ev_spec, num_ev_spec), \ 514 - MAX1363_CHAN_B(0, 1, d0m1, 4, bits, ev_spec, num_ev_spec), \ 515 - MAX1363_CHAN_B(2, 3, d2m3, 5, bits, ev_spec, num_ev_spec), \ 516 - MAX1363_CHAN_B(1, 0, d1m0, 6, bits, ev_spec, num_ev_spec), \ 517 - MAX1363_CHAN_B(3, 2, d3m2, 7, bits, ev_spec, num_ev_spec), \ 514 + MAX1363_CHAN_B(0, 1, d0m1, 12, bits, ev_spec, num_ev_spec), \ 515 + MAX1363_CHAN_B(2, 3, d2m3, 13, bits, ev_spec, num_ev_spec), \ 516 + MAX1363_CHAN_B(1, 0, d1m0, 18, bits, ev_spec, num_ev_spec), \ 517 + MAX1363_CHAN_B(3, 2, d3m2, 19, bits, ev_spec, num_ev_spec), \ 518 518 IIO_CHAN_SOFT_TIMESTAMP(8) \ 519 519 } 520 520 ··· 609 609 MAX1363_CHAN_U(5, _s5, 5, bits, NULL, 0), \ 610 610 MAX1363_CHAN_U(6, _s6, 6, bits, NULL, 0), \ 611 611 MAX1363_CHAN_U(7, _s7, 7, bits, NULL, 0), \ 612 - MAX1363_CHAN_B(0, 1, d0m1, 8, bits, NULL, 0), \ 613 - MAX1363_CHAN_B(2, 3, d2m3, 9, bits, NULL, 0), \ 614 - MAX1363_CHAN_B(4, 5, d4m5, 10, bits, NULL, 0), \ 615 - MAX1363_CHAN_B(6, 7, d6m7, 11, bits, NULL, 0), \ 616 - MAX1363_CHAN_B(1, 0, d1m0, 12, bits, NULL, 0), \ 617 - MAX1363_CHAN_B(3, 2, d3m2, 13, bits, NULL, 0), \ 618 - MAX1363_CHAN_B(5, 4, d5m4, 14, bits, NULL, 0), \ 619 - MAX1363_CHAN_B(7, 6, d7m6, 15, bits, NULL, 0), \ 612 + MAX1363_CHAN_B(0, 1, d0m1, 12, bits, NULL, 0), \ 613 + MAX1363_CHAN_B(2, 3, d2m3, 13, bits, NULL, 0), \ 614 + MAX1363_CHAN_B(4, 5, d4m5, 14, bits, NULL, 0), \ 615 + MAX1363_CHAN_B(6, 7, d6m7, 15, bits, NULL, 0), \ 616 + MAX1363_CHAN_B(1, 0, d1m0, 18, bits, NULL, 0), \ 617 + MAX1363_CHAN_B(3, 2, d3m2, 19, bits, NULL, 0), \ 618 + MAX1363_CHAN_B(5, 4, d5m4, 20, bits, NULL, 0), \ 619 + MAX1363_CHAN_B(7, 6, d7m6, 21, bits, NULL, 0), \ 620 620 IIO_CHAN_SOFT_TIMESTAMP(16) \ 621 621 } 622 622 static const struct iio_chan_spec max11602_channels[] = MAX1363_8X_CHANS(8);