1 /*
2  * SPDX-FileCopyrightText: 2015-2022 Espressif Systems (Shanghai) CO LTD
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 
7 #include "soc/spi_periph.h"
8 #include "stddef.h"
9 
10 /*
11  Bunch of constants for every SPI peripheral: GPIO signals, irqs, hw addr of registers etc
12 */
13 const spi_signal_conn_t spi_periph_signal[SOC_SPI_PERIPH_NUM] = {
14     {
15         .spiclk_out = SPICLK_OUT_MUX_IDX,
16         .spiclk_in = 0,/* SPI clock is not an input signal*/
17         .spid_out = SPID_OUT_IDX,
18         .spiq_out = SPIQ_OUT_IDX,
19         .spiwp_out = SPIWP_OUT_IDX,
20         .spihd_out = SPIHD_OUT_IDX,
21         .spid_in = SPID_IN_IDX,
22         .spiq_in = SPIQ_IN_IDX,
23         .spiwp_in = SPIWP_IN_IDX,
24         .spihd_in = SPIHD_IN_IDX,
25         .spics_out = {SPICS0_OUT_IDX, SPICS1_OUT_IDX},/* SPI0/1 do not have CS2 now */
26         .spics_in = 0,/* SPI cs is not an input signal*/
27         .spiclk_iomux_pin = SPI_IOMUX_PIN_NUM_CLK,
28         .spid_iomux_pin = SPI_IOMUX_PIN_NUM_MOSI,
29         .spiq_iomux_pin = SPI_IOMUX_PIN_NUM_MISO,
30         .spiwp_iomux_pin = SPI_IOMUX_PIN_NUM_WP,
31         .spihd_iomux_pin = SPI_IOMUX_PIN_NUM_HD,
32         .spics0_iomux_pin = SPI_IOMUX_PIN_NUM_CS,
33         .irq = ETS_SPI1_INTR_SOURCE,
34         .irq_dma = -1,
35         .module = PERIPH_SPI_MODULE,
36         .hw = (spi_dev_t *) &SPIMEM1,
37         .func = SPI_FUNC_NUM,
38     }, {
39         .spiclk_out = FSPICLK_OUT_MUX_IDX,
40         .spiclk_in = FSPICLK_IN_IDX,
41         .spid_out = FSPID_OUT_IDX,
42         .spiq_out = FSPIQ_OUT_IDX,
43         .spiwp_out = FSPIWP_OUT_IDX,
44         .spihd_out = FSPIHD_OUT_IDX,
45         .spid4_out = FSPIIO4_OUT_IDX,
46         .spid5_out = FSPIIO5_OUT_IDX,
47         .spid6_out = FSPIIO6_OUT_IDX,
48         .spid7_out = FSPIIO7_OUT_IDX,
49         .spid_in = FSPID_IN_IDX,
50         .spiq_in = FSPIQ_IN_IDX,
51         .spiwp_in = FSPIWP_IN_IDX,
52         .spihd_in = FSPIHD_IN_IDX,
53         .spid4_in = FSPIIO4_IN_IDX,
54         .spid5_in = FSPIIO5_IN_IDX,
55         .spid6_in = FSPIIO6_IN_IDX,
56         .spid7_in = FSPIIO7_IN_IDX,
57         .spics_out = {FSPICS0_OUT_IDX, FSPICS1_OUT_IDX, FSPICS2_OUT_IDX, FSPICS3_OUT_IDX, FSPICS4_OUT_IDX, FSPICS5_OUT_IDX},
58         .spics_in = FSPICS0_IN_IDX,
59         .spiclk_iomux_pin = FSPI_IOMUX_PIN_NUM_CLK,
60         .spid_iomux_pin = FSPI_IOMUX_PIN_NUM_MOSI,
61         .spiq_iomux_pin = FSPI_IOMUX_PIN_NUM_MISO,
62         .spiwp_iomux_pin = FSPI_IOMUX_PIN_NUM_WP,
63         .spihd_iomux_pin = FSPI_IOMUX_PIN_NUM_HD,
64         .spics0_iomux_pin = FSPI_IOMUX_PIN_NUM_CS,
65         .irq = ETS_SPI2_INTR_SOURCE,
66         .irq_dma = ETS_SPI2_DMA_INTR_SOURCE,
67         .module = PERIPH_FSPI_MODULE,
68         .hw = &GPSPI2,
69         .func = FSPI_FUNC_NUM,
70     }, {
71         .spiclk_out = SPI3_CLK_OUT_MUX_IDX,
72         .spiclk_in = SPI3_CLK_IN_IDX,
73         .spid_out = SPI3_D_OUT_IDX,
74         .spiq_out = SPI3_Q_OUT_IDX,
75         //SPI3 doesn't have wp and hd signals
76         .spiwp_out = -1,
77         .spihd_out = -1,
78         .spid_in = SPI3_D_IN_IDX,
79         .spiq_in = SPI3_Q_IN_IDX,
80         .spiwp_in = -1,
81         .spihd_in = -1,
82         .spics_out = {SPI3_CS0_OUT_IDX, SPI3_CS1_OUT_IDX, SPI3_CS2_OUT_IDX},
83         .spics_in = SPI3_CS0_IN_IDX,
84         //SPI3 doesn't have iomux pins
85         .spiclk_iomux_pin = -1,
86         .spid_iomux_pin = -1,
87         .spiq_iomux_pin = -1,
88         .spiwp_iomux_pin = -1,
89         .spihd_iomux_pin = -1,
90         .spics0_iomux_pin = -1,
91         .irq = ETS_SPI3_INTR_SOURCE,
92         .irq_dma = ETS_SPI3_DMA_INTR_SOURCE,
93         .module = PERIPH_HSPI_MODULE,
94         .hw = &GPSPI3,
95         .func = -1,
96     }
97 };
98