spi驱动流程学习

本文档主要探讨了SPI驱动的工作流程,通过分析代码和提供百度网盘中的参考代码资源,帮助读者深入理解SPI通信协议在实际应用中的实现细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

</pre><pre code_snippet_id="1593617" snippet_file_name="blog_20160301_2_3014540" name="code" class="cpp">
diff --git a/1980c/base/kernel/linux-3.10/arch/arm/configs/M88_phone_v1_0_defconfig b/1980c/base/kernel/linux-3.10/arch/arm/configs/M88_phone_v1_0_defconfig
index a4e81bb..b15afeb 100755
--- a/1980c/base/kernel/linux-3.10/arch/arm/configs/M88_phone_v1_0_defconfig
+++ b/1980c/base/kernel/linux-3.10/arch/arm/configs/M88_phone_v1_0_defconfig
@@ -380,7 +380,7 @@ CONFIG_MMC_COMIP_IOPOWER=y
 CONFIG_ON2_COMIP=y
 CONFIG_PWM_COMIP=y
 CONFIG_RESET_COMIP=y
-# CONFIG_SPI_COMIP is not set
+CONFIG_SPI_COMIP=y
 # CONFIG_TPZ_COMIP is not set
 # CONFIG_TPZ2_COMIP is not set
 
@@ -1833,6 +1833,7 @@ CONFIG_DEVMEM=y
 # CONFIG_SERIAL_MAX310X is not set
 CONFIG_SERIAL_CORE=y
 CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_SERIAL_SC16IS7X2=y
 # CONFIG_SERIAL_SCCNXP is not set
 # CONFIG_SERIAL_TIMBERDALE is not set
 # CONFIG_SERIAL_ALTERA_JTAGUART is not set
@@ -1905,7 +1906,7 @@ CONFIG_SPI_MASTER=y
 #
 # SPI Protocol Masters
 #
-# CONFIG_SPI_SPIDEV is not set
+CONFIG_SPI_SPIDEV=y
 # CONFIG_SPI_TLE62X0 is not set
 
 #
diff --git a/1980c/base/kernel/linux-3.10/arch/arm/mach-lc186x/board/board-M88.c b/1980c/base/kernel/linux-3.10/arch/arm/mach-lc186x/board/board-M88.c
index 9fc4a01..65e4bdb 100755
--- a/1980c/base/kernel/linux-3.10/arch/arm/mach-lc186x/board/board-M88.c
+++ b/1980c/base/kernel/linux-3.10/arch/arm/mach-lc186x/board/board-M88.c
@@ -28,6 +28,11 @@
 #include <plat/comip-backlight.h>
 #include <plat/comip-thermal.h>
 #include <plat/comip-battery.h>
+#if defined(CONFIG_SPI_COMIP) || defined(CONFIG_SPI_COMIP_MODULE)
+#include <linux/spi/spi.h>
+#include <plat/spi.h>
+#include <mach/devices.h>
+#endif
 #if defined(CONFIG_COMIP_LC1160)
 #include <plat/lc1160.h>
 #include <plat/lc1160-pmic.h>
@@ -61,6 +66,166 @@
 #include <linux/mpu.h>
 #endif
 
+#if defined(CONFIG_SPI_COMIP) || defined(CONFIG_SPI_COMIP_MODULE)
+#include <linux/serial_sc16is7x2.h>
+
+static struct sc16is7x2_platform_data sc16is7x2_pdata = {
+	.uartclk = 115200,
+	.uart_base = 0,
+	.gpio_base = 0,
+	.label = NULL,
+	.names = NULL,
+	.gpio_for_irq =12345,
+	.gpio_for_reset =12345,
+};
+
+//挂在spi0上的从设备数组
+static struct spi_board_info comip_spi_board_info[] = {
+	{//挂在spi0上的第一个从设备
+		.modalias = "sc16is7x2",//从设备的别名,用来和从设备的驱动进行关联
+		.platform_data = &sc16is7x2_pdata,//如果从设备有需要传入驱动的私有数据,则通过该属性传入
+		.controller_data = NULL,
+		.irq = 0,//此处忽略,在从设备probe中会重新赋值
+		.max_speed_hz = 100000,
+		.bus_num = 0,//用来标识该从设备挂载在哪个spi控制器上
+		.chip_select = 0,//使用第几个片选信号,一个spi控制器能支持片选总个数由master->num_chipselect 确定。所以此处的值应介于0 ~ master->num_chipselect之间。
+		.mode = SPI_MODE_0,
+	},
+
+//测试spidev.c添加=====&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YasinLeeX

再来一杯西湖龙井。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值