6060#elif CONFIG_IDF_TARGET_ESP32P4
6161#include "esp32p4/rom/ets_sys.h"
6262#include "esp32p4/rom/gpio.h"
63+ #include "hal/spi_ll.h"
6364#else
6465#error Target CONFIG_IDF_TARGET is not supported
6566#endif
@@ -639,9 +640,6 @@ spi_t *spiStartBus(uint8_t spi_num, uint32_t clockDiv, uint8_t dataMode, uint8_t
639640 } else if (spi_num == HSPI ) {
640641 DPORT_SET_PERI_REG_MASK (DPORT_PERIP_CLK_EN_REG , DPORT_SPI3_CLK_EN );
641642 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 );
645643 }
646644#elif CONFIG_IDF_TARGET_ESP32S3
647645 if (spi_num == FSPI ) {
@@ -662,6 +660,29 @@ spi_t *spiStartBus(uint8_t spi_num, uint32_t clockDiv, uint8_t dataMode, uint8_t
662660 DPORT_SET_PERI_REG_MASK (DPORT_PERIP_CLK_EN_REG , DPORT_SPI01_CLK_EN );
663661 DPORT_CLEAR_PERI_REG_MASK (DPORT_PERIP_RST_EN_REG , DPORT_SPI01_RST );
664662 }
663+ #elif CONFIG_IDF_TARGET_ESP32P4
664+ if (spi_num == FSPI ) {
665+ PERIPH_RCC_ACQUIRE_ATOMIC (PERIPH_GPSPI2_MODULE , ref_count ) {
666+ if (ref_count == 0 ) {
667+ PERIPH_RCC_ATOMIC () {
668+ spi_ll_enable_bus_clock (SPI2_HOST , true);
669+ spi_ll_reset_register (SPI2_HOST );
670+ spi_ll_enable_clock (SPI2_HOST , true);
671+
672+ }
673+ }
674+ }
675+ } else if (spi_num == HSPI ) {
676+ PERIPH_RCC_ACQUIRE_ATOMIC (PERIPH_GPSPI3_MODULE , ref_count ) {
677+ if (ref_count == 0 ) {
678+ PERIPH_RCC_ATOMIC () {
679+ spi_ll_enable_bus_clock (SPI3_HOST , true);
680+ spi_ll_reset_register (SPI3_HOST );
681+ spi_ll_enable_clock (SPI3_HOST , true);
682+ }
683+ }
684+ }
685+ }
665686#elif defined(__PERIPH_CTRL_ALLOW_LEGACY_API )
666687 periph_ll_reset (PERIPH_SPI2_MODULE );
667688 periph_ll_enable_clk_clear_rst (PERIPH_SPI2_MODULE );
0 commit comments