diff options
| author | Praveen Talari <praveen.talari@oss.qualcomm.com> | 2026-07-16 12:08:45 +0530 |
|---|---|---|
| committer | Andi Shyti <andi.shyti@kernel.org> | 2026-07-28 17:39:10 +0200 |
| commit | 1275cbed80a740e4d56b6aff2745de9fce4818fa (patch) | |
| tree | 0db5c513d2507f79ad87d348218083c72fbbce64 /tools/perf/scripts/python/stackcollapse.py | |
| parent | b64f1a070904b46c741f22e963e4ff29347ef220 (diff) | |
i2c: qcom-geni: distinguish address-phase and data-phase NACK
The M_GP_IRQ_1 interrupt signals a NACK condition, but does not
distinguish whether it occurred during the address phase or the data
phase. The driver always attempted cancel and DMA FSM reset on any
NACK, which is incorrect for an address NACK since the DMA engine was
never armed and the hardware requires no recovery.
Add geni_i2c_check_addr_data_nack() to distinguish the two cases by
reading SE_GENI_M_GP_LENGTH after the NACK event. A zero value means
the address phase was NACKed (ADDR_NACK) and no DMA recovery is needed.
A non-zero value on a write transfer means a data byte was NACKed
(DATA_NACK) and the normal cancel and DMA FSM reset path must run.
Co-developed-by: Naresh Maramaina <naresh.maramaina@oss.qualcomm.com>
Signed-off-by: Naresh Maramaina <naresh.maramaina@oss.qualcomm.com>
Signed-off-by: Praveen Talari <praveen.talari@oss.qualcomm.com>
Reviewed-by: Mukesh Kumar Savaliya <mukesh.savaliya@oss.qualcomm.com>
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
Link: https://lore.kernel.org/r/20260716-fix_cancel_sequence_on_failure_for_i2c-v3-3-9091315a33a0@oss.qualcomm.com
Diffstat (limited to 'tools/perf/scripts/python/stackcollapse.py')
0 files changed, 0 insertions, 0 deletions
