MPC8xx and IDMA !?!?
Steven Scholz
steven.scholz at imc-berlin.de
Fri Apr 19 22:00:49 EST 2002
To whom it may concern,
> a while ago (aprox. kernel 2.4.11) I succesfully played around with IDMA
> on MPC855/860.
> ...
> The code is NOT working on recent kernels (I pulled it yesterday).
> I set up the IDMA. Trigger DREQ0 using a GPIO pin. SDMACK1 is going LOW
> but then instead of toggeling it just stays LOW. And instead of
> transfering data the MPC8xx just hangs.
>
> Have there been changes in the DPRAM layout ..?
I (think I) figured out the problem:
I use
m8xx_cpm_dpalloc( sizeof(idma_bd_t) );
to allocate space for the buffer descriptors in the DP ram.
The User Man says "Note that IBASE should be burst-aligned (divisible by
16)"
(Does the English "should be" means "have to be, otherwise everything
goes wrong!"???)
The older kernel versions always returned (by pure accident?) a
burst-aligned address (%16) (e.g. 0x850 offset from dpmem start). So
everything was fine.
The newer kernels return (by pure accident?) a NON burst-aligned address
(e.g. 0x0918) und the IDMA crashes.
So my workaround for now is to allocate more than I need and correct the
value for IBASE like
ibase += ibase % 16
Could anyone think of a better solution? Since I waste at least 16 bytes
in the DPRAM.
BTW:
Where is Wolfgangs m8xx_cpm_dpfree() !?!?
I can't find it in the recent source trees.
Cheers,
Steven
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
More information about the Linuxppc-embedded
mailing list