第十四章 SPI的配置

从数据手册中可以了解到,SSD20X有2个SPI接口,一个已经用于SPIFlash,因此供开发者使用的只有一个SPI接口。

如果需要开启SPI接口,则需要将DTS中的status改为ok:

# vi infinity2m.dtsi
spinandflash {
            compatible = "ms-spinand";
            clocks =<&CLK_bdma>;
            status = "ok";
        };

        spi: spi {
            compatible = "sstar_spi";
            io_phy_addr = <0x1f000000>;
            banks = <0x1110>,<0x1111>,<0x1038>,<0x101E>,<0x100B>;
            clocks = <&CLK_mspi0>;
            interrupts = <GIC_SPI INT_IRQ_MSPI_0 IRQ_TYPE_LEVEL_HIGH>;
            /*
             * padmux:
             * mode=1: PAD_PM_SD_CDZ,PAD_SD_D1,PAD_SD_D0,PAD_SD_CLK,PAD_SD_CMD
             * mode=2: PAD_TTL16,PAD_TTL17,PAD_TTL18,PAD_TTL19
             * mode=3: PAD_GPIO4,PAD_GPIO5,PAD_GPIO6,PAD_GPIO7
             * mode=4: PAD_FUART_RX,PAD_FUART_TX,PAD_FUART_CTS,PAD_FUART_RTS
             * mode=5: PAD_GPIO8,PAD_GPIO9,PAD_GPIO10,PAD_GPIO11
             * mode=6: PAD_GPIO0,PAD_GPIO1,PAD_GPIO2,PAD_GPIO3
             */
            dma = <1>;
            spi0_mode = <2>;
            status = "ok";
        };

        spidev: spidev {
            compatible = "spidev";
        status = "ok";
        };

接着将对应的引脚配置为SPI_MODE:

# vi infinity2m-ssc011a-s01a-padmux-display.dtsi
    //<PAD_PM_SPI_CZ  >,                // default not-GPIO
    //<PAD_PM_SPI_CK  >,                // default not-GPIO
    //<PAD_PM_SPI_DI  >,                // default not-GPIO
    //<PAD_PM_SPI_DO  >,                // default not-GPIO
    //<PAD_PM_SPI_WPZ  >,               // default not-GPIO
    //<PAD_PM_SPI_HLD  >,               // default not-GPIO

这里由于默认已经设置为SPI_MODE,因此只需要保证不被配置为其他功能即可。最后加载MSPI驱动:

# cd kernel && ARCH=arm make menuconfig

文档更新时间: 2021-01-13 14:22   作者:Aeeditor