📄 l2_fadjust.c
字号:
reg_data[0] = (UCHAR)Value;
L2_WriteSSC(reg_addr, reg_data, 1, option1);
}
#endif
#ifdef OV3610 //Ov 3.2M CMOS Sensor //patch5.2.1@jhyu@OV3610
{
UCHAR reg_addr[1], reg_data[1], i, j;
option1 = Option & 0x01; //Sequential mode, Sync VD ?
if (Value >= 0x40) return 1;
reg_addr[0] = 0x00;
reg_data[0] = (UCHAR)Value;
L2_WriteSSC(reg_addr, reg_data, 1, option1);
}
#endif
//-------------------Davis:patch4.0.0.0_2005/Jun/07 begin
#ifdef OV3620
{
UCHAR reg_addr[1], reg_data[1], i, j;
option1 = Option & 0x01; //Sequential mode, Sync VD ?
if (Value >= 0x40)
return 1;
reg_addr[0] = 0x00;
reg_data[0] = (UCHAR)Value;
L2_WriteSSC(reg_addr, reg_data, 1, option1);
}
#endif
//-------------------Davis:patch4.0.0.0_2005/Jun/07 end
#ifdef ICM107B //IC-Media 1.0M CMOS Sensor
{
UCHAR reg_addr[1], reg_data[1];
float temp;
//PRINT_FRONT (" Enter L2_AdjustGain = %x \n", Value);
//PRINT_FRONT ("Value = %x \n", (USHORT)Value);
if (Value > 2047) return 1;
option1 = (Option & 0x01); //Sync VD ?
reg_addr[0] = 0x20; //Set G1 gain
reg_data[0] = (UCHAR)Value;
L2_WSSC107(reg_addr, reg_data, 0x01, 0);
reg_addr[0] = 0x21; //Set G1 gain
reg_data[0] = (UCHAR)(Value >> 8);
L2_WSSC107(reg_addr, reg_data, 0x01, 0);
reg_addr[0] = 0x22; //Set R gain
reg_data[0] = (UCHAR)Value;
L2_WSSC107(reg_addr, reg_data, 0x01, 0);
reg_addr[0] = 0x23; //Set R gain
reg_data[0] = (UCHAR)(Value >> 8);
L2_WSSC107(reg_addr, reg_data, 0x01, 0);
reg_addr[0] = 0x24; //Set B gain
reg_data[0] = (UCHAR)Value;
L2_WSSC107(reg_addr, reg_data, 0x01, 0);
reg_addr[0] = 0x25; //Set B gain
reg_data[0] = (UCHAR)(Value >> 8);
L2_WSSC107(reg_addr, reg_data, 0x01, 0);
reg_addr[0] = 0x26; //Set G2 gain
reg_data[0] = (UCHAR)Value;
L2_WSSC107(reg_addr, reg_data, 0x01, 0);
reg_addr[0] = 0x27; //Set G2 gain
reg_data[0] = (UCHAR)(Value >> 8);
L2_WSSC107(reg_addr, reg_data, 0x01, 0);
temp = (7.1 * (Value >> 8)) + 5.3;
L2_ConfigOB(0, 0, 0, 1, (USHORT)temp);
reg_addr[0] = 0x00;
L2_ReadSSC(reg_addr[0], reg_data, 0x01, 0x01);
reg_data[0] = reg_data[0] | 0x80;
//L3_WaitUpdate107();
L2_WSSC107(reg_addr, reg_data, 0x01, option1);
//////////////////////////////////////////////////////////////
}
#endif
#ifdef ICM108 //IC-Media 1.0M CMOS Sensor
{
UCHAR reg_addr[1], reg_data[1];
float temp;
//PRINT_FRONT (" Enter L2_AdjustGain = %x \n", Value);
//PRINT_FRONT ("Value = %x \n", (USHORT)Value);
if (Value > 2047) return 1;
option1 = (Option & 0x01); //Sync VD ?
reg_addr[0] = 0x20; //Set G1 gain
reg_data[0] = (UCHAR)Value;
L2_WSSC108(reg_addr, reg_data, 0x01, 0);
reg_addr[0] = 0x21; //Set G1 gain
reg_data[0] = (UCHAR)(Value >> 8);
L2_WSSC108(reg_addr, reg_data, 0x01, 0);
reg_addr[0] = 0x22; //Set R gain
reg_data[0] = (UCHAR)Value;
L2_WSSC108(reg_addr, reg_data, 0x01, 0);
reg_addr[0] = 0x23; //Set R gain
reg_data[0] = (UCHAR)(Value >> 8);
L2_WSSC108(reg_addr, reg_data, 0x01, 0);
reg_addr[0] = 0x24; //Set B gain
reg_data[0] = (UCHAR)Value;
L2_WSSC108(reg_addr, reg_data, 0x01, 0);
reg_addr[0] = 0x25; //Set B gain
reg_data[0] = (UCHAR)(Value >> 8);
L2_WSSC108(reg_addr, reg_data, 0x01, 0);
reg_addr[0] = 0x26; //Set G2 gain
reg_data[0] = (UCHAR)Value;
L2_WSSC108(reg_addr, reg_data, 0x01, 0);
reg_addr[0] = 0x27; //Set G2 gain
reg_data[0] = (UCHAR)(Value >> 8);
L2_WSSC108(reg_addr, reg_data, 0x01, 0);
temp = (7.1 * (Value >> 8)) + 5.3;
L2_ConfigOB(0, 0, 0, 1, (USHORT)temp);
reg_addr[0] = 0x00;
L2_ReadSSC(reg_addr[0], reg_data, 0x01, 0x01);
reg_data[0] = reg_data[0] | 0x80;
//L3_WaitUpdate107();
L2_WSSC108(reg_addr, reg_data, 0x01, option1);
//////////////////////////////////////////////////////////////
}
#endif
//patch4.4@andrew@ICM109
#ifdef ICM109 //IC-Media 2.0M CMOS Sensor
{
UCHAR reg_addr[1], reg_data[1];
float temp;
//PRINT_FRONT (" Enter L2_AdjustGain = %x \n", Value);
//PRINT_FRONT ("Value = %x \n", (USHORT)Value);
if (Value > 2047) return 1;
option1 = (Option & 0x01); //Sync VD ?
reg_addr[0] = 0x20; //Set G1 gain
reg_data[0] = (UCHAR)Value;
L2_WSSC109(reg_addr, reg_data, 0x01, 0);
reg_addr[0] = 0x21; //Set G1 gain
reg_data[0] = (UCHAR)(Value >> 8);
L2_WSSC109(reg_addr, reg_data, 0x01, 0);
reg_addr[0] = 0x22; //Set R gain
reg_data[0] = (UCHAR)Value;
L2_WSSC109(reg_addr, reg_data, 0x01, 0);
reg_addr[0] = 0x23; //Set R gain
reg_data[0] = (UCHAR)(Value >> 8);
L2_WSSC109(reg_addr, reg_data, 0x01, 0);
reg_addr[0] = 0x24; //Set B gain
reg_data[0] = (UCHAR)Value;
L2_WSSC109(reg_addr, reg_data, 0x01, 0);
reg_addr[0] = 0x25; //Set B gain
reg_data[0] = (UCHAR)(Value >> 8);
L2_WSSC109(reg_addr, reg_data, 0x01, 0);
reg_addr[0] = 0x26; //Set G2 gain
reg_data[0] = (UCHAR)Value;
L2_WSSC109(reg_addr, reg_data, 0x01, 0);
reg_addr[0] = 0x27; //Set G2 gain
reg_data[0] = (UCHAR)(Value >> 8);
L2_WSSC109(reg_addr, reg_data, 0x01, 0);
temp = (7.1 * (Value >> 8)) + 5.3;
L2_ConfigOB(0, 0, 0, 1, (USHORT)temp);
reg_addr[0] = 0x00;
L2_ReadSSC(reg_addr[0], reg_data, 0x01, 0x01);
reg_data[0] = reg_data[0] | 0x80;
//L3_WaitUpdate107();
L2_WSSC109(reg_addr, reg_data, 0x01, option1);
//////////////////////////////////////////////////////////////
}
#endif
#ifdef MCM20027 // Motorola 1.3M CMOS Sensor
{
UCHAR reg_addr[1], reg_data[1], temp;
//PRINT_FRONT (" Enter L2_AdjustGain \n");
if (Value > 63) return 1;
option1 = (Option & 0x01); //Sync VD ?
reg_addr[0] = 0x10; //Set Global gain
reg_data[0] = (UCHAR)Value;
L2_WriteSSC(reg_addr, reg_data, 0x01, option1);
}
#endif
#ifdef ICM105 //IC-Media VGA CMOS Sensor
{
UCHAR reg_addr[1], reg_data[1], temp;
//PRINT_FRONT (" Enter L2_AdjustGain \n");
//PRINT_FRONT ("Value = %x \n", (USHORT)Value);
if (Value > 6) return 1;
option1 = (Option & 0x01); //Sync VD ?
temp = (UCHAR)Value << 5 & 0xE0;
//PRINT_FRONT ("temp = %x \n", (USHORT)temp);
reg_addr[0] = 0x11; //Set Global gain
reg_data[0] = temp;
//PRINT_FRONT ("reg_data[0] = %x \n", (USHORT)reg_data[0]);
L2_WriteSSC(reg_addr, reg_data, 0x01, option1);
}
#endif
#ifdef TASC5130 // TASC VGA Sensor
{
UCHAR reg_data[2];
//PRINT_FRONT (" Enter L2_AdjustGain \n");
if (Value > 7) return 1;
option1 = Option & 0x01; //Sync VD ?
reg_data[0] = 0;
reg_data[1] = (7 - Value) << 5;
L2_WriteSI(reg_data, option1);
}
#endif
#ifdef TASC5160 // TASC VGA Sensor
UCHAR reg_data[2];
UCHAR Machine_Mode;
PRINT_FRONT (" Enter L2_AdjustGain for TASC5160\n");
printf (" Enter L2_AdjustGain for TASC5160\n");
// if (Value > 7) return 1;
option1 = Option & 0x01; //Sync VD ?
Machine_Mode=Option & 0x02;
// if(Machine_Mode) reg_data[0] =0x08; //DSC Mode
if(XBYTE[0x2000]==2) reg_data[0] =0x08;
else reg_data[0] =0xc8;
reg_data[1] =(~(UCHAR)Value);
//L2_WriteSI(reg_data, option1);
L2_WriteSI(reg_data, 1);
#endif
#ifdef HP2020 // HP2020 VGA CMOS Sensor
{
UCHAR reg_addr[1], reg_data[1], temp;
//PRINT_FRONT (" Enter L2_AdjustGain \n");
// if (Value > 63) return 1;
// option1 = (Option & 0x01); //Sync VD ?
// reg_addr[0] = 0x10; //Set Global gain
// reg_data[0] = (UCHAR)Value;
// L2_WriteSSC(reg_addr, reg_data, 0x01, option1);
}
#endif
#ifdef YM3170 // Y-Media 3M Sensor
{
UCHAR reg_addr[1], reg_data[1], temp;
//PRINT_FRONT (" Enter L2_AdjustGain \n");
if (Value > 3) return 1;
option1 = (Option & 0x01); //Sync VD ?
XBYTE[0X2032] = XBYTE[0X2032] & 0xDF; //GPIO21 = 0
reg_addr[0] = 0xDA; //Set Global gain
reg_data[0] = Value;
L2_WriteSSC(reg_addr, reg_data, 0x01, option1);
XBYTE[0X2032] = XBYTE[0X2032] | 0x20; //GPIO21 = 1
}
#endif
#ifdef PB111 // CIF Sensor
{
UCHAR reg_addr[1], reg_data[2];
//PRINT_FRONT (" Enter L2_AdjustGain \n");
if (Value > 128) return 1;
option1 = (Option & 0x01); //Sync VD ?
reg_addr[0] = 0x35; //Set Global gain
reg_data[0] = 0x00;
reg_data[1] = (UCHAR)Value;
L2_WriteSSC(reg_addr, reg_data, 0x02, option1);
}
#endif
//patch4.4@andrew@SHARP_LZ24
//below function not work
//so disable , this chip must use manul mode
#if 0
#ifdef IR3Y38M // SHARP CDSAGC
{
UCHAR reg_data[2];
//PRINT_FRONT (" Enter L2_AdjustGain \n");
option1 = Option & 0x01; //Sync VD ?
reg_data[0] = (UCHAR)(Value << 1); //Set AGC GAIN
reg_data[1] = (UCHAR)((Value >> 7) & 0x01) | 0x04;
L2_WriteSI(reg_data, option1);
}
#endif
#endif
#ifdef HD49322F // HITACHI HD49322F CDSAGC
{
UCHAR reg_data[2];
//PRINT_FRONT (" Enter L2_AdjustGain \n");
option1 = Option & 0x01; //Sync VD ?
reg_data[0] = (Value << 2) & 0xFC; //Set AGC GAIN
reg_data[1] = ((Value >> 6) & 0x1F);
L2_WriteSI(reg_data, option1);
}
#endif
#ifdef HD49334F // HITACHI HD49334F CDSAGC
{
UCHAR reg_data[2];
//PRINT_FRONT (" Enter L2_AdjustGain \n");
if (Value > 255) return 1;
option1 = Option & 0x01; //Sync VD ?
reg_data[0] = (Value << 5) & 0xE0; //Set AGC GAIN
reg_data[1] = ((Value >> 3) & 0x1F);
L2_WriteSI(reg_data, option1);
}
#endif
#ifdef AD9843 // ADI AD9843 CDSAGC
{
UCHAR reg_data[2];
//PRINT_FRONT (" Enter L2_AdjustGain \n");
if (Value > 1023) return 1;
option1 = Option & 0x01; //Sync VD ?
reg_data[0] = (Value << 5) | 0x02; //Set CDS GAIN
reg_data[1] = ((Value >> 3) & 0x7F);
L2_WriteSI(reg_data, option1);
}
#endif
#ifdef AD9846 // ADI AD9846 CDSAGC
{
UCHAR reg_data[2];
//PRINT_FRONT (" Enter L2_AdjustGain \n");
if (Value > 1023) return 1;
option1 = Option & 0x01; //Sync VD ?
reg_data[0] = (Value << 5) | 0x02; //Set CDS GAIN
reg_data[1] = ((Value >> 3) & 0x7F);
L2_WriteSI(reg_data, option1);
}
#endif
#ifdef AD9804 // ADI AD9804 CDSAGC
{
UCHAR reg_data[2];
//PRINT_FRONT (" Enter L2_AdjustGain \n");
if (Value > 1023) return 1;
option1 = Option & 0x01; //Sync VD ?
reg_data[0] = (Value << 5) | 0x02; //Set CDS GAIN
reg_data[1] = ((Value >> 3) & 0x7F);
L2_WriteSI(reg_data, option1);
}
#endif
#ifdef TLV990 // TI TLV990 CDSAGC
{
UCHAR reg_data[2];
UCHAR value1, value2, temp;
//PRINT_FRONT (" Enter L2_AdjustGain \n");
if (Value > 1023) return 1;
option1 = Option & 0x01; //Sync VD ?
temp = (UCHAR) Value;
value1 = ((temp & 0x01) << 7) | ((temp & 0x02) << 5) | ((temp & 0x04) << 3) | ((temp & 0x08) << 1) | ((temp & 0x10) >> 1) | ((temp & 0x20) >> 3) | ((temp & 0x40) >> 5)| ((temp & 0x80) >> 7);
temp = (UCHAR) (Value >> 8);
value2 = ((temp & 0x01) << 7) | ((temp & 0x02) << 5) | 0x20;
reg_data[0] = value2; //Set CDS GAIN
reg_data[1] = value1;
L2_WriteSI(reg_data, option1);
}
#endif
#ifdef IR3Y38M
{
if(Value>255)
return 1;
L2_IR3Y38M_Serial( Value,2); //set IR3Y38 GAIN
}
#endif
//patch4.4@andrew@IR3Y48A
#ifdef IR3Y48A
{
UCHAR reg_data[2];
USHORT temp;
if(Value>511)
return 1;
//*((USHORT *)reg_data)=(Value<<6)|0x0c; not work BC india
temp=(Value<<6)|0x0c;
reg_data[0]=(UCHAR)(temp&0xff);
reg_data[1]=(UCHAR)(temp>>8);
L2_WriteSI(reg_data, option1);
}
#endif
//patch4.5@andrew@VSP1021
#ifdef VSP1021 // TI CDSAGC
{
option1 = Option & 0x01; //Sync VD ?
if (Value > 1023) return 1;
option1 = Option & 0x01; //Sync VD ?
L2_SetCDSAGC_VSP1021(0x01,Value,option1);
}
#endif
//PRINT_FRONT (" Exit L2_AdjustGain \n");
return 0;
}
UCHAR L2_SetFrontImgOffsetc(USHORT Hoffset, USHORT Voffset) USING_0
{
UCHAR temp1, temp2;
temp1 = Hoffset & 0xFF;
temp2 = (Hoffset >> 8) & 0x0F;
XBYTE[0x2A20] = temp1; //Set Hoffsetc
XBYTE[0x2A21] = temp2;
temp1 = Voffset & 0xFF;
temp2 = (Voffset >> 8) & 0x0F;
XBYTE[0x2A22] = temp1; //Set Voffsetc
XBYTE[0x2A23] = temp2;
return 0;
}
UCHAR L2_SetFrontImgSizec(USHORT Hsize, USHORT Vsize) USING_0
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -