fix(esp32p4): P4 touch channel 14 failure fix

Merges https://github.com/espressif/esp-idf/pull/17759

Core dump when using all touch channels on a P4 unless curr_chan is allowed to be 14
This commit is contained in:
Pete Kabaragoya
2025-10-21 21:11:13 -04:00
committed by laokaiyao
parent b6370af474
commit 450ee3366d
2 changed files with 5 additions and 5 deletions
@@ -64,6 +64,10 @@ void IRAM_ATTR touch_priv_default_intr_handler(void *arg)
touch_base_event_data_t data;
touch_ll_get_active_channel_mask(&data.status_mask);
int ch_offset = touch_ll_get_current_meas_channel() - TOUCH_MIN_CHAN_ID;
if (ch_offset < 0 || ch_offset >= (int)SOC_MODULE_ATTR(TOUCH, CHAN_NUM)) {
/* Not a valid channel */
return;
}
data.chan = g_touch->ch[ch_offset];
/* If the channel is not registered, return directly */
if (!data.chan) {
@@ -482,11 +482,7 @@ static inline void touch_ll_set_idle_channel_connect(touch_pad_conn_type_t type)
__attribute__((always_inline))
static inline uint32_t touch_ll_get_current_meas_channel(void)
{
uint32_t curr_chan = LP_TOUCH.chn_status.scan_curr;
HAL_ASSERT(curr_chan < 14);
// Workaround: the curr channel read 0 when the actual channel is 14
curr_chan = curr_chan == 0 ? 14 : curr_chan;
return curr_chan;
return LP_TOUCH.chn_status.scan_curr;
}
/**