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

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

  • Created
Was this helpful?

Before You Switch


Switching languages will make ADI Explorer unavailable. Resume your session by switching back to English and reopening ADI Explorer.