实验原理
参考原理图可知 eMMC 使用的是 sdmmc2 总线,当前所使用的设备树文件中没有sdmmc2 的支持,所以需要增加相关内容才能正常驱动 eMMC。
由于在使 STM32MP1 芯片很多管脚为多功能复用管脚,且很多管脚具备同样的功能,所以移植eMMC时需要确认硬件设计是使用的是那些管脚,根据原理图确认后管脚对应关系为:
1) eMMC 设备树节点
参考文档:
Documentation/devicetree/bindings/mmc/mmc-controller.yaml
Documentation/devicetree/bindings/mmc/mmci.txt
内核中 ST 对 STM32MP15x 系列芯片的设备树资源了做了定义,可参见:
arch/arm/boot/dts/stm32mp151.dtsi
stm32mp151 中 sdmmc2 定义如下:
sdmmc2: sdmmc@58007000 {
compatible = "arm,pl18x", "arm,primecell";
arm,primecell-periphid = <0x00253180>;
reg = <0x58007000 0x1000>, <0x58008000 0x1000>;
interrupts = <GIC_SPI 124 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "cmd_irq";
cloc