|
18 | 18 | #include "soc/lcd_cam_struct.h" |
19 | 19 | #include "soc/lcd_cam_reg.h" |
20 | 20 | #include "soc/gdma_struct.h" |
21 | | -#include "soc/gdma_periph.h" |
22 | 21 | #include "soc/gdma_reg.h" |
23 | 22 | #include "hal/clk_gate_ll.h" |
24 | 23 | #include "esp_private/gdma.h" |
|
36 | 35 | #define ets_delay_us(a) esp_rom_delay_us(a) |
37 | 36 | #endif |
38 | 37 |
|
| 38 | +#if (ESP_IDF_VERSION_MAJOR > 5) |
| 39 | +#include "soc/dport_access.h" |
| 40 | +#else |
| 41 | +#include "soc/gdma_periph.h" |
| 42 | +#endif |
| 43 | + |
39 | 44 | #if !defined(SOC_GDMA_PAIRS_PER_GROUP) && defined(SOC_GDMA_PAIRS_PER_GROUP_MAX) |
40 | 45 | #define SOC_GDMA_PAIRS_PER_GROUP SOC_GDMA_PAIRS_PER_GROUP_MAX |
41 | 46 | #endif |
@@ -235,16 +240,20 @@ static esp_err_t ll_cam_dma_init(cam_obj_t *cam) |
235 | 240 | // } |
236 | 241 | // } |
237 | 242 |
|
| 243 | +#if ESP_IDF_VERSION_MAJOR > 5 |
| 244 | + if (!(DPORT_REG_GET_BIT(SYSTEM_PERIP_RST_EN1_REG, SYSTEM_DMA_RST) == 0 && |
| 245 | + DPORT_REG_GET_BIT(SYSTEM_PERIP_CLK_EN1_REG, SYSTEM_DMA_CLK_EN) != 0)) { |
| 246 | + DPORT_CLEAR_PERI_REG_MASK(SYSTEM_PERIP_CLK_EN1_REG, SYSTEM_DMA_CLK_EN); |
| 247 | + DPORT_SET_PERI_REG_MASK(SYSTEM_PERIP_RST_EN1_REG, SYSTEM_DMA_RST); |
| 248 | + DPORT_SET_PERI_REG_MASK(SYSTEM_PERIP_CLK_EN1_REG, SYSTEM_DMA_CLK_EN); |
| 249 | + DPORT_CLEAR_PERI_REG_MASK(SYSTEM_PERIP_RST_EN1_REG, SYSTEM_DMA_RST); |
| 250 | + } |
| 251 | +#else |
238 | 252 | if (!periph_ll_periph_enabled(PERIPH_GDMA_MODULE)) { |
239 | 253 | periph_ll_disable_clk_set_rst(PERIPH_GDMA_MODULE); |
240 | 254 | periph_ll_enable_clk_clear_rst(PERIPH_GDMA_MODULE); |
241 | 255 | } |
242 | | - // if (REG_GET_BIT(SYSTEM_PERIP_CLK_EN1_REG, SYSTEM_DMA_CLK_EN) == 0) { |
243 | | - // REG_CLR_BIT(SYSTEM_PERIP_CLK_EN1_REG, SYSTEM_DMA_CLK_EN); |
244 | | - // REG_SET_BIT(SYSTEM_PERIP_CLK_EN1_REG, SYSTEM_DMA_CLK_EN); |
245 | | - // REG_SET_BIT(SYSTEM_PERIP_RST_EN1_REG, SYSTEM_DMA_RST); |
246 | | - // REG_CLR_BIT(SYSTEM_PERIP_RST_EN1_REG, SYSTEM_DMA_RST); |
247 | | - // } |
| 256 | +#endif |
248 | 257 | ll_cam_dma_reset(cam); |
249 | 258 | return ESP_OK; |
250 | 259 | } |
@@ -405,7 +414,12 @@ esp_err_t ll_cam_set_pin(cam_obj_t *cam, const camera_config_t *config) |
405 | 414 | esp_err_t ll_cam_init_isr(cam_obj_t *cam) |
406 | 415 | { |
407 | 416 | esp_err_t ret = ESP_OK; |
408 | | - ret = esp_intr_alloc_intrstatus(gdma_periph_signals.groups[0].pairs[cam->dma_num].rx_irq_id, |
| 417 | + ret = esp_intr_alloc_intrstatus( |
| 418 | +#if (ESP_IDF_VERSION_MAJOR > 5) |
| 419 | + ETS_DMA_IN_CH0_INTR_SOURCE + cam->dma_num, |
| 420 | +#else |
| 421 | + gdma_periph_signals.groups[0].pairs[cam->dma_num].rx_irq_id, |
| 422 | +#endif |
409 | 423 | ESP_INTR_FLAG_LOWMED | ESP_INTR_FLAG_SHARED | CAMERA_ISR_IRAM_FLAG, |
410 | 424 | (uint32_t)&GDMA.channel[cam->dma_num].in.int_st, GDMA_IN_SUC_EOF_CH0_INT_ST_M, |
411 | 425 | ll_cam_dma_isr, cam, &cam->dma_intr_handle); |
|
0 commit comments