一、emmc
emmc支持多种速率模式,这些模式均可以在dts中进行配置
1、legacy 模式
通过上面的代码可以看出,由于大部分的卡都是支持HS_52的,所以除非强制修改代码,修改card_type值为不支持HS_52,否则默认都是不进入legacy模式,而是进入high speed模式
2、high speed 模式
sdhci-caps-mask = <0x7 0x0>; // DDR50-SDR104-SDR50
cap-mmc-highspeed;
注意:添加sdhci-caps-mask 的原因是因为:
在代码中会判断host->cap1是否支持SDR104,而如果probe中手动传入cpas1的值的话,host->cap1的值是通过读取寄存器来获取的,同时会通过sdhci-caps-mask 来进行屏蔽。
所以需要在dts中添加sdhci-caps-mask ,屏蔽掉SDR104,这样就不会进入HS200了,否则代码会强制进入HS200
如果正常开机会有打印:
mmc0: new high speed MMC card at address 0001
3、DDR52模式
(1)dts中添加
sdhci-caps-mask = <0x6 0x0>; // DDR50-SDR104-SDR50
mmc-ddr-1_8v;
如果正常开机会有如下打印:
new DDR MMC card at address 0001
4、HS200模式
mmc-hs200-1_8v
如果正常开机会有如下打印:
mmc0: new HS200 MMC card at address 0001
5、HS400模式
mmc-ddr-1_8v;
mmc-hs200-1_8v;
mmc-hs400-1_8v;
如果正常开机会有如下打印:
mmc0: new HS400 MMC card at address 0001
6、HS400es模式
mmc-hs400-1_8v;
mmc-hs400-enhanced-strobe
如果正常开机会有如下打印:
mmc0: new HS400 Enhanced strobe MMC card at address 0001
二、SD卡
1、default模式
2、high speed模式
sdhci-caps-mask = <0x7 0x0>; // DDR50-SDR104-SDR50
cap-sd-highspeed;
mmc1: new high speed SDHC card at address aaaa
3、SDR12
4、SDR25
5、SDR50
sdhci-caps-mask = <0x6 0x0>; // DDR50-SDR104-SDR50
sd-uhs-sdr50;
6、SDR104
sd-uhs-sdr104;
7、DDR50
sdhci-caps-mask = <0x3 0x0>; // DDR50-SDR104-SDR50
sd-uhs-ddr50;
————————————————
版权声明:本文为CSDN博主「drm2017」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/drm2017/article/details/129086854