Lines Matching +full:cam +full:- +full:0

1 // SPDX-License-Identifier: GPL-2.0-or-later
3 * Copyright (c) 2001 Jean-Fredric Clere, Nikolas Zimmermann, Georg Acher
4 * Mark Cave-Ayland, Carlo E Prelz, Dick Streefland
9 * P/N 861050-0010: Sensor HDCS1000 ASIC STV0600
10 * P/N 861050-0020: Sensor Photobit PB100 ASIC STV0600-1 - QuickCam Express
11 * P/N 861055: Sensor ST VV6410 ASIC STV0610 - LEGO cam
12 * P/N 861075-0040: Sensor HDCS1000 ASIC
13 * P/N 961179-0700: Sensor ST VV6410 ASIC STV0602 - Dexxa WebCam USB
14 * P/N 861040-0000: Sensor ST VV6410 ASIC STV0610 - QuickCam Web
30 .priv = 0
37 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); in vv6410_s_ctrl()
38 int err = -EINVAL; in vv6410_s_ctrl()
40 switch (ctrl->id) { in vv6410_s_ctrl()
42 if (!gspca_dev->streaming) in vv6410_s_ctrl()
43 return 0; in vv6410_s_ctrl()
44 err = vv6410_set_hflip(gspca_dev, ctrl->val); in vv6410_s_ctrl()
47 if (!gspca_dev->streaming) in vv6410_s_ctrl()
48 return 0; in vv6410_s_ctrl()
49 err = vv6410_set_vflip(gspca_dev, ctrl->val); in vv6410_s_ctrl()
52 err = vv6410_set_analog_gain(gspca_dev, ctrl->val); in vv6410_s_ctrl()
55 err = vv6410_set_exposure(gspca_dev, ctrl->val); in vv6410_s_ctrl()
71 if (err < 0) in vv6410_probe()
72 return -ENODEV; in vv6410_probe()
74 if (data != 0x19) in vv6410_probe()
75 return -ENODEV; in vv6410_probe()
79 sd->gspca_dev.cam.cam_mode = vv6410_mode; in vv6410_probe()
80 sd->gspca_dev.cam.nmodes = ARRAY_SIZE(vv6410_mode); in vv6410_probe()
81 return 0; in vv6410_probe()
86 struct v4l2_ctrl_handler *hdl = &sd->gspca_dev.ctrl_handler; in vv6410_init_controls()
93 /* V4L2_CID_HFLIP, 0, 1, 1, 0); */ in vv6410_init_controls()
95 /* V4L2_CID_VFLIP, 0, 1, 1, 0); */ in vv6410_init_controls()
97 V4L2_CID_EXPOSURE, 0, 32768, 1, 20000); in vv6410_init_controls()
99 V4L2_CID_GAIN, 0, 15, 1, 10); in vv6410_init_controls()
100 return hdl->error; in vv6410_init_controls()
105 int err = 0, i; in vv6410_init()
107 for (i = 0; i < ARRAY_SIZE(stv_bridge_init); i++) in vv6410_init()
112 return (err < 0) ? err : 0; in vv6410_init()
119 struct cam *cam = &sd->gspca_dev.cam; in vv6410_start() local
120 u32 priv = cam->cam_mode[sd->gspca_dev.curr_mode].priv; in vv6410_start()
124 stv06xx_write_bridge(sd, STV_Y_CTRL, 0x02); in vv6410_start()
125 stv06xx_write_bridge(sd, STV_X_CTRL, 0x06); in vv6410_start()
127 stv06xx_write_bridge(sd, STV_SCAN_RATE, 0x10); in vv6410_start()
129 stv06xx_write_bridge(sd, STV_Y_CTRL, 0x01); in vv6410_start()
130 stv06xx_write_bridge(sd, STV_X_CTRL, 0x0a); in vv6410_start()
131 stv06xx_write_bridge(sd, STV_SCAN_RATE, 0x00); in vv6410_start()
137 if (err < 0) in vv6410_start()
140 err = stv06xx_write_sensor(sd, VV6410_SETUP0, 0); in vv6410_start()
141 if (err < 0) in vv6410_start()
146 return 0; in vv6410_start()
156 if (err < 0) in vv6410_stop()
160 if (err < 0) in vv6410_stop()
165 return 0; in vv6410_stop()
171 int err = 0; in vv6410_dump()
174 for (i = 0; i < 0xff && !err; i++) { in vv6410_dump()
177 pr_info("Register 0x%x contained 0x%x\n", i, data); in vv6410_dump()
179 return (err < 0) ? err : 0; in vv6410_dump()
189 if (err < 0) in vv6410_set_hflip()
200 return (err < 0) ? err : 0; in vv6410_set_hflip()
210 if (err < 0) in vv6410_set_vflip()
221 return (err < 0) ? err : 0; in vv6410_set_vflip()
230 err = stv06xx_write_sensor(sd, VV6410_ANALOGGAIN, 0xf0 | (val & 0xf)); in vv6410_set_analog_gain()
232 return (err < 0) ? err : 0; in vv6410_set_analog_gain()
250 if (err < 0) in vv6410_set_exposure()
253 err = stv06xx_write_sensor(sd, VV6410_FINEL, fine & 0xff); in vv6410_set_exposure()
254 if (err < 0) in vv6410_set_exposure()
258 if (err < 0) in vv6410_set_exposure()
261 err = stv06xx_write_sensor(sd, VV6410_COARSEL, coarse & 0xff); in vv6410_set_exposure()