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