</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添加=====&#