Lines Matching refs:gspca_dev

23 	struct gspca_dev gspca_dev;	/* !! must be the first item */  member
41 static u8 reg_r(struct gspca_dev *gspca_dev, in reg_r() argument
44 struct usb_device *dev = gspca_dev->dev; in reg_r()
47 if (gspca_dev->usb_err < 0) in reg_r()
54 gspca_dev->usb_buf, 1, in reg_r()
58 gspca_dev->usb_err = ret; in reg_r()
61 return gspca_dev->usb_buf[0]; in reg_r()
65 static void reg_w(struct gspca_dev *gspca_dev, in reg_w() argument
68 struct usb_device *dev = gspca_dev->dev; in reg_w()
71 if (gspca_dev->usb_err < 0) in reg_w()
83 gspca_dev->usb_err = ret; in reg_w()
88 static void rcv_val(struct gspca_dev *gspca_dev, in rcv_val() argument
91 struct usb_device *dev = gspca_dev->dev; in rcv_val()
94 reg_w(gspca_dev, 0x634, (ads >> 16) & 0xff); in rcv_val()
95 reg_w(gspca_dev, 0x635, (ads >> 8) & 0xff); in rcv_val()
96 reg_w(gspca_dev, 0x636, ads & 0xff); in rcv_val()
97 reg_w(gspca_dev, 0x637, 0); in rcv_val()
98 reg_w(gspca_dev, 0x638, 4); /* len & 0xff */ in rcv_val()
99 reg_w(gspca_dev, 0x639, 0); /* len >> 8 */ in rcv_val()
100 reg_w(gspca_dev, 0x63a, 0); in rcv_val()
101 reg_w(gspca_dev, 0x63b, 0); in rcv_val()
102 reg_w(gspca_dev, 0x630, 5); in rcv_val()
103 if (gspca_dev->usb_err < 0) in rcv_val()
107 gspca_dev->usb_buf, in rcv_val()
113 gspca_dev->usb_err = ret; in rcv_val()
118 static void snd_val(struct gspca_dev *gspca_dev, in snd_val() argument
122 struct usb_device *dev = gspca_dev->dev; in snd_val()
127 reg_r(gspca_dev, 0x0704); in snd_val()
128 seq = reg_r(gspca_dev, 0x0705); in snd_val()
129 reg_r(gspca_dev, 0x0650); in snd_val()
130 reg_w(gspca_dev, 0x654, seq); in snd_val()
132 reg_w(gspca_dev, 0x654, (ads >> 16) & 0xff); in snd_val()
134 reg_w(gspca_dev, 0x655, (ads >> 8) & 0xff); in snd_val()
135 reg_w(gspca_dev, 0x656, ads & 0xff); in snd_val()
136 reg_w(gspca_dev, 0x657, 0); in snd_val()
137 reg_w(gspca_dev, 0x658, 0x04); /* size */ in snd_val()
138 reg_w(gspca_dev, 0x659, 0); in snd_val()
139 reg_w(gspca_dev, 0x65a, 0); in snd_val()
140 reg_w(gspca_dev, 0x65b, 0); in snd_val()
141 reg_w(gspca_dev, 0x650, 5); in snd_val()
142 if (gspca_dev->usb_err < 0) in snd_val()
144 gspca_dev->usb_buf[0] = val >> 24; in snd_val()
145 gspca_dev->usb_buf[1] = val >> 16; in snd_val()
146 gspca_dev->usb_buf[2] = val >> 8; in snd_val()
147 gspca_dev->usb_buf[3] = val; in snd_val()
150 gspca_dev->usb_buf, in snd_val()
156 gspca_dev->usb_err = ret; in snd_val()
161 reg_w(gspca_dev, 0x705, seq); in snd_val()
167 static void set_par(struct gspca_dev *gspca_dev, in set_par() argument
170 snd_val(gspca_dev, 0x003f08, parval); in set_par()
173 static void setbrightness(struct gspca_dev *gspca_dev, s32 val) in setbrightness() argument
179 set_par(gspca_dev, parval); in setbrightness()
182 static void setcontrast(struct gspca_dev *gspca_dev, s32 val) in setcontrast() argument
188 set_par(gspca_dev, parval); in setcontrast()
191 static void setcolors(struct gspca_dev *gspca_dev, s32 val) in setcolors() argument
197 set_par(gspca_dev, parval); in setcolors()
200 static void setlightfreq(struct gspca_dev *gspca_dev, s32 val) in setlightfreq() argument
202 set_par(gspca_dev, val == 1 in setlightfreq()
208 static int sd_config(struct gspca_dev *gspca_dev, in sd_config() argument
211 gspca_dev->cam.cam_mode = vga_mode; in sd_config()
212 gspca_dev->cam.nmodes = ARRAY_SIZE(vga_mode); in sd_config()
217 static int sd_init(struct gspca_dev *gspca_dev) in sd_init() argument
222 usb_set_interface(gspca_dev->dev, gspca_dev->iface, 1); in sd_init()
223 ret = reg_r(gspca_dev, 0x0740); in sd_init()
224 if (gspca_dev->usb_err >= 0) { in sd_init()
227 gspca_dev->usb_err = -EIO; in sd_init()
230 return gspca_dev->usb_err; in sd_init()
234 static int sd_start(struct gspca_dev *gspca_dev) in sd_start() argument
236 struct sd *sd = (struct sd *) gspca_dev; in sd_start()
240 jpeg_define(sd->jpeg_hdr, gspca_dev->pixfmt.height, in sd_start()
241 gspca_dev->pixfmt.width, in sd_start()
246 usb_set_interface(gspca_dev->dev, gspca_dev->iface, 1); in sd_start()
248 set_par(gspca_dev, 0x10000000); in sd_start()
249 set_par(gspca_dev, 0x00000000); in sd_start()
250 set_par(gspca_dev, 0x8002e001); in sd_start()
251 set_par(gspca_dev, 0x14000000); in sd_start()
252 if (gspca_dev->pixfmt.width > 320) in sd_start()
256 set_par(gspca_dev, value); in sd_start()
257 ret = usb_set_interface(gspca_dev->dev, in sd_start()
258 gspca_dev->iface, in sd_start()
259 gspca_dev->alt); in sd_start()
262 gspca_dev->iface, gspca_dev->alt); in sd_start()
263 gspca_dev->usb_err = ret; in sd_start()
266 reg_r(gspca_dev, 0x0630); in sd_start()
267 rcv_val(gspca_dev, 0x000020); /* << (value ff ff ff ff) */ in sd_start()
268 reg_r(gspca_dev, 0x0650); in sd_start()
269 snd_val(gspca_dev, 0x000020, 0xffffffff); in sd_start()
270 reg_w(gspca_dev, 0x0620, 0); in sd_start()
271 reg_w(gspca_dev, 0x0630, 0); in sd_start()
272 reg_w(gspca_dev, 0x0640, 0); in sd_start()
273 reg_w(gspca_dev, 0x0650, 0); in sd_start()
274 reg_w(gspca_dev, 0x0660, 0); in sd_start()
275 set_par(gspca_dev, 0x09800000); /* Red ? */ in sd_start()
276 set_par(gspca_dev, 0x0a800000); /* Green ? */ in sd_start()
277 set_par(gspca_dev, 0x0b800000); /* Blue ? */ in sd_start()
278 set_par(gspca_dev, 0x0d030000); /* Gamma ? */ in sd_start()
281 set_par(gspca_dev, 0x01000000); in sd_start()
282 set_par(gspca_dev, 0x01000000); in sd_start()
283 if (gspca_dev->usb_err >= 0) in sd_start()
284 gspca_dbg(gspca_dev, D_STREAM, "camera started alt: 0x%02x\n", in sd_start()
285 gspca_dev->alt); in sd_start()
287 return gspca_dev->usb_err; in sd_start()
290 static void sd_stopN(struct gspca_dev *gspca_dev) in sd_stopN() argument
292 struct usb_device *dev = gspca_dev->dev; in sd_stopN()
294 set_par(gspca_dev, 0x02000000); in sd_stopN()
295 set_par(gspca_dev, 0x02000000); in sd_stopN()
296 usb_set_interface(dev, gspca_dev->iface, 1); in sd_stopN()
297 reg_r(gspca_dev, 0x0630); in sd_stopN()
298 rcv_val(gspca_dev, 0x000020); /* << (value ff ff ff ff) */ in sd_stopN()
299 reg_r(gspca_dev, 0x0650); in sd_stopN()
300 snd_val(gspca_dev, 0x000020, 0xffffffff); in sd_stopN()
301 reg_w(gspca_dev, 0x0620, 0); in sd_stopN()
302 reg_w(gspca_dev, 0x0630, 0); in sd_stopN()
303 reg_w(gspca_dev, 0x0640, 0); in sd_stopN()
304 reg_w(gspca_dev, 0x0650, 0); in sd_stopN()
305 reg_w(gspca_dev, 0x0660, 0); in sd_stopN()
306 gspca_dbg(gspca_dev, D_STREAM, "camera stopped\n"); in sd_stopN()
309 static void sd_pkt_scan(struct gspca_dev *gspca_dev, in sd_pkt_scan() argument
313 struct sd *sd = (struct sd *) gspca_dev; in sd_pkt_scan()
326 gspca_frame_add(gspca_dev, LAST_PACKET, in sd_pkt_scan()
330 gspca_frame_add(gspca_dev, FIRST_PACKET, in sd_pkt_scan()
338 gspca_frame_add(gspca_dev, INTER_PACKET, data, len); in sd_pkt_scan()
343 struct gspca_dev *gspca_dev = in sd_s_ctrl() local
344 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); in sd_s_ctrl()
346 gspca_dev->usb_err = 0; in sd_s_ctrl()
348 if (!gspca_dev->streaming) in sd_s_ctrl()
353 setbrightness(gspca_dev, ctrl->val); in sd_s_ctrl()
356 setcontrast(gspca_dev, ctrl->val); in sd_s_ctrl()
359 setcolors(gspca_dev, ctrl->val); in sd_s_ctrl()
362 setlightfreq(gspca_dev, ctrl->val); in sd_s_ctrl()
365 return gspca_dev->usb_err; in sd_s_ctrl()
372 static int sd_init_controls(struct gspca_dev *gspca_dev) in sd_init_controls() argument
374 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; in sd_init_controls()
376 gspca_dev->vdev.ctrl_handler = hdl; in sd_init_controls()