diff options
Diffstat (limited to 'drivers/media/video/wmt_v4l2/sensors/sid130b')
-rwxr-xr-x | drivers/media/video/wmt_v4l2/sensors/sid130b/sid130b.c | 328 | ||||
-rwxr-xr-x | drivers/media/video/wmt_v4l2/sensors/sid130b/sid130b.h | 957 |
2 files changed, 1285 insertions, 0 deletions
diff --git a/drivers/media/video/wmt_v4l2/sensors/sid130b/sid130b.c b/drivers/media/video/wmt_v4l2/sensors/sid130b/sid130b.c new file mode 100755 index 00000000..f5565774 --- /dev/null +++ b/drivers/media/video/wmt_v4l2/sensors/sid130b/sid130b.c @@ -0,0 +1,328 @@ + +#include "../cmos-subdev.h" +#include "../../wmt-vid.h" +#include "sid130b.h" + +#define sensor_write_array(sd, arr, sz) \ + cmos_init_8bit_addr(arr, sz, (sd)->i2c_addr) + +#define sensor_read(sd, reg) \ + wmt_vid_i2c_read(sd->i2c_addr, reg) + +#define sensor_write(sd, reg, val) \ + wmt_vid_i2c_write(sd->i2c_addr, reg, val) + +struct cmos_win_size { + char *name; + int width; + int height; + uint8_t *regs; + size_t size; +}; + +#define CMOS_WIN_SIZE(n, w, h, r) \ + {.name = n, .width = w , .height = h, .regs = r, .size = ARRAY_SIZE(r) } + +static const struct cmos_win_size cmos_supported_win_sizes[] = { +// CMOS_WIN_SIZE("QVGA", 320, 240, sid130b_320_240_regs), + CMOS_WIN_SIZE("VGA", 640, 480, sid130b_640_480_regs), + CMOS_WIN_SIZE("UXGA", 1600, 1200, sid130b_1600_1200_regs), +}; + +static const struct cmos_win_size *cmos_select_win(u32 *width, u32 *height) +{ + int i; + + for (i = 0; i < ARRAY_SIZE(cmos_supported_win_sizes); i++) { + if (cmos_supported_win_sizes[i].width == *width && + cmos_supported_win_sizes[i].height == *height) { + *width = cmos_supported_win_sizes[i].width; + *height = cmos_supported_win_sizes[i].height; + return &cmos_supported_win_sizes[i]; + } + } + return NULL; +} + +static int sensor_s_wb(struct cmos_subdev *sd, enum v4l2_wb_mode value) +{ + uint8_t *regs; + size_t size; + + switch (value) { + case WHITE_BALANCE_AUTO: + regs = sid130b_wb_auto; + size = ARRAY_SIZE(sid130b_wb_auto); + break; + case WHITE_BALANCE_INCANDESCENCE: + regs = sid130b_wb_incandescent; + size = ARRAY_SIZE(sid130b_wb_incandescent); + break; + case WHITE_BALANCE_DAYLIGHT: + regs = sid130b_wb_daylight; + size = ARRAY_SIZE(sid130b_wb_daylight); + break; + case WHITE_BALANCE_CLOUDY: + regs = sid130b_wb_cloudy; + size = ARRAY_SIZE(sid130b_wb_cloudy); + break; + case WHITE_BALANCE_FLUORESCENT: + regs = sid130b_wb_fluorescent; + size = ARRAY_SIZE(sid130b_wb_fluorescent); + break; + default: + return -EINVAL; + } + + sensor_write_array(sd, regs, size); + return 0; +} + +static int sensor_s_scenemode(struct cmos_subdev *sd, enum v4l2_scene_mode value) +{ + uint8_t *regs; + size_t size; + + switch (value) { + case SCENE_MODE_AUTO: + regs = sid130b_scene_mode_auto; + size = ARRAY_SIZE(sid130b_scene_mode_auto); + break; + case SCENE_MODE_NIGHTSHOT: + regs = sid130b_scene_mode_night; + size = ARRAY_SIZE(sid130b_scene_mode_night); + break; + default: + return -EINVAL; + } + + sensor_write_array(sd, regs, size); + return 0; +} + +static int sensor_s_exposure(struct cmos_subdev *sd, enum v4l2_exposure_mode value) +{ + uint8_t *regs; + size_t size; + + switch (value) { + case -2: + regs = sid130b_exposure_neg6; + size = ARRAY_SIZE(sid130b_exposure_neg6); + break; + case -1: + regs = sid130b_exposure_neg3; + size = ARRAY_SIZE(sid130b_exposure_neg3); + break; + case 0: + regs = sid130b_exposure_zero; + size = ARRAY_SIZE(sid130b_exposure_zero); + break; + case 1: + regs = sid130b_exposure_pos3; + size = ARRAY_SIZE(sid130b_exposure_pos3); + break; + case 2: + regs = sid130b_exposure_pos6; + size = ARRAY_SIZE(sid130b_exposure_pos6); + break; + default: + return -EINVAL; + } + + sensor_write_array(sd, regs, size); + return 0; +} + +static int sensor_s_hflip(struct cmos_subdev *sd, int value) +{ + uint8_t data; + + sensor_write(sd, 0x00, 0x00); + + data = sensor_read(sd, 0x04); + + switch (value) { + case 0: + data &= ~0x01; + break; + case 1: + data |= 0x01; + break; + default: + return -EINVAL; + } + + return sensor_write(sd, 0x04, data); +} + +static int sensor_s_vflip(struct cmos_subdev *sd, int value) +{ + uint8_t data; + + sensor_write(sd, 0x00, 0x00); + + data = sensor_read(sd, 0x04); + + switch (value) { + case 0: + data &= ~0x02; + break; + case 1: + data |= 0x02; + break; + default: + return -EINVAL; + } + + return sensor_write(sd, 0x04, data); +} + +static int sensor_queryctrl(struct cmos_subdev *sd, struct v4l2_queryctrl *qc) +{ + switch (qc->id) { + case V4L2_CID_VFLIP: + case V4L2_CID_HFLIP: + return v4l2_ctrl_query_fill(qc, 0, 1, 1, 0); + case V4L2_CID_CAMERA_SCENE_MODE: + return v4l2_ctrl_query_fill(qc, 0, 1, 1, 0); + case V4L2_CID_DO_WHITE_BALANCE: + return v4l2_ctrl_query_fill(qc, 0, 3, 1, 0); + case V4L2_CID_EXPOSURE: + return v4l2_ctrl_query_fill(qc, -2, 2, 1, 0); + } + return -EINVAL; +} + +static int sensor_s_ctrl(struct cmos_subdev *sd, struct v4l2_control *ctrl) +{ + switch (ctrl->id) { + case V4L2_CID_CAMERA_SCENE_MODE: + return sensor_s_scenemode(sd, ctrl->value); + case V4L2_CID_DO_WHITE_BALANCE: + return sensor_s_wb(sd, ctrl->value); + case V4L2_CID_EXPOSURE: + return sensor_s_exposure(sd, ctrl->value); + case V4L2_CID_HFLIP: + return sensor_s_hflip(sd, ctrl->value); + case V4L2_CID_VFLIP: + return sensor_s_vflip(sd, ctrl->value); + default: + case WMT_V4L2_CID_CAMERA_ANTIBANDING: + return -EINVAL; + } + return -EINVAL; +} + +static int sensor_g_mbus_fmt(struct cmos_subdev *sd, + struct v4l2_mbus_framefmt *mf) +{ + return -EINVAL; +} + +static int sensor_s_mbus_fmt(struct cmos_subdev *sd, + struct v4l2_mbus_framefmt *mf) +{ + const struct cmos_win_size *win; + + win = cmos_select_win(&mf->width, &mf->height); + if (!win) { + pr_err("%s, s_mbus_fmt failed, width %d, height %d\n", + sd->name, mf->width, mf->height); + return -EINVAL; + } + + sensor_write_array(sd, win->regs, win->size); + return 0; +} + +static int sensor_try_mbus_fmt(struct cmos_subdev *sd, + struct v4l2_mbus_framefmt *mf) +{ + return 0; +} + +static int sensor_enum_framesizes(struct cmos_subdev *sd, + struct v4l2_frmsizeenum *fsize) +{ + int i; + int num_valid = -1; + __u32 index = fsize->index; + + for (i = 0; i < ARRAY_SIZE(cmos_supported_win_sizes); i++) { + const struct cmos_win_size *win = &cmos_supported_win_sizes[index]; + if (index == ++num_valid) { + fsize->type = V4L2_FRMSIZE_TYPE_DISCRETE; + fsize->discrete.width = win->width; + fsize->discrete.height = win->height; + return 0; + } + } + + return -EINVAL; +} + +static int sensor_identify(struct cmos_subdev *sd) +{ + int data; + + sensor_write(sd, 0x0, 0x0); + + data = sensor_read(sd, 0x01); + + return (data == sd->id) ? 0 : -EINVAL; +} + +static int sensor_init(struct cmos_subdev *sd) +{ + if (sensor_identify(sd)) { + return -1; + } + + sensor_write_array(sd, sid130b_default_regs_init, + ARRAY_SIZE(sid130b_default_regs_init)); + return 0; +} + +static int sensor_exit(struct cmos_subdev *sd) +{ + return 0; +} + +static struct cmos_subdev_ops sid130b_ops = { + .identify = sensor_identify, + .init = sensor_init, + .exit = sensor_exit, + .queryctrl = sensor_queryctrl, + .s_ctrl = sensor_s_ctrl, + .s_mbus_fmt = sensor_s_mbus_fmt, + .g_mbus_fmt = sensor_g_mbus_fmt, + .try_mbus_fmt = sensor_try_mbus_fmt, + .enum_framesizes = sensor_enum_framesizes, +}; + +struct cmos_subdev sid130b = { + .name = "sid130b", + .i2c_addr = 0x37, + .id = 0x1b, + .max_width = 1600, + .max_height = 1200, + .ops = &sid130b_ops, +}; + +#if 0 +static int __init sid130b_init(void) +{ + return cmos_register_sudbdev(&sid130b); +} + +static void __exit sid130b_exit(void) +{ + return cmos_unregister_subdev(&sid130b); +} + +module_init(sid130b_init); +module_exit(sid130b_exit); + +MODULE_LICENSE("GPL"); +#endif diff --git a/drivers/media/video/wmt_v4l2/sensors/sid130b/sid130b.h b/drivers/media/video/wmt_v4l2/sensors/sid130b/sid130b.h new file mode 100755 index 00000000..614fb629 --- /dev/null +++ b/drivers/media/video/wmt_v4l2/sensors/sid130b/sid130b.h @@ -0,0 +1,957 @@ + +#ifndef __SIV130B_H_ +#define __SIV130B_H_ + +// Scene Mode +uint8_t sid130b_scene_mode_auto[] = { + 0x00,0x01, + 0x11,0x0c,//0a, + 0x40,0x45,//00, + 0xff,0xff, +}; + +uint8_t sid130b_scene_mode_night[] = { + 0x00,0x01, + 0x11,0x0e,//14, + 0x40,0x60, + 0xff,0xff, +}; + + +// White Balance +uint8_t sid130b_wb_auto [] = { + 0x00,0x02, + 0x10,0xd0, + 0xff,0xff, +}; + +uint8_t sid130b_wb_incandescent [] = { + 0x00,0x02, + 0x10,0x00, + 0x50,0xaa, + 0x51,0xbe, + 0xff,0xff, +}; + +uint8_t sid130b_wb_fluorescent [] = { + 0x00,0x02, + 0x10,0x00, + 0x50,0xc2, + 0x51,0x9e, + 0xff,0xff, +}; + +uint8_t sid130b_wb_daylight [] = { + 0x00,0x02, + 0x10,0x00, + 0x50,0xaa, + 0x51,0x90, + 0xff,0xff, +}; + +uint8_t sid130b_wb_cloudy [] = { + 0x00,0x02, + 0x10,0x00, + 0x50,0xd0, + 0x51,0x88, + 0xff,0xff, +}; + +uint8_t sid130b_wb_tungsten [] = { +}; + + +// Exposure +uint8_t sid130b_exposure_neg6[] = { + + 0x00,0x04, + 0xb6,0xc0,//00, + + + + +}; + +uint8_t sid130b_exposure_neg3[] = { + + 0x00,0x04, + 0xb6,0xb0,//00, + + + +}; + +uint8_t sid130b_exposure_zero[] = { + + 0x00,0x04, + 0xb6,0x90,//00, + + + +}; + +uint8_t sid130b_exposure_pos3[] = { + + 0x00,0x04, + 0xb6,0x00,//00, + + +}; + +uint8_t sid130b_exposure_pos6[] = { + + 0x00,0x04, + 0xb6,0x10,//00, + + + +}; + + +// Color Effect +uint8_t sid130b_colorfx_none[] = { +}; + +uint8_t sid130b_colorfx_bw[] = { +}; + +uint8_t sid130b_colorfx_sepia[] = { +}; + +uint8_t sid130b_colorfx_negative[] = { +}; + +uint8_t sid130b_colorfx_emboss[] = { +}; + +uint8_t sid130b_colorfx_sketch[] = { +}; + +uint8_t sid130b_colorfx_sky_blue[] = { +}; + +uint8_t sid130b_colorfx_grass_green[] = { +}; + +uint8_t sid130b_colorfx_skin_whiten[] = { +}; + +uint8_t sid130b_colorfx_vivid[] = { +}; + +// Brightness +uint8_t sid130b_brightness_neg4[] = { + +}; + +uint8_t sid130b_brightness_neg3[] = { +}; + +uint8_t sid130b_brightness_neg2[] = { +}; + +uint8_t sid130b_brightness_neg1[] = { +}; + +uint8_t sid130b_brightness_zero[] = { +}; + +uint8_t sid130b_brightness_pos1[] = { +}; + +uint8_t sid130b_brightness_pos2[] = { +}; + +uint8_t sid130b_brightness_pos3[] = { +}; + +uint8_t sid130b_brightness_pos4[] = { +}; + +// Contrast +uint8_t sid130b_contrast_neg4[] = { +}; + +uint8_t sid130b_contrast_neg3[] = { +}; + +uint8_t sid130b_contrast_neg2[] = { +}; + +uint8_t sid130b_contrast_neg1[] = { +}; + +uint8_t sid130b_contrast_zero[] = { +}; + +uint8_t sid130b_contrast_pos1[] = { +}; + +uint8_t sid130b_contrast_pos2[] = { +}; + +uint8_t sid130b_contrast_pos3[] = { +}; + +uint8_t sid130b_contrast_pos4[] = { +}; + +// Saturation +uint8_t sid130b_saturation_neg4[] = { +}; + +uint8_t sid130b_saturation_neg3[] = { +}; + +uint8_t sid130b_saturation_neg2[] = { +}; + +uint8_t sid130b_saturation_neg1[] = { +}; + +uint8_t sid130b_saturation_zero[] = { +}; + +uint8_t sid130b_saturation_pos1[] = { +}; + +uint8_t sid130b_saturation_pos2[] = { +}; + +uint8_t sid130b_saturation_pos3[] = { +}; + +uint8_t sid130b_saturation_pos4[] = { +}; + + +// Resolution + +// QVGA +uint8_t sid130b_320_240_regs[]={ + + 0x00,0x03, + 0x94,0x01, + 0x95,0x40, + 0x96,0x00, + 0x97,0xf0, + 0xff,0xff, + +}; + +// VGA +uint8_t sid130b_640_480_regs[]={ + + 0x00,0x00, + 0x04,0x00, + 0x05,0x0f, + 0x06,0x0f, + 0x00,0x03, + 0x94,0x06, //0x02 + 0x95,0x40, //0x80 + 0x96,0x04, //0x01 + 0x97,0xb0, //0xe0 + + 0x00,0x04, + 0xe0,0xe0, + 0xe1,0x66, + 0xe2,0x66, + 0xe3,0x00, + 0xe4,0x50, + 0xe5,0x03, + 0xe6,0xc5,//00, + 0xe7,0x02,//00, + 0xe8,0x80,//00, + 0xff,0xff, + + + + +}; +//SVGA +uint8_t sid130b_800_600_regs[]={ + 0x00,0x00, + 0x04,0x10, + 0x05,0x0f, + 0x06,0x8e, + 0x00,0x03, + 0x94,0x03, //0x02 + 0x95,0x20, //0x80 + 0x96,0x02, //0x01 + 0x97,0x58, //0xe0 + 0x00,0x04, + 0xe0,0x00, + 0xe1,0x00, + 0xe2,0x00, + 0xe3,0x00, + 0xe4,0x00, + 0xe5,0x00, + 0xe6,0x00, + 0xe7,0x00, + 0xe8,0x00, + 0xff,0xff, +}; + + +// UXGA +uint8_t sid130b_1600_1200_regs[]={ + 0x00,0x00, + 0x04,0x10, + 0x05,0x0f, + 0x00,0x03, + 0x94,0x06, + 0x95,0x40, + 0x96,0x04, + 0x97,0xb0, + 0x00,0x04, + 0xe0,0x00, + 0xe1,0x00, + 0xe2,0x00, + 0xe3,0x00, + 0xe4,0x00, + 0xe5,0x00, + 0xe6,0x00, + 0xe7,0x00, + 0xe8,0x00, + 0xff,0xff, +}; + + // Initiliztion + uint8_t sid130b_default_regs_init[] = { + 0x00,0x00, + 0x04,0x00, + 0x05,0x0F, + 0x06,0x0f,//86, + 0x07,0x88,//08, + 0x08,0xa2, + 0x09,0x11, + 0x0A,0x11, + 0x10,0x11,//17, + 0x11,0x01, + 0x12,0x8A, + 0x13,0x1a,//16, + 0x17,0xcb,//CF, + 0x18,0x38,//34, + + 0x40,0x0f, + 0x41,0x17, + 0x42,0x52, + 0x43,0x80, + 0x44,0x00, + 0x45,0x00, + + 0x00,0x00, + 0x20,0x00, + 0x21,0x02, + 0x23,0x51,//29, + 0x00,0x01, + 0x35,0x78,//50, + 0x00,0x00, + 0x24,0x02, + //0x25,0xe6, + 0x27,0x51,//29, + 0x00,0x01, + 0x34,0x78,//50, + + 0x00,0x01, + 0x10,0x80, + 0x11,0x0c,//10,//0c, + 0x12,0x75, + 0x13,0x75, + 0x14,0x75, + 0x17,0xC4, + //0x1c,0x02, + //0x19,0x00, + //0x1A,0x00, + //0x1c,0x02, + 0x36,0x40, + + 0x40,0x45, + 0x41,0x28,//20, + 0x42,0x20, + 0x43,0x00, + 0x44,0x00, + 0x45,0x01, + 0x46,0x03, + 0x47,0x05, + 0x48,0x0a, + 0x49,0x0e, + 0x4A,0x13, + 0x4B,0x18, + 0x4C,0x1a, + 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, + + 0xc0,0x11, + 0xc1,0x11, + 0xc2,0x11, + 0xc3,0x01, + 0xc4,0x0f, + + 0x00,0x02, + 0x10,0xD0, + 0x11,0x11, + 0x13,0x7f,//80, + 0x14,0x7f, + 0x15,0xe0, + 0x16,0x90, + 0x17,0xd0, + 0x18,0x78, + 0x19,0x8c, + 0x1A,0x68, + 0x1B,0x8c, + 0x1C,0x68, + 0x1D,0x90, + 0x1E,0x74, + 0x20,0xF0, + 0x21,0x70, + 0x22,0xa4, + 0x23,0x10, + 0x25,0x20, + 0x26,0x05, + 0x27,0x63, + 0x28,0x63, + + 0x29,0xa4, + 0x2A,0x8c, + + 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, + + + 0x53,0x90, //a2 + 0x54,0xa0, //b4 + 0x55,0x90, //a4 + 0x56,0xa0, //b2 + 0x57,0xba, + 0x58,0x88, //93 + 0x59,0xbe, + 0x5A,0x88, //A + 0xB4,0x05, + 0xB5,0x0F, + 0xB6,0x06, + 0xB7,0x06, + 0xB8,0x40, + 0xB9,0x10, + 0xBA,0x06, + + + 0x00,0x03, + 0x10,0xFF, + 0x11,0x1D, + 0x12,0x3D, + 0x13,0xFF, + 0x14,0x00, + 0x15,0xc0, + + 0x30,0x88, + 0x31,0x14, + 0x32,0x08, + 0x33,0x06, + 0x34,0x04, + 0x35,0x04, + 0x36,0x44, + 0x37,0x66, + 0x38,0x01, + 0x39,0x10, + 0x3A,0x20, + 0x3B,0x20, + 0x3C,0x20, + 0x3D,0x04, + 0x3E,0x08, + 0x3F,0x10, + 0x40,0x10, + 0x41,0x20, + 0x42,0xff, + 0x43,0x80, + 0x44,0x40, + 0x45,0x06, + 0x46,0x40, + 0x47,0x1e,//30, + #if 0 + 0x50,0x00, + 0x51,0x00, + 0x52,0x00, + 0x53,0x00, + + 0x54,0x08, + 0x55,0x00, + 0x56,0x00, + 0x57,0x00, + + 0x58,0x08, + 0x59,0x00, + 0x5a,0x00, + 0x5b,0x00, + + 0x5c,0x14, + 0x5d,0x0f, + 0x5e,0x24, + 0x5f,0x12, + 0x63,0x80, //80 + 0x64,0x82, + 0x65,0x82, + 0x66,0x80, //80 + + 0x6b,0x00, + 0x6c,0x00, + 0x6d,0x12, + 0x6e,0x45, + 0x6f,0x66, + 0x70,0x65, + + 0x71,0x00, + 0x72,0x00, + 0x73,0x23, + 0x74,0x44, + 0x75,0x55, + 0x76,0x66, + + + 0x77,0x00, + 0x78,0x00, + 0x79,0x23, + 0x7a,0x44, + 0x7b,0x55, + 0x7c,0x66, + + 0x7d,0x00, + 0x7e,0x00, + 0x7f,0x12, + 0x80,0x33, + 0x81,0x44, + 0x82,0x55, + #else + 0x50, 0x00, + 0x51, 0x00, + 0x52, 0x00, + 0x53, 0x00, + 0x54, 0x00, + 0x55, 0x00, + 0x56, 0x00, + 0x57, 0x00, + 0x58, 0x00, + 0x59, 0x00, + 0x5A, 0x00, + 0x5B, 0x00, + 0x5C, 0x00, + 0x5D, 0x00, + 0x5E, 0x00, + 0x5F, 0x00, + 0x60, 0x32, + 0x61, 0x2f, + 0x62, 0x67, + 0x63, 0x80, + 0x64, 0x80, + 0x65, 0x80, + 0x66, 0x80, + 0x6B, 0x0a, + 0x6C, 0xdc, + 0x6D, 0xba, + 0x6E, 0x98, + 0x6F, 0x75, + 0x70, 0x31, + 0x71, 0x0a, + 0x72, 0xdc, + 0x73, 0xba, + 0x74, 0x98, + 0x75, 0x75, + 0x76, 0x31, + 0x77, 0x0a, + 0x78, 0xdc, + 0x79, 0xba, + 0x7A, 0x98, + 0x7B, 0x75, + 0x7C, 0x31, + 0x7D, 0x0a, + 0x7E, 0xdc, + 0x7F, 0xba, + 0x80, 0x98, + 0x81, 0x75, + 0x82, 0x31, + #endif + + 0x94,0x06,//03, + 0x95,0x40,//20, + 0x96,0x04,//02, + 0x97,0xb0,//58, + + 0xA0,0x2F, + 0xA1,0xB7, + 0xA2,0xB7, + 0xA3,0xB7, + 0xA4,0x07, + + 0xA5,0xFF, + 0xA6,0x06, + 0xA7,0xFF, + 0xA8,0x00, + 0xA9,0x00, + 0xAA,0x00, + 0xAB,0x00, + 0xAC,0x60, + 0xAD,0x18, + 0xAE,0x10, + 0xAF,0x20, + 0xB0,0x08, + 0xB1,0x00, + + 0xc0,0x2f, + 0xc1,0x80, + 0xc2,0xb8, + 0xc3,0x08, + 0xc4,0xe0, + 0xc5,0x73, + 0xc6,0xed, + 0xc7,0xe8, + 0xc8,0xbf, + 0xc9,0x99, + 0xca,0x00, + 0xcb,0x00, + 0xcc,0x00, + 0xcd,0x00, + 0xce,0x00, + + + 0xd0,0x2f, + 0xd1,0x66, //90 + 0xd2,0xd4, + 0xd3,0x06, + 0xd4,0xf0, + 0xd5,0x5a, + 0xd6,0xf6, + 0xd7,0xf9, + 0xd8,0xbf, + 0xd9,0x88, + 0xda,0x00, + 0xdb,0x00, + 0xdc,0x00, + 0xdd,0x00, + 0xde,0x00, + + + 0xe0,0x3f, + 0xe1,0x75, + 0xe2,0xd7, + 0xe3,0xf3, + 0xe4,0xe0, + 0xe5,0x89, + 0xe6,0xd6, + 0xe7,0xe5, + 0xe8,0x9f, + 0xe9,0xbb, + 0xea,0x34, + 0xeb,0x91, + 0xec,0x2d, + 0xed,0xe2, + 0xee,0x00, + + + 0x00,0x04, + + 0x10, 0x00, + 0x11, 0x06, + 0x12, 0x0E, + 0x13, 0x1E, + 0x14, 0x3c,//40}, + 0x15, 0x5b,//5e}, + 0x16, 0x71,//74}, + 0x17, 0x85,//87}, + 0x18, 0x98, + 0x19, 0xa6, + 0x1A, 0xb3, + 0x1B, 0xca, + 0x1C, 0xde, + 0x1D, 0xf0, + 0x1E, 0xf8, + 0x1F, 0xFF, + + 0x20, 0x00, + 0x21, 0x06, + 0x22, 0x0E, + 0x23, 0x1E, + 0x24, 0x3c,//40}, + 0x25, 0x5b,//5e}, + 0x26, 0x71,//74}, + 0x27, 0x85,//87}, + 0x28, 0x98, + 0x29, 0xa6, + 0x2A, 0xb3, + 0x2B, 0xca, + 0x2C, 0xde, + 0x2D, 0xf0, + 0x2E, 0xf8, + 0x2F, 0xFF, + + + 0x30, 0x00, + 0x31, 0x06, + 0x32, 0x0E, + 0x33, 0x1E, + 0x34, 0x3c,//40}, + 0x35, 0x5b,//5e}, + 0x36, 0x71,//74}, + 0x37, 0x85,//87}, + 0x38, 0x98, + 0x39, 0xa6, + 0x3A, 0xb3, + 0x3B, 0xca, + 0x3C, 0xde, + 0x3D, 0xf0, + 0x3E, 0xf8, + 0x3F, 0xFF, + + 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, + + 0x70,0x00, + 0x71,0x00, + 0x72,0x00, + 0x73,0x00, + 0x74,0x00, + 0x75,0x00, + 0x77,0x00, + 0x78,0x00, + 0x79,0x00, + 0x7a,0x00, + 0x7b,0x00, + 0x7c,0x00, + 0x7d,0x00, + 0x7e,0x00, + 0x7f,0x00, + + + + 0x80,0x22, + 0x81,0x10, + 0x82,0x18, + 0x83,0x06, + //0x84,0x18, + 0x85,0x06, + //0x86,0x06, + 0x87,0x06, + //0x88,0x18, + 0x89,0x06, + //0x8a,0x00, + //0x8b,0x24, + //0x8c,0x24, + //0X90,0x16, + 0x91,0x03, + 0x93,0x60, + + + 0x94,0x09, + 0x95,0x09, + 0x96,0x4C, + 0x97,0x66, + 0x9A,0xfa, + 0xA1,0x08, + 0xA2,0x10, + 0xA3,0x16, + 0xA4,0x20, + 0xA5,0x30, + 0xA6,0xa0, + //0xA7,0x06, + //0xA8,0x40, + 0xA9,0x20, + 0xAA,0x28, + + 0xac,0xff, + 0xad,0x09, + 0xae,0x96, + 0xaf,0x18, + 0xb2,0x30, + 0xb3,0x11, + + 0xb7,0x00, + 0xb8,0x00, + 0xb9,0x40, //y-contrast + + //color all turation + 0xba,0x0f, + 0xbb,0x0f, + 0xbc,0x0f,//10, + 0xbd,0x0f,//10, + 0xbe,0x10, + 0xbf,0x10, + 0xc0,0x11, + 0xc1,0x11, + 0xc2,0x12, + 0xc3,0x12, + 0xc4,0x12, + 0xc5,0x12, + 0xcc,0x04, + 0xcd,0x40, + 0xce,0x00, + + +#if 0 + 0xe0,0x00, + 0xe1,0x00, + 0xe2,0x00, + 0xe3,0x00, + 0xe4,0x00, + 0xe5,0x00, + 0xe6,0x00, + 0xe7,0x00, + 0xe8,0x00, +#else //´Ó1600x1200ÖнØÈ¡640x480 + 0xe0,0xe0, + 0xe1,0x66, + 0xe2,0x66, + 0xe3,0x00, + 0xe4,0x50, + 0xe5,0x03, + 0xe6,0xc5,//00, + 0xe7,0x02,//00, + 0xe8,0x80,//00, +#endif + + 0x00,0x05, + + 0x10,0x00, + 0x11,0x00, + 0x12,0x00, + 0x13,0x00, + 0x14,0x00, + 0x15,0x00, + 0x16,0x00, + 0x17,0x00, + 0x18,0x00, + + 0x30,0x00, + 0x31,0x00, + 0x32,0x00, + 0x33,0x00, + + + 0x40,0x15, + 0x41,0x28, + 0x42,0x04, + 0x43,0x15, + 0x44,0x28, + 0x45,0x04, + 0x46,0x15, + 0x47,0x28, + 0x48,0x04, + + 0x90,0x00, + 0x91,0x00, + 0x92,0x00, + 0x93,0x00, + 0x94,0x00, + 0x95,0x00, + 0x96,0x00, + + 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, + + 0xB0,0xf0, + 0xB1,0x00, + 0xB5,0x00, + 0xB8,0x00, + 0xB9,0x00, + 0xBa,0x00, + 0xBb,0x00, + + 0xc0, 0x00, + 0xc1, 0x03, + 0xc2, 0x06, + 0xc3, 0x0d, + 0xc4, 0x1d, + 0xc5, 0x2e, + 0xc6, 0x3e, + 0xc7, 0x4f, + 0xc8, 0x60, + 0xc9, 0x70, + 0xca, 0x80, + 0xcb, 0xa0, + 0xcc, 0xc0, + 0xcd, 0xe0, + 0xce, 0xf0, + 0xcf, 0xff, + + //0xe0,0x01, + //0xe1,0x03, + //0xe2,0x04, + //0xe3,0x0c, + //0xe4,0x11, + //0xe5,0x16, + //0xe6,0x1b, + //0xe7,0x24, + //0xe8,0x30, + 0x00,0x00, + 0x03,0xc5, + 0x00,0x01, + 0x10,0x80, + }; + +// Exit +uint8_t sid130b_default_regs_exit[] = { +}; + +#endif /* #ifndef __SIV130B_H_ */ |