[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [MiNT] Block devices



W dniu 29.08.2011 00:32, m0n0 pisze:

Am Sonntag, den 28.08.2011, 20:13 +0200 schrieb Adam Kłobukowski
<adamklobukowski@gmail.com>:
W dniu 28.08.2011 19:58, m0n0 pisze:

Yes it does. There is kernel infrastructure for DMA, and it is quite
simple, so writing drivers that use them is no big challenge.

Well, then you may don't mind explaining this a bit further? I'm
intertested in this because the Firebee TOS offers and DMA interface,
and it will be the way to go for an Coldfire-MiNT Network driver. OK,
There is DMA support within the kernel - but then I would at least
assume that I see some messages appear when booting FreeMiNT. Message of
drivers for the different DMA systems. I think about something like this:

[Driver XY for blitter DMA registered]

[Driver yx for Coldfire DMA registered] (of course, that one doesn't
exist, yet?)

and so on... But I can't see such thing and I think it is not hardwired
into the kernel. So I think I'm totally wrong here and don't know what
the kernel provides here... For what should I use the FreemMiNT DMA
functions? And who's filling the functions of the DMA struct? I mean -
DMA must be provided within the kernel for specific hardware with custom
code - but I can't find these routines.
Why should I uses the kernel DMA functions? For what purpose? I don't
get it. I don't see the benefit.

Information appreciated :)

Kernel only gives you infrastructure, and it is not really related with DMA in any way other then name :). Basically what it offers is 'unblocking' kernel while DMA operation is in progress, so something other may happen. After your DMA operation finishes, you have to notify dma infrastructure (from interrupt handler I suppose) that it is finished, and thats all. YOu have to handle one resource, a 'dma channel'

Everything is well explained in dma.c.

AdamK