Lines Matching refs:gspca_dev

34 	struct gspca_dev gspca_dev;	/* !! must be the first item */
62 static void reg_r(struct gspca_dev *gspca_dev,
70 struct usb_device *dev = gspca_dev->dev;
73 if (gspca_dev->usb_err < 0)
80 gspca_dev->usb_buf, len,
83 gspca_dev->usb_buf[0]);
86 gspca_dev->usb_err = ret;
90 static void reg_w(struct gspca_dev *gspca_dev,
95 struct usb_device *dev = gspca_dev->dev;
98 if (gspca_dev->usb_err < 0)
108 gspca_dev->usb_err = ret;
112 static void reg_wb(struct gspca_dev *gspca_dev,
118 struct usb_device *dev = gspca_dev->dev;
121 if (gspca_dev->usb_err < 0)
124 gspca_dev->usb_buf[0] = byte;
129 gspca_dev->usb_buf, 1, 500);
132 gspca_dev->usb_err = ret;
136 static void wait_status_0(struct gspca_dev *gspca_dev)
143 reg_r(gspca_dev, 0x21, 0x0000, 1);
144 if (gspca_dev->usb_buf[0] == 0)
150 gspca_dev->usb_err = -ETIME;
153 static void wait_status_1(struct gspca_dev *gspca_dev)
159 reg_r(gspca_dev, 0x21, 0x0001, 1);
161 if (gspca_dev->usb_buf[0] == 1) {
162 reg_wb(gspca_dev, 0x21, 0x0000, 0x0001, 0x00);
163 reg_r(gspca_dev, 0x21, 0x0001, 1);
168 gspca_dev->usb_err = -ETIME;
171 static void setbrightness(struct gspca_dev *gspca_dev, s32 val)
173 reg_wb(gspca_dev, 0xc0, 0x0000, 0x00c0, val);
176 static void setcontrast(struct gspca_dev *gspca_dev, s32 val)
178 reg_wb(gspca_dev, 0xc1, 0x0000, 0x00c1, val);
181 static void sethue(struct gspca_dev *gspca_dev, s32 val)
183 reg_wb(gspca_dev, 0xc2, 0x0000, 0x0000, val);
186 static void setcolor(struct gspca_dev *gspca_dev, s32 val)
188 reg_wb(gspca_dev, 0xc3, 0x0000, 0x00c3, val);
191 static void setsharpness(struct gspca_dev *gspca_dev, s32 val)
193 reg_wb(gspca_dev, 0xc4, 0x0000, 0x00c4, val);
197 static int sd_config(struct gspca_dev *gspca_dev,
200 gspca_dev->cam.cam_mode = vga_mode;
201 gspca_dev->cam.nmodes = ARRAY_SIZE(vga_mode);
202 gspca_dev->cam.npkt = 128; /* number of packets per ISOC message */
209 static int sd_init(struct gspca_dev *gspca_dev)
211 reg_w(gspca_dev, 0x00, 0x0001, 0x2067);
212 reg_w(gspca_dev, 0x00, 0x00d0, 0x206b);
213 reg_w(gspca_dev, 0x00, 0x0000, 0x206c);
214 reg_w(gspca_dev, 0x00, 0x0001, 0x2069);
216 reg_w(gspca_dev, 0x00, 0x00c0, 0x206b);
217 reg_w(gspca_dev, 0x00, 0x0000, 0x206c);
218 reg_w(gspca_dev, 0x00, 0x0001, 0x2069);
220 reg_r(gspca_dev, 0x20, 0x0000, 1);
221 reg_r(gspca_dev, 0x20, 0x0000, 5);
222 reg_r(gspca_dev, 0x23, 0x0000, 64);
223 PDEBUG(D_PROBE, "%s%s", &gspca_dev->usb_buf[0x1c],
224 &gspca_dev->usb_buf[0x30]);
225 reg_r(gspca_dev, 0x23, 0x0001, 64);
226 return gspca_dev->usb_err;
230 static int sd_isoc_init(struct gspca_dev *gspca_dev)
234 reg_r(gspca_dev, 0x00, 0x2520, 1);
235 wait_status_0(gspca_dev);
236 reg_w(gspca_dev, 0xc5, 0x0003, 0x0000);
237 wait_status_1(gspca_dev);
239 wait_status_0(gspca_dev);
240 mode = gspca_dev->cam.cam_mode[gspca_dev->curr_mode].priv;
241 reg_wb(gspca_dev, 0x25, 0x0000, 0x0004, mode);
242 reg_r(gspca_dev, 0x25, 0x0004, 1);
243 reg_wb(gspca_dev, 0x27, 0x0000, 0x0000, 0x06); /* 420 */
244 reg_r(gspca_dev, 0x27, 0x0000, 1);
247 gspca_dev->alt = 4; * use alternate setting 3 */
249 return gspca_dev->usb_err;
253 static int sd_start(struct gspca_dev *gspca_dev)
255 struct sd *sd = (struct sd *) gspca_dev;
258 jpeg_define(sd->jpeg_hdr, gspca_dev->pixfmt.height,
259 gspca_dev->pixfmt.width,
265 reg_r(gspca_dev, 0x00, 0x2520, 1);
269 wait_status_0(gspca_dev);
270 reg_w(gspca_dev, 0x31, 0x0000, 0x0004); /* start request */
271 wait_status_1(gspca_dev);
272 wait_status_0(gspca_dev);
276 return gspca_dev->usb_err;
279 static void sd_stopN(struct gspca_dev *gspca_dev)
282 wait_status_0(gspca_dev);
283 reg_w(gspca_dev, 0x31, 0x0000, 0x0000); /* stop request */
284 wait_status_1(gspca_dev);
285 wait_status_0(gspca_dev);
289 static void add_packet(struct gspca_dev *gspca_dev,
298 gspca_frame_add(gspca_dev, INTER_PACKET,
306 gspca_frame_add(gspca_dev, INTER_PACKET, data, len);
309 static void sd_pkt_scan(struct gspca_dev *gspca_dev,
313 struct sd *sd = (struct sd *) gspca_dev;
327 add_packet(gspca_dev, data + 2, len - 2);
328 gspca_frame_add(gspca_dev, LAST_PACKET,
334 if (gspca_dev->last_packet_type == LAST_PACKET)
335 gspca_frame_add(gspca_dev, FIRST_PACKET,
337 add_packet(gspca_dev, data + 2, len - 2);
341 gspca_dev->last_packet_type = DISCARD_PACKET;
346 struct gspca_dev *gspca_dev =
347 container_of(ctrl->handler, struct gspca_dev, ctrl_handler);
349 gspca_dev->usb_err = 0;
351 if (!gspca_dev->streaming)
356 setbrightness(gspca_dev, ctrl->val);
359 setcontrast(gspca_dev, ctrl->val);
362 sethue(gspca_dev, ctrl->val);
365 setcolor(gspca_dev, ctrl->val);
368 setsharpness(gspca_dev, ctrl->val);
371 return gspca_dev->usb_err;
378 static int sd_init_controls(struct gspca_dev *gspca_dev)
380 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler;
382 gspca_dev->vdev.ctrl_handler = hdl;