Lines Matching refs:sd
24 static void po1030_dump_registers(struct sd *sd);
55 int po1030_probe(struct sd *sd) in po1030_probe() argument
58 struct gspca_dev *gspca_dev = (struct gspca_dev *)sd; in po1030_probe()
76 m5602_write_sensor(sd, in po1030_probe()
79 m5602_write_bridge(sd, preinit_po1030[i][1], data); in po1030_probe()
82 if (m5602_read_sensor(sd, PO1030_DEVID_H, &dev_id_h, 1)) in po1030_probe()
92 sd->gspca_dev.cam.cam_mode = po1030_modes; in po1030_probe()
93 sd->gspca_dev.cam.nmodes = ARRAY_SIZE(po1030_modes); in po1030_probe()
98 int po1030_init(struct sd *sd) in po1030_init() argument
108 err = m5602_write_bridge(sd, in po1030_init()
115 err = m5602_write_sensor(sd, in po1030_init()
128 po1030_dump_registers(sd); in po1030_init()
133 int po1030_init_controls(struct sd *sd) in po1030_init_controls() argument
135 struct v4l2_ctrl_handler *hdl = &sd->gspca_dev.ctrl_handler; in po1030_init_controls()
137 sd->gspca_dev.vdev.ctrl_handler = hdl; in po1030_init_controls()
140 sd->auto_white_bal = v4l2_ctrl_new_std(hdl, &po1030_ctrl_ops, in po1030_init_controls()
143 sd->green_bal = v4l2_ctrl_new_custom(hdl, &po1030_greenbal_cfg, NULL); in po1030_init_controls()
144 sd->red_bal = v4l2_ctrl_new_std(hdl, &po1030_ctrl_ops, in po1030_init_controls()
147 sd->blue_bal = v4l2_ctrl_new_std(hdl, &po1030_ctrl_ops, in po1030_init_controls()
151 sd->autoexpo = v4l2_ctrl_new_std_menu(hdl, &po1030_ctrl_ops, in po1030_init_controls()
153 sd->expo = v4l2_ctrl_new_std(hdl, &po1030_ctrl_ops, V4L2_CID_EXPOSURE, in po1030_init_controls()
156 sd->gain = v4l2_ctrl_new_std(hdl, &po1030_ctrl_ops, V4L2_CID_GAIN, 0, in po1030_init_controls()
159 sd->hflip = v4l2_ctrl_new_std(hdl, &po1030_ctrl_ops, V4L2_CID_HFLIP, in po1030_init_controls()
161 sd->vflip = v4l2_ctrl_new_std(hdl, &po1030_ctrl_ops, V4L2_CID_VFLIP, in po1030_init_controls()
169 v4l2_ctrl_auto_cluster(4, &sd->auto_white_bal, 0, false); in po1030_init_controls()
170 v4l2_ctrl_auto_cluster(2, &sd->autoexpo, 0, false); in po1030_init_controls()
171 v4l2_ctrl_cluster(2, &sd->hflip); in po1030_init_controls()
176 int po1030_start(struct sd *sd) in po1030_start() argument
178 struct cam *cam = &sd->gspca_dev.cam; in po1030_start()
180 int width = cam->cam_mode[sd->gspca_dev.curr_mode].width; in po1030_start()
181 int height = cam->cam_mode[sd->gspca_dev.curr_mode].height; in po1030_start()
182 int ver_offs = cam->cam_mode[sd->gspca_dev.curr_mode].priv; in po1030_start()
188 err = m5602_write_sensor(sd, PO1030_CONTROL3, &data, 1); in po1030_start()
193 err = m5602_write_sensor(sd, PO1030_WINDOWWIDTH_H, &data, 1); in po1030_start()
198 err = m5602_write_sensor(sd, PO1030_WINDOWWIDTH_L, &data, 1); in po1030_start()
203 err = m5602_write_sensor(sd, PO1030_WINDOWHEIGHT_H, &data, 1); in po1030_start()
208 err = m5602_write_sensor(sd, PO1030_WINDOWHEIGHT_L, &data, 1); in po1030_start()
216 err = m5602_write_sensor(sd, PO1030_CONTROL3, &data, 1); in po1030_start()
221 err = m5602_write_sensor(sd, PO1030_WINDOWWIDTH_H, &data, 1); in po1030_start()
226 err = m5602_write_sensor(sd, PO1030_WINDOWWIDTH_L, &data, 1); in po1030_start()
231 err = m5602_write_sensor(sd, PO1030_WINDOWHEIGHT_H, &data, 1); in po1030_start()
236 err = m5602_write_sensor(sd, PO1030_WINDOWHEIGHT_L, &data, 1); in po1030_start()
242 err = m5602_write_bridge(sd, M5602_XB_SENSOR_TYPE, 0x0c); in po1030_start()
246 err = m5602_write_bridge(sd, M5602_XB_LINE_OF_FRAME_H, 0x81); in po1030_start()
250 err = m5602_write_bridge(sd, M5602_XB_PIX_OF_LINE_H, 0x82); in po1030_start()
254 err = m5602_write_bridge(sd, M5602_XB_SIG_INI, 0x01); in po1030_start()
258 err = m5602_write_bridge(sd, M5602_XB_VSYNC_PARA, in po1030_start()
263 err = m5602_write_bridge(sd, M5602_XB_VSYNC_PARA, (ver_offs & 0xff)); in po1030_start()
268 err = m5602_write_bridge(sd, M5602_XB_VSYNC_PARA, 0); in po1030_start()
272 err = m5602_write_bridge(sd, M5602_XB_VSYNC_PARA, (height >> 8) & 0xff); in po1030_start()
276 err = m5602_write_bridge(sd, M5602_XB_VSYNC_PARA, (height & 0xff)); in po1030_start()
281 err = m5602_write_bridge(sd, M5602_XB_VSYNC_PARA, 0); in po1030_start()
284 err = m5602_write_bridge(sd, M5602_XB_SIG_INI, 0); in po1030_start()
287 err = m5602_write_bridge(sd, M5602_XB_HSYNC_PARA, 0); in po1030_start()
291 err = m5602_write_bridge(sd, M5602_XB_HSYNC_PARA, (width >> 8) & 0xff); in po1030_start()
295 err = m5602_write_bridge(sd, M5602_XB_HSYNC_PARA, (width & 0xff)); in po1030_start()
299 err = m5602_write_bridge(sd, M5602_XB_SIG_INI, 0); in po1030_start()
305 struct sd *sd = (struct sd *) gspca_dev; in po1030_set_exposure() local
315 err = m5602_write_sensor(sd, PO1030_INTEGLINES_H, in po1030_set_exposure()
323 err = m5602_write_sensor(sd, PO1030_INTEGLINES_M, in po1030_set_exposure()
331 struct sd *sd = (struct sd *) gspca_dev; in po1030_set_gain() local
337 err = m5602_write_sensor(sd, PO1030_GLOBALGAIN, in po1030_set_gain()
344 struct sd *sd = (struct sd *) gspca_dev; in po1030_set_hvflip() local
348 PDEBUG(D_CONF, "Set hvflip %d %d", sd->hflip->val, sd->vflip->val); in po1030_set_hvflip()
349 err = m5602_read_sensor(sd, PO1030_CONTROL2, &i2c_data, 1); in po1030_set_hvflip()
353 i2c_data = (0x3f & i2c_data) | (sd->hflip->val << 7) | in po1030_set_hvflip()
354 (sd->vflip->val << 6); in po1030_set_hvflip()
356 err = m5602_write_sensor(sd, PO1030_CONTROL2, in po1030_set_hvflip()
364 struct sd *sd = (struct sd *) gspca_dev; in po1030_set_red_balance() local
370 err = m5602_write_sensor(sd, PO1030_RED_GAIN, in po1030_set_red_balance()
377 struct sd *sd = (struct sd *) gspca_dev; in po1030_set_blue_balance() local
383 err = m5602_write_sensor(sd, PO1030_BLUE_GAIN, in po1030_set_blue_balance()
391 struct sd *sd = (struct sd *) gspca_dev; in po1030_set_green_balance() local
398 err = m5602_write_sensor(sd, PO1030_GREEN_1_GAIN, in po1030_set_green_balance()
403 return m5602_write_sensor(sd, PO1030_GREEN_2_GAIN, in po1030_set_green_balance()
410 struct sd *sd = (struct sd *) gspca_dev; in po1030_set_auto_white_balance() local
414 err = m5602_read_sensor(sd, PO1030_AUTOCTRL1, &i2c_data, 1); in po1030_set_auto_white_balance()
420 err = m5602_write_sensor(sd, PO1030_AUTOCTRL1, &i2c_data, 1); in po1030_set_auto_white_balance()
427 struct sd *sd = (struct sd *) gspca_dev; in po1030_set_auto_exposure() local
431 err = m5602_read_sensor(sd, PO1030_AUTOCTRL1, &i2c_data, 1); in po1030_set_auto_exposure()
438 return m5602_write_sensor(sd, PO1030_AUTOCTRL1, &i2c_data, 1); in po1030_set_auto_exposure()
441 void po1030_disconnect(struct sd *sd) in po1030_disconnect() argument
443 sd->sensor = NULL; in po1030_disconnect()
450 struct sd *sd = (struct sd *) gspca_dev; in po1030_s_ctrl() local
461 err = po1030_set_green_balance(gspca_dev, sd->green_bal->val); in po1030_s_ctrl()
464 err = po1030_set_red_balance(gspca_dev, sd->red_bal->val); in po1030_s_ctrl()
467 err = po1030_set_blue_balance(gspca_dev, sd->blue_bal->val); in po1030_s_ctrl()
473 err = po1030_set_exposure(gspca_dev, sd->expo->val); in po1030_s_ctrl()
488 static void po1030_dump_registers(struct sd *sd) in po1030_dump_registers() argument
495 m5602_read_sensor(sd, address, &value, 1); in po1030_dump_registers()
506 m5602_read_sensor(sd, address, &old_value, 1); in po1030_dump_registers()
507 m5602_write_sensor(sd, address, test_value, 1); in po1030_dump_registers()
508 m5602_read_sensor(sd, address, &ctrl_value, 1); in po1030_dump_registers()
516 m5602_write_sensor(sd, address, &old_value, 1); in po1030_dump_registers()