mirror of
https://github.com/espressif/esp-idf.git
synced 2026-04-27 19:13:21 +00:00
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:
committed by
laokaiyao
parent
b6370af474
commit
450ee3366d
@@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user