mirror of
https://github.com/torvalds/linux.git
synced 2026-06-08 14:42:37 +02:00
phone_pad: add sid130b and siv121d camera driver
This commit is contained in:
parent
c0515f8bfd
commit
3936fbfee6
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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 ------------------------*/
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
2728
drivers/media/video/siv121d.c
Executable file
File diff suppressed because it is too large
Load Diff
|
|
@ -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! */
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user