Lines Matching refs:pdev

95 static int recv_control_msg(struct pwc_device *pdev,
100 rc = usb_control_msg(pdev->udev, usb_rcvctrlpipe(pdev->udev, 0),
103 value, pdev->vcinterface,
104 pdev->ctrl_buf, recv_count, USB_CTRL_GET_TIMEOUT);
111 static inline int send_video_command(struct pwc_device *pdev,
116 memcpy(pdev->ctrl_buf, buf, buflen);
118 rc = usb_control_msg(pdev->udev, usb_sndctrlpipe(pdev->udev, 0),
122 pdev->ctrl_buf, buflen, USB_CTRL_SET_TIMEOUT);
124 memcpy(pdev->cmd_buf, buf, buflen);
131 int send_control_msg(struct pwc_device *pdev,
134 return usb_control_msg(pdev->udev, usb_sndctrlpipe(pdev->udev, 0),
137 value, pdev->vcinterface,
141 static int set_video_mode_Nala(struct pwc_device *pdev, int size, int pixfmt,
181 ret = send_video_command(pdev, pdev->vendpoint,
187 pwc_dec1_init(pdev, pEntry->mode);
190 pdev->pixfmt = pixfmt;
191 pdev->vframes = frames;
192 pdev->valternate = pEntry->alternate;
193 pdev->width = pwc_image_sizes[size][0];
194 pdev->height = pwc_image_sizes[size][1];
195 pdev->frame_size = (pdev->width * pdev->height * 3) / 2;
197 if (pdev->release < 5) { /* 4 fold compression */
198 pdev->vbandlength = 528;
199 pdev->frame_size /= 4;
202 pdev->vbandlength = 704;
203 pdev->frame_size /= 3;
207 pdev->vbandlength = 0;
216 static int set_video_mode_Timon(struct pwc_device *pdev, int size, int pixfmt,
244 ret = send_video_command(pdev, pdev->vendpoint,
250 pwc_dec23_init(pdev, pChoose->mode);
253 pdev->pixfmt = pixfmt;
254 pdev->vframes = (fps + 1) * 5;
255 pdev->valternate = pChoose->alternate;
256 pdev->width = pwc_image_sizes[size][0];
257 pdev->height = pwc_image_sizes[size][1];
258 pdev->vbandlength = pChoose->bandlength;
260 pdev->frame_size = (pChoose->bandlength * pdev->height) / 4;
262 pdev->frame_size = (pdev->width * pdev->height * 12) / 8;
267 static int set_video_mode_Kiara(struct pwc_device *pdev, int size, int pixfmt,
296 ret = send_video_command(pdev, 4, pChoose->mode, 12);
301 pwc_dec23_init(pdev, pChoose->mode);
304 pdev->pixfmt = pixfmt;
305 pdev->vframes = (fps + 1) * 5;
306 pdev->valternate = pChoose->alternate;
307 pdev->width = pwc_image_sizes[size][0];
308 pdev->height = pwc_image_sizes[size][1];
309 pdev->vbandlength = pChoose->bandlength;
310 if (pdev->vbandlength > 0)
311 pdev->frame_size = (pdev->vbandlength * pdev->height) / 4;
313 pdev->frame_size = (pdev->width * pdev->height * 12) / 8;
315 pdev->frame_size, pdev->vframes, size, pdev->vbandlength);
319 int pwc_set_video_mode(struct pwc_device *pdev, int width, int height,
326 size = pwc_get_size(pdev, width, height);
329 if (DEVICE_USE_CODEC1(pdev->type)) {
330 ret = set_video_mode_Nala(pdev, size, pixfmt, frames,
332 } else if (DEVICE_USE_CODEC3(pdev->type)) {
333 ret = set_video_mode_Kiara(pdev, size, pixfmt, frames,
336 ret = set_video_mode_Timon(pdev, size, pixfmt, frames,
343 pdev->frame_total_size = pdev->frame_size + pdev->frame_header_size + pdev->frame_trailer_size;
344 PWC_DEBUG_SIZE("Set resolution to %dx%d\n", pdev->width, pdev->height);
348 static unsigned int pwc_get_fps_Nala(struct pwc_device *pdev, unsigned int index, unsigned int size)
360 static unsigned int pwc_get_fps_Kiara(struct pwc_device *pdev, unsigned int index, unsigned int size)
372 static unsigned int pwc_get_fps_Timon(struct pwc_device *pdev, unsigned int index, unsigned int size)
384 unsigned int pwc_get_fps(struct pwc_device *pdev, unsigned int index, unsigned int size)
388 if (DEVICE_USE_CODEC1(pdev->type)) {
389 ret = pwc_get_fps_Nala(pdev, index, size);
391 } else if (DEVICE_USE_CODEC3(pdev->type)) {
392 ret = pwc_get_fps_Kiara(pdev, index, size);
395 ret = pwc_get_fps_Timon(pdev, index, size);
401 int pwc_get_u8_ctrl(struct pwc_device *pdev, u8 request, u16 value, int *data)
405 ret = recv_control_msg(pdev, request, value, 1);
409 *data = pdev->ctrl_buf[0];
413 int pwc_set_u8_ctrl(struct pwc_device *pdev, u8 request, u16 value, u8 data)
417 pdev->ctrl_buf[0] = data;
418 ret = send_control_msg(pdev, request, value, pdev->ctrl_buf, 1);
425 int pwc_get_s8_ctrl(struct pwc_device *pdev, u8 request, u16 value, int *data)
429 ret = recv_control_msg(pdev, request, value, 1);
433 *data = ((s8 *)pdev->ctrl_buf)[0];
437 int pwc_get_u16_ctrl(struct pwc_device *pdev, u8 request, u16 value, int *data)
441 ret = recv_control_msg(pdev, request, value, 2);
445 *data = (pdev->ctrl_buf[1] << 8) | pdev->ctrl_buf[0];
449 int pwc_set_u16_ctrl(struct pwc_device *pdev, u8 request, u16 value, u16 data)
453 pdev->ctrl_buf[0] = data & 0xff;
454 pdev->ctrl_buf[1] = data >> 8;
455 ret = send_control_msg(pdev, request, value, pdev->ctrl_buf, 2);
462 int pwc_button_ctrl(struct pwc_device *pdev, u16 value)
466 ret = send_control_msg(pdev, SET_STATUS_CTL, value, NULL, 0);
474 void pwc_camera_power(struct pwc_device *pdev, int power)
478 if (!pdev->power_save)
481 if (pdev->type < 675 || (pdev->type < 730 && pdev->release < 6))
485 pdev->ctrl_buf[0] = 0x00; /* active */
487 pdev->ctrl_buf[0] = 0xFF; /* power save */
488 r = send_control_msg(pdev, SET_STATUS_CTL,
489 SET_POWER_SAVE_MODE_FORMATTER, pdev->ctrl_buf, 1);
495 int pwc_set_leds(struct pwc_device *pdev, int on_value, int off_value)
499 if (pdev->type < 730)
512 pdev->ctrl_buf[0] = on_value;
513 pdev->ctrl_buf[1] = off_value;
515 r = send_control_msg(pdev,
516 SET_STATUS_CTL, LED_FORMATTER, pdev->ctrl_buf, 2);
524 int pwc_get_cmos_sensor(struct pwc_device *pdev, int *sensor)
528 if (pdev->type < 675)
530 else if (pdev->type < 730)
535 ret = recv_control_msg(pdev, GET_STATUS_CTL, request, 1);
538 if (pdev->type < 675)
539 *sensor = pdev->ctrl_buf[0] | 0x100;
541 *sensor = pdev->ctrl_buf[0];