Dave, > > This patch is needlessly intrusive and complex. [...]
I agree with you. > > - Define one new channel macros, along the lines of > > #define EDMA_CHANNEL(ctlr,chn) (((ctlr)<<10)|(chan)) > > Those values would be passed in IORESOURCE_DMA resources, > returned by edma_alloc_channel(), and accepted by all the > current interfaces accepting an EDMA channel. Of course > EDMA_CHANNEL_ANY would still work, but it could look at > more controllers than just the first one. I started off with something similar initially and I came till the point where I had to add an extra argument to edma_alloc_slot(). At this point, I thought of adding the EDMA CC instance as an argument to all the interfaces to maintain uniformity in the code. [...] > > - Slot allocation would need some change, because it would > need to be coupled to a controller (and thus its channels). > This should be the only driver-visible change. Meaning, this should be the only change that is visible to the drivers using EDMA. Right? [...] > > Those three calls for logical EDMA channel IDs should work > for slot IDs too: one to build IDs from a controller and > slot number, and two extracting those numbers from the ID. > Difference being that "raw" channel numbers are max 63, > while "raw' slot numbers can be bigger (I've seen 511). > > - Rather than converting static state to arrays, first > collect all that state into a "struct edma" or somesuch, > and have an array of those. Use platform_device.id to > say which instance is being configured, and configure > each instance normally in probe(). > I'll work on these comments and post the patches again. During this, in case of any doubts, I'll get back to you. Thanks, Sudhakar _______________________________________________ Davinci-linux-open-source mailing list [email protected] http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source
