Re: Problems with Freescale DMA driver

From: Ira Snyder
Date: Tue Sep 23 2008 - 12:43:34 EST


On Tue, Sep 23, 2008 at 11:10:05AM -0500, Timur Tabi wrote:
> (Removing various CC:'s since this thread is changing topic)
>
> Ira Snyder wrote:
>
> > I hope that makes sense. I can post the code if anyone would like to see
> > it. It is not ready for mainline inclusion yet, but it is in a fairly
> > good state.
>
> Well, it's a bit goofy, but it does make sense. Since you don't have an actual
> single-function PCI device, you need to use the MPC8349's DMA controller.
>
> I don't see where you need the ability to reserve a DMA channel, though. You're
> using fsldma.c as its intended.
>

Ok. I don't really care which channel I get, just that I get one. I
won't be adding or removing DMA devices from the system, so it shouldn't
be a problem.

> > Ok. I was just wondering, since drivers/dma/fsl_dma.c has some code that
> > appears to handle external master. It is 85XX specific though. There are
> > no users in the kernel tree showing example uses.
>
> Indeed it does. It looks like a feature that was thrown in but never given much
> thought or testing. It appears that the current code just lets you turn on the
> external master pause bit in the MR register, but there's nothing to make sure
> that it actually works in a meaningful way. If there's a queue of transfers for
> a given channel, I don't see where the fsldma avoids stalled queues.
>

That was also my impression. I'll probably start by programming the
registers directly, and hopefully come up with a nice interface. When I
figure it out, I'll send patches.

In this case, I probably would like to reserve a DMA channel for my
exclusive use. That way I won't run into problems by programming the DMA
by hand.

Thanks for all the input.
Ira
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/