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_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; }