Lines Matching refs:gspca_dev
30 struct gspca_dev gspca_dev; /* !! must be the first item */ member
58 static void reg_r(struct gspca_dev *gspca_dev, in reg_r() argument
66 struct usb_device *dev = gspca_dev->dev; in reg_r()
69 if (gspca_dev->usb_err < 0) in reg_r()
76 gspca_dev->usb_buf, len, in reg_r()
78 gspca_dbg(gspca_dev, D_USBI, "GET %02x 0000 %04x %02x\n", req, index, in reg_r()
79 gspca_dev->usb_buf[0]); in reg_r()
82 gspca_dev->usb_err = ret; in reg_r()
86 static void reg_w(struct gspca_dev *gspca_dev, in reg_w() argument
91 struct usb_device *dev = gspca_dev->dev; in reg_w()
94 if (gspca_dev->usb_err < 0) in reg_w()
96 gspca_dbg(gspca_dev, D_USBO, "SET %02x %04x %04x\n", req, value, index); in reg_w()
104 gspca_dev->usb_err = ret; in reg_w()
108 static void reg_wb(struct gspca_dev *gspca_dev, in reg_wb() argument
114 struct usb_device *dev = gspca_dev->dev; in reg_wb()
117 if (gspca_dev->usb_err < 0) in reg_wb()
119 gspca_dbg(gspca_dev, D_USBO, "SET %02x %04x %04x %02x\n", in reg_wb()
121 gspca_dev->usb_buf[0] = byte; in reg_wb()
126 gspca_dev->usb_buf, 1, 500); in reg_wb()
129 gspca_dev->usb_err = ret; in reg_wb()
133 static void wait_status_0(struct gspca_dev *gspca_dev) in wait_status_0() argument
140 reg_r(gspca_dev, 0x21, 0x0000, 1); in wait_status_0()
141 if (gspca_dev->usb_buf[0] == 0) in wait_status_0()
146 gspca_err(gspca_dev, "wait_status_0 timeout\n"); in wait_status_0()
147 gspca_dev->usb_err = -ETIME; in wait_status_0()
150 static void wait_status_1(struct gspca_dev *gspca_dev) in wait_status_1() argument
156 reg_r(gspca_dev, 0x21, 0x0001, 1); in wait_status_1()
158 if (gspca_dev->usb_buf[0] == 1) { in wait_status_1()
159 reg_wb(gspca_dev, 0x21, 0x0000, 0x0001, 0x00); in wait_status_1()
160 reg_r(gspca_dev, 0x21, 0x0001, 1); in wait_status_1()
164 gspca_err(gspca_dev, "wait_status_1 timeout\n"); in wait_status_1()
165 gspca_dev->usb_err = -ETIME; in wait_status_1()
168 static void setbrightness(struct gspca_dev *gspca_dev, s32 val) in setbrightness() argument
170 reg_wb(gspca_dev, 0xc0, 0x0000, 0x00c0, val); in setbrightness()
173 static void setcontrast(struct gspca_dev *gspca_dev, s32 val) in setcontrast() argument
175 reg_wb(gspca_dev, 0xc1, 0x0000, 0x00c1, val); in setcontrast()
178 static void sethue(struct gspca_dev *gspca_dev, s32 val) in sethue() argument
180 reg_wb(gspca_dev, 0xc2, 0x0000, 0x0000, val); in sethue()
183 static void setcolor(struct gspca_dev *gspca_dev, s32 val) in setcolor() argument
185 reg_wb(gspca_dev, 0xc3, 0x0000, 0x00c3, val); in setcolor()
188 static void setsharpness(struct gspca_dev *gspca_dev, s32 val) in setsharpness() argument
190 reg_wb(gspca_dev, 0xc4, 0x0000, 0x00c4, val); in setsharpness()
194 static int sd_config(struct gspca_dev *gspca_dev, in sd_config() argument
197 gspca_dev->cam.cam_mode = vga_mode; in sd_config()
198 gspca_dev->cam.nmodes = ARRAY_SIZE(vga_mode); in sd_config()
199 gspca_dev->cam.npkt = 128; /* number of packets per ISOC message */ in sd_config()
206 static int sd_init(struct gspca_dev *gspca_dev) in sd_init() argument
208 reg_w(gspca_dev, 0x00, 0x0001, 0x2067); in sd_init()
209 reg_w(gspca_dev, 0x00, 0x00d0, 0x206b); in sd_init()
210 reg_w(gspca_dev, 0x00, 0x0000, 0x206c); in sd_init()
211 reg_w(gspca_dev, 0x00, 0x0001, 0x2069); in sd_init()
213 reg_w(gspca_dev, 0x00, 0x00c0, 0x206b); in sd_init()
214 reg_w(gspca_dev, 0x00, 0x0000, 0x206c); in sd_init()
215 reg_w(gspca_dev, 0x00, 0x0001, 0x2069); in sd_init()
217 reg_r(gspca_dev, 0x20, 0x0000, 1); in sd_init()
218 reg_r(gspca_dev, 0x20, 0x0000, 5); in sd_init()
219 reg_r(gspca_dev, 0x23, 0x0000, 64); in sd_init()
220 gspca_dbg(gspca_dev, D_PROBE, "%s%s\n", &gspca_dev->usb_buf[0x1c], in sd_init()
221 &gspca_dev->usb_buf[0x30]); in sd_init()
222 reg_r(gspca_dev, 0x23, 0x0001, 64); in sd_init()
223 return gspca_dev->usb_err; in sd_init()
227 static int sd_isoc_init(struct gspca_dev *gspca_dev) in sd_isoc_init() argument
231 reg_r(gspca_dev, 0x00, 0x2520, 1); in sd_isoc_init()
232 wait_status_0(gspca_dev); in sd_isoc_init()
233 reg_w(gspca_dev, 0xc5, 0x0003, 0x0000); in sd_isoc_init()
234 wait_status_1(gspca_dev); in sd_isoc_init()
236 wait_status_0(gspca_dev); in sd_isoc_init()
237 mode = gspca_dev->cam.cam_mode[gspca_dev->curr_mode].priv; in sd_isoc_init()
238 reg_wb(gspca_dev, 0x25, 0x0000, 0x0004, mode); in sd_isoc_init()
239 reg_r(gspca_dev, 0x25, 0x0004, 1); in sd_isoc_init()
240 reg_wb(gspca_dev, 0x27, 0x0000, 0x0000, 0x06); /* 420 */ in sd_isoc_init()
241 reg_r(gspca_dev, 0x27, 0x0000, 1); in sd_isoc_init()
246 return gspca_dev->usb_err; in sd_isoc_init()
250 static int sd_start(struct gspca_dev *gspca_dev) in sd_start() argument
252 struct sd *sd = (struct sd *) gspca_dev; in sd_start()
255 jpeg_define(sd->jpeg_hdr, gspca_dev->pixfmt.height, in sd_start()
256 gspca_dev->pixfmt.width, in sd_start()
262 reg_r(gspca_dev, 0x00, 0x2520, 1); in sd_start()
266 wait_status_0(gspca_dev); in sd_start()
267 reg_w(gspca_dev, 0x31, 0x0000, 0x0004); /* start request */ in sd_start()
268 wait_status_1(gspca_dev); in sd_start()
269 wait_status_0(gspca_dev); in sd_start()
273 return gspca_dev->usb_err; in sd_start()
276 static void sd_stopN(struct gspca_dev *gspca_dev) in sd_stopN() argument
279 wait_status_0(gspca_dev); in sd_stopN()
280 reg_w(gspca_dev, 0x31, 0x0000, 0x0000); /* stop request */ in sd_stopN()
281 wait_status_1(gspca_dev); in sd_stopN()
282 wait_status_0(gspca_dev); in sd_stopN()
286 static void add_packet(struct gspca_dev *gspca_dev, in add_packet() argument
295 gspca_frame_add(gspca_dev, INTER_PACKET, in add_packet()
303 gspca_frame_add(gspca_dev, INTER_PACKET, data, len); in add_packet()
306 static void sd_pkt_scan(struct gspca_dev *gspca_dev, in sd_pkt_scan() argument
310 struct sd *sd = (struct sd *) gspca_dev; in sd_pkt_scan()
324 add_packet(gspca_dev, data + 2, len - 2); in sd_pkt_scan()
325 gspca_frame_add(gspca_dev, LAST_PACKET, in sd_pkt_scan()
331 if (gspca_dev->last_packet_type == LAST_PACKET) in sd_pkt_scan()
332 gspca_frame_add(gspca_dev, FIRST_PACKET, in sd_pkt_scan()
334 add_packet(gspca_dev, data + 2, len - 2); in sd_pkt_scan()
338 gspca_dev->last_packet_type = DISCARD_PACKET; 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 sethue(gspca_dev, ctrl->val); in sd_s_ctrl()
362 setcolor(gspca_dev, ctrl->val); in sd_s_ctrl()
365 setsharpness(gspca_dev, ctrl->val); in sd_s_ctrl()
368 return gspca_dev->usb_err; in sd_s_ctrl()
375 static int sd_init_controls(struct gspca_dev *gspca_dev) in sd_init_controls() argument
377 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; in sd_init_controls()
379 gspca_dev->vdev.ctrl_handler = hdl; in sd_init_controls()