Lines Matching refs:pdev
107 static int recv_control_msg(struct pwc_device *pdev, in recv_control_msg() argument
112 rc = usb_control_msg(pdev->udev, usb_rcvctrlpipe(pdev->udev, 0), in recv_control_msg()
115 value, pdev->vcinterface, in recv_control_msg()
116 pdev->ctrl_buf, recv_count, USB_CTRL_GET_TIMEOUT); in recv_control_msg()
123 static inline int send_video_command(struct pwc_device *pdev, in send_video_command() argument
128 memcpy(pdev->ctrl_buf, buf, buflen); in send_video_command()
130 rc = usb_control_msg(pdev->udev, usb_sndctrlpipe(pdev->udev, 0), in send_video_command()
134 pdev->ctrl_buf, buflen, USB_CTRL_SET_TIMEOUT); in send_video_command()
136 memcpy(pdev->cmd_buf, buf, buflen); in send_video_command()
143 int send_control_msg(struct pwc_device *pdev, in send_control_msg() argument
146 return usb_control_msg(pdev->udev, usb_sndctrlpipe(pdev->udev, 0), in send_control_msg()
149 value, pdev->vcinterface, in send_control_msg()
153 static int set_video_mode_Nala(struct pwc_device *pdev, int size, int pixfmt, in set_video_mode_Nala() argument
193 ret = send_video_command(pdev, pdev->vendpoint, in set_video_mode_Nala()
199 pwc_dec1_init(pdev, pEntry->mode); in set_video_mode_Nala()
202 pdev->pixfmt = pixfmt; in set_video_mode_Nala()
203 pdev->vframes = frames; in set_video_mode_Nala()
204 pdev->valternate = pEntry->alternate; in set_video_mode_Nala()
205 pdev->width = pwc_image_sizes[size][0]; in set_video_mode_Nala()
206 pdev->height = pwc_image_sizes[size][1]; in set_video_mode_Nala()
207 pdev->frame_size = (pdev->width * pdev->height * 3) / 2; in set_video_mode_Nala()
209 if (pdev->release < 5) { /* 4 fold compression */ in set_video_mode_Nala()
210 pdev->vbandlength = 528; in set_video_mode_Nala()
211 pdev->frame_size /= 4; in set_video_mode_Nala()
214 pdev->vbandlength = 704; in set_video_mode_Nala()
215 pdev->frame_size /= 3; in set_video_mode_Nala()
219 pdev->vbandlength = 0; in set_video_mode_Nala()
228 static int set_video_mode_Timon(struct pwc_device *pdev, int size, int pixfmt, in set_video_mode_Timon() argument
256 ret = send_video_command(pdev, pdev->vendpoint, in set_video_mode_Timon()
262 pwc_dec23_init(pdev, pChoose->mode); in set_video_mode_Timon()
265 pdev->pixfmt = pixfmt; in set_video_mode_Timon()
266 pdev->vframes = (fps + 1) * 5; in set_video_mode_Timon()
267 pdev->valternate = pChoose->alternate; in set_video_mode_Timon()
268 pdev->width = pwc_image_sizes[size][0]; in set_video_mode_Timon()
269 pdev->height = pwc_image_sizes[size][1]; in set_video_mode_Timon()
270 pdev->vbandlength = pChoose->bandlength; in set_video_mode_Timon()
272 pdev->frame_size = (pChoose->bandlength * pdev->height) / 4; in set_video_mode_Timon()
274 pdev->frame_size = (pdev->width * pdev->height * 12) / 8; in set_video_mode_Timon()
279 static int set_video_mode_Kiara(struct pwc_device *pdev, int size, int pixfmt, in set_video_mode_Kiara() argument
307 ret = send_video_command(pdev, 4, pChoose->mode, 12); in set_video_mode_Kiara()
312 pwc_dec23_init(pdev, pChoose->mode); in set_video_mode_Kiara()
315 pdev->pixfmt = pixfmt; in set_video_mode_Kiara()
316 pdev->vframes = (fps + 1) * 5; in set_video_mode_Kiara()
317 pdev->valternate = pChoose->alternate; in set_video_mode_Kiara()
318 pdev->width = pwc_image_sizes[size][0]; in set_video_mode_Kiara()
319 pdev->height = pwc_image_sizes[size][1]; in set_video_mode_Kiara()
320 pdev->vbandlength = pChoose->bandlength; in set_video_mode_Kiara()
321 if (pdev->vbandlength > 0) in set_video_mode_Kiara()
322 pdev->frame_size = (pdev->vbandlength * pdev->height) / 4; in set_video_mode_Kiara()
324 pdev->frame_size = (pdev->width * pdev->height * 12) / 8; in set_video_mode_Kiara()
326 pdev->frame_size, pdev->vframes, size, pdev->vbandlength); in set_video_mode_Kiara()
330 int pwc_set_video_mode(struct pwc_device *pdev, int width, int height, in pwc_set_video_mode() argument
337 size = pwc_get_size(pdev, width, height); in pwc_set_video_mode()
340 if (DEVICE_USE_CODEC1(pdev->type)) { in pwc_set_video_mode()
341 ret = set_video_mode_Nala(pdev, size, pixfmt, frames, in pwc_set_video_mode()
343 } else if (DEVICE_USE_CODEC3(pdev->type)) { in pwc_set_video_mode()
344 ret = set_video_mode_Kiara(pdev, size, pixfmt, frames, in pwc_set_video_mode()
347 ret = set_video_mode_Timon(pdev, size, pixfmt, frames, in pwc_set_video_mode()
354 pdev->frame_total_size = pdev->frame_size + pdev->frame_header_size + pdev->frame_trailer_size; in pwc_set_video_mode()
355 PWC_DEBUG_SIZE("Set resolution to %dx%d\n", pdev->width, pdev->height); in pwc_set_video_mode()
359 static unsigned int pwc_get_fps_Nala(struct pwc_device *pdev, unsigned int index, unsigned int size) in pwc_get_fps_Nala() argument
371 static unsigned int pwc_get_fps_Kiara(struct pwc_device *pdev, unsigned int index, unsigned int siz… in pwc_get_fps_Kiara() argument
383 static unsigned int pwc_get_fps_Timon(struct pwc_device *pdev, unsigned int index, unsigned int siz… in pwc_get_fps_Timon() argument
395 unsigned int pwc_get_fps(struct pwc_device *pdev, unsigned int index, unsigned int size) in pwc_get_fps() argument
399 if (DEVICE_USE_CODEC1(pdev->type)) { in pwc_get_fps()
400 ret = pwc_get_fps_Nala(pdev, index, size); in pwc_get_fps()
402 } else if (DEVICE_USE_CODEC3(pdev->type)) { in pwc_get_fps()
403 ret = pwc_get_fps_Kiara(pdev, index, size); in pwc_get_fps()
406 ret = pwc_get_fps_Timon(pdev, index, size); in pwc_get_fps()
412 int pwc_get_u8_ctrl(struct pwc_device *pdev, u8 request, u16 value, int *data) in pwc_get_u8_ctrl() argument
416 ret = recv_control_msg(pdev, request, value, 1); in pwc_get_u8_ctrl()
420 *data = pdev->ctrl_buf[0]; in pwc_get_u8_ctrl()
424 int pwc_set_u8_ctrl(struct pwc_device *pdev, u8 request, u16 value, u8 data) in pwc_set_u8_ctrl() argument
428 pdev->ctrl_buf[0] = data; in pwc_set_u8_ctrl()
429 ret = send_control_msg(pdev, request, value, pdev->ctrl_buf, 1); in pwc_set_u8_ctrl()
436 int pwc_get_s8_ctrl(struct pwc_device *pdev, u8 request, u16 value, int *data) in pwc_get_s8_ctrl() argument
440 ret = recv_control_msg(pdev, request, value, 1); in pwc_get_s8_ctrl()
444 *data = ((s8 *)pdev->ctrl_buf)[0]; in pwc_get_s8_ctrl()
448 int pwc_get_u16_ctrl(struct pwc_device *pdev, u8 request, u16 value, int *data) in pwc_get_u16_ctrl() argument
452 ret = recv_control_msg(pdev, request, value, 2); in pwc_get_u16_ctrl()
456 *data = (pdev->ctrl_buf[1] << 8) | pdev->ctrl_buf[0]; in pwc_get_u16_ctrl()
460 int pwc_set_u16_ctrl(struct pwc_device *pdev, u8 request, u16 value, u16 data) in pwc_set_u16_ctrl() argument
464 pdev->ctrl_buf[0] = data & 0xff; in pwc_set_u16_ctrl()
465 pdev->ctrl_buf[1] = data >> 8; in pwc_set_u16_ctrl()
466 ret = send_control_msg(pdev, request, value, pdev->ctrl_buf, 2); in pwc_set_u16_ctrl()
473 int pwc_button_ctrl(struct pwc_device *pdev, u16 value) in pwc_button_ctrl() argument
477 ret = send_control_msg(pdev, SET_STATUS_CTL, value, NULL, 0); in pwc_button_ctrl()
485 void pwc_camera_power(struct pwc_device *pdev, int power) in pwc_camera_power() argument
489 if (!pdev->power_save) in pwc_camera_power()
492 if (pdev->type < 675 || (pdev->type < 730 && pdev->release < 6)) in pwc_camera_power()
496 pdev->ctrl_buf[0] = 0x00; /* active */ in pwc_camera_power()
498 pdev->ctrl_buf[0] = 0xFF; /* power save */ in pwc_camera_power()
499 r = send_control_msg(pdev, SET_STATUS_CTL, in pwc_camera_power()
500 SET_POWER_SAVE_MODE_FORMATTER, pdev->ctrl_buf, 1); in pwc_camera_power()
506 int pwc_set_leds(struct pwc_device *pdev, int on_value, int off_value) in pwc_set_leds() argument
510 if (pdev->type < 730) in pwc_set_leds()
523 pdev->ctrl_buf[0] = on_value; in pwc_set_leds()
524 pdev->ctrl_buf[1] = off_value; in pwc_set_leds()
526 r = send_control_msg(pdev, in pwc_set_leds()
527 SET_STATUS_CTL, LED_FORMATTER, pdev->ctrl_buf, 2); in pwc_set_leds()
535 int pwc_get_cmos_sensor(struct pwc_device *pdev, int *sensor) in pwc_get_cmos_sensor() argument
539 if (pdev->type < 675) in pwc_get_cmos_sensor()
541 else if (pdev->type < 730) in pwc_get_cmos_sensor()
546 ret = recv_control_msg(pdev, GET_STATUS_CTL, request, 1); in pwc_get_cmos_sensor()
549 if (pdev->type < 675) in pwc_get_cmos_sensor()
550 *sensor = pdev->ctrl_buf[0] | 0x100; in pwc_get_cmos_sensor()
552 *sensor = pdev->ctrl_buf[0]; in pwc_get_cmos_sensor()