driver: spi_slave: make sure CS helpers are in IRAM if the ISR is

Closes https://github.com/espressif/esp-idf/issues/3870
This commit is contained in:
Ivan Grokhotkov 2022-03-14 23:29:41 +01:00
parent 997844bbc3
commit 5a65ac50e0
No known key found for this signature in database
GPG Key ID: 1E050E141B280628

View File

@ -71,7 +71,7 @@ typedef struct {
static spi_slave_t *spihost[SOC_SPI_PERIPH_NUM];
static void IRAM_ATTR spi_intr(void *arg);
static void SPI_SLAVE_ISR_ATTR spi_intr(void *arg);
static inline bool is_valid_host(spi_host_device_t host)
{
@ -83,19 +83,19 @@ static inline bool is_valid_host(spi_host_device_t host)
#endif
}
static inline bool bus_is_iomux(spi_slave_t *host)
static inline bool SPI_SLAVE_ISR_ATTR bus_is_iomux(spi_slave_t *host)
{
return host->flags&SPICOMMON_BUSFLAG_IOMUX_PINS;
}
static void freeze_cs(spi_slave_t *host)
static void SPI_SLAVE_ISR_ATTR freeze_cs(spi_slave_t *host)
{
gpio_matrix_in(GPIO_FUNC_IN_HIGH, spi_periph_signal[host->id].spics_in, false);
}
// Use this function instead of cs_initial to avoid overwrite the output config
// This is used in test by internal gpio matrix connections
static inline void restore_cs(spi_slave_t *host)
static inline void SPI_SLAVE_ISR_ATTR restore_cs(spi_slave_t *host)
{
if (bus_is_iomux(host)) {
gpio_iomux_in(host->cfg.spics_io_num, spi_periph_signal[host->id].spics_in);