diff options
| author | Yuqiang Wang <[email protected]> | 2024-04-10 06:33:29 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2024-04-09 18:33:29 -0400 |
| commit | d08ae0bfd149306331ec94e011fd60e3d5026419 (patch) | |
| tree | 949b8a9dc10aa62cc11d3a3094631b7701ae872b /components | |
| parent | 5bb902895c754b9f94cedd99cc680cc0d9b87eff (diff) | |
[driver][soft-spi] spi device driver framework adds pin init function function
为什么提交这份PR (why to submit this PR)
ps:在设备初始化阶段不应该存在对硬件的操作
你的解决方案是什么 (what is your solution)
ps:添加一个pin_init函数,在spi设备使用时调用该函数来完成硬件引脚的状态初始化,而不是在设备初始化阶段对硬件进行操作,已经在瑞萨HMI上通过验证
Diffstat (limited to 'components')
| -rw-r--r-- | components/drivers/spi/spi-bit-ops.c | 5 | ||||
| -rw-r--r-- | components/drivers/spi/spi-bit-ops.h | 1 |
2 files changed, 6 insertions, 0 deletions
diff --git a/components/drivers/spi/spi-bit-ops.c b/components/drivers/spi/spi-bit-ops.c index d03e5007cf..f551741873 100644 --- a/components/drivers/spi/spi-bit-ops.c +++ b/components/drivers/spi/spi-bit-ops.c @@ -384,6 +384,11 @@ rt_err_t spi_bit_configure(struct rt_spi_device *device, struct rt_spi_configura RT_ASSERT(device != RT_NULL); RT_ASSERT(configuration != RT_NULL); + if(ops->pin_init != RT_NULL) + { + ops->pin_init(); + } + if (configuration->mode & RT_SPI_SLAVE) { return -RT_EIO; diff --git a/components/drivers/spi/spi-bit-ops.h b/components/drivers/spi/spi-bit-ops.h index b536b3d81e..d1e83cdedd 100644 --- a/components/drivers/spi/spi-bit-ops.h +++ b/components/drivers/spi/spi-bit-ops.h @@ -21,6 +21,7 @@ extern "C" { struct rt_spi_bit_ops { void *data; /* private data for lowlevel routines */ + void (*const pin_init)(void); void (*const tog_sclk)(void *data); void (*const set_sclk)(void *data, rt_int32_t state); void (*const set_mosi)(void *data, rt_int32_t state); |
