Lines Matching refs:dev

56 			 dev->name, __func__ , ##arg); } while (0)
65 dev->name, __func__ , ##arg); } while (0)
71 dev->name, __func__ , ##arg); } while (0)
77 int em28xx_read_reg_req_len(struct em28xx *dev, u8 req, u16 reg, in em28xx_read_reg_req_len() argument
81 int pipe = usb_rcvctrlpipe(dev->udev, 0); in em28xx_read_reg_req_len()
83 if (dev->disconnected) in em28xx_read_reg_req_len()
99 mutex_lock(&dev->ctrl_urb_lock); in em28xx_read_reg_req_len()
100 ret = usb_control_msg(dev->udev, pipe, req, in em28xx_read_reg_req_len()
102 0x0000, reg, dev->urb_buf, len, HZ); in em28xx_read_reg_req_len()
106 mutex_unlock(&dev->ctrl_urb_lock); in em28xx_read_reg_req_len()
111 memcpy(buf, dev->urb_buf, len); in em28xx_read_reg_req_len()
113 mutex_unlock(&dev->ctrl_urb_lock); in em28xx_read_reg_req_len()
131 int em28xx_read_reg_req(struct em28xx *dev, u8 req, u16 reg) in em28xx_read_reg_req() argument
136 ret = em28xx_read_reg_req_len(dev, req, reg, &val, 1); in em28xx_read_reg_req()
143 int em28xx_read_reg(struct em28xx *dev, u16 reg) in em28xx_read_reg() argument
145 return em28xx_read_reg_req(dev, USB_REQ_GET_STATUS, reg); in em28xx_read_reg()
153 int em28xx_write_regs_req(struct em28xx *dev, u8 req, u16 reg, char *buf, in em28xx_write_regs_req() argument
157 int pipe = usb_sndctrlpipe(dev->udev, 0); in em28xx_write_regs_req()
159 if (dev->disconnected) in em28xx_write_regs_req()
181 mutex_lock(&dev->ctrl_urb_lock); in em28xx_write_regs_req()
182 memcpy(dev->urb_buf, buf, len); in em28xx_write_regs_req()
183 ret = usb_control_msg(dev->udev, pipe, req, in em28xx_write_regs_req()
185 0x0000, reg, dev->urb_buf, len, HZ); in em28xx_write_regs_req()
186 mutex_unlock(&dev->ctrl_urb_lock); in em28xx_write_regs_req()
191 if (dev->wait_after_write) in em28xx_write_regs_req()
192 msleep(dev->wait_after_write); in em28xx_write_regs_req()
197 int em28xx_write_regs(struct em28xx *dev, u16 reg, char *buf, int len) in em28xx_write_regs() argument
199 return em28xx_write_regs_req(dev, USB_REQ_GET_STATUS, reg, buf, len); in em28xx_write_regs()
204 int em28xx_write_reg(struct em28xx *dev, u16 reg, u8 val) in em28xx_write_reg() argument
206 return em28xx_write_regs(dev, reg, &val, 1); in em28xx_write_reg()
215 int em28xx_write_reg_bits(struct em28xx *dev, u16 reg, u8 val, in em28xx_write_reg_bits() argument
221 oldval = em28xx_read_reg(dev, reg); in em28xx_write_reg_bits()
227 return em28xx_write_regs(dev, reg, &newval, 1); in em28xx_write_reg_bits()
235 int em28xx_toggle_reg_bits(struct em28xx *dev, u16 reg, u8 bitmask) in em28xx_toggle_reg_bits() argument
240 oldval = em28xx_read_reg(dev, reg); in em28xx_toggle_reg_bits()
246 return em28xx_write_reg(dev, reg, newval); in em28xx_toggle_reg_bits()
254 static int em28xx_is_ac97_ready(struct em28xx *dev) in em28xx_is_ac97_ready() argument
261 ret = em28xx_read_reg(dev, EM28XX_R43_AC97BUSY); in em28xx_is_ac97_ready()
278 int em28xx_read_ac97(struct em28xx *dev, u8 reg) in em28xx_read_ac97() argument
284 ret = em28xx_is_ac97_ready(dev); in em28xx_read_ac97()
288 ret = em28xx_write_regs(dev, EM28XX_R42_AC97ADDR, &addr, 1); in em28xx_read_ac97()
292 ret = dev->em28xx_read_reg_req_len(dev, 0, EM28XX_R40_AC97LSB, in em28xx_read_ac97()
305 int em28xx_write_ac97(struct em28xx *dev, u8 reg, u16 val) in em28xx_write_ac97() argument
313 ret = em28xx_is_ac97_ready(dev); in em28xx_write_ac97()
317 ret = em28xx_write_regs(dev, EM28XX_R40_AC97LSB, (u8 *)&value, 2); in em28xx_write_ac97()
321 ret = em28xx_write_regs(dev, EM28XX_R42_AC97ADDR, &addr, 1); in em28xx_write_ac97()
344 static int set_ac97_input(struct em28xx *dev) in set_ac97_input() argument
347 enum em28xx_amux amux = dev->ctl_ainput; in set_ac97_input()
358 ret = em28xx_write_ac97(dev, inputs[i].reg, 0x0808); in set_ac97_input()
360 ret = em28xx_write_ac97(dev, inputs[i].reg, 0x8000); in set_ac97_input()
369 static int em28xx_set_audio_source(struct em28xx *dev) in em28xx_set_audio_source() argument
374 if (dev->board.is_em2800) { in em28xx_set_audio_source()
375 if (dev->ctl_ainput == EM28XX_AMUX_VIDEO) in em28xx_set_audio_source()
380 ret = em28xx_write_regs(dev, EM2800_R08_AUDIOSRC, &input, 1); in em28xx_set_audio_source()
385 if (dev->board.has_msp34xx) in em28xx_set_audio_source()
388 switch (dev->ctl_ainput) { in em28xx_set_audio_source()
398 if (dev->board.mute_gpio && dev->mute) in em28xx_set_audio_source()
399 em28xx_gpio_set(dev, dev->board.mute_gpio); in em28xx_set_audio_source()
401 em28xx_gpio_set(dev, INPUT(dev->ctl_input)->gpio); in em28xx_set_audio_source()
403 ret = em28xx_write_reg_bits(dev, EM28XX_R0E_AUDIOSRC, input, 0xc0); in em28xx_set_audio_source()
408 switch (dev->audio_mode.ac97) { in em28xx_set_audio_source()
412 ret = set_ac97_input(dev); in em28xx_set_audio_source()
431 int em28xx_audio_analog_set(struct em28xx *dev) in em28xx_audio_analog_set() argument
436 if (dev->int_audio_type == EM28XX_INT_AUDIO_NONE) in em28xx_audio_analog_set()
442 if (dev->audio_mode.ac97 != EM28XX_NO_AC97) { in em28xx_audio_analog_set()
445 ret = em28xx_write_ac97(dev, outputs[i].reg, 0x8000); in em28xx_audio_analog_set()
452 xclk = dev->board.xclk & 0x7f; in em28xx_audio_analog_set()
453 if (!dev->mute) in em28xx_audio_analog_set()
456 ret = em28xx_write_reg(dev, EM28XX_R0F_XCLK, xclk); in em28xx_audio_analog_set()
462 ret = em28xx_set_audio_source(dev); in em28xx_audio_analog_set()
465 if (dev->audio_mode.ac97 != EM28XX_NO_AC97) { in em28xx_audio_analog_set()
468 em28xx_write_ac97(dev, AC97_POWERDOWN, 0x4200); in em28xx_audio_analog_set()
469 em28xx_write_ac97(dev, AC97_EXTENDED_STATUS, 0x0031); in em28xx_audio_analog_set()
470 em28xx_write_ac97(dev, AC97_PCM_LR_ADC_RATE, 0xbb80); in em28xx_audio_analog_set()
473 vol = (0x1f - dev->volume) | ((0x1f - dev->volume) << 8); in em28xx_audio_analog_set()
476 if (dev->mute) in em28xx_audio_analog_set()
481 if (dev->ctl_aoutput & outputs[i].mux) in em28xx_audio_analog_set()
482 ret = em28xx_write_ac97(dev, outputs[i].reg, in em28xx_audio_analog_set()
489 if (dev->ctl_aoutput & EM28XX_AOUT_PCM_IN) { in em28xx_audio_analog_set()
490 int sel = ac97_return_record_select(dev->ctl_aoutput); in em28xx_audio_analog_set()
496 em28xx_write_ac97(dev, AC97_REC_SEL, sel); in em28xx_audio_analog_set()
504 int em28xx_audio_setup(struct em28xx *dev) in em28xx_audio_setup() argument
510 if (dev->chip_id == CHIP_ID_EM2870 || in em28xx_audio_setup()
511 dev->chip_id == CHIP_ID_EM2874 || in em28xx_audio_setup()
512 dev->chip_id == CHIP_ID_EM28174 || in em28xx_audio_setup()
513 dev->chip_id == CHIP_ID_EM28178) { in em28xx_audio_setup()
515 dev->int_audio_type = EM28XX_INT_AUDIO_NONE; in em28xx_audio_setup()
516 dev->usb_audio_type = EM28XX_USB_AUDIO_NONE; in em28xx_audio_setup()
521 cfg = em28xx_read_reg(dev, EM28XX_R00_CHIPCFG); in em28xx_audio_setup()
525 dev->int_audio_type = EM28XX_INT_AUDIO_AC97; in em28xx_audio_setup()
528 dev->int_audio_type = EM28XX_INT_AUDIO_NONE; in em28xx_audio_setup()
529 dev->usb_audio_type = EM28XX_USB_AUDIO_NONE; in em28xx_audio_setup()
532 dev->int_audio_type = EM28XX_INT_AUDIO_I2S; in em28xx_audio_setup()
533 if (dev->chip_id < CHIP_ID_EM2860 && in em28xx_audio_setup()
537 else if (dev->chip_id >= CHIP_ID_EM2860 && in em28xx_audio_setup()
546 dev->audio_mode.ac97 = EM28XX_NO_AC97; in em28xx_audio_setup()
549 dev->int_audio_type = EM28XX_INT_AUDIO_AC97; in em28xx_audio_setup()
552 dev->audio_mode.ac97 = EM28XX_AC97_OTHER; in em28xx_audio_setup()
554 vid1 = em28xx_read_ac97(dev, AC97_VENDOR_ID1); in em28xx_audio_setup()
562 dev->audio_mode.ac97 = EM28XX_NO_AC97; in em28xx_audio_setup()
563 if (dev->usb_audio_type == EM28XX_USB_AUDIO_VENDOR) in em28xx_audio_setup()
564 dev->usb_audio_type = EM28XX_USB_AUDIO_NONE; in em28xx_audio_setup()
565 dev->int_audio_type = EM28XX_INT_AUDIO_NONE; in em28xx_audio_setup()
569 vid2 = em28xx_read_ac97(dev, AC97_VENDOR_ID2); in em28xx_audio_setup()
576 feat = em28xx_read_ac97(dev, AC97_RESET); in em28xx_audio_setup()
584 dev->audio_mode.ac97 = EM28XX_AC97_EM202; in em28xx_audio_setup()
586 dev->audio_mode.ac97 = EM28XX_AC97_SIGMATEL; in em28xx_audio_setup()
590 switch (dev->audio_mode.ac97) { in em28xx_audio_setup()
608 return em28xx_audio_analog_set(dev); in em28xx_audio_setup()
612 const struct em28xx_led *em28xx_find_led(struct em28xx *dev, in em28xx_find_led() argument
615 if (dev->board.leds) { in em28xx_find_led()
618 while (dev->board.leds[k].role >= 0 && in em28xx_find_led()
619 dev->board.leds[k].role < EM28XX_NUM_LED_ROLES) { in em28xx_find_led()
620 if (dev->board.leds[k].role == role) in em28xx_find_led()
621 return &dev->board.leds[k]; in em28xx_find_led()
629 int em28xx_capture_start(struct em28xx *dev, int start) in em28xx_capture_start() argument
634 if (dev->chip_id == CHIP_ID_EM2874 || in em28xx_capture_start()
635 dev->chip_id == CHIP_ID_EM2884 || in em28xx_capture_start()
636 dev->chip_id == CHIP_ID_EM28174 || in em28xx_capture_start()
637 dev->chip_id == CHIP_ID_EM28178) { in em28xx_capture_start()
639 rc = em28xx_write_reg_bits(dev, EM2874_R5F_TS_ENABLE, in em28xx_capture_start()
646 rc = em28xx_write_reg_bits(dev, EM28XX_R0C_USBSUSP, in em28xx_capture_start()
652 if (dev->board.is_webcam) in em28xx_capture_start()
653 rc = em28xx_write_reg(dev, 0x13, 0x0c); in em28xx_capture_start()
656 rc = em28xx_write_reg(dev, 0x48, 0x00); in em28xx_capture_start()
660 if (dev->mode == EM28XX_ANALOG_MODE) in em28xx_capture_start()
661 rc = em28xx_write_reg(dev, in em28xx_capture_start()
665 rc = em28xx_write_reg(dev, in em28xx_capture_start()
674 rc = em28xx_write_reg(dev, EM28XX_R12_VINENABLE, 0x27); in em28xx_capture_start()
678 if (dev->mode == EM28XX_ANALOG_MODE) in em28xx_capture_start()
679 led = em28xx_find_led(dev, EM28XX_LED_ANALOG_CAPTURING); in em28xx_capture_start()
681 led = em28xx_find_led(dev, EM28XX_LED_DIGITAL_CAPTURING); in em28xx_capture_start()
684 em28xx_write_reg_bits(dev, led->gpio_reg, in em28xx_capture_start()
692 int em28xx_gpio_set(struct em28xx *dev, struct em28xx_reg_seq *gpio) in em28xx_gpio_set() argument
699 if (dev->mode != EM28XX_SUSPEND) { in em28xx_gpio_set()
700 em28xx_write_reg(dev, 0x48, 0x00); in em28xx_gpio_set()
701 if (dev->mode == EM28XX_ANALOG_MODE) in em28xx_gpio_set()
702 em28xx_write_reg(dev, EM28XX_R12_VINENABLE, 0x67); in em28xx_gpio_set()
704 em28xx_write_reg(dev, EM28XX_R12_VINENABLE, 0x37); in em28xx_gpio_set()
711 rc = em28xx_write_reg_bits(dev, in em28xx_gpio_set()
727 int em28xx_set_mode(struct em28xx *dev, enum em28xx_mode set_mode) in em28xx_set_mode() argument
729 if (dev->mode == set_mode) in em28xx_set_mode()
733 dev->mode = set_mode; in em28xx_set_mode()
737 return em28xx_gpio_set(dev, dev->board.suspend_gpio); in em28xx_set_mode()
740 dev->mode = set_mode; in em28xx_set_mode()
742 if (dev->mode == EM28XX_DIGITAL_MODE) in em28xx_set_mode()
743 return em28xx_gpio_set(dev, dev->board.dvb_gpio); in em28xx_set_mode()
745 return em28xx_gpio_set(dev, INPUT(dev->ctl_input)->gpio); in em28xx_set_mode()
758 struct em28xx *dev = urb->context; in em28xx_irq_callback() local
775 spin_lock(&dev->slock); in em28xx_irq_callback()
776 dev->usb_ctl.urb_data_copy(dev, urb); in em28xx_irq_callback()
777 spin_unlock(&dev->slock); in em28xx_irq_callback()
797 void em28xx_uninit_usb_xfer(struct em28xx *dev, enum em28xx_mode mode) in em28xx_uninit_usb_xfer() argument
807 usb_bufs = &dev->usb_ctl.digital_bufs; in em28xx_uninit_usb_xfer()
809 usb_bufs = &dev->usb_ctl.analog_bufs; in em28xx_uninit_usb_xfer()
820 usb_free_coherent(dev->udev, in em28xx_uninit_usb_xfer()
838 em28xx_capture_start(dev, 0); in em28xx_uninit_usb_xfer()
845 void em28xx_stop_urbs(struct em28xx *dev) in em28xx_stop_urbs() argument
849 struct em28xx_usb_bufs *isoc_bufs = &dev->usb_ctl.digital_bufs; in em28xx_stop_urbs()
863 em28xx_capture_start(dev, 0); in em28xx_stop_urbs()
870 int em28xx_alloc_urbs(struct em28xx *dev, enum em28xx_mode mode, int xfer_bulk, in em28xx_alloc_urbs() argument
884 if ((xfer_bulk && !dev->dvb_ep_bulk) || in em28xx_alloc_urbs()
885 (!xfer_bulk && !dev->dvb_ep_isoc)) { in em28xx_alloc_urbs()
890 usb_bufs = &dev->usb_ctl.digital_bufs; in em28xx_alloc_urbs()
892 if ((xfer_bulk && !dev->analog_ep_bulk) || in em28xx_alloc_urbs()
893 (!xfer_bulk && !dev->analog_ep_isoc)) { in em28xx_alloc_urbs()
898 usb_bufs = &dev->usb_ctl.analog_bufs; in em28xx_alloc_urbs()
905 em28xx_uninit_usb_xfer(dev, mode); in em28xx_alloc_urbs()
928 dev->usb_ctl.vid_buf = NULL; in em28xx_alloc_urbs()
929 dev->usb_ctl.vbi_buf = NULL; in em28xx_alloc_urbs()
938 em28xx_uninit_usb_xfer(dev, mode); in em28xx_alloc_urbs()
943 usb_bufs->transfer_buffer[i] = usb_alloc_coherent(dev->udev, in em28xx_alloc_urbs()
950 em28xx_uninit_usb_xfer(dev, mode); in em28xx_alloc_urbs()
956 pipe = usb_rcvbulkpipe(dev->udev, in em28xx_alloc_urbs()
958 dev->analog_ep_bulk : in em28xx_alloc_urbs()
959 dev->dvb_ep_bulk); in em28xx_alloc_urbs()
960 usb_fill_bulk_urb(urb, dev->udev, pipe, in em28xx_alloc_urbs()
962 em28xx_irq_callback, dev); in em28xx_alloc_urbs()
965 pipe = usb_rcvisocpipe(dev->udev, in em28xx_alloc_urbs()
967 dev->analog_ep_isoc : in em28xx_alloc_urbs()
968 dev->dvb_ep_isoc); in em28xx_alloc_urbs()
969 usb_fill_int_urb(urb, dev->udev, pipe, in em28xx_alloc_urbs()
971 em28xx_irq_callback, dev, 1); in em28xx_alloc_urbs()
993 int em28xx_init_usb_xfer(struct em28xx *dev, enum em28xx_mode mode, in em28xx_init_usb_xfer() argument
996 int (*urb_data_copy)(struct em28xx *dev, struct urb *urb)) in em28xx_init_usb_xfer() argument
998 struct em28xx_dmaqueue *dma_q = &dev->vidq; in em28xx_init_usb_xfer()
999 struct em28xx_dmaqueue *vbi_dma_q = &dev->vbiq; in em28xx_init_usb_xfer()
1008 dev->usb_ctl.urb_data_copy = urb_data_copy; in em28xx_init_usb_xfer()
1011 usb_bufs = &dev->usb_ctl.digital_bufs; in em28xx_init_usb_xfer()
1015 usb_bufs = &dev->usb_ctl.analog_bufs; in em28xx_init_usb_xfer()
1020 rc = em28xx_alloc_urbs(dev, mode, xfer_bulk, num_bufs, in em28xx_init_usb_xfer()
1027 rc = usb_clear_halt(dev->udev, usb_bufs->urb[0]->pipe); in em28xx_init_usb_xfer()
1031 em28xx_uninit_usb_xfer(dev, mode); in em28xx_init_usb_xfer()
1039 em28xx_capture_start(dev, 1); in em28xx_init_usb_xfer()
1047 em28xx_uninit_usb_xfer(dev, mode); in em28xx_init_usb_xfer()
1071 struct em28xx *dev = NULL; in em28xx_register_extension() local
1075 list_for_each_entry(dev, &em28xx_devlist, devlist) { in em28xx_register_extension()
1076 ops->init(dev); in em28xx_register_extension()
1086 struct em28xx *dev = NULL; in em28xx_unregister_extension() local
1089 list_for_each_entry(dev, &em28xx_devlist, devlist) { in em28xx_unregister_extension()
1090 ops->fini(dev); in em28xx_unregister_extension()
1098 void em28xx_init_extension(struct em28xx *dev) in em28xx_init_extension() argument
1103 list_add_tail(&dev->devlist, &em28xx_devlist); in em28xx_init_extension()
1106 ops->init(dev); in em28xx_init_extension()
1111 void em28xx_close_extension(struct em28xx *dev) in em28xx_close_extension() argument
1118 ops->fini(dev); in em28xx_close_extension()
1120 list_del(&dev->devlist); in em28xx_close_extension()
1124 int em28xx_suspend_extension(struct em28xx *dev) in em28xx_suspend_extension() argument
1132 ops->suspend(dev); in em28xx_suspend_extension()
1138 int em28xx_resume_extension(struct em28xx *dev) in em28xx_resume_extension() argument
1146 ops->resume(dev); in em28xx_resume_extension()