1 /* 2 * SPDX-FileCopyrightText: 2015-2022 Espressif Systems (Shanghai) CO LTD 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 7 #pragma once 8 9 #include <stdint.h> 10 #include "sdkconfig.h" 11 #include "soc/soc.h" 12 #include "soc/periph_defs.h" 13 14 //include soc related (generated) definitions 15 #include "soc/soc_caps.h" 16 #include "soc/soc_pins.h" 17 #include "soc/spi_reg.h" 18 #include "soc/spi_struct.h" 19 #include "soc/spi_pins.h" 20 #include "soc/gpio_sig_map.h" 21 #if SOC_MEMSPI_IS_INDEPENDENT 22 #include "soc/spi_mem_struct.h" 23 #include "soc/spi_mem_reg.h" 24 #endif 25 26 #ifdef __cplusplus 27 extern "C" { 28 #endif 29 30 #if CONFIG_IDF_TARGET_ESP32S2 31 #define SPI_FREAD_DIO 0 32 #define SPI_FREAD_QIO 0 33 #define SPI_FWRITE_DIO 0 34 #define SPI_FWRITE_QIO 0 35 #endif 36 37 /* 38 Stores a bunch of per-spi-peripheral data. 39 */ 40 typedef struct { 41 const uint8_t spiclk_out; //GPIO mux output signals 42 const uint8_t spiclk_in; 43 const uint8_t spid_out; 44 const uint8_t spiq_out; 45 const uint8_t spiwp_out; 46 const uint8_t spihd_out; 47 #if SOC_SPI_SUPPORT_OCT 48 const uint8_t spid4_out; 49 const uint8_t spid5_out; 50 const uint8_t spid6_out; 51 const uint8_t spid7_out; 52 #endif // SOC_SPI_SUPPORT_OCT 53 const uint8_t spid_in; //GPIO mux input signals 54 const uint8_t spiq_in; 55 const uint8_t spiwp_in; 56 const uint8_t spihd_in; 57 #if SOC_SPI_SUPPORT_OCT 58 const uint8_t spid4_in; 59 const uint8_t spid5_in; 60 const uint8_t spid6_in; 61 const uint8_t spid7_in; 62 #endif // SOC_SPI_SUPPORT_OCT 63 const uint8_t spics_out[SOC_SPI_MAX_CS_NUM]; // /CS GPIO output mux signals 64 const uint8_t spics_in; 65 const uint8_t spidqs_out; 66 const uint8_t spicd_out; 67 const uint8_t spiclk_iomux_pin; //IO pins of IO_MUX muxed signals 68 const uint8_t spid_iomux_pin; 69 const uint8_t spiq_iomux_pin; 70 const uint8_t spiwp_iomux_pin; 71 const uint8_t spihd_iomux_pin; 72 const uint8_t spics0_iomux_pin; 73 const uint8_t irq; //irq source for interrupt mux 74 const uint8_t irq_dma; //dma irq source for interrupt mux 75 const periph_module_t module; //peripheral module, for enabling clock etc 76 const int func; //function number for IOMUX 77 spi_dev_t *hw; //Pointer to the hardware registers 78 } spi_signal_conn_t; 79 80 extern const spi_signal_conn_t spi_periph_signal[SOC_SPI_PERIPH_NUM]; 81 82 #ifdef __cplusplus 83 } 84 #endif 85