Bestcomm tasks and interrupts on MPC5200(B)

Jon Smirl jonsmirl at gmail.com
Thu Jan 22 02:16:17 EST 2009


On Wed, Jan 21, 2009 at 7:57 AM, Dave Best <arieswar24b at yahoo.de> wrote:
> 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.

Current git kernel runs fine on the phytec board without patches.

Pengutronix makes the kernels for the phytec pcm030 boards. Their
2.6.23 kernel has probably been patched for real time support. If you
don't need real time there's no real downside to using current git.
Sascha may have some other patches that I'm unaware of.

>
>
> 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.
>
>
>
> _______________________________________________
> Linuxppc-dev mailing list
> Linuxppc-dev at ozlabs.org
> https://ozlabs.org/mailman/listinfo/linuxppc-dev
>



-- 
Jon Smirl
jonsmirl at gmail.com



More information about the Linuxppc-dev mailing list