1、首先修改dts,找到linux/arch/arm/boot/dtsimx6ull-14x14-evk.dts这里使能spi1在野火的dts里添加:
&ecspi1 {
fsl,spi-num-chipselects = <1>;
cs-gpios = <&gpio4 26 0>; //"cs-gpios 使用的会变成硬件自动使能,cs-gpios需要手动使能"
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_csi_ecspi1 &pinctrl_csi_ecspi1_cs0>;
status = "okay";
spidev0: spi@0 {
compatible = "spidev";
reg = <0>;
spi-max-frequency = <60000000>;
};
};
2、需要失能csi,因为csi和spi1共用同一种总线。然后pinctrl_csi_ecspi1,pinctrl_csi_ecspi1_cs0放入iomux
pinctrl_csi_ecspi1: csi_ecspi1_grp {
fsl,pins = <
MX6UL_PAD_CSI_DATA04__ECSPI1_SCLK 0x0b0b0 /* P8:28 */
MX6UL_PAD_CSI_DATA06__ECSPI1_MOSI 0x0b0b0 /* P8:24 */
MX6UL_PAD_CSI_DATA07__ECSPI1_MISO 0x0b0b0 /* P8:26 */
>;
};
pinctrl_csi_ecspi1_cs0: csi_ecspi1_cs0_grp {
fsl,pins = <
MX6UL_PAD_CSI_DATA05__GPIO4_IO26 0x0b0b0 /* P8:30 */
>;
};
3、make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- 进行编译新的设备树
4、下面就是驱动的编写,参考原子的代码与内核自带的代码,更改原子的驱动,不需要手动使能CS
脚,一个spi_message里包含两个spi_transfer就可以连续使能CS脚,如下图:
参考链接:http://bbs.elecfans.com/jishu_1911971_1_1.html