在beaglebone黑色上设置mmc2

时间:2014-01-28 12:04:36

标签: beagleboneblack

我正在使用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

感谢您的帮助。

1 个答案:

答案 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";