我在我的微芯片 sama5d3 板的 debian linux(内核 4.18.8)启动时收到以下警告:
mmc0: unrecognised SCR structure version 4
mmc0: error -22 whilst initialising SD card
在喷了大约 30 次之后,我得到了以下信息并且 linux 启动完成
mmc0: host does not support reading read-only switch, assuming write-enable
mmc0: new SDHC card at address 0007
mmcblk0: mmc0:0007 SD4GB 3.71 GiB
我尝试了几种不同的 SD 卡并得到相同的结果,唯一的变化是版本号。
我在网上找到了以下内容https://groups.google.com/forum/#!topic/beagleboard/A4zfNvyMmVI:
SCR 是 MMC/SD 标准定义的寄存器,数据应该通过数据总线读取,而不是像大多数预定义寄存器那样通过 cmd 总线读取。TI HSMMC 驱动程序的 omap_hsmmc_request 函数尝试通过 DMA 读取 SCR 数据,这总是返回垃圾。有时 SCR 检查会通过,因为垃圾数据恰好是有效的 SCR 数据
linux 内核只是检查 SCR 版本是否不为 0,如果是,则会产生错误。
我的 mmc0 dts 文件如下:
mmc0: mmc@f0000000 {
pinctrl-0 = <&pinctrl_mmc0_clk_cmd_dat0 &pinctrl_mmc0_dat1_3>;
status = "okay";
slot@0 {
reg = <0>;
bus-width = <8>;
};
};
更新到内核 4.20 不再出现该错误。我无法准确确定哪个内核提交修复了它。有一些可能会发挥作用,但我无法确定完全适合。