2008-05-24 10:33:34     video in-out.

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

2008-05-24 10:33:34     video in-out.

Pranay Upadhyay (INDIA)

Message: 56249   


Hello ,


    Can you explained me about the function used in the file  "arch/blackfin/mach-bf561/coreb.c" .The function is


static ssize_t coreb_write(struct file *file, const char *buf, size_t count,  loff_t * ppos)




static ssize_t coreb_read(struct file *file, char *buf, size_t count,  loff_t * ppos)


in these two function I am not getting the term   "CH_MEM_STREAM2_SRC,  coreb_base + p



       I am not getting that in the same read and write function ,How can we use source and destination channel for transmit.I want to use the ppi driver for video in-out.


please reply soon.May be my problem will be solve after this issue.








2008-05-26 00:16:20     Re: video in-out.


Message: 56260   


arch/blackfin/mach-bf561/coreb.c is a driver used by uclinux-dist/user/blkfin-apps/corebld to excecute a specially program on coreb. It has nothing to do with PPI.




2008-05-26 08:58:54     Re: video in-out.

Pranay Upadhyay (INDIA)

Message: 56272   


Hello YiLi,


Ok,I am asking that what is the meaning of that term used in this read and write function.Because when I am using the read and write function in the ppi driver for reading and writing function in same core B.Please explain about these two terms used in that function"CH_MEM_STREAM2_SRC,  coreb_base + p and CH_MEM_STREAM2_DEST. My ppi0 and ppi1 driver working properly but know I want real time video in-out after using these two driver.If  you have any idea about than please explain me clearly or tell me about some link.Thanks for your kind response.








2008-05-26 14:30:37     Re: video in-out.

Mike Frysinger (UNITED STATES)

Message: 56278   


just grep for them in the Blackfin headers ... they are simply numbers which represent some DMA channel




2008-05-27 08:56:03     Re: video in-out.

Pranay Upadhyay (INDIA)

Message: 56302   


Hello sir,


      In this read functoin may I use  /* Source Channel */ and   /* Destination Channel */ in the same functon. If in ppio I am using the dma1_0 channel for source and in ppi1 driver I am using the dma1_1 for destination.Then why In this function there are  both, source and destination. And also I have no clear about  the "loff_t * ppos".


       In my case ppi0 recieve the one frame and send to the ppi1 driver but just after sendinfg one frame there is not able to read the next frame.


      In read function I am using only one  /* Source Channel */  , there is no any  /* Destination Channel */ .If I got idea about   this then I want to use the both source and destination in the read function and only destination channel  in the write function.


        I am attatching the, my view for the video in-out for real time video. I am telling you that for single frame my both driver is working properly .


static ssize_t coreb_read(struct file *file, char *buf, size_t count,

     loff_t * ppos)


unsigned long p = *ppos;

ssize_t read = 0;


if ((p + count) > coreb_size)

  return -EFAULT;


while (count > 0) {

  int len = count;


  if (len > PAGE_SIZE)

   len = PAGE_SIZE;


  coreb_dma_done = 0;


  /* Source Channel */

  set_dma_start_addr(CH_MEM_STREAM2_SRC, coreb_base + p);

  set_dma_x_count(CH_MEM_STREAM2_SRC, len);

  set_dma_x_modify(CH_MEM_STREAM2_SRC, sizeof(char));

  set_dma_config(CH_MEM_STREAM2_SRC, RESTART);

  /* Destination Channel */

  set_dma_start_addr(CH_MEM_STREAM2_DEST, (unsigned long)buf);

  set_dma_x_count(CH_MEM_STREAM2_DEST, len);

  set_dma_x_modify(CH_MEM_STREAM2_DEST, sizeof(char));

  set_dma_config(CH_MEM_STREAM2_DEST, WNR | RESTART | DI_EN);





  wait_event_interruptible(coreb_dma_wait, coreb_dma_done);





  count -= len;

  read += len;

  buf += len;

  p += len;



return read;