Dave,
Thanks for review comments.
>
> On Friday 24 April 2009, Sudhakar Rajashekhara wrote:
> > +struct edma {
> > + /* how many dma resources of each type */
> > + unsigned num_channels;
> > + unsigned num_region;
> > + unsigned num_slots;
> > + unsigned num_tc;
> > + unsigned num_cc;
> > +
> > + /* list of channels with no even trigger; terminated by "-1"
> */
> > + const s8 *noevent;
> > +
> > + /* The edma_inuse bit for each PaRAM slot is clear unless the
> > + * channel is in use ... by ARM or DSP, for QDMA, or
> whatever.
> > + */
> > + DECLARE_BITMAP(edma_inuse, EDMA_MAX_PARAMENTRY);
> > +
> > + /* The edma_noevent bit for each channel is clear unless
> > + * it doesn't trigger DMA events on this platform. It uses a
> > + * bit of SOC-specific initialization code.
> > + */
> > + DECLARE_BITMAP(edma_noevent, EDMA_MAX_DMACH);
> > +
> > + unsigned irq_start[EDMA_MAX_CC];
> > + unsigned irq_end[EDMA_MAX_CC];
>
> I don't quite see why those are arras... surely they should
> be single values?
I agree with you. I overlooked them when I moved these arrays
into the structure. They should be single values.
> And I'd have to look in more detail, to
> answer this, but *why* have irq_end when we know that it's
> going to be "irq_start + num_channels"?
I am using "irq_end" to know the last interrupt number which is
being used for EDMA (CCERR_INT is this case). irq_start and
irq_end are required inside the interrupt handler to know the CC
instance for which the interrupt has come.
>
>
> > +};
> > +
> > +struct edma edma_info[EDMA_MAX_CC];
>
> Normally I'd expect that should be an array of *pointers* that
> get allocated in probe(), but that may not be a big deal if
> it's just the difference between one and two such structs.
But I feel it's good to implement this. Will incorporate in the
next set of patches.
>
>
> > static struct dma_interrupt_data {
> > void (*callback)(unsigned channel, unsigned short ch_status,
> void *data);
> > void *data;
> > } intr_data[EDMA_MAX_DMACH];
>
> And I recall pointing out before that this is incorrect.
> EDMA_MAX_DMACH will be 64 (per channel controller), so
> if there are two such controllers ... that's not enough.
>
> Either that array should be part of the "struct edma" or
> it should be size "EDMA_MAX_DMACH * EDMA_MAX_CC". I'd
> tend to go for the former.
OK. Will take care of it when I submit the next set.
Regards, Sudhakar
_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source