camera: fix gc0309 init code
authorddl <ddl@rockchip.com>
Tue, 7 Jun 2011 07:12:40 +0000 (15:12 +0800)
committerddl <ddl@rockchip.com>
Tue, 7 Jun 2011 09:43:05 +0000 (17:43 +0800)
drivers/media/video/gc0309.c

index 84c7784b0617ab1ff88ad9efdb767c2caf8a3a3b..b05c2f5b4e56f82e1f6b4b65d1737dea32d3b4e6 100755 (executable)
@@ -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 */