From 0e2afd9311e48849a6c9e05c2c91a2d6a8f9017b Mon Sep 17 00:00:00 2001 From: ddl Date: Tue, 7 Jun 2011 15:12:40 +0800 Subject: [PATCH] camera: fix gc0309 init code --- drivers/media/video/gc0309.c | 625 +++++++++++++++-------------------- 1 file changed, 271 insertions(+), 354 deletions(-) diff --git a/drivers/media/video/gc0309.c b/drivers/media/video/gc0309.c index 84c7784b0617..b05c2f5b4e56 100755 --- a/drivers/media/video/gc0309.c +++ b/drivers/media/video/gc0309.c @@ -102,329 +102,181 @@ static struct reginfo sensor_init_data[] = { /*init registers code.*/ #if 1 -{0xfe,0x80}, // soft reset - -// GC0309_SET_PAGE0; // set page0 - -{0x1a,0x16}, -{0xd2,0x10}, // close AEC -{0x22,0x55}, // close AWB + {0xfe,0x80}, // soft reset + + {0x1a,0x16}, + {0xd2,0x10}, // close AEC + {0x22,0x55}, // close AWB -{0x5a,0x56}, -{0x5b,0x40}, -{0x5c,0x4a}, + {0x5a,0x56}, + {0x5b,0x40}, + {0x5c,0x4a}, -{0x22,0x57}, + {0x22,0x57}, -{0x01,0xfa}, -{0x02,0x70}, -{0x0f,0x01}, + {0x01,0xfa}, + {0x02,0x70}, + {0x0f,0x01}, -{0xe2,0x00}, -{0xe3,0x64}, + {0xe2,0x00}, + {0xe3,0x64}, -{0x03,0x01}, -{0x04,0x2c}, + {0x03,0x01}, + {0x04,0x2c}, - /* -{0x01,0x6a}, -{0x02,0x25}, -{0x0f,0x00}, + {0x05,0x00}, + {0x06,0x00}, + {0x07,0x00}, + {0x08,0x00}, + {0x09,0x01}, + {0x0a,0xe8}, + {0x0b,0x02}, + {0x0c,0x88}, + {0x0d,0x02}, + {0x0e,0x02}, + {0x10,0x22}, + {0x11,0x0d}, + {0x12,0x2a}, + {0x13,0x00}, + {0x14,0x10}, + {0x15,0x0a}, + {0x16,0x05}, + {0x17,0x01}, + + {0x1b,0x03}, + {0x1c,0xc1}, + {0x1d,0x08}, + {0x1e,0x20}, + {0x1f,0x16}, -{0xe2,0x00}, -{0xe3,0x4b}, - -{0xe4,0x02}, -{0xe5,0x0d}, -{0xe6,0x02}, -{0xe7,0x0d}, -{0xe8,0x02}, -{0xe9,0x0d}, -{0xea,0x05}, -{0xeb,0xdc}, - */ - -{0x05,0x00}, -{0x06,0x00}, -{0x07,0x00}, -{0x08,0x00}, -{0x09,0x01}, -{0x0a,0xe8}, -{0x0b,0x02}, -{0x0c,0x88}, -{0x0d,0x02}, -{0x0e,0x02}, -{0x10,0x22}, -{0x11,0x0d}, -{0x12,0x2a}, -{0x13,0x00}, -//{0x14,0x10}, -{0x15,0x0a}, -{0x16,0x05}, -{0x17,0x01}, - -{0x1b,0x03}, -{0x1c,0xc1}, -{0x1d,0x08}, -{0x1e,0x20}, -{0x1f,0x16}, - -{0x20,0xff}, -{0x21,0xf8}, -{0x24,0xa2}, -{0x25,0x0f}, + {0x20,0xff}, + {0x21,0xf8}, + {0x24,0xa0}, + {0x25,0x0f}, //output sync_mode -{0x26,0x03}, -{0x2f,0x01}, + {0x26,0x03}, + {0x2f,0x01}, ///////////////////////////////////////////////////////////////////// /////////////////////////// grab_t //////////////////////////////// ///////////////////////////////////////////////////////////////////// -{0x30,0xf7}, -{0x31,0x40}, -{0x32,0x00}, -{0x39,0x04}, -{0x3a,0x20}, -{0x3b,0x20}, -{0x3c,0x02}, -{0x3d,0x02}, -{0x3e,0x02}, -{0x3f,0x02}, + {0x30,0xf7}, + {0x31,0x40}, + {0x32,0x00}, + {0x39,0x04}, + {0x3a,0x20}, + {0x3b,0x20}, + {0x3c,0x02}, + {0x3d,0x02}, + {0x3e,0x02}, + {0x3f,0x02}, //gain -{0x50,0x24}, + {0x50,0x24}, -{0x53,0x82}, -{0x54,0x80}, -{0x55,0x80}, -{0x56,0x82}, + {0x53,0x82}, + {0x54,0x80}, + {0x55,0x80}, + {0x56,0x82}, ///////////////////////////////////////////////////////////////////// /////////////////////////// LSC_t //////////////////////////////// ///////////////////////////////////////////////////////////////////// -{0x8b,0x20}, -{0x8c,0x20}, -{0x8d,0x20}, -{0x8e,0x10}, -{0x8f,0x10}, -{0x90,0x10}, -{0x91,0x3c}, -{0x92,0x50}, -{0x5d,0x12}, -{0x5e,0x1a}, -{0x5f,0x24}, + {0x8b,0x20}, + {0x8c,0x20}, + {0x8d,0x20}, + {0x8e,0x10}, + {0x8f,0x10}, + {0x90,0x10}, + {0x91,0x3c}, + {0x92,0x50}, + {0x5d,0x12}, + {0x5e,0x1a}, + {0x5f,0x24}, ///////////////////////////////////////////////////////////////////// /////////////////////////// DNDD_t /////////////////////////////// ///////////////////////////////////////////////////////////////////// -{0x60,0x07}, -{0x61,0x0e}, -{0x62,0x0c}, -{0x64,0x03}, -{0x66,0xe8}, -{0x67,0x86}, -{0x68,0xa2}, + {0x60,0x07}, + {0x61,0x0e}, + {0x62,0x0c}, + {0x64,0x03}, + {0x66,0xe8}, + {0x67,0x86}, + {0x68,0xa2}, ///////////////////////////////////////////////////////////////////// /////////////////////////// asde_t /////////////////////////////// ///////////////////////////////////////////////////////////////////// -{0x69,0x20}, -{0x6a,0x0f}, -{0x6b,0x00}, -{0x6c,0x53}, -{0x6d,0x83}, -{0x6e,0xac}, -{0x6f,0xac}, -{0x70,0x15}, -{0x71,0x33}, + {0x69,0x20}, + {0x6a,0x0f}, + {0x6b,0x00}, + {0x6c,0x53}, + {0x6d,0x83}, + {0x6e,0xac}, + {0x6f,0xac}, + {0x70,0x15}, + {0x71,0x33}, ///////////////////////////////////////////////////////////////////// /////////////////////////// eeintp_t/////////////////////////////// -#else - {0xfe,0x80}, /*sofware reset*/ - {0xfe, 0x00}, /*set page0*/ - - {0x1a,0x16}, - {0xd2,0x10}, /*close AEC*/ - {0x22,0x55}, /*close AWB*/ - - {0x5a,0x56}, - {0x5b,0x40}, - {0x5c,0x4a}, - {0x22,0x57}, - {0x01,0xfa}, - {0x02,0x70}, - {0x0f,0x01}, - {0xe2,0x00}, - {0xe3,0x64}, - {0x03,0x01}, - {0x04,0x2c}, - - {0x01,0x6a}, - {0x02,0x25}, - {0x0f,0x00}, - {0xe2,0x00}, - {0xe3,0x4b}, - {0xe4,0x02}, - {0xe5,0x0d}, - {0xe6,0x02}, - {0xe7,0x0d}, - {0xe8,0x02}, - {0xe9,0x0d}, - {0xea,0x05}, - {0xeb,0xdc}, - - {0x05,0x00}, - {0x06,0x00}, - {0x07,0x00}, - {0x08,0x00}, - {0x09,0x01}, - {0x0a,0xe8}, - {0x0b,0x02}, - {0x0c,0x88}, - {0x0d,0x02}, - {0x0e,0x02}, - {0x10,0x22}, - {0x11,0x0d}, - {0x12,0x2a}, - {0x13,0x00}, + ///////////////////////////////////////////////////////////////////// + {0x72,0xdc}, + {0x73,0x80}, + //for high resolution in light scene + {0x74,0x02}, + {0x75,0x3f}, + {0x76,0x02}, + {0x77,0x54}, + {0x78,0x88}, + {0x79,0x81}, + {0x7a,0x81}, + {0x7b,0x22}, + {0x7c,0xff}, - {0x15,0x0a}, - {0x16,0x05}, - {0x17,0x01}, - {0x1b,0x03}, - {0x1c,0xc1}, - {0x1d,0x08}, - {0x1e,0x20}, - {0x1f,0x16}, - {0x20,0xff}, - {0x21,0xf8}, - {0x24,0xa2}, - {0x25,0x0f}, - /*output sync_mode*/ - {0x26,0x03}, - {0x2f,0x01}, + ///////////////////////////////////////////////////////////////////// + ///////////////////////////CC_t/////////////////////////////// + ///////////////////////////////////////////////////////////////////// + {0x93,0x45}, + {0x94,0x00}, + {0x95,0x00}, + {0x96,0x00}, + {0x97,0x45}, + {0x98,0xf0}, + {0x9c,0x00}, + {0x9d,0x03}, + {0x9e,0x00}, + - /*grab_t*/ - {0x30,0xf7}, - {0x31,0x40}, - {0x32,0x00}, - {0x39,0x04}, - {0x3a,0x20}, - {0x3b,0x20}, - {0x3c,0x02}, - {0x3d,0x02}, - {0x3e,0x02}, - {0x3f,0x02}, - {0x50,0x24}, - {0x53,0x82}, - {0x54,0x80}, - {0x55,0x80}, - {0x56,0x82}, - - /*LSC_t*/ - {0x8b,0x20}, - {0x8c,0x20}, - {0x8d,0x20}, - {0x8e,0x10}, - {0x8f,0x10}, - {0x90,0x10}, - {0x91,0x3c}, - {0x92,0x50}, - {0x5d,0x12}, - {0x5e,0x1a}, - {0x5f,0x24}, - - /*DNDD_t*/ - {0x60,0x07}, - {0x61,0x0e}, - {0x62,0x0c}, - {0x64,0x03}, - {0x66,0xe8}, - {0x67,0x86}, - {0x68,0xa2}, - /*asde_t*/ - {0x69,0x20}, - {0x6a,0x0f}, - {0x6b,0x00}, - {0x6c,0x53}, - {0x6d,0x83}, - {0x6e,0xac}, - {0x6f,0xac}, - {0x70,0x15}, - {0x71,0x33}, - - /*eeintp_t*/ - {0x72,0xdc}, - {0x73,0x80}, - //for high resolution in light scene - {0x74,0x02}, - {0x75,0x3f}, - {0x76,0x02}, - {0x77,0x54}, - {0x78,0x88}, - {0x79,0x81}, - {0x7a,0x81}, - {0x7b,0x22}, - {0x7c,0xff}, - - /*CC_t*/ - {0x93,0x45}, - {0x94,0x00}, - {0x95,0x00}, - {0x96,0x00}, - {0x97,0x45}, - {0x98,0xf0}, - {0x9c,0x00}, - {0x9d,0x03}, - {0x9e,0x00}, - - /*YCP_t*/ - {0xb1,0x40}, - {0xb2,0x40}, - {0xb8,0x20}, - {0xbe,0x36}, - {0xbf,0x00}, - - /*AEC_t*/ - {0xd0,0xc9}, - {0xd1,0x10}, - //{0xd2,0x90}, - {0xd3,0x80}, - {0xd5,0xf2}, - {0xd6,0x16}, - {0xdb,0x92}, - {0xdc,0xa5}, - {0xdf,0x23}, - {0xd9,0x00}, - {0xda,0x00}, + ///////////////////////////////////////////////////////////////////// + ///////////////////////////YCP_t/////////////////////////////// + ///////////////////////////////////////////////////////////////////// + {0xb1,0x40}, + {0xb2,0x40}, + {0xb8,0x20}, + {0xbe,0x36}, + {0xbf,0x00}, + ///////////////////////////////////////////////////////////////////// + ///////////////////////////AEC_t/////////////////////////////// + ///////////////////////////////////////////////////////////////////// + {0xd0,0xc9}, + {0xd1,0x10}, +// {0xd2,0x90}, + {0xd3,0x80}, + {0xd5,0xf2}, + {0xd6,0x16}, + {0xdb,0x92}, + {0xdc,0xa5}, + {0xdf,0x23}, + {0xd9,0x00}, + {0xda,0x00}, {0xe0,0x09}, - {0xec,0x20}, - {0xed,0x04}, - {0xee,0xa0}, - {0xef,0x40}, - /*GAMMA*/ -#if 0 - {0x9F,0x0F}, - {0xA0,0x1D}, - {0xA1,0x2D}, - {0xA2,0x3B}, - {0xA3,0x46}, - {0xA4,0x50}, - {0xA5,0x5A}, - {0xA6,0x6B}, - {0xA7,0x7B}, - {0xA8,0x8A}, - {0xA9,0x98}, - {0xAA,0xA5}, - {0xAB,0xB2}, - {0xAC,0xBE}, - {0xAD,0xD5}, - {0xAE,0xEB}, - {0xAF,0xFE}, -#endif + {0xec,0x20}, + {0xed,0x04}, + {0xee,0xa0}, + {0xef,0x40}, - //Y_gramma + //Y_gamma {0xc0,0x00}, {0xc1,0x0B}, {0xc2,0x15}, @@ -439,75 +291,139 @@ static struct reginfo sensor_init_data[] = {0xcb,0xE3}, {0xcc,0xFF}, - /*ABS_t*/ + ///////////////////////////////////////////////////////////////// + /////////////////////////// ABS_t /////////////////////////////// + ///////////////////////////////////////////////////////////////// {0xf0,0x02}, {0xf1,0x01}, - {0xf2,0x00}, - {0xf3,0x30}, - - /*Measure Window*/ - {0xf7,0x04}, - {0xf8,0x02}, + {0xf2,0x00}, + {0xf3,0x30}, + + ///////////////////////////////////////////////////////////////// + /////////////////////////// Measure Window /////////////////////// + ///////////////////////////////////////////////////////////////// + {0xf7,0x04}, + {0xf8,0x02}, {0xf9,0x9f}, {0xfa,0x78}, - /*GC0309_SET_PAGE1*/ - {0xfe, 0x01}, - - /*AWB_p*/ - {0x00,0xf5}, - //{0x01,0x0a}, - {0x02,0x1a}, - {0x0a,0xa0}, - {0x0b,0x60}, - {0x0c,0x08}, - {0x0e,0x4c}, - {0x0f,0x39}, - {0x11,0x3f}, - {0x12,0x72}, - {0x13,0x13}, - {0x14,0x42}, - {0x15,0x43}, - {0x16,0xc2}, - {0x17,0xa8}, - {0x18,0x18}, - {0x19,0x40}, - {0x1a,0xd0}, - {0x1b,0xf5}, - {0x70,0x40}, - {0x71,0x58}, - {0x72,0x30}, - {0x73,0x48}, - {0x74,0x20}, - {0x75,0x60}, - - /*GC0309_SET_PAGE0*/ - {0xfe, 0x00}, +#else + {0xfe,0x80}, // soft reset - /* Open AEC at last*/ - {0xd2, 0x90}, - - /*gramma*/ - {0x9F, 0x0E}, - {0xA0, 0x1C}, - {0xA1, 0x34}, - {0xA2, 0x48}, - {0xA3, 0x5A}, - {0xA4, 0x6B}, - {0xA5, 0x7B}, - {0xA6, 0x95}, - {0xA7, 0xAB}, - {0xA8, 0xBF}, - {0xA9, 0xCE}, - {0xAA, 0xD9}, - {0xAB, 0xE4}, - {0xAC, 0xEC}, - {0xAD, 0xF7}, - {0xAE, 0xFD}, - {0xAF, 0xFF}, - - /*direction: normal*/ - {0x14, 0x10} + {0x1a,0x16}, + {0xd2,0x10}, // close AEC + {0x22,0x55}, // close AWB + + {0x5a,0x56}, + {0x5b,0x40}, + {0x5c,0x4a}, + + {0x22,0x57}, + + {0x01,0xfa}, + {0x02,0x70}, + {0x0f,0x01}, + + {0xe2,0x00}, + {0xe3,0x64}, + + {0x03,0x01}, + {0x04,0x2c}, + + + {0x05,0x00}, + {0x06,0x00}, + {0x07,0x00}, + {0x08,0x00}, + {0x09,0x01}, + {0x0a,0xe8}, + {0x0b,0x02}, + {0x0c,0x88}, + {0x0d,0x02}, + {0x0e,0x02}, + {0x10,0x22}, + {0x11,0x0d}, + {0x12,0x2a}, + {0x13,0x00}, + + {0x15,0x0a}, + {0x16,0x05}, + {0x17,0x01}, + + {0x1b,0x03}, + {0x1c,0xc1}, + {0x1d,0x08}, + {0x1e,0x20}, + {0x1f,0x16}, + + {0x20,0xff}, + {0x21,0xf8}, + {0x24,0xa2}, + {0x25,0x0f}, + //output sync_mode + {0x26,0x03}, + {0x2f,0x01}, + ///////////////////////////////////////////////////////////////////// + /////////////////////////// grab_t //////////////////////////////// + ///////////////////////////////////////////////////////////////////// + {0x30,0xf7}, + {0x31,0x40}, + {0x32,0x00}, + {0x39,0x04}, + {0x3a,0x20}, + {0x3b,0x20}, + {0x3c,0x02}, + {0x3d,0x02}, + {0x3e,0x02}, + {0x3f,0x02}, + + //gain + {0x50,0x24}, + + {0x53,0x82}, + {0x54,0x80}, + {0x55,0x80}, + {0x56,0x82}, + + ///////////////////////////////////////////////////////////////////// + /////////////////////////// LSC_t //////////////////////////////// + ///////////////////////////////////////////////////////////////////// + {0x8b,0x20}, + {0x8c,0x20}, + {0x8d,0x20}, + {0x8e,0x10}, + {0x8f,0x10}, + {0x90,0x10}, + {0x91,0x3c}, + {0x92,0x50}, + {0x5d,0x12}, + {0x5e,0x1a}, + {0x5f,0x24}, + ///////////////////////////////////////////////////////////////////// + /////////////////////////// DNDD_t /////////////////////////////// + ///////////////////////////////////////////////////////////////////// + {0x60,0x07}, + {0x61,0x0e}, + {0x62,0x0c}, + {0x64,0x03}, + {0x66,0xe8}, + {0x67,0x86}, + {0x68,0xa2}, + + ///////////////////////////////////////////////////////////////////// + /////////////////////////// asde_t /////////////////////////////// + ///////////////////////////////////////////////////////////////////// + {0x69,0x20}, + {0x6a,0x0f}, + {0x6b,0x00}, + {0x6c,0x53}, + {0x6d,0x83}, + {0x6e,0xac}, + {0x6f,0xac}, + {0x70,0x15}, + {0x71,0x33}, + ///////////////////////////////////////////////////////////////////// + /////////////////////////// eeintp_t/////////////////////////////// #endif }; @@ -516,8 +432,9 @@ static struct reginfo sensor_init_data[] = /* 640X480 VGA */ static struct reginfo sensor_vga[] = { -{0x45 , 0x0f}, //output enable - {0x0,0x0} + //{0x45 , 0x0f}, //output enable + {0x15 , 0x0a}, //output enable + {0x0,0x0} }; /* 352X288 CIF */ -- 2.34.1