On 07/18/2013 11:47 AM, Daniel Mack wrote: > Hi Balaji, > > On 18.07.2013 18:40, Balaji T K wrote: >> With DMA channel info retrieved from dt binding on 3.11rc1, >> unused_chan_list is broken after hwmod cleanup removing mmc sdma >> resource info, hence pdev resource wont have DMA resource populated. >> >> arch/arm/common/edma.c >> static int prepare_unused_channel_list(struct device *dev, void *data) >> { >> struct platform_device *pdev = to_platform_device(dev); >> int i, ctlr; >> >> for (i = 0; i < pdev->num_resources; i++) { >> if ((pdev->resource[i].flags & IORESOURCE_DMA) && >> (int)pdev->resource[i].start >= 0) { >> ctlr = EDMA_CTLR(pdev->resource[i].start); >> clear_bit(EDMA_CHAN_SLOT(pdev->resource[i].start), >> edma_cc[ctlr]->edma_unused); >> } >> } >> >> return 0; >> } >> >> int edma_alloc_channel(int channel, >> if (!unused_chan_list_done) { >> /* >> * Scan all the platform devices to find out the EDMA channels >> * used and clear them in the unused list, making the rest >> * available for ARM usage. >> */ >> ret = bus_for_each_dev(&platform_bus_type, NULL, NULL, >> prepare_unused_channel_list); >> if (ret < 0) >> return ret; >> >> unused_chan_list_done = true; >> } >> >> =========== >> >> with the below hack patch, edma is working fine with mmc on your 3.11rc1+ branch >> >> diff --git a/arch/arm/common/edma.c b/arch/arm/common/edma.c >> index a432e6c..5a19164 100644 >> --- a/arch/arm/common/edma.c >> +++ b/arch/arm/common/edma.c >> @@ -1262,8 +1262,8 @@ int edma_start(unsigned channel) >> if (test_bit(channel, edma_cc[ctlr]->edma_unused)) { >> pr_debug("EDMA: ESR%d %08x\n", j, >> edma_shadow0_read_array(ctlr, SH_ESR, j)); >> - edma_shadow0_write_array(ctlr, SH_ESR, j, mask); >> - return 0; >> +// edma_shadow0_write_array(ctlr, SH_ESR, j, mask); >> +// return 0; >> } >> >> /* EDMA channel with event association */ >> > > Yes, this in fact works for me as well. Thanks for the quick reply! What > would be the proper fix for this? Correct fix would be in the common EDMA driver to populate the unused channel list correctly as found by Balaji. Thanks, -Joel -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html