Bestcomm tasks and interrupts on MPC5200(B)

Dave Best arieswar24b at yahoo.de
Wed Jan 21 23:57:38 EST 2009


Thanks for the driver. 
I am looking into this.

I still have some trouble to compile and use the driver:
- I currently use the 2.6.23.1 kernel source which was provide along with  the pcm030 board by Phytec. And i guess your driver was compile along with a newer driver as i can't find the "strict_strtoul" and "strict_strtol" functions in my kernel but i copied their source into my code. The same with "of_find_matching_node" which i tried to exchange with "of_find_compatible_node" but somehow my devicetree does not include the neccesay compatible types. Here I tried "of_find_node_by_type" with "soc" and it seemed to work.
The biggest problem seems to be "irq_create_of_mapping" for the localplus isr. It's giving me a kernel OOPS by trying to access data from 0x00000010.

If you could point out if I have to use a newer Kernel, and which, to solve these problems or how i can code around these with my current kernel source.


Anyway, I looked over your code and only found that you first create an interrupt routine for the localplus in general before creating the bestcomm task.
As far as I thought it was enough to create the bestcomm task and enable it. And it was upon Bestcomm to watch over its tasks and to look for interrupt sources according to their initiators/requestors to trigger their ISR.

In your example the local plus fifo would trigger its ISR when its done transfering the blocksize and reset the status bits and start over. The task would run its ISR when its buffer is filled to create a new one.

If thats the way to go, i will try it out.

Thanks
Dave

--- Grant Likely <grant.likely at secretlab.ca> schrieb am Di, 20.1.2009:

> Von: Grant Likely <grant.likely at secretlab.ca>
> Betreff: Re: Bestcomm tasks and interrupts on MPC5200(B)
> An: arieswar24b at yahoo.de
> CC: linuxppc-dev at ozlabs.org
> Datum: Dienstag, 20. Januar 2009, 17:04
> On Tue, Jan 20, 2009 at 6:15 AM, Dave Best
> <arieswar24b at yahoo.de> wrote:
> > I'm trying to write a driver which uses the Local
> Plus Bus on my MPC5200B and therefore have to use BestComm
> DMA, which requires me to use a Gen_BD task for data
> transfer with Local Plus.
> > I tried to follow the fec driver that is currently
> used and took a peek at the mpc52xx-ac97 driver which at
> least uses the same kind of bus as I.
> >
> > Initialising the task, resetting and enabling works
> fine. Even request_irq reports no error, but when I start a
> transfer it hangs and if I am lucky, an interrupt occurs
> after quite some time. But it's always the BestComm
> ethernet rx task which produces an RFIFO interrupt,
> presumably after the watchdog catches on.
> > If this happens my interrupt occurs to.
> 
> Are you using the LocalPlus fifo device for the transfer
> (you need to
> if you aren't)?
> 
> I've attached a test driver that demonstrates how to do
> FIFO only and
> FIFO+DMA transfers over the localplus bus.
> 
> g.
> 
> 
> 
> 
> -- 
> Grant Likely, B.Sc., P.Eng.
> Secret Lab Technologies Ltd.


      



More information about the Linuxppc-dev mailing list