我正在使用Beaglebone Black,我想使用mmc2插槽。
根据AM335xx TRM,beaglebone black应该有3 mmc可用: mmc0(SD卡); mmc1(2G闪光灯), MMC2。
我正在尝试通过设备树启用mmc2(我确信有正确的引脚设置)但是,通过执行 dmesg的 我得到了:
/ocp/mmc@47810000: can't find DMA channel
omap_hsmmc mmc.11: unable to obtain RX DMA engine channel 65
通过将示波器探头放在接头上(例如mmc2 clk信号),我看不到任何转换。 我已经删除了R 160以使mmc2 cmd可以访问,但我也没有看到任何转换。
我试过通过
启用它 echo > /sys/devices/..../slots
和
capemgr.enable_partno
没有成功: 我可以在
中看到它/sys/devices/..../slots
(加载了L意思)..但无法在标题上看到任何信号。
我已经用Google搜索了,但答案根本不清楚。 有什么想法吗?
我的
uname -a
是:
Linux beaglebone 3.8.13 #1 SMP Tue Jun 18 02:11:09 EDT 2013 armv7l GNU/Linux
感谢您的帮助。
答案 0 :(得分:3)
您需要将mmc2 DMA事件配置为某个DMA通道,因为这些事件不是直接映射的。
我无法使用设备树叠加功能成功完成此操作。所以我做了一个改变 am335-x-bone-common.dtsi直接(不确定这是最好的方法):
&edma {
ti,edma-xbar-event-map = <32 12>, /* gpevt2 -> 12 */
<30 20>, /* xdma_event_intr2 -> 20 */
+ <1 32>,
+ <2 33>;
};
在上面的示例中,事件1(SDTXEVT2)映射到通道32,事件2(SDRXEVT2)映射到通道33。
如果您想要选择另一个打开的DMA通道,请检查表11-23。直接映射和表11-24。 Crossbar从技术参考手册Rev J。
中映射在设备树覆盖文件中,在mmc3节点中添加这些通道:
dmas = <&edma 32
&edma 33>;
dma-names = "tx", "rx";