1 /*
2  * Copyright (c) 2006-2025, RT-Thread Development Team
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  *
6  * Change Logs:
7  * Date           Author       Notes
8  * 2023-04-14     Wangyuqiang  the first version
9  */
10 
11 #ifndef __DRV_SOFT_SPI__
12 #define __DRV_SOFT_SPI__
13 
14 #include <rthw.h>
15 #include <rtdevice.h>
16 #include <dev_spi_bit_ops.h>
17 
18 /* ra soft spi config */
19 struct ra_soft_spi_config
20 {
21     rt_base_t sck;
22     rt_base_t mosi;
23     rt_base_t miso;
24     const char *bus_name;
25 };
26 
27 /* ra soft spi dirver */
28 struct ra_soft_spi
29 {
30     struct rt_spi_bit_obj spi;
31     struct rt_spi_bit_ops ops;
32     struct ra_soft_spi_config *cfg;
33 };
34 
35 #ifdef BSP_USING_SOFT_SPI1
36 #define SOFT_SPI1_BUS_CONFIG                                    \
37     {                                                       \
38         .sck = BSP_S_SPI1_SCK_PIN,                          \
39         .mosi = BSP_S_SPI1_MOSI_PIN,                        \
40         .miso = BSP_S_SPI1_MISO_PIN,                        \
41         .bus_name = "sspi1",                                \
42     }
43 #endif /* BSP_USING_SOFT_SPI1 */
44 #ifdef BSP_USING_SOFT_SPI2
45 #define SOFT_SPI2_BUS_CONFIG                                    \
46     {                                                       \
47         .sck = BSP_S_SPI2_SCK_PIN,                          \
48         .mosi = BSP_S_SPI2_MOSI_PIN,                        \
49         .miso = BSP_S_SPI2_MISO_PIN,                        \
50         .bus_name = "sspi2",                                \
51     }
52 #endif /* BSP_USING_SOFT_SPI2 */
53 
54 rt_err_t rt_soft_spi_device_attach(const char *bus_name, const char *device_name, rt_base_t cs_pin);
55 int rt_soft_spi_init(void);
56 
57 #endif /* __DRV_SOFT_SPI__ */
58