Lines Matching refs:sd

44 static void s5k83a_dump_registers(struct sd *sd);
45 static int s5k83a_get_rotation(struct sd *sd, u8 *reg_data);
46 static int s5k83a_set_led_indication(struct sd *sd, u8 val);
50 int s5k83a_probe(struct sd *sd) in s5k83a_probe() argument
54 struct gspca_dev *gspca_dev = (struct gspca_dev *)sd; in s5k83a_probe()
72 err = m5602_write_sensor(sd, preinit_s5k83a[i][1], in s5k83a_probe()
75 err = m5602_write_bridge(sd, preinit_s5k83a[i][1], in s5k83a_probe()
82 if (m5602_read_sensor(sd, 0x00, &prod_id, 1)) in s5k83a_probe()
85 if (m5602_read_sensor(sd, 0x01, &ver_id, 1)) in s5k83a_probe()
94 sd->gspca_dev.cam.cam_mode = s5k83a_modes; in s5k83a_probe()
95 sd->gspca_dev.cam.nmodes = ARRAY_SIZE(s5k83a_modes); in s5k83a_probe()
98 sd->rotation_thread = NULL; in s5k83a_probe()
103 int s5k83a_init(struct sd *sd) in s5k83a_init() argument
112 err = m5602_write_bridge(sd, in s5k83a_init()
119 err = m5602_write_sensor(sd, in s5k83a_init()
126 err = m5602_write_sensor(sd, in s5k83a_init()
136 s5k83a_dump_registers(sd); in s5k83a_init()
141 int s5k83a_init_controls(struct sd *sd) in s5k83a_init_controls() argument
143 struct v4l2_ctrl_handler *hdl = &sd->gspca_dev.ctrl_handler; in s5k83a_init_controls()
145 sd->gspca_dev.vdev.ctrl_handler = hdl; in s5k83a_init_controls()
158 sd->hflip = v4l2_ctrl_new_std(hdl, &s5k83a_ctrl_ops, V4L2_CID_HFLIP, in s5k83a_init_controls()
160 sd->vflip = v4l2_ctrl_new_std(hdl, &s5k83a_ctrl_ops, V4L2_CID_VFLIP, in s5k83a_init_controls()
168 v4l2_ctrl_cluster(2, &sd->hflip); in s5k83a_init_controls()
175 struct sd *sd = (struct sd *) data; in rotation_thread_function() local
181 if (mutex_lock_interruptible(&sd->gspca_dev.usb_lock)) in rotation_thread_function()
184 s5k83a_get_rotation(sd, &reg); in rotation_thread_function()
189 hflip = sd->hflip->val; in rotation_thread_function()
190 vflip = sd->vflip->val; in rotation_thread_function()
196 s5k83a_set_flip_real((struct gspca_dev *) sd, in rotation_thread_function()
200 mutex_unlock(&sd->gspca_dev.usb_lock); in rotation_thread_function()
206 hflip = sd->hflip->val; in rotation_thread_function()
207 vflip = sd->vflip->val; in rotation_thread_function()
208 s5k83a_set_flip_real((struct gspca_dev *) sd, vflip, hflip); in rotation_thread_function()
211 sd->rotation_thread = NULL; in rotation_thread_function()
215 int s5k83a_start(struct sd *sd) in s5k83a_start() argument
222 sd->rotation_thread = kthread_create(rotation_thread_function, in s5k83a_start()
223 sd, "rotation thread"); in s5k83a_start()
224 wake_up_process(sd->rotation_thread); in s5k83a_start()
230 err = m5602_write_sensor(sd, start_s5k83a[i][1], in s5k83a_start()
233 err = m5602_write_bridge(sd, start_s5k83a[i][1], in s5k83a_start()
239 return s5k83a_set_led_indication(sd, 1); in s5k83a_start()
242 int s5k83a_stop(struct sd *sd) in s5k83a_stop() argument
244 if (sd->rotation_thread) in s5k83a_stop()
245 kthread_stop(sd->rotation_thread); in s5k83a_stop()
247 return s5k83a_set_led_indication(sd, 0); in s5k83a_stop()
250 void s5k83a_disconnect(struct sd *sd) in s5k83a_disconnect() argument
252 s5k83a_stop(sd); in s5k83a_disconnect()
254 sd->sensor = NULL; in s5k83a_disconnect()
261 struct sd *sd = (struct sd *) gspca_dev; in s5k83a_set_gain() local
265 err = m5602_write_sensor(sd, 0x14, data, 2); in s5k83a_set_gain()
271 err = m5602_write_sensor(sd, 0x0d, data, 2); in s5k83a_set_gain()
279 err = m5602_write_sensor(sd, S5K83A_GAIN, data, 2); in s5k83a_set_gain()
288 struct sd *sd = (struct sd *) gspca_dev; in s5k83a_set_brightness() local
291 err = m5602_write_sensor(sd, S5K83A_BRIGHTNESS, data, 1); in s5k83a_set_brightness()
299 struct sd *sd = (struct sd *) gspca_dev; in s5k83a_set_exposure() local
303 err = m5602_write_sensor(sd, S5K83A_EXPOSURE, data, 2); in s5k83a_set_exposure()
312 struct sd *sd = (struct sd *) gspca_dev; in s5k83a_set_flip_real() local
315 err = m5602_write_sensor(sd, S5K83A_PAGE_MAP, data, 1); in s5k83a_set_flip_real()
324 err = m5602_write_sensor(sd, S5K83A_FLIP, data, 1); in s5k83a_set_flip_real()
329 err = m5602_write_sensor(sd, S5K83A_VFLIP_TUNE, data, 1); in s5k83a_set_flip_real()
334 err = m5602_write_sensor(sd, S5K83A_HFLIP_TUNE, data, 1); in s5k83a_set_flip_real()
342 struct sd *sd = (struct sd *) gspca_dev; in s5k83a_set_hvflip() local
343 int hflip = sd->hflip->val; in s5k83a_set_hvflip()
344 int vflip = sd->vflip->val; in s5k83a_set_hvflip()
346 err = s5k83a_get_rotation(sd, &reg); in s5k83a_set_hvflip()
387 static int s5k83a_set_led_indication(struct sd *sd, u8 val) in s5k83a_set_led_indication() argument
392 err = m5602_read_bridge(sd, M5602_XB_GPIO_DAT, data); in s5k83a_set_led_indication()
401 err = m5602_write_bridge(sd, M5602_XB_GPIO_DAT, data[0]); in s5k83a_set_led_indication()
407 static int s5k83a_get_rotation(struct sd *sd, u8 *reg_data) in s5k83a_get_rotation() argument
409 int err = m5602_read_bridge(sd, M5602_XB_GPIO_DAT, reg_data); in s5k83a_get_rotation()
414 static void s5k83a_dump_registers(struct sd *sd) in s5k83a_dump_registers() argument
418 m5602_read_sensor(sd, S5K83A_PAGE_MAP, &old_page, 1); in s5k83a_dump_registers()
421 m5602_write_sensor(sd, S5K83A_PAGE_MAP, &page, 1); in s5k83a_dump_registers()
426 m5602_read_sensor(sd, address, &val, 1); in s5k83a_dump_registers()
433 m5602_write_sensor(sd, S5K83A_PAGE_MAP, &page, 1); in s5k83a_dump_registers()
439 m5602_read_sensor(sd, address, &old_val, 1); in s5k83a_dump_registers()
440 m5602_write_sensor(sd, address, &test_val, 1); in s5k83a_dump_registers()
441 m5602_read_sensor(sd, address, &ctrl_val, 1); in s5k83a_dump_registers()
451 m5602_write_sensor(sd, address, &old_val, 1); in s5k83a_dump_registers()
455 m5602_write_sensor(sd, S5K83A_PAGE_MAP, &old_page, 1); in s5k83a_dump_registers()