On Mon, Jan 11, 2016 at 9:54 AM, <[email protected]> wrote: > It looks to me like the problem came about because the function > prepare_unused_channel_list() in arch/arm/common/edma.c for 4.1 kernels was > modified to use the device tree for determining which dma channels to > enable (by clearing appropriate edma_unused bits in the edma struct). > However, this function is called before processing of the cape device tree > overlays begins. Since the base dtbo files do not have appropriate > references to the McASPs, their dmas are not enabled. When the cape is > loaded, it appears that everything works, but since dma is not enabled, the > required dma transfers do not occur. Hence the underrun errors for play > and overrun errors for record. > > A simple workaround that worked for me was to add the following to > arch/arm/boot/dts/am335x-boneblack.dts: > > &mcasp0 { > status = "okay"; > }; > > This may not be the best solution. It seems to me that a better solution > would be to modify the kernel so that if a device that uses DMA is enabled > by a device tree overlay, the kernel would enable the DMA when it parses > the overlay. However, I have practically no experience or knowledge of > Linux at the kernel level, so may be completely off base. >
Nice find! (this explains why spidev0/spidev1 don't work, without my dma disable hack) For v4.1.x, i wonder if we just enable everything like you did for mcasp0 by default.. in the <device>-overlay.dtb's.. Regards, -- Robert Nelson https://rcn-ee.com/ -- For more options, visit http://beagleboard.org/discuss --- You received this message because you are subscribed to the Google Groups "BeagleBoard" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
