static int ov9655_init_at_startup(struct gspca_dev *gspca_dev) { fetch_validx(gspca_dev, tbl_init_at_startup, ARRAY_SIZE(tbl_init_at_startup)); fetch_validx(gspca_dev, tbl_commmon, ARRAY_SIZE(tbl_commmon)); /* ctrl_out(gspca_dev, 0x40, 11, 0x0000, 0x0000, 0, NULL);*/ return 0; }
static int ov9655_init_at_startup(struct gspca_dev *gspca_dev) { fetch_validx(gspca_dev, tbl_init_at_startup, ARRAY_SIZE(tbl_init_at_startup)); fetch_validx(gspca_dev, tbl_commmon, ARRAY_SIZE(tbl_commmon)); return 0; }
static void common(struct gspca_dev *gspca_dev) { s32 reso = gspca_dev->cam.cam_mode[(s32) gspca_dev->curr_mode].priv; if (_MI2020b_) { fetch_validx(gspca_dev, tbl_common_a, ARRAY_SIZE(tbl_common_a)); } else { if (_MI2020_) ctrl_out(gspca_dev, 0x40, 1, 0x0008, 0x0004, 0, NULL); else ctrl_out(gspca_dev, 0x40, 1, 0x0002, 0x0004, 0, NULL); msleep(35); fetch_validx(gspca_dev, tbl_common_b, ARRAY_SIZE(tbl_common_b)); } ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, "\x86\x25\x01"); ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, "\x86\x25\x00"); msleep(2); ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0030, 3, "\x1a\x0a\xcc"); if (reso == IMAGE_1600) msleep(2); fetch_idxdata(gspca_dev, tbl_common_c, ARRAY_SIZE(tbl_common_c)); if (_MI2020b_ || _MI2020_) fetch_idxdata(gspca_dev, tbl_common_d, ARRAY_SIZE(tbl_common_d)); fetch_idxdata(gspca_dev, tbl_common_e, ARRAY_SIZE(tbl_common_e)); if (_MI2020b_ || _MI2020_) { ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, "\x90\x00\x78"); ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, "\x8c\x24\x17"); ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, "\x90\x00\x90"); } else { ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, "\x90\x00\x6a"); ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, "\x8c\x24\x17"); ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, "\x90\x00\x80"); } ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, "\x8c\xa1\x03"); ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, "\x90\x00\x05"); msleep(2); ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, "\x8c\xa1\x03"); if (reso == IMAGE_1600) msleep(14); ctrl_out(gspca_dev, 0x40, 3, 0x7a00, 0x0033, 3, "\x90\x00\x06"); msleep(2); }
static void mi1320_post_unset_alt(struct gspca_dev *gspca_dev) { ctrl_out(gspca_dev, 0x40, 5, 0x0000, 0x0000, 0, NULL); fetch_validx(gspca_dev, tbl_post_unset_alt, ARRAY_SIZE(tbl_post_unset_alt)); }
static void common(struct gspca_dev *gspca_dev) { s32 n; /* reserved for FETCH macros */ ctrl_out(gspca_dev, 0x40, 3, 0x0000, 0x0200, 22, s000); ctrl_out(gspca_dev, 0x40, 1, 0x0041, 0x0000, 0, NULL); ctrl_out(gspca_dev, 0x40, 3, 0xba00, 0x0200, 32, s001); n = fetch_validx(gspca_dev, tbl_common, ARRAY_SIZE(tbl_common)); ctrl_out(gspca_dev, 0x40, 3, 0xba00, 0x0200, 48, s002); ctrl_out(gspca_dev, 0x40, 3, 0xba00, 0x0200, 48, s003); ctrl_out(gspca_dev, 0x40, 3, 0xba00, 0x0200, 16, s004); ctrl_out(gspca_dev, 0x40, 3, 0xba00, 0x0200, 48, s005); ctrl_out(gspca_dev, 0x40, 3, 0xba00, 0x0200, 44, s006); keep_on_fetching_validx(gspca_dev, tbl_common, ARRAY_SIZE(tbl_common), n); ctrl_out(gspca_dev, 0x40, 3, 0xba00, 0x0200, 52, s007); ctrl_out(gspca_dev, 0x40, 3, 0xba00, 0x0200, 48, s008); ctrl_out(gspca_dev, 0x40, 3, 0xba00, 0x0200, 48, s009); ctrl_out(gspca_dev, 0x40, 3, 0xba00, 0x0200, 56, s010); keep_on_fetching_validx(gspca_dev, tbl_common, ARRAY_SIZE(tbl_common), n); ctrl_out(gspca_dev, 0x40, 3, 0xba00, 0x0200, 40, s011); keep_on_fetching_validx(gspca_dev, tbl_common, ARRAY_SIZE(tbl_common), n); }
static void common(struct gspca_dev *gspca_dev) { s32 n; /* reserved for FETCH functions */ ctrl_out(gspca_dev, 0x40, 3, 0x0000, 0x0200, 22, dat_common00); ctrl_out(gspca_dev, 0x40, 1, 0x0041, 0x0000, 0, NULL); ctrl_out(gspca_dev, 0x40, 3, 0xba00, 0x0200, 32, dat_common01); n = fetch_validx(gspca_dev, tbl_common, ARRAY_SIZE(tbl_common)); ctrl_out(gspca_dev, 0x40, 3, 0xba00, 0x0200, 48, dat_common02); ctrl_out(gspca_dev, 0x40, 3, 0xba00, 0x0200, 48, dat_common03); ctrl_out(gspca_dev, 0x40, 3, 0xba00, 0x0200, 16, dat_common04); ctrl_out(gspca_dev, 0x40, 3, 0xba00, 0x0200, 48, dat_common05); ctrl_out(gspca_dev, 0x40, 3, 0xba00, 0x0200, 44, dat_common06); keep_on_fetching_validx(gspca_dev, tbl_common, ARRAY_SIZE(tbl_common), n); ctrl_out(gspca_dev, 0x40, 3, 0xba00, 0x0200, 52, dat_common07); ctrl_out(gspca_dev, 0x40, 3, 0xba00, 0x0200, 48, dat_common08); ctrl_out(gspca_dev, 0x40, 3, 0xba00, 0x0200, 48, dat_common09); ctrl_out(gspca_dev, 0x40, 3, 0xba00, 0x0200, 56, dat_common10); keep_on_fetching_validx(gspca_dev, tbl_common, ARRAY_SIZE(tbl_common), n); ctrl_out(gspca_dev, 0x40, 3, 0xba00, 0x0200, 40, dat_common11); keep_on_fetching_validx(gspca_dev, tbl_common, ARRAY_SIZE(tbl_common), n); }
static int ov9655_init_pre_alt(struct gspca_dev *gspca_dev) { struct sd *sd = (struct sd *) gspca_dev; sd->vold.brightness = -1; sd->vold.hue = -1; fetch_validx(gspca_dev, tbl_commmon, ARRAY_SIZE(tbl_commmon)); ov9655_init_post_alt(gspca_dev); return 0; }
static int mi2020_init_at_startup(struct gspca_dev *gspca_dev) { u8 c; ctrl_in(gspca_dev, 0xc0, 2, 0x0000, 0x0004, 1, &c); ctrl_in(gspca_dev, 0xc0, 2, 0x0000, 0x0004, 1, &c); fetch_validx(gspca_dev, tbl_init_at_startup, ARRAY_SIZE(tbl_init_at_startup)); common(gspca_dev); return 0; }
static int mi1320_sensor_settings(struct gspca_dev *gspca_dev) { s32 reso = gspca_dev->cam.cam_mode[(s32) gspca_dev->curr_mode].priv; ctrl_out(gspca_dev, 0x40, 5, 0x0001, 0x0000, 0, NULL); fetch_validx(gspca_dev, tbl_sensor_settings_common, ARRAY_SIZE(tbl_sensor_settings_common)); switch (reso) { case IMAGE_1280: fetch_validx(gspca_dev, tbl_sensor_settings_1280, ARRAY_SIZE(tbl_sensor_settings_1280)); ctrl_out(gspca_dev, 0x40, 3, 0xba00, 0x0200, 64, tbl_1280[0]); ctrl_out(gspca_dev, 0x40, 3, 0xba00, 0x0200, 40, tbl_1280[1]); ctrl_out(gspca_dev, 0x40, 3, 0x0000, 0x0200, 12, tbl_1280[2]); break; case IMAGE_800: fetch_validx(gspca_dev, tbl_sensor_settings_800, ARRAY_SIZE(tbl_sensor_settings_800)); ctrl_out(gspca_dev, 0x40, 3, 0xba00, 0x0200, 64, tbl_800[0]); ctrl_out(gspca_dev, 0x40, 3, 0xba00, 0x0200, 40, tbl_800[1]); ctrl_out(gspca_dev, 0x40, 3, 0x0000, 0x0200, 12, tbl_800[2]); break; default: fetch_validx(gspca_dev, tbl_sensor_settings_640, ARRAY_SIZE(tbl_sensor_settings_640)); ctrl_out(gspca_dev, 0x40, 3, 0xba00, 0x0200, 60, tbl_640[0]); ctrl_out(gspca_dev, 0x40, 3, 0xba00, 0x0200, 40, tbl_640[1]); ctrl_out(gspca_dev, 0x40, 3, 0x0000, 0x0200, 12, tbl_640[2]); break; } return 0; }
static int ov2640_init_at_startup(struct gspca_dev *gspca_dev) { fetch_validx(gspca_dev, tbl_init_at_startup, ARRAY_SIZE(tbl_init_at_startup)); ctrl_out(gspca_dev, 0x40, 3, 0x0000, 0x0200, 12, dat_init1); common(gspca_dev); ctrl_in(gspca_dev, 0xc0, 2, 0x0000, 0x0006, 1, c61); ctrl_out(gspca_dev, 0x40, 1, 0x00ef, 0x0006, 0, NULL); ctrl_in(gspca_dev, 0xc0, 2, 0x0000, 0x0000, 1, c51); ctrl_out(gspca_dev, 0x40, 1, 0x0051, 0x0000, 0, NULL); /* ctrl_out(gspca_dev, 0x40, 11, 0x0000, 0x0000, 0, NULL); */ return 0; }
static int ov9655_init_post_alt(struct gspca_dev *gspca_dev) { s32 reso = gspca_dev->cam.cam_mode[(s32) gspca_dev->curr_mode].priv; s32 n; s32 i; u8 **tbl; ctrl_out(gspca_dev, 0x40, 5, 0x0001, 0x0000, 0, NULL); tbl = (reso == IMAGE_640) ? tbl_640 : tbl_800; ctrl_out(gspca_dev, 0x40, 3, 0x0000, 0x0200, tbl_length[0], tbl[0]); for (i = 1; i < 7; i++) ctrl_out(gspca_dev, 0x40, 3, 0x6000, 0x0200, tbl_length[i], tbl[i]); ctrl_out(gspca_dev, 0x40, 3, 0x0000, 0x0200, tbl_length[7], tbl[7]); n = fetch_validx(gspca_dev, tbl_init_post_alt, ARRAY_SIZE(tbl_init_post_alt)); ctrl_in(gspca_dev, 0xc0, 2, 0x6000, 0x801e, 1, c04); keep_on_fetching_validx(gspca_dev, tbl_init_post_alt, ARRAY_SIZE(tbl_init_post_alt), n); ctrl_in(gspca_dev, 0xc0, 2, 0x6000, 0x801e, 1, c04); keep_on_fetching_validx(gspca_dev, tbl_init_post_alt, ARRAY_SIZE(tbl_init_post_alt), n); ctrl_in(gspca_dev, 0xc0, 2, 0x6000, 0x801e, 1, c04); keep_on_fetching_validx(gspca_dev, tbl_init_post_alt, ARRAY_SIZE(tbl_init_post_alt), n); ctrl_in(gspca_dev, 0xc0, 2, 0x6000, 0x801e, 1, c04); keep_on_fetching_validx(gspca_dev, tbl_init_post_alt, ARRAY_SIZE(tbl_init_post_alt), n); ctrl_out(gspca_dev, 0x40, 3, 0x6000, 0x0200, 8, dat_post_1); keep_on_fetching_validx(gspca_dev, tbl_init_post_alt, ARRAY_SIZE(tbl_init_post_alt), n); ctrl_in(gspca_dev, 0xc0, 2, 0x6000, 0x801e, 1, c04); keep_on_fetching_validx(gspca_dev, tbl_init_post_alt, ARRAY_SIZE(tbl_init_post_alt), n); ctrl_in(gspca_dev, 0xc0, 2, 0x6000, 0x801e, 1, c04); keep_on_fetching_validx(gspca_dev, tbl_init_post_alt, ARRAY_SIZE(tbl_init_post_alt), n); ctrl_in(gspca_dev, 0xc0, 2, 0x6000, 0x801e, 1, c04); keep_on_fetching_validx(gspca_dev, tbl_init_post_alt, ARRAY_SIZE(tbl_init_post_alt), n); ctrl_in(gspca_dev, 0xc0, 2, 0x6000, 0x801e, 1, c04); keep_on_fetching_validx(gspca_dev, tbl_init_post_alt, ARRAY_SIZE(tbl_init_post_alt), n); ctrl_out(gspca_dev, 0x40, 3, 0x6000, 0x0200, 8, dat_post_1); keep_on_fetching_validx(gspca_dev, tbl_init_post_alt, ARRAY_SIZE(tbl_init_post_alt), n); ctrl_in(gspca_dev, 0xc0, 2, 0x6000, 0x801e, 1, c04); keep_on_fetching_validx(gspca_dev, tbl_init_post_alt, ARRAY_SIZE(tbl_init_post_alt), n); ctrl_in(gspca_dev, 0xc0, 2, 0x6000, 0x801e, 1, c04); keep_on_fetching_validx(gspca_dev, tbl_init_post_alt, ARRAY_SIZE(tbl_init_post_alt), n); ctrl_out(gspca_dev, 0x40, 3, 0x6000, 0x0200, 8, dat_post_1); ctrl_out(gspca_dev, 0x40, 3, 0x0000, 0x0200, 4, dat_post_2); ctrl_out(gspca_dev, 0x40, 3, 0x6000, 0x0200, 8, dat_post_3); ctrl_out(gspca_dev, 0x40, 3, 0x0000, 0x0200, 4, dat_post_4); ctrl_out(gspca_dev, 0x40, 3, 0x6000, 0x0200, 8, dat_post_5); ctrl_out(gspca_dev, 0x40, 3, 0x0000, 0x0200, 4, dat_post_6); ctrl_out(gspca_dev, 0x40, 3, 0x6000, 0x0200, 8, dat_post_7); ctrl_out(gspca_dev, 0x40, 3, 0x6000, 0x0200, 8, dat_post_8); ov9655_camera_settings(gspca_dev); return 0; }
static int ov2640_init_post_alt(struct gspca_dev *gspca_dev) { s32 reso = gspca_dev->cam.cam_mode[(s32) gspca_dev->curr_mode].priv; s32 n; /* reserved for FETCH functions */ ctrl_out(gspca_dev, 0x40, 5, 0x0001, 0x0000, 0, NULL); n = fetch_validx(gspca_dev, tbl_sensor_settings_common1, ARRAY_SIZE(tbl_sensor_settings_common1)); ctrl_out(gspca_dev, 0x40, 3, 0x0000, 0x0200, 12, dat_post); common(gspca_dev); keep_on_fetching_validx(gspca_dev, tbl_sensor_settings_common1, ARRAY_SIZE(tbl_sensor_settings_common1), n); switch (reso) { case IMAGE_640: n = fetch_validx(gspca_dev, tbl_640, ARRAY_SIZE(tbl_640)); ctrl_out(gspca_dev, 0x40, 3, 0x0000, 0x0200, 12, dat_640); break; case IMAGE_800: n = fetch_validx(gspca_dev, tbl_800, ARRAY_SIZE(tbl_800)); ctrl_out(gspca_dev, 0x40, 3, 0x0000, 0x0200, 12, dat_800); break; case IMAGE_1600: case IMAGE_1280: n = fetch_validx(gspca_dev, tbl_big1, ARRAY_SIZE(tbl_big1)); if (reso == IMAGE_1280) { n = fetch_validx(gspca_dev, tbl_big2, ARRAY_SIZE(tbl_big2)); } else { ctrl_out(gspca_dev, 0x40, 1, 0x601d, 0x0086, 0, NULL); ctrl_out(gspca_dev, 0x40, 1, 0x6001, 0x00d7, 0, NULL); ctrl_out(gspca_dev, 0x40, 1, 0x6082, 0x00d3, 0, NULL); } n = fetch_validx(gspca_dev, tbl_big3, ARRAY_SIZE(tbl_big3)); if (reso == IMAGE_1280) { ctrl_out(gspca_dev, 0x40, 1, 0x6001, 0x00ff, 0, NULL); ctrl_out(gspca_dev, 0x40, 3, 0x0000, 0x0200, 12, dat_1280); } else { ctrl_out(gspca_dev, 0x40, 1, 0x6020, 0x008c, 0, NULL); ctrl_out(gspca_dev, 0x40, 1, 0x6001, 0x00ff, 0, NULL); ctrl_out(gspca_dev, 0x40, 1, 0x6076, 0x0018, 0, NULL); ctrl_out(gspca_dev, 0x40, 3, 0x0000, 0x0200, 12, dat_1600); } break; } n = fetch_validx(gspca_dev, tbl_sensor_settings_common2, ARRAY_SIZE(tbl_sensor_settings_common2)); ov2640_camera_settings(gspca_dev); return 0; }
static void common(struct gspca_dev *gspca_dev) { fetch_validx(gspca_dev, tbl_common, ARRAY_SIZE(tbl_common)); }