2009-03-09 11:35:30 Missing PPI driver functionality
Leonid Volpert (UNITED STATES)
Message: 70616
I'm using PPI driver (dev/ppi0) for BF527 processor.
There are couple of features I'm currently missing:
The ability to set PPI width to 8 bit (CFG_PPI_DATALEN_8) and still use DMA 16 bit wide
It looks like the logic hardcoded in PPI driver (bfin_ppi.c) is to set DMA 16 bit wide only if PPI width is more than 8 bit
The ability to use circular buffer technique (in VisualDSP++ it was called ADI_DEV_CIRCULAR_BUFFER)
This technique increases performance of PPI interface significantly compare to regular software ping-pong approach.
Do I have to modify driver to use these features or I'm missing something?
Thank you for the help.
QuoteReplyEditDelete
2009-03-09 12:09:26 Missing PPI driver functionality
Michael Hennerich (GERMANY)
Message: 70617 Hi Leonid,
> The ability to set PPI width to 8 bit (CFG_PPI_DATALEN_8) and still use
>DMA 16 bit wide
Yes - you mean DMA packing. So far I didn't implement it since you always need multiple of 2 (even) transfer counts, in order to fill up the ppi packing unit.
>Do I have to modify driver to use these features or I'm missing something?
You can always add a feature request on our tracker.
However it can take some time. You are also welcome to add the functionality you are looking for your own and submit a patch.
-Michael
QuoteReplyEditDelete
2009-03-09 13:22:31 Re: Missing PPI driver functionality
Leonid Volpert (UNITED STATES)
Message: 70620
Thanks Michael.
But what about circular buffer (item #2 in original post)? Is it not implemented also?
QuoteReplyEditDelete
2009-03-10 04:54:19 Re: Missing PPI driver functionality
Michael Hennerich (GERMANY)
Message: 70676 I think you mean descriptor based DMA, where the descriptors are linked
in a circular list?
The /dev/ppi is just a simple PPI user space interface driver.
What most people do is create a special driver utilizing the kernel
level DMA driver API.
Examples for this are: All Blackfin video (/dev/fb) and v4l (/dev/video)
drivers. Check the linux-2.6.x/drivers/video/bfin_adv7393fb.c
framebuffer driver. This driver uses a circular linked DMA descriptor
list.
-Michael
2009-03-09 11:35:30 Missing PPI driver functionality
Leonid Volpert (UNITED STATES)
Message: 70616
I'm using PPI driver (dev/ppi0) for BF527 processor.
There are couple of features I'm currently missing:
The ability to set PPI width to 8 bit (CFG_PPI_DATALEN_8) and still use DMA 16 bit wide
It looks like the logic hardcoded in PPI driver (bfin_ppi.c) is to set DMA 16 bit wide only if PPI width is more than 8 bit
The ability to use circular buffer technique (in VisualDSP++ it was called ADI_DEV_CIRCULAR_BUFFER)
This technique increases performance of PPI interface significantly compare to regular software ping-pong approach.
Do I have to modify driver to use these features or I'm missing something?
Thank you for the help.
QuoteReplyEditDelete
2009-03-09 12:09:26 Missing PPI driver functionality
Michael Hennerich (GERMANY)
Message: 70617 Hi Leonid,
> The ability to set PPI width to 8 bit (CFG_PPI_DATALEN_8) and still use
>DMA 16 bit wide
Yes - you mean DMA packing. So far I didn't implement it since you always need multiple of 2 (even) transfer counts, in order to fill up the ppi packing unit.
>Do I have to modify driver to use these features or I'm missing something?
You can always add a feature request on our tracker.
However it can take some time. You are also welcome to add the functionality you are looking for your own and submit a patch.
-Michael
QuoteReplyEditDelete
2009-03-09 13:22:31 Re: Missing PPI driver functionality
Leonid Volpert (UNITED STATES)
Message: 70620
Thanks Michael.
But what about circular buffer (item #2 in original post)? Is it not implemented also?
QuoteReplyEditDelete
2009-03-10 04:54:19 Re: Missing PPI driver functionality
Michael Hennerich (GERMANY)
Message: 70676 I think you mean descriptor based DMA, where the descriptors are linked
in a circular list?
The /dev/ppi is just a simple PPI user space interface driver.
What most people do is create a special driver utilizing the kernel
level DMA driver API.
Examples for this are: All Blackfin video (/dev/fb) and v4l (/dev/video)
drivers. Check the linux-2.6.x/drivers/video/bfin_adv7393fb.c
framebuffer driver. This driver uses a circular linked DMA descriptor
list.
-Michael