phone_pad: add sid130b and siv121d camera driver

This commit is contained in:
hzf
2012-08-01 10:41:41 +08:00
parent c0515f8bfd
commit 3936fbfee6
8 changed files with 3469 additions and 32 deletions

View File

@@ -271,8 +271,8 @@ CONFIG_RK30_PWM_REGULATOR=y
CONFIG_MEDIA_SUPPORT=y
CONFIG_VIDEO_DEV=y
CONFIG_SOC_CAMERA=y
CONFIG_SOC_CAMERA_OV2659=y
CONFIG_SOC_CAMERA_OV5642=y
CONFIG_SOC_CAMERA_SIV121D=y
CONFIG_SOC_CAMERA_SID130B=y
CONFIG_VIDEO_RK29=y
CONFIG_VIDEO_RK29_CAMMEM_ION=y
CONFIG_ION=y

View File

@@ -91,18 +91,18 @@
#ifdef CONFIG_VIDEO_RK29
/*---------------- Camera Sensor Macro Define Begin ------------------------*/
/*---------------- Camera Sensor Configuration Macro Begin ------------------------*/
#define CONFIG_SENSOR_0 RK29_CAM_SENSOR_OV5642 /* back camera sensor */
#define CONFIG_SENSOR_IIC_ADDR_0 0x78
#define CONFIG_SENSOR_IIC_ADAPTER_ID_0 4
#define CONFIG_SENSOR_CIF_INDEX_0 1
#define CONFIG_SENSOR_0 RK29_CAM_SENSOR_SID130B /* back camera sensor */
#define CONFIG_SENSOR_IIC_ADDR_0 0x6e
#define CONFIG_SENSOR_IIC_ADAPTER_ID_0 3
#define CONFIG_SENSOR_CIF_INDEX_0 0 // 1
#define CONFIG_SENSOR_ORIENTATION_0 90
#define CONFIG_SENSOR_POWER_PIN_0 INVALID_GPIO
#define CONFIG_SENSOR_RESET_PIN_0 INVALID_GPIO
#define CONFIG_SENSOR_POWERDN_PIN_0 RK30_PIN1_PD6
#define CONFIG_SENSOR_POWERDN_PIN_0 RK30_PIN1_PB7
#define CONFIG_SENSOR_FALSH_PIN_0 INVALID_GPIO
#define CONFIG_SENSOR_POWERACTIVE_LEVEL_0 RK29_CAM_POWERACTIVE_L
#define CONFIG_SENSOR_RESETACTIVE_LEVEL_0 RK29_CAM_RESETACTIVE_L
#define CONFIG_SENSOR_POWERDNACTIVE_LEVEL_0 RK29_CAM_POWERDNACTIVE_H
#define CONFIG_SENSOR_POWERDNACTIVE_LEVEL_0 RK29_CAM_POWERDNACTIVE_L
#define CONFIG_SENSOR_FLASHACTIVE_LEVEL_0 RK29_CAM_FLASHACTIVE_L
#define CONFIG_SENSOR_QCIF_FPS_FIXED_0 15000
@@ -160,14 +160,14 @@
#define CONFIG_SENSOR_SVGA_FPS_FIXED_02 15000
#define CONFIG_SENSOR_720P_FPS_FIXED_02 30000
#define CONFIG_SENSOR_1 RK29_CAM_SENSOR_OV2659 /* front camera sensor 0 */
#define CONFIG_SENSOR_IIC_ADDR_1 0x60
#define CONFIG_SENSOR_1 RK29_CAM_SENSOR_SIV121D /* front camera sensor 0 */
#define CONFIG_SENSOR_IIC_ADDR_1 0x66
#define CONFIG_SENSOR_IIC_ADAPTER_ID_1 3
#define CONFIG_SENSOR_CIF_INDEX_1 0
#define CONFIG_SENSOR_CIF_INDEX_1 0
#define CONFIG_SENSOR_ORIENTATION_1 270
#define CONFIG_SENSOR_POWER_PIN_1 INVALID_GPIO
#define CONFIG_SENSOR_RESET_PIN_1 INVALID_GPIO
#define CONFIG_SENSOR_POWERDN_PIN_1 RK30_PIN1_PB7
#define CONFIG_SENSOR_POWERDN_PIN_1 RK30_PIN1_PB6
#define CONFIG_SENSOR_FALSH_PIN_1 INVALID_GPIO
#define CONFIG_SENSOR_POWERACTIVE_LEVEL_1 RK29_CAM_POWERACTIVE_L
#define CONFIG_SENSOR_RESETACTIVE_LEVEL_1 RK29_CAM_RESETACTIVE_L
@@ -249,8 +249,8 @@
static void rk_cif_power(int on)
{
struct regulator *ldo_18,*ldo_28;
ldo_28 = regulator_get(NULL, "ldo7"); // vcc28_cif
ldo_18 = regulator_get(NULL, "ldo1"); // vcc18_cif
ldo_28 = regulator_get(NULL, "vmmc"); // vcc28_cif ldo7
ldo_18 = regulator_get(NULL, "vdig1"); // vcc18_cif ldo1
if (ldo_28 == NULL || IS_ERR(ldo_28) || ldo_18 == NULL || IS_ERR(ldo_18)){
printk("get cif ldo failed!\n");
return;

View File

@@ -60,14 +60,11 @@
#define RK29_CAM_SENSOR_GC0309 gc0309
#define RK29_CAM_SENSOR_GC2015 gc2015
#define RK29_CAM_SENSOR_SIV120B siv120b
#define RK29_CAM_SENSOR_SIV121D siv121d
#define RK29_CAM_SENSOR_SID130B sid130B
#define RK29_CAM_SENSOR_HI253 hi253
#define RK29_CAM_SENSOR_HI704 hi704
#define RK29_CAM_SENSOR_NT99250 nt99250
#define RK29_CAM_SENSOR_SP0838 sp0838
#define RK29_CAM_SENSOR_GC0329 gc0329
#define RK29_CAM_SENSOR_S5K5CA s5k5ca
#define RK29_CAM_SENSOR_NAME_OV7675 "ov7675"
#define RK29_CAM_SENSOR_NAME_OV9650 "ov9650"
@@ -90,13 +87,11 @@
#define RK29_CAM_SENSOR_NAME_GC0309 "gc0309"
#define RK29_CAM_SENSOR_NAME_GC2015 "gc2015"
#define RK29_CAM_SENSOR_NAME_SIV120B "siv120b"
#define RK29_CAM_SENSOR_NAME_SIV121D "siv121d"
#define RK29_CAM_SENSOR_NAME_SID130B "sid130B"
#define RK29_CAM_SENSOR_NAME_HI253 "hi253"
#define RK29_CAM_SENSOR_NAME_HI704 "hi704"
#define RK29_CAM_SENSOR_NAME_NT99250 "nt99250"
#define RK29_CAM_SENSOR_NAME_SP0838 "sp0838"
#define RK29_CAM_SENSOR_NAME_GC0329 "gc0329"
#define RK29_CAM_SENSOR_NAME_S5K5CA "s5k5ca"
#define ov7675_FULL_RESOLUTION 0x30000 // 0.3 megapixel
#define ov9650_FULL_RESOLUTION 0x130000 // 1.3 megapixel
@@ -118,13 +113,11 @@
#define gc0309_FULL_RESOLUTION 0x30000 // 0.3 megapixel
#define gc2015_FULL_RESOLUTION 0x200000 // 2 megapixel
#define siv120b_FULL_RESOLUTION 0x30000 // 0.3 megapixel
#define siv121d_FULL_RESOLUTION 0x30000 // 0.3 megapixel
#define sid130B_FULL_RESOLUTION 0x200000 // 2 megapixel
#define hi253_FULL_RESOLUTION 0x200000 // 2 megapixel
#define hi704_FULL_RESOLUTION 0x30000 // 0.3 megapixel
#define nt99250_FULL_RESOLUTION 0x200000 // 2 megapixel
#define sp0838_FULL_RESOLUTION 0x30000 // 0.3 megapixel
#define gc0329_FULL_RESOLUTION 0x30000 // 0.3 megapixel
#define s5k5ca_FULL_RESOLUTION 0x300000 // 3 megapixel
/*---------------- Camera Sensor Must Define Macro End ------------------------*/

View File

@@ -1194,7 +1194,13 @@ config SIV120B_USER_DEFINED_SERIES
depends on SOC_CAMERA_SIV120B
bool "SIV120B user defined init series"
default n
config SOC_CAMERA_SIV121D
tristate "siv121d support for rockchip"
depends on SOC_CAMERA && I2C
help
This is a SIV121D camera driver for rockchip
config SOC_CAMERA_SID130B
tristate "sid130b support for rockchip"
depends on SOC_CAMERA && I2C

View File

@@ -108,6 +108,7 @@ obj-$(CONFIG_SOC_CAMERA_GC0309) += gc0309.o
obj-$(CONFIG_SOC_CAMERA_GC0309_FOR_TD8801) += gc0309_for_td8801.o
obj-$(CONFIG_SOC_CAMERA_GC2015) += gc2015.o
obj-$(CONFIG_SOC_CAMERA_SIV120B) += siv120b.o
obj-$(CONFIG_SOC_CAMERA_SIV121D) += siv121d.o
obj-$(CONFIG_SOC_CAMERA_SID130B) += sid130B.o
obj-$(CONFIG_SOC_CAMERA_HI253) += hi253.o
obj-$(CONFIG_SOC_CAMERA_HI704) += hi704.o

View File

@@ -50,9 +50,9 @@ module_param(debug, int, S_IRUGO|S_IWUSR);
#define SENSOR_MIN_HEIGHT 144
#define SENSOR_MAX_WIDTH 1600
#define SENSOR_MAX_HEIGHT 1200
#define SENSOR_INIT_WIDTH 640 /* Sensor pixel size for sensor_init_data array */
#define SENSOR_INIT_HEIGHT 480
#define SENSOR_INIT_WINSEQADR sensor_vga
#define SENSOR_INIT_WIDTH 800 /* Sensor pixel size for sensor_init_data array */
#define SENSOR_INIT_HEIGHT 600
#define SENSOR_INIT_WINSEQADR sensor_svga
#define SENSOR_INIT_PIXFMT V4L2_MBUS_FMT_UYVY8_2X8
#define CONFIG_SENSOR_WhiteBalance 1
@@ -115,7 +115,8 @@ static struct flash_timer flash_off_timer;
/* init 352X288 SVGA */
static struct reginfo sensor_init_data[] =
{
{0x00, 0x00},
#if 0
{0x00, 0x00},
{0x04, 0x00}, //Group A 0x10
{0x05, 0x0F}, //UXGA Output
{0x06, 0x86},
@@ -750,8 +751,716 @@ static struct reginfo sensor_init_data[] =
{0x00, 0x02},
{0x10, 0xd3},
{0xff, 0xff},
#else
{0x00, 0x00},
{0x04, 0x00}, //Group A 0x10
{0x05, 0x0F}, //UXGA Output
{0x06, 0x86},
{0x07, 0x08},
{0x08, 0xa2}, //PLL on
{0x09, 0x12},
{0x0A, 0x12},
{0x10, 0x13},//17},
{0x11, 0x01},
{0x12, 0x8A},
{0x13, 0x1a},//16},
{0x15, 0x22},//16},
{0x14, 0x27},//16},
{0x17, 0xcb},//CF},
{0x18, 0x38},//34},
{0x41, 0x17},
{0x42, 0x52},
//Flicker - 50Hz - Still mode
{0x00, 0x00},
{0x20, 0x00},
{0x21, 0x02},
{0x23, 0x29},//15},
{0x00, 0x01},
{0x35, 0x50},//3c},
//Flicker - 50Hz - Preview mode 24MHz MCLK
{0x00, 0x00},
{0x24, 0x00},
{0x25, 0xe6},//10},
{0x27, 0x0d},//4b},
{0x00, 0x01},
{0x34, 0x80},//64},
//AE Block
{0x00, 0x01},
{0x10, 0x80},
{0x11, 0x0A},
{0x12, 0x74},
{0x13, 0x74},
{0x14, 0x70},
{0x17, 0xC4},
{0x1c, 0x02},
{0x19, 0x00},//0x
{0x1A, 0x00},//0x
{0x1c, 0x02},
{0x36, 0x26},
{0x40, 0x40}, //M
#if 0
{0x41, 0x28},
{0x42, 0x28},
{0x43, 0x08},
{0x44, 0x08},
{0x45, 0x09},
{0x46, 0x17},
{0x47, 0x1D},
{0x48, 0x21},
{0x49, 0x23},
{0x4A, 0x24},
{0x4B, 0x26},
{0x4C, 0x27},
{0x4D, 0x27},
{0x4E, 0x1A},
{0x4F, 0x14},
{0x50, 0x11},
{0x51, 0x0F},
{0x52, 0x0D},
{0x53, 0x0C},
{0x54, 0x0A},
{0x55, 0x09},
#else
{0x41, 0x20},
{0x42, 0x20},
{0x43, 0x00},
{0x44, 0x00},
{0x45, 0x01},
{0x46, 0x0c},
{0x47, 0x11},
{0x48, 0x15},
{0x49, 0x17},
{0x4A, 0x1a},
{0x4B, 0x1c},
{0x4C, 0x1e},
{0x4D, 0x1e},
{0x4E, 0x0f},
{0x4F, 0x09},
{0x50, 0x07},
{0x51, 0x05},
{0x52, 0x04},
{0x53, 0x03},
{0x54, 0x02},
{0x55, 0x01},
{0x60, 0x7e},
{0x61, 0xff},
{0x62, 0xff},
{0x63, 0xff},
{0x64, 0xff},
{0x65, 0x7e},
{0x66, 0x50},
{0x67, 0x50},
{0x68, 0x50},
{0x69, 0x50},
{0x6A, 0x50},
{0x6B, 0x00},
{0x6C, 0x06},
{0x9a, 0x80},
{0x6b, 0x80},
#endif
//AWB Block
{0x00, 0x02},
{0x10, 0xD3},
{0x11, 0x11},
{0x13, 0x80},
{0x14, 0x80},
{0x15, 0xE0},//FE},
{0x16, 0x88},
{0x17, 0xD0},
{0x18, 0x78},
{0x19, 0x98},
{0x1A, 0x68},
{0x1B, 0x8d},
{0x1C, 0x68},
{0x1D, 0x8C},
{0x1E, 0x74},
{0x20, 0xF0},
{0x21, 0x70},
{0x22, 0xa8},
{0x23, 0x10},
{0x25, 0x20},
{0x26, 0x05},
{0x27, 0x63},
{0x28, 0x63},
{0x29, 0xA0},
{0x2A, 0x89},
{0x30, 0x00},
{0x31, 0x10},
{0x32, 0x00},
{0x33, 0x10},
{0x34, 0x06},
{0x35, 0x30},
{0x36, 0x04},
{0x37, 0xA0},
{0x40, 0x01},
{0x41, 0x04},
{0x42, 0x08},
{0x43, 0x10},
{0x44, 0x13},
{0x45, 0x6B},
{0x46, 0x82},
{0x52, 0x82},
//CMA change -D65~A
{0x53, 0x86}, //A
{0x54, 0xA0}, //A
{0x55, 0x88}, //A
{0x56, 0x9F}, //A
{0x57, 0xA5}, //A
{0x58, 0x89}, //A
{0x59, 0xA6}, //A
{0x5A, 0x87}, //A
{0x64, 0x00}, //T
{0x65, 0x00},
{0x66, 0x00}, //T
{0x67, 0x00},
{0x68, 0xA5}, //T
{0x69, 0xB4},
{0x6A, 0xB3}, //T
{0x6B, 0xAC},
{0x6C, 0xB7}, //T
{0x6D, 0x98},
{0x6E, 0xBA}, //T
{0x6F, 0x90},
{0x70, 0xBF}, //T
{0x71, 0x9B},
{0x72, 0xCE}, //T
{0x73, 0x8C},
//IDP
{0x74, 0x7F}, //T
{0x75, 0x8C}, //T
{0x76, 0xAD}, //T
{0x77, 0xBA}, //T
{0x78, 0x8F}, //T
{0x79, 0x9A}, //T
{0x7A, 0xA3}, //T
{0x7B, 0xAC}, //T
{0x7C, 0xA0}, //T
{0x7D, 0xA9}, //T
{0x7E, 0x95}, //T
{0x7F, 0xAC}, //T
{0x80, 0xAD}, //T
{0x81, 0xBC}, //T
{0x82, 0x98}, //T
{0x83, 0xA4}, //T
{0x84, 0x00}, //T
{0x85, 0x00}, //T
{0x86, 0x00}, //T
{0x87, 0x00}, //T
{0x88, 0xC9}, //T
{0x89, 0xD5}, //T
{0x8A, 0x70}, //T
{0x8B, 0x7B}, //T
{0x8C, 0xD0}, //T
{0x8D, 0xE5}, //T
{0x8E, 0x58}, //T
{0x8F, 0x70}, //T
{0xB4, 0x05},
{0xB5, 0x0F},
{0xB6, 0x06},
{0xB7, 0x06},
{0xB8, 0x40},
{0xB9, 0x10},
{0xBA, 0x06},
//IDP
{0x00, 0x03},
{0x10, 0xFF},
{0x11, 0x1D},
{0x12, 0x1D},
{0x13, 0xFB},
{0x14, 0x00},
{0x15, 0xc0},
//DPC
{0x30, 0x88}, //D
{0x31, 0x14},//04}, //D
{0x32, 0x10}, //D
{0x33, 0x0C}, //D
{0x34, 0x08}, //D
{0x35, 0x04}, //D
{0x36, 0x44}, //D
{0x37, 0x66}, //D
{0x38, 0x00}, //0
{0x39, 0x08}, //0
{0x3A, 0x08}, //0
{0x3B, 0x20}, //0
{0x3C, 0x20}, //
{0x3D, 0x04}, //N
{0x3E, 0x08}, //N
{0x3F, 0x10}, //N
{0x40, 0x10}, //N
{0x41, 0x20}, //N
{0x42, 0xFF}, //N
{0x43, 0x40},//F0}, //N
{0x44, 0x40}, //B
{0x45, 0x06},//09}, //S
{0x46, 0x40}, //S
{0x47, 0x30}, //I
//DPC
#if 0
//Shading
{0x50, 0x24}, //R
{0x51, 0x44}, //R
{0x52, 0x20}, //R
{0x53, 0x30}, //R
{0x54, 0x20}, //G
{0x55, 0x20}, //G
{0x56, 0x00}, //G
{0x57, 0x10}, //G
{0x58, 0x20}, //G
{0x59, 0x20}, //G
{0x5A, 0x00}, //G
{0x5B, 0x10}, //G
{0x5C, 0x34}, //B
{0x5D, 0x48}, //B
{0x5E, 0x18}, //B
{0x5F, 0x2a}, //B
{0x60, 0x32}, //#
{0x61, 0x00}, //#
{0x62, 0x67}, //#
{0x6B, 0x23},
{0x6C, 0x44},
{0x6D, 0x45},
{0x6E, 0x67},
{0x6F, 0x8a},
{0x70, 0x89},
{0x71, 0x34},
{0x72, 0x45},
{0x73, 0x56},
{0x74, 0x77},
{0x75, 0x78},
{0x76, 0x89},
{0x77, 0x34},
{0x78, 0x45},
{0x79, 0x56},
{0x7A, 0x77},
{0x7B, 0x78},
{0x7C, 0x89},
{0x7D, 0x22},
{0x7E, 0x32},
{0x7F, 0x34},
{0x80, 0x45},
{0x81, 0x56},
{0x82, 0x67},
{0x83, 0x1f},
{0x84, 0x50},
#endif
//Shading
{0x50, 0x0b}, //R
{0x51, 0x0b}, //R
{0x52, 0x19}, //R
{0x53, 0x18}, //R
{0x54, 0x10}, //G
{0x55, 0x00}, //G
{0x56, 0x08}, //G
{0x57, 0x00}, //G
{0x58, 0x10}, //G
{0x59, 0x00}, //G
{0x5A, 0x08}, //G
{0x5B, 0x00}, //G
{0x5C, 0x14}, //B
{0x5D, 0x0f}, //B
{0x5E, 0x24}, //B
{0x5F, 0x12}, //B
{0x60, 0x32}, //#
{0x61, 0x00}, //#
{0x62, 0x67}, //#
{0x6B, 0x23},
{0x6C, 0x44},
{0x6D, 0x44},
{0x6E, 0x45},
{0x6F, 0x44},
{0x70, 0x00},
{0x71, 0x23},
{0x72, 0x44},
{0x73, 0x55},
{0x74, 0x55},
{0x75, 0x55},
{0x76, 0x00},
{0x77, 0x23},
{0x78, 0x44},
{0x79, 0x55},
{0x7A, 0x55},
{0x7B, 0x55},
{0x7C, 0x00},
{0x7D, 0x23},
{0x7E, 0x44},
{0x7F, 0x34},
{0x80, 0x43},
{0x81, 0x44},
{0x82, 0x00},
{0x83, 0x12},
{0x84, 0x14},
//Interpolation
{0xA0, 0x2F},
{0xA1, 0xB7},
{0xA2, 0xB7},
{0xA3, 0xB7},
{0xA4, 0x04},
{0xA5, 0xFF},
{0xA6, 0x06},
{0xA7, 0xFF},
{0xA8, 0x00},
{0xA9, 0x00},
{0xAA, 0x00},
{0xAB, 0x00},
{0xAC, 0x60},
{0xAD, 0x18},
{0xAE, 0x0c},
{0xAF, 0x14},
{0xB0, 0x08},
{0xB1, 0x00},
//Color Matrix for D65
{0xC0, 0xAF},// C
{0xC1, 0x66},
{0xC2, 0xd4},
{0xC3, 0x06},
{0xC4, 0xf0},
{0xC5, 0x5a},
{0xC6, 0xF6},
{0xC7, 0xF9},
{0xC8, 0xbf},
{0xC9, 0x88},
{0xCA, 0x00},
{0xCB, 0x00},
{0xCC, 0x00},
{0xCD, 0x00},
{0xCE, 0x00},
//Color Matrix for CWF
{0xD0, 0x2F},
{0xD1, 0x72},
{0xD2, 0xC9},
{0xD3, 0x04},
{0xD4, 0xE3},
{0xD5, 0x60},
{0xD6, 0xFC},
{0xD7, 0xF5},
{0xD8, 0xb0},
{0xD9, 0x99},
{0xDA, 0xC3},
{0xDB, 0x14},
{0xDC, 0x3A},
{0xDD, 0xAD},
{0xDE, 0x09},
//Color Matrix for A
{0xE0, 0x2F},
{0xE1, 0x5C},
{0xE2, 0xDD},
{0xE3, 0x06},
{0xE4, 0xE0},
{0xE5, 0x69},
{0xE6, 0xF6},
{0xE7, 0xE5},
{0xE8, 0xAB},
{0xE9, 0xAE},
{0xEA, 0x6A},
{0xEB, 0x01},
{0xEC, 0x2D},
{0xED, 0xEE},
{0xEE, 0x04},
//IDP 2
{0x00, 0x04},
//Gamma - R
{0x10, 0x00},
{0x11, 0x06},
{0x12, 0x0e},
{0x13, 0x20},
{0x14, 0x40},
{0x15, 0x5e},
{0x16, 0x74},
{0x17, 0x87},
{0x18, 0x98},
{0x19, 0xa6},
{0x1A, 0xb3},
{0x1B, 0xca},
{0x1C, 0xde},
{0x1D, 0xf0},
{0x1E, 0xf8},
{0x1F, 0xff},
//Gamma - G
{0x20, 0x00},
{0x21, 0x06},
{0x22, 0x0e},
{0x23, 0x20},
{0x24, 0x40},
{0x25, 0x5e},
{0x26, 0x74},
{0x27, 0x87},
{0x28, 0x98},
{0x29, 0xa6},
{0x2A, 0xb3},
{0x2B, 0xca},
{0x2C, 0xde},
{0x2D, 0xf0},
{0x2E, 0xf8},
{0x2F, 0xff},
//Gamma - B
{0x30, 0x00},
{0x31, 0x06},
{0x32, 0x0e},
{0x33, 0x20},
{0x34, 0x40},
{0x35, 0x5e},
{0x36, 0x74},
{0x37, 0x87},
{0x38, 0x98},
{0x39, 0xa6},
{0x3A, 0xb3},
{0x3B, 0xca},
{0x3C, 0xde},
{0x3D, 0xf0},
{0x3E, 0xf8},
{0x3F, 0xff},
//CSC
{0x60, 0x33},
{0x61, 0x20},
{0x62, 0xE4},
{0x63, 0xFA},
{0x64, 0x13},
{0x65, 0x25},
{0x66, 0x07},
{0x67, 0xF5},
{0x68, 0xEA},
{0x69, 0x20},
{0x6A, 0xC8},
{0x6B, 0xC4},
{0x6C, 0x84},
{0x6D, 0x04},
{0x6E, 0x0C},
{0x6F, 0x00},
//Edge
{0x80, 0xa2},
{0x81, 0x10},
{0x82, 0x10},
{0x83, 0x04},
{0x84, 0x0a},
{0x85, 0x06},
{0x86, 0x00},
{0x87, 0x04},
{0x88, 0x0a},
{0x89, 0x06},
{0x8a, 0x10},
{0x8b, 0x30},
{0x8c, 0x30},
{0X90, 0x16},
{0x91, 0x03},
{0x93, 0xE0},
//Cr/Cb Coring
{0x94, 0x00},
{0x95, 0x00},
{0x96, 0x4c},
{0x97, 0x66},
{0x9A, 0xf5},
{0xA1, 0x08},
{0xA2, 0x10},
{0xA3, 0x16},
{0xA4, 0x14},
{0xA5, 0x18},
{0xA6, 0xa0},
{0xA7, 0x06},
{0xA8, 0x40},
{0xA9, 0x20},
{0xAA, 0x28},
{0xAc, 0xff},
{0xAd, 0x09},
{0xAe, 0x18},
{0xAf, 0x18},
{0xB2, 0x24},
{0xB3, 0x54},
{0xB6, 0x08},
//Color Saturation
{0xBC, 0x10},
{0xBD, 0x10},
{0xBE, 0x10},
{0xBF, 0x10},
{0xc2, 0x12},
{0xc3, 0x12},
//IDP 3
{0x00, 0x05},
//Memory
{0x40, 0x15},
{0x41, 0x28},
{0x42, 0x04},
{0x43, 0x15},
{0x44, 0x28},
{0x45, 0x04},
{0x46, 0x15},
{0x47, 0x28},
{0x48, 0x04},
//Knee
{0x90, 0x00}, //
{0x91, 0x00}, //k
{0x92, 0x00}, //k
{0x93, 0x00}, //K
{0x94, 0x00}, //[
{0x95, 0x00}, //k
{0x96, 0x00}, //k
//ADG
#if 0
{0x99, 0xC0},
{0xA0, 0x10},
{0xA1, 0x22},
{0xA2, 0x36},
{0xA3, 0x49},
{0xA4, 0x5D},
{0xA5, 0x70},
{0xA6, 0x82},
{0xA7, 0x94},
{0xA8, 0xA5},
{0xA9, 0xB5},
{0xAA, 0xC3},
{0xAB, 0xD1},
{0xAC, 0xDE},
{0xAD, 0xEA},
{0xAE, 0xF5},
{0xAF, 0xFF},
//YXGMA
{0xB0, 0xc0}, //Y
{0xB1, 0x04}, //Y
{0xB8, 0x0f}, //D
{0xB9, 0x10}, //D
//{0xBA, 0x38}, /
//{0xBB, 0x39}, /
{0xC0, 0x03},
{0xC1, 0x0E},
{0xC2, 0x16},
{0xC3, 0x24},
{0xC4, 0x3F},
{0xC5, 0x56},
{0xC6, 0x6A},
{0xC7, 0x7C},
{0xC8, 0x8C},
{0xC9, 0x98},
{0xCA, 0xA2},
{0xCB, 0xB8},
{0xCC, 0xCD},
{0xCD, 0xE2},
{0xCE, 0xF0},
{0xCF, 0xFF},
#else
{0x99, 0x00},
{0xA0, 0x00},
{0xA1, 0x00},
{0xA2, 0x00},
{0xA3, 0x00},
{0xA4, 0x00},
{0xA5, 0x00},
{0xA6, 0x00},
{0xA7, 0x00},
{0xA8, 0x00},
{0xA9, 0x00},
{0xAA, 0x00},
{0xAB, 0x00},
{0xAC, 0x00},
{0xAD, 0x00},
{0xAE, 0x00},
{0xAF, 0x00},
//YXGMA
{0xB0, 0x00}, //Y
{0xB1, 0x00}, //Y
{0xB8, 0x00}, //D
{0xB9, 0x00}, //D
//{0xBA, 0x38}, /
//{0xBB, 0x39}, /
{0xC0, 0x00},
{0xC1, 0x00},
{0xC2, 0x00},
{0xC3, 0x00},
{0xC4, 0x00},
{0xC5, 0x00},
{0xC6, 0x00},
{0xC7, 0x00},
{0xC8, 0x00},
{0xC9, 0x00},
{0xCA, 0x00},
{0xCB, 0x00},
{0xCC, 0x00},
{0xCD, 0x00},
{0xCE, 0x00},
{0xCF, 0x00},
{0xe0, 0x01},
{0xe1, 0x03},
{0xe2, 0x04},
{0xe3, 0x0c},
{0xe4, 0x11},
{0xe5, 0x16},
{0xe6, 0x1b},
{0xe7, 0x24},
{0xe8, 0x30},
#endif
//Sensor on
{0x00, 0x00},
{0x03, 0xc5},
{0x00, 0x01},
{0x10, 0x84},
{0x00, 0x02},
{0x10, 0xd3},
{0xff, 0xff},
#endif
};
/* 1600X1200 UXGA */
@@ -1516,6 +2225,7 @@ static int sensor_write(struct i2c_client *client, u8 reg, u8 val)
//buf[0] = reg >> 8;
buf[0] = reg & 0xFF;
buf[1] = val;
//printk("%s----%d-----\n",__func__,__LINE__);
msg->addr = client->addr;
msg->flags = client->flags;
@@ -1767,6 +2477,7 @@ static int sensor_init(struct v4l2_subdev *sd, u32 val)
goto sensor_INIT_ERR;
}
#endif
ret = sensor_write_array(client, sensor_init_data);
if (ret != 0)
{

2728
drivers/media/video/siv121d.c Executable file

File diff suppressed because it is too large Load Diff

View File

@@ -90,7 +90,6 @@ enum {
/* Samsung sensors: reserved range 310-319 */
V4L2_IDENT_S5K66A = 310, /* ddl@rock-chips.com : s5k66a support */
V4L2_IDENT_S5K5CA = 311, /* ddl@rock-chips.com : s5k5ca support */
/* Conexant MPEG encoder/decoders: reserved range 400-420 */
V4L2_IDENT_CX23418_843 = 403, /* Integrated A/V Decoder on the '418 */
@@ -349,9 +348,8 @@ enum {
V4L2_IDENT_HI704 = 64107, /* ddl@rock-chips.com : hi704 support */
V4L2_IDENT_NT99250 = 64108, /* ddl@rock-chips.com : nt99250 support */
V4L2_IDENT_SID130B = 64109, /* ddl@rock-chips.com : sid130B support */
V4L2_IDENT_SIV121D= 64109, /* ddl@rock-chips.com : sid130B support */
V4L2_IDENT_SP0838 = 64110, /* ddl@rock-chips.com : SP0838 support */
V4L2_IDENT_GC0329 = 64111, /* ddl@rock-chips.com : GC0329 support */
/* Don't just add new IDs at the end: KEEP THIS LIST ORDERED BY ID! */
};