为明远智睿 imx6q Demo v2.5 添加spi5的支持

第一步:在board-mx6q_sabresd.h 中添加spi5 的引脚定义

具体在 mx6q_sabresd_pads[]  数组中添加,如下示:(以下定义是根据硬件工程师要采用

哪个引脚画板决定的,以下的宏都是在bsp 中支持的)

/* ECSPI5 added by Rex 2015.4.21 */

MX6Q_PAD_SD2_CLK__ECSPI5_SCLK,

MX6Q_PAD_SD2_DAT0__ECSPI5_MISO,

MX6Q_PAD_SD2_CMD__ECSPI5_MOSI,

MX6Q_PAD_GPIO_7__ECSPI5_RDY,

MX6Q_PAD_SD2_DAT1__ECSPI5_SS0,

 

第二步:将与SD2 相关的引脚定义及函数注释(不然 spi5的管脚与sd2的管脚是冲突的)

1)board-mx6q_sabresd.h 的 mx6q_sabresd_pads[] 中

/* USDHC2 */

/* // sd2 canceled by Rex @ 2015.4.21

MX6Q_PAD_SD2_CLK__USDHC2_CLK,

MX6Q_PAD_SD2_CMD__USDHC2_CMD,

MX6Q_PAD_SD2_DAT0__USDHC2_DAT0,

MX6Q_PAD_SD2_DAT1__USDHC2_DAT1,

MX6Q_PAD_SD2_DAT2__USDHC2_DAT2,

MX6Q_PAD_SD2_DAT3__USDHC2_DAT3,

*/

2)board-mx6q_sabresd.c 中的 mx6_sabresd_board_init() 中

// canceled by Rex @ 2015.4.21 in case conflict between spi5 and sd2

//imx6q_add_sdhci_usdhc_imx(1, &mx6q_sabresd_sd2_data);

第三步:定义片选管脚对应的gpio

在board-mx6q_sabresd.c 中,文件头开始处添加

// spi5 support added by Rex @ 2015.4.20

#define SABRESD_ECSPI5_CS0  IMX_GPIO_NR(1, 14)

这个(1, 14)是根据MY-I.MX6-DEMO-V2.2_V2.5 硬件介绍.pdf 得来的。

我们想要定义 cs0 的gpio 查找 E20 有如下信息:

看到第5行关于gpio的信息即为(1, 14)得来的源由。

第四步:定义spi5的片选数组

// add spi5 cs support by Rex

static int mx6q_sabresd_spi5_cs[] = {

    SABRESD_ECSPI5_CS0,

};

 

第五步:定义spi5 的spi_imx_master 结构体变量

// add spi5 spi_imx_master member

static const struct spi_imx_master mx6q_sabresd_spi5_data __initconst = {

    .chipselect     = mx6q_sabresd_spi5_cs,

    .num_chipselect = ARRAY_SIZE(mx6q_sabresd_spi5_cs),

};

第六步:定义 spi5 的spi_board_info 结构体变量

// add spi_board_info member for spi5 by Rex

static struct spi_board_info imx6_sabresd_spi5_device[] __initdata = {

    {

        .modalias = "spidev",

        .max_speed_hz = 20000000, /* max spi clock (SCK) speed */

        .bus_num = 4,

        .chip_select = 0,

        .mode = SPI_MODE_0,

    },

};

第七步:定义spi5 设备初始化函数

// define spi5 init func by Rex @ 2015.4.21

static void spi5_device_init(void)

{

    spi_register_board_info(imx6_sabresd_spi5_device,

                ARRAY_SIZE(imx6_sabresd_spi5_device));

}

 

第八步:在 mx6_sabresd_board_init() 添加 spi5 的初始化代码

// rex add spi5 init 

imx6q_add_ecspi(4, &mx6q_sabresd_spi5_data);

spi5_device_init();

 

最后,重新编译内核,进行测试即可。

你可能感兴趣的:(demo)