summaryrefslogtreecommitdiff
path: root/components
diff options
context:
space:
mode:
authorYuqiang Wang <[email protected]>2024-04-10 06:33:29 +0800
committerGitHub <[email protected]>2024-04-09 18:33:29 -0400
commitd08ae0bfd149306331ec94e011fd60e3d5026419 (patch)
tree949b8a9dc10aa62cc11d3a3094631b7701ae872b /components
parent5bb902895c754b9f94cedd99cc680cc0d9b87eff (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.c5
-rw-r--r--components/drivers/spi/spi-bit-ops.h1
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);