1 /*
2  * Copyright (c) 2006-2018, RT-Thread Development Team
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  *
6  * Change Logs:
7  * Date             Author          Notes
8  * 2021-02-14       supperthomas    first version
9  */
10 
11 #include <rtthread.h>
12 #include <rtdevice.h>
13 #include <rthw.h>
14 
15 #include "spi.h"
16 
17 #ifndef __DRV_SPI_H_
18 #define __DRV_SPI_H_
19 
20 /**
21  * @brief Attach the spi device to SPI bus, this function must be used after initialization.
22  * @param bus_name     spi bus name  "spi0"/"spi1"/"spi2"
23  * @param device_name  spi device name "spi0x"/"spi1x"/"spi2x"
24  * @param ss_pin       spi ss pin number
25  * @retval  -RT_ERROR / RT_EOK
26 */
27 rt_err_t rt_hw_spi_device_attach(const char *bus_name, const char *device_name, rt_uint32_t ss_pin);
28 
29 //SPI bus config
30 #ifdef BSP_USING_SPI0
31 #define MCU_SPI0_CONFIG          \
32 {                                \
33     .bus_name = "spi0",          \
34     .spi_instance = SPI0A,       \
35 }
36 #endif
37 #ifdef BSP_USING_SPI1
38 #ifdef BSP_USING_SPI1A  //The SPI1A is conflit with UART1 TX RX P0.10 P0.11
39 #define MCU_SPI1_CONFIG          \
40 {                                \
41     .bus_name = "spi1",          \
42     .spi_instance = SPI1A        \
43 }
44 #else
45 #define MCU_SPI1_CONFIG          \
46 {                                \
47     .bus_name = "spi1",          \
48     .spi_instance = SPI1B        \
49 }
50 #endif
51 #endif
52 
53 struct mcu_drv_spi_config
54 {
55     char *bus_name;
56     spi_type spi_instance;
57 };
58 
59 struct mcu_drv_spi
60 {
61     spi_type spi_instance;
62     spi_req_t spixfer_req;
63     struct rt_spi_configuration *cfg;
64     struct rt_spi_bus spi_bus;
65 };
66 
67 #endif  /*__DRV_SPI_H_*/
68