summaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
authorCong Nguyen <congnt264@gmail.com>2026-08-02 14:12:46 +0700
committerJonathan Cameron <jonathan.cameron@oss.qualcomm.com>2026-08-07 23:51:05 +0100
commit3364c56b20c1c496bdb8c8df32f96a9947dbf98e (patch)
tree229b949060bb8825e321edf6c35417952e9e27c4 /include/linux
parent5d89e7cbac40057f5241a0832a86ce0fe97e4818 (diff)
iio: adc: pac1921: fix wrong channel used in trigger handler read
pac1921_trigger_handler() walks the enabled channels with iio_for_each_active_channel(), which yields the scan index (bit) of each active channel, while ch is a separate counter used to pack the samples contiguously into the scan buffer. The register to read was looked up with the packing counter instead of the scan index: ret = pac1921_read_res(priv, idev->channels[ch].address, &val); pac1921_channels[] is ordered by scan index, so channels[bit] is the channel that is actually enabled, whereas channels[ch] is merely the ch-th array entry. These coincide only when the enabled channels form a contiguous prefix (e.g. all channels enabled). With a sparse scan mask - for example when only the power channel (scan index 3) is enabled - the handler reads the wrong register (VBUS instead of VPOWER) and pushes it to userspace as the enabled channel's data. Index the channel array by the scan index (bit) to read the correct register, keeping ch only for contiguous packing into the scan buffer. Fixes: 371f778b83cd ("iio: adc: add support for pac1921") Cc: stable@vger.kernel.org Assisted-by: Claude:claude-opus-4 Signed-off-by: Cong Nguyen <congnt264@gmail.com> Acked-by: Matteo Martelli <matteomartelli3@gmail.com> Reviewed-by: David Lechner <dlechner@baylibre.com> Signed-off-by: Jonathan Cameron <jonathan.cameron@oss.qualcomm.com>
Diffstat (limited to 'include/linux')
0 files changed, 0 insertions, 0 deletions