>Greetings,
>
>has anyone ever successfully run ivtv on an ARM processor?  I'm running linux 
>2.6.18.6 on an IXP425 xscale CPU and a YUAN MPC622 card (cx23416) and am 
>having issues with DMA.  I'm not sure the arm-linux architecture supports the 
>scatter-gather DMA being used.  I've tried to force using PIO via #define 
>IVTV_ENC_PIO 1 but that seems to fail as well.
>
>Before I post a question to the arm-linux list any suggestions or explanations 
>of what ivtv is using for DMA (looks like scatter-gather dma list?).
>

I've determined from the source that ivtv is not big-endian safe but after 
fixing a couple of obvious endian issues regarding (looking at the buffer to 
ensure it starts with 0x0000001fe in ivtv_FROM_DMA_done) I'm able to get it to 
run on my ARM big-endian platform using PIO, but not DMA.  

Here are some follow-up questions for the list:
  
 - any areas I should be looking at for endianess issues? I believe 
readl/writel should be byteswapped for arm-linux so register read/writes should 
be ok, correct?

- I've only been able to get the driver to work using PIO (IVTV_USE_PIO=1) - 
when I use DMA the DMA transfer never appears to start and I get the following 
errors:
ivtv0 warning: ENC: REG_DMAXFER 2 wait failed
ivtv0 warning: ENC: (0) DMA Error 0x00000001 00000001
ivtv0 warning: ENC: REG_DMAXFER 2 wait failed
ivtv0 warning: ENC: (1) DMA Error 0x00000001 00000001
ivtv0 warning: ENC: REG_DMAXFER 2 wait failed
ivtv0 warning: ENC: (2) DMA Error 0x00000001 00000001
ivtv0 warning: ENC: REG_DMAXFER 2 wait failed
ivtv0 warning: ENC: (3) DMA Error 0x00000001 00000001
ivtv0 warning: ENC: REDO DMA took too many tries.
ivtv0 warning: Error Encoder DMA

- using PIO I occasionally get interrupts for  IVTV_IRQ_DEC_DMA_2 and 
IVTV_IRQ_DEC_DMA_0 (bit 0 and bit 2).  It appears that these may only come when 
I'm loading the system heavily with debugging output - what do these mean?

- is there a software development manual anywhere for the cx23416 which details 
its registers? 

- there is a DYNAMIC_MEMORY_ALLOC defined in ivtv-driver.h for __powerpc__ but 
its not used anywhere.  I see the point in needing it for an embedded platform 
and I assume the thought was that instead of the driver allocating DMA buffers 
on init it would allocate them when needed (ie, no need to have YUV buffers if 
your not using YUV mode) - was any work ever done on this?


Thanks for any info,

Tim



_______________________________________________
ivtv-devel mailing list
[email protected]
http://ivtvdriver.org/mailman/listinfo/ivtv-devel

Reply via email to