imx7d 通过imx7d-sdb.dts 添加 spi设备

通过nxp yocto工程获得的kernel 对应的imx7d-sdb.dts并不包含spi设备(即 在/dev/下没有spidev0.0 和 spidev1.0),想要访问spi设备需要自己添加。废话不多说,下面说一下我自己添加的过程,本人亲测,有效。

linux kerel大概从2.6以后用dts把一些跟板级硬件配置相关的东东都放在了Device Tree Source中,一般放置在内核的arch/arm/boot/dts/目录。这样做的好处多多,有多少,自己百度。

我添加spi的过程如下:

1:打开 imx7d-sdb.dts

添加spi节点:

&ecspi1 {   
    fsl,spi-num-chipselects = <0>;
    pinctrl-names = "default";
    pinctrl-0 = <&pinctrl_ecspi1 &pinctrl_ecspi1_cs>;
    cs-gpios = <&gpio4 19 0>;     
    status = "okay";

        spidev@1 {
        spi-max-frequency = <48000000>;
        reg = <0>;
        compatible = "rohm,dh2228fv";
    };  
    
};

&ecspi2 {   
    fsl,spi-num-chipselects = <0>;
    pinctrl-names = "default";
    pinctrl-0 = <&pinctrl_ecspi2 &pinctrl_ecspi2_cs>;
    cs-gpios = <&gpio4 23 0>;     
    status = "okay";

        spidev@2 {
        spi-max-frequency = <48000000>;
        reg = <0>;
        compatible = "rohm,dh2228fv";
    };  

};

2:定义相关引脚
        pinctrl_ecspi1_cs: ecspi1_cs_grp {
            fsl,pins = <
                           MX7D_PAD_ECSPI1_SS0__GPIO4_IO19    0x80000000
            >;
        };

        pinctrl_ecspi1: ecspi1grp {
            fsl,pins = <
                MX7D_PAD_ECSPI1_SCLK__ECSPI1_SCLK    0x1
                MX7D_PAD_ECSPI1_MOSI__ECSPI1_MOSI    0x1
                MX7D_PAD_ECSPI1_MISO__ECSPI1_MISO    0x1
            >;
        };
                pinctrl_ecspi2_cs: ecspi2_cs_grp {
            fsl,pins = <
                           MX7D_PAD_ECSPI2_SS0__GPIO4_IO23     0x80000000
            >;
        };

        pinctrl_ecspi2: ecspi2grp {
            fsl,pins = <
                MX7D_PAD_ECSPI2_SCLK__ECSPI2_SCLK     0x1
                MX7D_PAD_ECSPI2_MOSI__ECSPI2_MOSI    0x1
                MX7D_PAD_ECSPI2_MISO__ECSPI2_MISO    0x1
            >;
        };

3:make;找到编译好的dtb(即imx7d-sdb.dtb),替换原来的dtb,注意名字要和uboot里面 fdt_file设置一样。

4:重启,ls /dev/spi*

spidev0.0  spidev1.0

大功告成,哈哈。

note:有些板子kernel会启动失败,我遇到的情况是spi引脚被别的设备占用了,在dts中注释掉被占用的引脚即可。

例如: uart6 ,udsh2

 

你可能感兴趣的:(dts)