2009-03-09 11:35:30     Missing PPI driver functionality

Document created by Aaronwu Employee on Aug 14, 2013
Version 1Show Document
  • View in full screen mode

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

Attachments

    Outcomes