一、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文章来源:https://www.toymoban.com/news/detail-725651.html
sd-uhs-sdr104;
7、DDR50文章来源地址https://www.toymoban.com/news/detail-725651.html
sdhci-caps-mask = <0x3 0x0>; // DDR50-SDR104-SDR50
sd-uhs-ddr50;
到了这里,关于linux如何配置emmc和sd卡的各种速率的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!