spi_periph.c 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. /*
  2. * SPDX-FileCopyrightText: 2022-2023 Espressif Systems (Shanghai) CO LTD
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. */
  6. #include "soc/spi_periph.h"
  7. #include "stddef.h"
  8. /*
  9. Bunch of constants for every SPI peripheral: GPIO signals, irqs, hw addr of registers etc
  10. */
  11. const spi_signal_conn_t spi_periph_signal[SOC_SPI_PERIPH_NUM] = {
  12. {
  13. // MSPI on P4 has dedicated iomux pins
  14. .spiclk_out = -1,
  15. .spiclk_in = -1,
  16. .spid_out = -1,
  17. .spiq_out = -1,
  18. .spiwp_out = -1,
  19. .spihd_out = -1,
  20. .spid_in = -1,
  21. .spiq_in = -1,
  22. .spiwp_in = -1,
  23. .spihd_in = -1,
  24. .spics_out = {-1},
  25. .spics_in = -1,
  26. .spiclk_iomux_pin = -1,
  27. .spid_iomux_pin = -1,
  28. .spiq_iomux_pin = -1,
  29. .spiwp_iomux_pin = -1,
  30. .spihd_iomux_pin = -1,
  31. .spics0_iomux_pin = -1,
  32. .irq = -1,
  33. .irq_dma = -1,
  34. .module = -1,
  35. .hw = NULL,
  36. .func = -1,
  37. }, {
  38. .spiclk_out = SPI2_CK_PAD_OUT_IDX,
  39. .spiclk_in = SPI2_CK_PAD_IN_IDX,
  40. .spid_out = SPI2_D_PAD_OUT_IDX,
  41. .spiq_out = SPI2_Q_PAD_OUT_IDX,
  42. .spiwp_out = SPI2_WP_PAD_OUT_IDX,
  43. .spihd_out = SPI2_HOLD_PAD_OUT_IDX,
  44. .spid4_out = SPI2_IO4_PAD_OUT_IDX,
  45. .spid5_out = SPI2_IO5_PAD_OUT_IDX,
  46. .spid6_out = SPI2_IO6_PAD_OUT_IDX,
  47. .spid7_out = SPI2_IO7_PAD_OUT_IDX,
  48. .spid_in = SPI2_D_PAD_IN_IDX,
  49. .spiq_in = SPI2_Q_PAD_IN_IDX,
  50. .spiwp_in = SPI2_WP_PAD_IN_IDX,
  51. .spihd_in = SPI2_HOLD_PAD_IN_IDX,
  52. .spid4_in = SPI2_IO4_PAD_IN_IDX,
  53. .spid5_in = SPI2_IO5_PAD_IN_IDX,
  54. .spid6_in = SPI2_IO6_PAD_IN_IDX,
  55. .spid7_in = SPI2_IO7_PAD_IN_IDX,
  56. .spics_out = {SPI2_CS_PAD_OUT_IDX, SPI2_CS1_PAD_OUT_IDX, SPI2_CS2_PAD_OUT_IDX, SPI2_CS3_PAD_OUT_IDX, SPI2_CS4_PAD_OUT_IDX, SPI2_CS5_PAD_OUT_IDX},
  57. .spics_in = SPI2_CS_PAD_IN_IDX,
  58. .spiclk_iomux_pin = SPI2_IOMUX_PIN_NUM_CLK,
  59. .spid_iomux_pin = SPI2_IOMUX_PIN_NUM_MOSI,
  60. .spiq_iomux_pin = SPI2_IOMUX_PIN_NUM_MISO,
  61. .spiwp_iomux_pin = SPI2_IOMUX_PIN_NUM_WP,
  62. .spihd_iomux_pin = SPI2_IOMUX_PIN_NUM_HD,
  63. .spics0_iomux_pin = SPI2_IOMUX_PIN_NUM_CS,
  64. .irq = ETS_SPI2_INTR_SOURCE,
  65. .irq_dma = -1,
  66. .module = PERIPH_GPSPI2_MODULE,
  67. .hw = &GPSPI2,
  68. .func = SPI2_FUNC_NUM,
  69. }, {
  70. .spiclk_out = SPI3_CK_PAD_OUT_IDX,
  71. .spiclk_in = SPI3_CK_PAD_IN_IDX,
  72. .spid_out = SPI3_D_PAD_OUT_IDX,
  73. .spiq_out = SPI3_QO_PAD_OUT_IDX,
  74. //SPI3 doesn't have wp and hd signals
  75. .spiwp_out = SPI3_WP_PAD_OUT_IDX,
  76. .spihd_out = SPI3_HOLD_PAD_OUT_IDX,
  77. .spid_in = SPI3_D_PAD_IN_IDX,
  78. .spiq_in = SPI3_Q_PAD_IN_IDX,
  79. .spiwp_in = SPI3_WP_PAD_IN_IDX,
  80. .spihd_in = SPI3_HOLD_PAD_IN_IDX,
  81. .spics_out = {SPI3_CS_PAD_OUT_IDX, SPI3_CS1_PAD_OUT_IDX, SPI3_CS2_PAD_OUT_IDX},
  82. .spics_in = SPI3_CS_PAD_IN_IDX,
  83. //SPI3 doesn't have iomux pins
  84. .spiclk_iomux_pin = -1,
  85. .spid_iomux_pin = -1,
  86. .spiq_iomux_pin = -1,
  87. .spiwp_iomux_pin = -1,
  88. .spihd_iomux_pin = -1,
  89. .spics0_iomux_pin = -1,
  90. .irq = ETS_SPI3_INTR_SOURCE,
  91. .irq_dma = -1,
  92. .module = PERIPH_GPSPI3_MODULE,
  93. .hw = &GPSPI3,
  94. .func = -1,
  95. }
  96. };