mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-09 20:32:04 +09:00
camera rk2928: add user define seriers
This commit is contained in:
@@ -268,6 +268,7 @@ CONFIG_MEDIA_SUPPORT=y
|
||||
CONFIG_VIDEO_DEV=y
|
||||
CONFIG_SOC_CAMERA=y
|
||||
CONFIG_SOC_CAMERA_GC0308=y
|
||||
CONFIG_GC0308_USER_DEFINED_SERIES=y
|
||||
CONFIG_VIDEO_RK29=y
|
||||
CONFIG_VIDEO_RK29_CAMMEM_ION=y
|
||||
CONFIG_ION=y
|
||||
|
||||
502
drivers/media/video/gc0308_user_series.c
Normal file
502
drivers/media/video/gc0308_user_series.c
Normal file
@@ -0,0 +1,502 @@
|
||||
/* init 640X480 VGA */
|
||||
static struct reginfo sensor_init_data[] =
|
||||
{
|
||||
|
||||
{0xfe , 0x80},
|
||||
|
||||
{0xfe , 0x00}, // set page0
|
||||
|
||||
{0xd2 , 0x10}, // close AEC
|
||||
{0x22 , 0x55}, // close AWB
|
||||
|
||||
{0x03 , 0x01},
|
||||
{0x04 , 0x2c},
|
||||
{0x5a , 0x56},
|
||||
{0x5b , 0x40},
|
||||
{0x5c , 0x4a},
|
||||
|
||||
{0x22 , 0x57}, // Open AWB
|
||||
|
||||
{0x01 , 0xfa},
|
||||
{0x02 , 0x70},
|
||||
{0x0f , 0x01},
|
||||
|
||||
|
||||
{0xe2 , 0x00}, //anti-flicker step [11:8]
|
||||
{0xe3 , 0x64}, //anti-flicker step [7:0]
|
||||
|
||||
{0xe4 , 0x02}, //exp level 1 16.67fps
|
||||
{0xe5 , 0x58},
|
||||
{0xe6 , 0x03}, //exp level 2 12.5fps
|
||||
{0xe7 , 0x20},
|
||||
{0xe8 , 0x04}, //exp level 3 8.33fps
|
||||
{0xe9 , 0xb0},
|
||||
{0xea , 0x09}, //exp level 4 4.00fps
|
||||
{0xeb , 0xc4},
|
||||
|
||||
//{0xec , 0x20},
|
||||
|
||||
{0x05 , 0x00},
|
||||
{0x06 , 0x00},
|
||||
{0x07 , 0x00},
|
||||
{0x08 , 0x00},
|
||||
{0x09 , 0x01},
|
||||
{0x0a , 0xe8},
|
||||
{0x0b , 0x02},
|
||||
{0x0c , 0x88},
|
||||
{0x0d , 0x02},
|
||||
{0x0e , 0x02},
|
||||
{0x10 , 0x22},
|
||||
{0x11 , 0xfd},
|
||||
{0x12 , 0x2a},
|
||||
{0x13 , 0x00},
|
||||
//{0x14 , 0x10},
|
||||
{0x15 , 0x0a},
|
||||
{0x16 , 0x05},
|
||||
{0x17 , 0x01},
|
||||
{0x18 , 0x44},
|
||||
{0x19 , 0x44},
|
||||
{0x1a , 0x1e},
|
||||
{0x1b , 0x00},
|
||||
{0x1c , 0xc1},
|
||||
{0x1d , 0x08},
|
||||
{0x1e , 0x60},
|
||||
{0x1f , 0x17},
|
||||
|
||||
|
||||
{0x20 , 0xff},
|
||||
{0x21 , 0xf8},
|
||||
{0x22 , 0x57},
|
||||
{0x24 , 0xa2},
|
||||
{0x25 , 0x0f},
|
||||
|
||||
//output sync_mode
|
||||
{0x26 , 0x02}, //0x03 20101016 zhj
|
||||
{0x2f , 0x01},
|
||||
{0x30 , 0xf7},
|
||||
{0x31 , 0x50},
|
||||
{0x32 , 0x00},
|
||||
{0x39 , 0x04},
|
||||
{0x3a , 0x18},
|
||||
{0x3b , 0x20},
|
||||
{0x3c , 0x00},
|
||||
{0x3d , 0x00},
|
||||
{0x3e , 0x00},
|
||||
{0x3f , 0x00},
|
||||
{0x50 , 0x10},
|
||||
{0x53 , 0x82},
|
||||
{0x54 , 0x80},
|
||||
{0x55 , 0x80},
|
||||
{0x56 , 0x82},
|
||||
{0x8b , 0x40},
|
||||
{0x8c , 0x40},
|
||||
{0x8d , 0x40},
|
||||
{0x8e , 0x2e},
|
||||
{0x8f , 0x2e},
|
||||
{0x90 , 0x2e},
|
||||
{0x91 , 0x3c},
|
||||
{0x92 , 0x50},
|
||||
{0x5d , 0x12},
|
||||
{0x5e , 0x1a},
|
||||
{0x5f , 0x24},
|
||||
{0x60 , 0x07},
|
||||
{0x61 , 0x15},
|
||||
{0x62 , 0x08},
|
||||
{0x64 , 0x03},
|
||||
{0x66 , 0xe8},
|
||||
{0x67 , 0x86},
|
||||
{0x68 , 0xa2},
|
||||
{0x69 , 0x18},
|
||||
{0x6a , 0x0f},
|
||||
{0x6b , 0x00},
|
||||
{0x6c , 0x5f},
|
||||
{0x6d , 0x8f},
|
||||
{0x6e , 0x55},
|
||||
{0x6f , 0x38},
|
||||
{0x70 , 0x15},
|
||||
{0x71 , 0x33},
|
||||
{0x72 , 0xdc},
|
||||
{0x73 , 0x80},
|
||||
{0x74 , 0x02},
|
||||
{0x75 , 0x3f},
|
||||
{0x76 , 0x02},
|
||||
{0x77 , 0x36},
|
||||
{0x78 , 0x88},
|
||||
{0x79 , 0x81},
|
||||
{0x7a , 0x81},
|
||||
{0x7b , 0x22},
|
||||
{0x7c , 0xff},
|
||||
{0x93 , 0x48},
|
||||
{0x94 , 0x00},
|
||||
{0x95 , 0x05},
|
||||
{0x96 , 0xe8},
|
||||
{0x97 , 0x40},
|
||||
{0x98 , 0xf0},
|
||||
{0xb1 , 0x38},
|
||||
{0xb2 , 0x38},
|
||||
{0xbd , 0x38},
|
||||
{0xbe , 0x36},
|
||||
{0xd0 , 0xc9},
|
||||
{0xd1 , 0x10},
|
||||
//{0xd2 , 0x90},
|
||||
{0xd3 , 0x80},
|
||||
{0xd5 , 0xf2},
|
||||
{0xd6 , 0x16},
|
||||
{0xdb , 0x92},
|
||||
{0xdc , 0xa5},
|
||||
{0xdf , 0x23},
|
||||
{0xd9 , 0x00},
|
||||
{0xda , 0x00},
|
||||
{0xe0 , 0x09},
|
||||
|
||||
{0xed , 0x04},
|
||||
{0xee , 0xa0},
|
||||
{0xef , 0x40},
|
||||
{0x80 , 0x03},
|
||||
{0x80 , 0x03},
|
||||
{0x9F , 0x10},
|
||||
{0xA0 , 0x20},
|
||||
{0xA1 , 0x38},
|
||||
{0xA2 , 0x4E},
|
||||
{0xA3 , 0x63},
|
||||
{0xA4 , 0x76},
|
||||
{0xA5 , 0x87},
|
||||
{0xA6 , 0xA2},
|
||||
{0xA7 , 0xB8},
|
||||
{0xA8 , 0xCA},
|
||||
{0xA9 , 0xD8},
|
||||
{0xAA , 0xE3},
|
||||
{0xAB , 0xEB},
|
||||
{0xAC , 0xF0},
|
||||
{0xAD , 0xF8},
|
||||
{0xAE , 0xFD},
|
||||
{0xAF , 0xFF},
|
||||
{0xc0 , 0x00},
|
||||
{0xc1 , 0x10},
|
||||
{0xc2 , 0x1C},
|
||||
{0xc3 , 0x30},
|
||||
{0xc4 , 0x43},
|
||||
{0xc5 , 0x54},
|
||||
{0xc6 , 0x65},
|
||||
{0xc7 , 0x75},
|
||||
{0xc8 , 0x93},
|
||||
{0xc9 , 0xB0},
|
||||
{0xca , 0xCB},
|
||||
{0xcb , 0xE6},
|
||||
{0xcc , 0xFF},
|
||||
{0xf0 , 0x02},
|
||||
{0xf1 , 0x01},
|
||||
{0xf2 , 0x01},
|
||||
{0xf3 , 0x30},
|
||||
{0xf9 , 0x9f},
|
||||
{0xfa , 0x78},
|
||||
|
||||
//---------------------------------------------------------------
|
||||
{0xfe , 0x01},// set page1
|
||||
|
||||
{0x00 , 0xf5},
|
||||
{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},
|
||||
{0x77 , 0x20},
|
||||
{0x78 , 0x32},
|
||||
{0x30 , 0x03},
|
||||
{0x31 , 0x40},
|
||||
{0x32 , 0xe0},
|
||||
{0x33 , 0xe0},
|
||||
{0x34 , 0xe0},
|
||||
{0x35 , 0xb0},
|
||||
{0x36 , 0xc0},
|
||||
{0x37 , 0xc0},
|
||||
{0x38 , 0x04},
|
||||
{0x39 , 0x09},
|
||||
{0x3a , 0x12},
|
||||
{0x3b , 0x1C},
|
||||
{0x3c , 0x28},
|
||||
{0x3d , 0x31},
|
||||
{0x3e , 0x44},
|
||||
{0x3f , 0x57},
|
||||
{0x40 , 0x6C},
|
||||
{0x41 , 0x81},
|
||||
{0x42 , 0x94},
|
||||
{0x43 , 0xA7},
|
||||
{0x44 , 0xB8},
|
||||
{0x45 , 0xD6},
|
||||
{0x46 , 0xEE},
|
||||
{0x47 , 0x0d},
|
||||
{0xfe , 0x00}, // set page0
|
||||
|
||||
//-----------Update the registers 2010/07/06-------------//
|
||||
//Registers of Page0
|
||||
{0xfe , 0x00}, // set page0
|
||||
{0x10 , 0x26},
|
||||
{0x11 , 0x0d}, // fd,modified by mormo 2010/07/06
|
||||
{0x1a , 0x2a}, // 1e,modified by mormo 2010/07/06
|
||||
|
||||
{0x1c , 0x49}, // c1,modified by mormo 2010/07/06
|
||||
{0x1d , 0x9a}, // 08,modified by mormo 2010/07/06
|
||||
{0x1e , 0x61}, // 60,modified by mormo 2010/07/06
|
||||
|
||||
{0x3a , 0x20},
|
||||
|
||||
{0x50 , 0x14}, // 10,modified by mormo 2010/07/06
|
||||
{0x53 , 0x80},
|
||||
{0x56 , 0x80},
|
||||
|
||||
{0x8b , 0x20}, //LSC
|
||||
{0x8c , 0x20},
|
||||
{0x8d , 0x20},
|
||||
{0x8e , 0x14},
|
||||
{0x8f , 0x10},
|
||||
{0x90 , 0x14},
|
||||
|
||||
{0x94 , 0x02},
|
||||
{0x95 , 0x07},
|
||||
{0x96 , 0xe0},
|
||||
|
||||
{0xb1 , 0x40}, // YCPT
|
||||
{0xb2 , 0x40},
|
||||
{0xb3 , 0x40},
|
||||
{0xb6 , 0xe0},
|
||||
|
||||
{0xd0 , 0xcb}, // AECT c9,modifed by mormo 2010/07/06
|
||||
{0xd3 , 0x48}, // 80,modified by mormor 2010/07/06
|
||||
|
||||
{0xf2 , 0x02},
|
||||
{0xf7 , 0x12},
|
||||
{0xf8 , 0x0a},
|
||||
|
||||
//Registers of Page1
|
||||
{0xfe , 0x01},// set page1
|
||||
{0x02 , 0x20},
|
||||
{0x04 , 0x10},
|
||||
{0x05 , 0x08},
|
||||
{0x06 , 0x20},
|
||||
{0x08 , 0x0a},
|
||||
|
||||
{0x0e , 0x44},
|
||||
{0x0f , 0x32},
|
||||
{0x10 , 0x41},
|
||||
{0x11 , 0x37},
|
||||
{0x12 , 0x22},
|
||||
{0x13 , 0x19},
|
||||
{0x14 , 0x44},
|
||||
{0x15 , 0x44},
|
||||
|
||||
{0x19 , 0x50},
|
||||
{0x1a , 0xd8},
|
||||
|
||||
{0x32 , 0x10},
|
||||
|
||||
{0x35 , 0x00},
|
||||
{0x36 , 0x80},
|
||||
{0x37 , 0x00},
|
||||
//-----------Update the registers end---------//
|
||||
|
||||
|
||||
{0xfe , 0x00}, // set page0
|
||||
{0xd2 , 0x90},
|
||||
|
||||
|
||||
//-----------GAMMA Select(3)---------------//
|
||||
{0x9F , 0x10},
|
||||
{0xA0 , 0x20},
|
||||
{0xA1 , 0x38},
|
||||
{0xA2 , 0x4E},
|
||||
{0xA3 , 0x63},
|
||||
{0xA4 , 0x76},
|
||||
{0xA5 , 0x87},
|
||||
{0xA6 , 0xA2},
|
||||
{0xA7 , 0xB8},
|
||||
{0xA8 , 0xCA},
|
||||
{0xA9 , 0xD8},
|
||||
{0xAA , 0xE3},
|
||||
{0xAB , 0xEB},
|
||||
{0xAC , 0xF0},
|
||||
{0xAD , 0xF8},
|
||||
{0xAE , 0xFD},
|
||||
{0xAF , 0xFF},
|
||||
|
||||
/*GC0308_GAMMA_Select,
|
||||
1: //smallest gamma curve
|
||||
{0x9F , 0x0B},
|
||||
{0xA0 , 0x16},
|
||||
{0xA1 , 0x29},
|
||||
{0xA2 , 0x3C},
|
||||
{0xA3 , 0x4F},
|
||||
{0xA4 , 0x5F},
|
||||
{0xA5 , 0x6F},
|
||||
{0xA6 , 0x8A},
|
||||
{0xA7 , 0x9F},
|
||||
{0xA8 , 0xB4},
|
||||
{0xA9 , 0xC6},
|
||||
{0xAA , 0xD3},
|
||||
{0xAB , 0xDD},
|
||||
{0xAC , 0xE5},
|
||||
{0xAD , 0xF1},
|
||||
{0xAE , 0xFA},
|
||||
{0xAF , 0xFF},
|
||||
|
||||
2:
|
||||
{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},
|
||||
|
||||
3:
|
||||
{0x9F , 0x10},
|
||||
{0xA0 , 0x20},
|
||||
{0xA1 , 0x38},
|
||||
{0xA2 , 0x4E},
|
||||
{0xA3 , 0x63},
|
||||
{0xA4 , 0x76},
|
||||
{0xA5 , 0x87},
|
||||
{0xA6 , 0xA2},
|
||||
{0xA7 , 0xB8},
|
||||
{0xA8 , 0xCA},
|
||||
{0xA9 , 0xD8},
|
||||
{0xAA , 0xE3},
|
||||
{0xAB , 0xEB},
|
||||
{0xAC , 0xF0},
|
||||
{0xAD , 0xF8},
|
||||
{0xAE , 0xFD},
|
||||
{0xAF , 0xFF},
|
||||
|
||||
4:
|
||||
{0x9F , 0x14},
|
||||
{0xA0 , 0x28},
|
||||
{0xA1 , 0x44},
|
||||
{0xA2 , 0x5D},
|
||||
{0xA3 , 0x72},
|
||||
{0xA4 , 0x86},
|
||||
{0xA5 , 0x95},
|
||||
{0xA6 , 0xB1},
|
||||
{0xA7 , 0xC6},
|
||||
{0xA8 , 0xD5},
|
||||
{0xA9 , 0xE1},
|
||||
{0xAA , 0xEA},
|
||||
{0xAB , 0xF1},
|
||||
{0xAC , 0xF5},
|
||||
{0xAD , 0xFB},
|
||||
{0xAE , 0xFE},
|
||||
{0xAF , 0xFF},
|
||||
|
||||
5: //largest gamma curve
|
||||
{0x9F , 0x15},
|
||||
{0xA0 , 0x2A},
|
||||
{0xA1 , 0x4A},
|
||||
{0xA2 , 0x67},
|
||||
{0xA3 , 0x79},
|
||||
{0xA4 , 0x8C},
|
||||
{0xA5 , 0x9A},
|
||||
{0xA6 , 0xB3},
|
||||
{0xA7 , 0xC5},
|
||||
{0xA8 , 0xD5},
|
||||
{0xA9 , 0xDF},
|
||||
{0xAA , 0xE8},
|
||||
{0xAB , 0xEE},
|
||||
{0xAC , 0xF3},
|
||||
{0xAD , 0xFA},
|
||||
{0xAE , 0xFD},
|
||||
{0xAF , 0xFF}, */
|
||||
//-----------GAMMA Select End--------------//
|
||||
|
||||
|
||||
|
||||
|
||||
//-------------H_V_Switch(4)---------------//
|
||||
{0x14 , 0x10}, //0x10
|
||||
|
||||
/*GC0308_H_V_Switch,
|
||||
|
||||
1: // normal
|
||||
{0x14 , 0x10},
|
||||
|
||||
2: // IMAGE_H_MIRROR
|
||||
{0x14 , 0x11},
|
||||
|
||||
3: // IMAGE_V_MIRROR
|
||||
{0x14 , 0x12},
|
||||
|
||||
4: // IMAGE_HV_MIRROR
|
||||
{0x14 , 0x13},
|
||||
*/
|
||||
//-------------H_V_Select End--------------//
|
||||
|
||||
};
|
||||
|
||||
/* 1280X1024 SXGA */
|
||||
static struct reginfo sensor_sxga[] =
|
||||
{
|
||||
{0x00,0x00}
|
||||
};
|
||||
|
||||
/* 800X600 SVGA*/
|
||||
static struct reginfo sensor_svga[] =
|
||||
{
|
||||
{0x0, 0x0},
|
||||
};
|
||||
|
||||
/* 640X480 VGA */
|
||||
static struct reginfo sensor_vga[] =
|
||||
{
|
||||
{0x17, 0x13},
|
||||
{0x18, 0x01},
|
||||
{0x32, 0xbf},
|
||||
{0x19, 0x03},
|
||||
{0x1a, 0x7b},
|
||||
{0x03, 0x0a},
|
||||
{0x00,0x00}
|
||||
};
|
||||
|
||||
/* 352X288 CIF */
|
||||
static struct reginfo sensor_cif[] =
|
||||
{
|
||||
{0x00,0x00}
|
||||
};
|
||||
|
||||
/* 320*240 QVGA */
|
||||
static struct reginfo sensor_qvga[] =
|
||||
{
|
||||
{0x00,0x00}
|
||||
};
|
||||
|
||||
/* 176X144 QCIF*/
|
||||
static struct reginfo sensor_qcif[] =
|
||||
{
|
||||
{0x00,0x00}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user