Hi, We're implementing a video sensor driver for an OmniVision
6620(connected via AverLogic AL422b fifo memory) that runs a 2.6.17 kernel on an Intel XScale PXA255(200MHz). We're stuck at a data retrieval speed of approximately 440 microseconds/row. Can any one give a pointer on how we can speed up the frame grabbing process. We found out that 280 microseconds/row of that time is being taken by the incrementation of the read clock, so advice on reduction of that time would be great. The code to grab a row is below.Thanks in advance, Yaman.
for (i=0; ibitarray[i][0] = ((tmp2 & 0x80000) >> 19) | ((tmp1 & 0x400) >> 9) | ((tmp2 & 0x20000) >> 15) | ((tmp1 & 0x4000000) >> 23) | ((tmp2 & 0x20) >> 1) | ((tmp2 & 0x4) > 24) | ((tmp1 & 0x10000000) >> 21); // skip a pixel GPCR1 = 0X4000; GPSR1 = 0X4000;
GPCR1 = 0X4000; GPSR1 = 0X4000; // read fifo data from GPIO registers tmp2 = GPLR2; tmp1 = GPLR1; tmp0 = GPLR0; ov6620_dev->bitarray[i][0] = ((tmp2 & 0x80000) >> 19) | ((tmp1 & 0x400) >> 9) | ((tmp2 & 0x20000) >> 15) | ((tmp1 & 0x4000000) >> 23) | ((tmp2 & 0x20) >> 1) | ((tmp2 & 0x4) > 24) | ((tmp1 & 0x10000000) >> 21); // skip another pixel GPCR1 = 0X4000; GPSR1 = 0X4000; }