60
60
#elif CONFIG_IDF_TARGET_ESP32P4
61
61
#include "esp32p4/rom/ets_sys.h"
62
62
#include "esp32p4/rom/gpio.h"
63
+ #include "hal/spi_ll.h"
63
64
#else
64
65
#error Target CONFIG_IDF_TARGET is not supported
65
66
#endif
@@ -639,9 +640,6 @@ spi_t *spiStartBus(uint8_t spi_num, uint32_t clockDiv, uint8_t dataMode, uint8_t
639
640
} else if (spi_num == HSPI ) {
640
641
DPORT_SET_PERI_REG_MASK (DPORT_PERIP_CLK_EN_REG , DPORT_SPI3_CLK_EN );
641
642
DPORT_CLEAR_PERI_REG_MASK (DPORT_PERIP_RST_EN_REG , DPORT_SPI3_RST );
642
- } else {
643
- DPORT_SET_PERI_REG_MASK (DPORT_PERIP_CLK_EN_REG , DPORT_SPI01_CLK_EN );
644
- DPORT_CLEAR_PERI_REG_MASK (DPORT_PERIP_RST_EN_REG , DPORT_SPI01_RST );
645
643
}
646
644
#elif CONFIG_IDF_TARGET_ESP32S3
647
645
if (spi_num == FSPI ) {
@@ -662,6 +660,31 @@ spi_t *spiStartBus(uint8_t spi_num, uint32_t clockDiv, uint8_t dataMode, uint8_t
662
660
DPORT_SET_PERI_REG_MASK (DPORT_PERIP_CLK_EN_REG , DPORT_SPI01_CLK_EN );
663
661
DPORT_CLEAR_PERI_REG_MASK (DPORT_PERIP_RST_EN_REG , DPORT_SPI01_RST );
664
662
}
663
+ #elif CONFIG_IDF_TARGET_ESP32P4
664
+ #pragma GCC diagnostic push
665
+ #pragma GCC diagnostic ignored "-Wunused-variable"
666
+ if (spi_num == FSPI ) {
667
+ PERIPH_RCC_ACQUIRE_ATOMIC (PERIPH_GPSPI2_MODULE , ref_count ) {
668
+ if (ref_count == 0 ) {
669
+ PERIPH_RCC_ATOMIC () {
670
+ spi_ll_enable_bus_clock (SPI2_HOST , true);
671
+ spi_ll_reset_register (SPI2_HOST );
672
+ spi_ll_enable_clock (SPI2_HOST , true);
673
+ }
674
+ }
675
+ }
676
+ } else if (spi_num == HSPI ) {
677
+ PERIPH_RCC_ACQUIRE_ATOMIC (PERIPH_GPSPI3_MODULE , ref_count ) {
678
+ if (ref_count == 0 ) {
679
+ PERIPH_RCC_ATOMIC () {
680
+ spi_ll_enable_bus_clock (SPI3_HOST , true);
681
+ spi_ll_reset_register (SPI3_HOST );
682
+ spi_ll_enable_clock (SPI3_HOST , true);
683
+ }
684
+ }
685
+ }
686
+ }
687
+ #pragma GCC diagnostic pop
665
688
#elif defined(__PERIPH_CTRL_ALLOW_LEGACY_API )
666
689
periph_ll_reset (PERIPH_SPI2_MODULE );
667
690
periph_ll_enable_clk_clear_rst (PERIPH_SPI2_MODULE );
0 commit comments