Lines Matching refs:gspca_dev

21 	struct gspca_dev gspca_dev;	/* !! must be the first item */
49 static void reg_r(struct gspca_dev *gspca_dev,
57 struct usb_device *dev = gspca_dev->dev;
60 if (gspca_dev->usb_err < 0)
67 gspca_dev->usb_buf, len,
69 gspca_dbg(gspca_dev, D_USBI, "GET %02x 0000 %04x %02x\n", req, index,
70 gspca_dev->usb_buf[0]);
73 gspca_dev->usb_err = ret;
78 memset(gspca_dev->usb_buf, 0, USB_BUF_SZ);
82 static void reg_w(struct gspca_dev *gspca_dev,
87 struct usb_device *dev = gspca_dev->dev;
90 if (gspca_dev->usb_err < 0)
92 gspca_dbg(gspca_dev, D_USBO, "SET %02x %04x %04x\n", req, value, index);
100 gspca_dev->usb_err = ret;
104 static void reg_wb(struct gspca_dev *gspca_dev,
110 struct usb_device *dev = gspca_dev->dev;
113 if (gspca_dev->usb_err < 0)
115 gspca_dbg(gspca_dev, D_USBO, "SET %02x %04x %04x %02x\n",
117 gspca_dev->usb_buf[0] = byte;
122 gspca_dev->usb_buf, 1, 500);
125 gspca_dev->usb_err = ret;
129 static void wait_status_0(struct gspca_dev *gspca_dev)
136 reg_r(gspca_dev, 0x21, 0x0000, 1);
137 if (gspca_dev->usb_buf[0] == 0)
142 gspca_err(gspca_dev, "wait_status_0 timeout\n");
143 gspca_dev->usb_err = -ETIME;
146 static void wait_status_1(struct gspca_dev *gspca_dev)
152 reg_r(gspca_dev, 0x21, 0x0001, 1);
154 if (gspca_dev->usb_buf[0] == 1) {
155 reg_wb(gspca_dev, 0x21, 0x0000, 0x0001, 0x00);
156 reg_r(gspca_dev, 0x21, 0x0001, 1);
160 gspca_err(gspca_dev, "wait_status_1 timeout\n");
161 gspca_dev->usb_err = -ETIME;
164 static void setbrightness(struct gspca_dev *gspca_dev, s32 val)
166 reg_wb(gspca_dev, 0xc0, 0x0000, 0x00c0, val);
169 static void setcontrast(struct gspca_dev *gspca_dev, s32 val)
171 reg_wb(gspca_dev, 0xc1, 0x0000, 0x00c1, val);
174 static void sethue(struct gspca_dev *gspca_dev, s32 val)
176 reg_wb(gspca_dev, 0xc2, 0x0000, 0x0000, val);
179 static void setcolor(struct gspca_dev *gspca_dev, s32 val)
181 reg_wb(gspca_dev, 0xc3, 0x0000, 0x00c3, val);
184 static void setsharpness(struct gspca_dev *gspca_dev, s32 val)
186 reg_wb(gspca_dev, 0xc4, 0x0000, 0x00c4, val);
190 static int sd_config(struct gspca_dev *gspca_dev,
193 gspca_dev->cam.cam_mode = vga_mode;
194 gspca_dev->cam.nmodes = ARRAY_SIZE(vga_mode);
195 gspca_dev->cam.npkt = 128; /* number of packets per ISOC message */
202 static int sd_init(struct gspca_dev *gspca_dev)
204 reg_w(gspca_dev, 0x00, 0x0001, 0x2067);
205 reg_w(gspca_dev, 0x00, 0x00d0, 0x206b);
206 reg_w(gspca_dev, 0x00, 0x0000, 0x206c);
207 reg_w(gspca_dev, 0x00, 0x0001, 0x2069);
209 reg_w(gspca_dev, 0x00, 0x00c0, 0x206b);
210 reg_w(gspca_dev, 0x00, 0x0000, 0x206c);
211 reg_w(gspca_dev, 0x00, 0x0001, 0x2069);
213 reg_r(gspca_dev, 0x20, 0x0000, 1);
214 reg_r(gspca_dev, 0x20, 0x0000, 5);
215 reg_r(gspca_dev, 0x23, 0x0000, 64);
216 gspca_dbg(gspca_dev, D_PROBE, "%s%s\n", &gspca_dev->usb_buf[0x1c],
217 &gspca_dev->usb_buf[0x30]);
218 reg_r(gspca_dev, 0x23, 0x0001, 64);
219 return gspca_dev->usb_err;
223 static int sd_isoc_init(struct gspca_dev *gspca_dev)
227 reg_r(gspca_dev, 0x00, 0x2520, 1);
228 wait_status_0(gspca_dev);
229 reg_w(gspca_dev, 0xc5, 0x0003, 0x0000);
230 wait_status_1(gspca_dev);
232 wait_status_0(gspca_dev);
233 mode = gspca_dev->cam.cam_mode[gspca_dev->curr_mode].priv;
234 reg_wb(gspca_dev, 0x25, 0x0000, 0x0004, mode);
235 reg_r(gspca_dev, 0x25, 0x0004, 1);
236 reg_wb(gspca_dev, 0x27, 0x0000, 0x0000, 0x06); /* 420 */
237 reg_r(gspca_dev, 0x27, 0x0000, 1);
240 gspca_dev->alt = 4; * use alternate setting 3 */
242 return gspca_dev->usb_err;
246 static int sd_start(struct gspca_dev *gspca_dev)
248 struct sd *sd = (struct sd *) gspca_dev;
251 jpeg_define(sd->jpeg_hdr, gspca_dev->pixfmt.height,
252 gspca_dev->pixfmt.width,
258 reg_r(gspca_dev, 0x00, 0x2520, 1);
262 wait_status_0(gspca_dev);
263 reg_w(gspca_dev, 0x31, 0x0000, 0x0004); /* start request */
264 wait_status_1(gspca_dev);
265 wait_status_0(gspca_dev);
269 return gspca_dev->usb_err;
272 static void sd_stopN(struct gspca_dev *gspca_dev)
275 wait_status_0(gspca_dev);
276 reg_w(gspca_dev, 0x31, 0x0000, 0x0000); /* stop request */
277 wait_status_1(gspca_dev);
278 wait_status_0(gspca_dev);
282 static void add_packet(struct gspca_dev *gspca_dev,
291 gspca_frame_add(gspca_dev, INTER_PACKET,
299 gspca_frame_add(gspca_dev, INTER_PACKET, data, len);
302 static void sd_pkt_scan(struct gspca_dev *gspca_dev,
306 struct sd *sd = (struct sd *) gspca_dev;
320 add_packet(gspca_dev, data + 2, len - 2);
321 gspca_frame_add(gspca_dev, LAST_PACKET,
327 if (gspca_dev->last_packet_type == LAST_PACKET)
328 gspca_frame_add(gspca_dev, FIRST_PACKET,
330 add_packet(gspca_dev, data + 2, len - 2);
334 gspca_dev->last_packet_type = DISCARD_PACKET;
339 struct gspca_dev *gspca_dev =
340 container_of(ctrl->handler, struct gspca_dev, ctrl_handler);
342 gspca_dev->usb_err = 0;
344 if (!gspca_dev->streaming)
349 setbrightness(gspca_dev, ctrl->val);
352 setcontrast(gspca_dev, ctrl->val);
355 sethue(gspca_dev, ctrl->val);
358 setcolor(gspca_dev, ctrl->val);
361 setsharpness(gspca_dev, ctrl->val);
364 return gspca_dev->usb_err;
371 static int sd_init_controls(struct gspca_dev *gspca_dev)
373 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler;
375 gspca_dev->vdev.ctrl_handler = hdl;