1 /* 2 * Copyright (c) 2006-2023, RT-Thread Development Team 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 * 6 * Change Logs: 7 * Date Author Notes 8 * 2021-01-13 Lyons first version 9 * 2021-06-23 RiceChen refactor 10 */ 11 12 #ifndef __DRV_SPI_H__ 13 #define __DRV_SPI_H__ 14 15 #include <board.h> 16 #include "drv_common.h" 17 18 #include "fsl_iomuxc.h" 19 #include "fsl_clock.h" 20 #include "fsl_ecspi.h" 21 22 struct imx6ull_spi_cs 23 { 24 rt_uint32_t pin; 25 }; 26 27 struct imx6ull_spi_config 28 { 29 ECSPI_Type *ECSPI; 30 char *name; 31 32 rt_uint32_t clk_ip_name; 33 34 struct imx6ull_iomuxc clk_gpio; 35 struct imx6ull_iomuxc miso_gpio; 36 struct imx6ull_iomuxc mosi_gpio; 37 }; 38 39 struct imx6ull_spi_bus 40 { 41 struct rt_spi_bus parent; 42 struct imx6ull_spi_config *config; 43 }; 44 45 #ifdef BSP_USING_SPI1 46 #define SPI1_BUS_CONFIG \ 47 { \ 48 .ECSPI = ECSPI1, \ 49 .name = "spi1", \ 50 .clk_ip_name = kCLOCK_Ecspi1, \ 51 .clk_gpio = {IOMUXC_CSI_DATA04_ECSPI1_SCLK, 0, 0X10B1}, \ 52 .miso_gpio = {IOMUXC_CSI_DATA07_ECSPI1_MISO, 0, 0X10B1}, \ 53 .mosi_gpio = {IOMUXC_CSI_DATA06_ECSPI1_MOSI, 0, 0X10B1}, \ 54 } 55 #endif /* BSP_USING_SPI1 */ 56 57 #ifdef BSP_USING_SPI2 58 #define SPI2_BUS_CONFIG \ 59 { \ 60 .ECSPI = ECSPI2, \ 61 .name = "spi2", \ 62 .clk_ip_name = kCLOCK_Ecspi2, \ 63 .clk_gpio = {IOMUXC_UART4_TX_DATA_ECSPI2_SCLK, 0, 0X10B1}, \ 64 .miso_gpio = {IOMUXC_UART5_RX_DATA_ECSPI2_MISO, 0, 0X10B1}, \ 65 .mosi_gpio = {IOMUXC_UART5_TX_DATA_ECSPI2_MOSI, 0, 0X10B1}, \ 66 } 67 68 #endif /* BSP_USING_SPI2 */ 69 70 #ifdef BSP_USING_SPI3 71 #define SPI3_BUS_CONFIG \ 72 { \ 73 .ECSPI = ECSPI3, \ 74 .name = "spi3", \ 75 .clk_ip_name = kCLOCK_Ecspi3, \ 76 .clk_gpio = {IOMUXC_UART2_RX_DATA_ECSPI3_SCLK, 0, 0X10B1}, \ 77 .miso_gpio = {IOMUXC_UART2_RTS_B_ECSPI3_MISO, 0, 0X10B1}, \ 78 .mosi_gpio = {IOMUXC_UART2_CTS_B_ECSPI3_MOSI, 0, 0X10B1}, \ 79 } 80 81 #endif /* BSP_USING_SPI3 */ 82 83 #ifdef BSP_USING_SPI4 84 #define SPI4_BUS_CONFIG \ 85 { \ 86 .ECSPI = ECSPI4, \ 87 .name = "spi4", \ 88 .clk_ip_name = kCLOCK_Ecspi4, \ 89 .clk_gpio = {IOMUXC_ENET2_TX_DATA1_ECSPI4_SCLK, 0, 0X10B1}, \ 90 .miso_gpio = {IOMUXC_ENET2_TX_CLK_ECSPI4_MISO, 0, 0X10B1}, \ 91 .mosi_gpio = {IOMUXC_ENET2_TX_EN_ECSPI4_MOSI, 0, 0X10B1}, \ 92 } 93 94 #endif /* BSP_USING_SPI4 */ 95 96 rt_err_t rt_hw_spi_device_attach(const char *bus_name, const char *device_name, rt_uint32_t pin); 97 98 #endif 99