Yes Franck
I included this when writing the first m5603 driver verdion. Actually
your efforts were a good guide for the m5603.
What Jeremy and Ilyes are referring to is the m5602 branch which has
slightly different markers.
They have actually frame numbers in them.
I will have a look in the snooplogs which I still have to see what the
SOF markers should be.
Willem
Franck Bourdonnec wrote:
>Le dimanche 30 décembre 2007 18:56, Jérémy Lal a écrit :
>
>
>>at least i got "something" this time (kernel 2.6.23) :
>>i got some very dark, black and white picture, "interlaced" and repeated
>>like five times horizontally. i played around with the pitch to get
>>vertical alignment better.
>>
>>
>>
>
>Hello,
>from my original source(tm) driver,
>for the ali5603 and any sensor,
>the SOF if based on this:
>
>int ali5603c_sofdetect(struct Cam *cam, char *data, int *skip, int
>*datalength)
>{
>
> if (*datalength == 0)
> {
> if(cam->ali5603c.AwbCounter++ >50)
> {
> /* enqueue a defered call to SetAwb */
> /* in IRq context, no synchronous call ! */
> /*AsyncUsbSetIndex(spca50x, xbAwbMinB, 1);*/
>
> }
> }
>
> if (cam->ali5603c.DSPCtrlBit60Cleared == 0)
> {
> cam->ali5603c.DSPCtrlBit60Cleared = 1;
> /* enqueue a defered call to with the last known state for DSPCtrl*/
> AsyncUsbSetIndex(spca50x,xbDSPCTRL,cam->ali5603c.DSPCtrl & 0x9F);
> }
>
> *skip = 0;
> switch (cam->ali5603c.SofState)
> {
> case SOF_Wait: /*0*/
> if (*datalength == 0)
> {
> cam->ali5603c.SofState = SOF_Start;
> cam->ali5603c.FrameAcquiringOffset = 0;
> }
> break;
>
> case SOF_Start:/* 1 Sof if a non empty packet follow SOF_Wait*/
> if (datalength == 0)
> break; /*not now*/
>
> //falltrougth, First packet of data!
> cam->ali5603c.SofState = SOF_Acquiring;
>
> case SOF_Acquiring: /* 2 */
> if (*datalength != 0) /*have data*/
> {
> if (cam->ali5603c.FrameAcquiringOffset == 0) /* beginning*/
> {
> //DecrementLevels(); /* to discover purpose */
> /* strangely, no 4 bytes skipped.... */
> }
> else
> {
> /*allways remove usb header (FF,FF,FF,FF)*/
> *skip = 4;
> *datalength -= 4;
> }
>
>#define ABS_MAXFRAME 0xE1006
> /* check it is not too big */
> if (cam->ali5603c.FrameAcquiringOffset + *datalength >
>ABS_MAXFRAME)
> {
> cam->ali5603c.FrameAcquiringOffset = ABS_MAXFRAME;
> cam->ali5603c.SofState = SOF_Wait;
> return 1; /* it is a sof! */
> }
> else
> cam->ali5603c.FrameAcquiringOffset += *datalength;
> }
> else /*end of frame also =SOF*/
> {
> cam->ali5603c.SofState = SOF_Start;
> cam->ali5603c.FrameAcquiringOffset = 0;
> return 1;
> }
>
> }/*end case*/
> return 0;
>}
>
>
>Franck
>
>-------------------------------------------------------------------------
>This SF.net email is sponsored by: Microsoft
>Defy all challenges. Microsoft(R) Visual Studio 2005.
>http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
>_______________________________________________
>M560x-driver-devel mailing list
>[email protected]
>https://lists.sourceforge.net/lists/listinfo/m560x-driver-devel
>
>
>
>
>
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
M560x-driver-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/m560x-driver-devel