Lines Matching refs:dev

60 static inline void i2c_gate_ctrl(struct au0828_dev *dev, int val)  in i2c_gate_ctrl()  argument
62 if (dev->dvb.frontend && dev->dvb.frontend->ops.analog_ops.i2c_gate_ctrl) in i2c_gate_ctrl()
63 dev->dvb.frontend->ops.analog_ops.i2c_gate_ctrl(dev->dvb.frontend, val); in i2c_gate_ctrl()
66 static inline void print_err_status(struct au0828_dev *dev, in print_err_status() argument
105 static int check_dev(struct au0828_dev *dev) in check_dev() argument
107 if (test_bit(DEV_DISCONNECTED, &dev->dev_state)) { in check_dev()
112 if (test_bit(DEV_MISCONFIGURED, &dev->dev_state)) { in check_dev()
125 struct au0828_dev *dev = container_of(dma_q, struct au0828_dev, vidq); in au0828_irq_callback() local
144 spin_lock_irqsave(&dev->slock, flags); in au0828_irq_callback()
145 dev->isoc_ctl.isoc_copy(dev, urb); in au0828_irq_callback()
146 spin_unlock_irqrestore(&dev->slock, flags); in au0828_irq_callback()
160 dev->stream_state = STREAM_ON; in au0828_irq_callback()
166 static void au0828_uninit_isoc(struct au0828_dev *dev) in au0828_uninit_isoc() argument
173 dev->isoc_ctl.nfields = -1; in au0828_uninit_isoc()
174 for (i = 0; i < dev->isoc_ctl.num_bufs; i++) { in au0828_uninit_isoc()
175 urb = dev->isoc_ctl.urb[i]; in au0828_uninit_isoc()
182 if (dev->isoc_ctl.transfer_buffer[i]) { in au0828_uninit_isoc()
183 usb_free_coherent(dev->usbdev, in au0828_uninit_isoc()
185 dev->isoc_ctl.transfer_buffer[i], in au0828_uninit_isoc()
189 dev->isoc_ctl.urb[i] = NULL; in au0828_uninit_isoc()
191 dev->isoc_ctl.transfer_buffer[i] = NULL; in au0828_uninit_isoc()
194 kfree(dev->isoc_ctl.urb); in au0828_uninit_isoc()
195 kfree(dev->isoc_ctl.transfer_buffer); in au0828_uninit_isoc()
197 dev->isoc_ctl.urb = NULL; in au0828_uninit_isoc()
198 dev->isoc_ctl.transfer_buffer = NULL; in au0828_uninit_isoc()
199 dev->isoc_ctl.num_bufs = 0; in au0828_uninit_isoc()
201 dev->stream_state = STREAM_OFF; in au0828_uninit_isoc()
207 static int au0828_init_isoc(struct au0828_dev *dev, int max_packets, in au0828_init_isoc() argument
209 int (*isoc_copy) (struct au0828_dev *dev, struct urb *urb)) in au0828_init_isoc()
211 struct au0828_dmaqueue *dma_q = &dev->vidq; in au0828_init_isoc()
220 dev->isoc_ctl.isoc_copy = isoc_copy; in au0828_init_isoc()
221 dev->isoc_ctl.num_bufs = num_bufs; in au0828_init_isoc()
223 dev->isoc_ctl.urb = kzalloc(sizeof(void *)*num_bufs, GFP_KERNEL); in au0828_init_isoc()
224 if (!dev->isoc_ctl.urb) { in au0828_init_isoc()
229 dev->isoc_ctl.transfer_buffer = kzalloc(sizeof(void *)*num_bufs, in au0828_init_isoc()
231 if (!dev->isoc_ctl.transfer_buffer) { in au0828_init_isoc()
233 kfree(dev->isoc_ctl.urb); in au0828_init_isoc()
237 dev->isoc_ctl.max_pkt_size = max_pkt_size; in au0828_init_isoc()
238 dev->isoc_ctl.buf = NULL; in au0828_init_isoc()
240 sb_size = max_packets * dev->isoc_ctl.max_pkt_size; in au0828_init_isoc()
243 for (i = 0; i < dev->isoc_ctl.num_bufs; i++) { in au0828_init_isoc()
247 au0828_uninit_isoc(dev); in au0828_init_isoc()
250 dev->isoc_ctl.urb[i] = urb; in au0828_init_isoc()
252 dev->isoc_ctl.transfer_buffer[i] = usb_alloc_coherent(dev->usbdev, in au0828_init_isoc()
254 if (!dev->isoc_ctl.transfer_buffer[i]) { in au0828_init_isoc()
259 au0828_uninit_isoc(dev); in au0828_init_isoc()
262 memset(dev->isoc_ctl.transfer_buffer[i], 0, sb_size); in au0828_init_isoc()
264 pipe = usb_rcvisocpipe(dev->usbdev, in au0828_init_isoc()
265 dev->isoc_in_endpointaddr), in au0828_init_isoc()
267 usb_fill_int_urb(urb, dev->usbdev, pipe, in au0828_init_isoc()
268 dev->isoc_ctl.transfer_buffer[i], sb_size, in au0828_init_isoc()
278 dev->isoc_ctl.max_pkt_size; in au0828_init_isoc()
279 k += dev->isoc_ctl.max_pkt_size; in au0828_init_isoc()
284 for (i = 0; i < dev->isoc_ctl.num_bufs; i++) { in au0828_init_isoc()
285 rc = usb_submit_urb(dev->isoc_ctl.urb[i], GFP_ATOMIC); in au0828_init_isoc()
289 au0828_uninit_isoc(dev); in au0828_init_isoc()
300 static inline void buffer_filled(struct au0828_dev *dev, in buffer_filled() argument
311 vb->v4l2_buf.sequence = dev->frame_count++; in buffer_filled()
313 vb->v4l2_buf.sequence = dev->vbi_frame_count++; in buffer_filled()
323 static void au0828_copy_video(struct au0828_dev *dev, in au0828_copy_video() argument
331 int bytesperline = dev->width << 1; /* Assumes 16-bit depth @@@@ */ in au0828_copy_video()
395 dev->greenscreen_detected = 1; in au0828_copy_video()
407 struct au0828_dev *dev = container_of(dma_q, struct au0828_dev, vidq); in get_next_buf() local
411 dev->isoc_ctl.buf = NULL; in get_next_buf()
422 dev->isoc_ctl.buf = *buf; in get_next_buf()
427 static void au0828_copy_vbi(struct au0828_dev *dev, in au0828_copy_vbi() argument
437 if (dev == NULL) { in au0828_copy_vbi()
457 bytesperline = dev->vbi_width; in au0828_copy_vbi()
467 startwrite += bytesperline * dev->vbi_height; in au0828_copy_vbi()
482 struct au0828_dev *dev = container_of(dma_q, struct au0828_dev, vbiq); in vbi_get_next_buf() local
486 dev->isoc_ctl.vbi_buf = NULL; in vbi_get_next_buf()
497 dev->isoc_ctl.vbi_buf = *buf; in vbi_get_next_buf()
504 static inline int au0828_isoc_copy(struct au0828_dev *dev, struct urb *urb) in au0828_isoc_copy() argument
509 struct au0828_dmaqueue *vbi_dma_q = &dev->vbiq; in au0828_isoc_copy()
518 if (!dev) in au0828_isoc_copy()
521 if (test_bit(DEV_DISCONNECTED, &dev->dev_state) || in au0828_isoc_copy()
522 test_bit(DEV_MISCONFIGURED, &dev->dev_state)) in au0828_isoc_copy()
526 print_err_status(dev, -1, urb->status); in au0828_isoc_copy()
531 buf = dev->isoc_ctl.buf; in au0828_isoc_copy()
535 vbi_buf = dev->isoc_ctl.vbi_buf; in au0828_isoc_copy()
543 print_err_status(dev, i, status); in au0828_isoc_copy()
552 dev->max_pkt_size) { in au0828_isoc_copy()
570 buffer_filled(dev, vbi_dma_q, vbi_buf); in au0828_isoc_copy()
580 buffer_filled(dev, dma_q, buf); in au0828_isoc_copy()
589 if (dev->vid_timeout_running) in au0828_isoc_copy()
590 mod_timer(&dev->vid_timeout, in au0828_isoc_copy()
592 if (dev->vbi_timeout_running) in au0828_isoc_copy()
593 mod_timer(&dev->vbi_timeout, in au0828_isoc_copy()
611 dev->vbi_read = 0; in au0828_isoc_copy()
616 vbi_field_size = dev->vbi_width * dev->vbi_height * 2; in au0828_isoc_copy()
617 if (dev->vbi_read < vbi_field_size) { in au0828_isoc_copy()
618 remain = vbi_field_size - dev->vbi_read; in au0828_isoc_copy()
625 au0828_copy_vbi(dev, vbi_dma_q, vbi_buf, p, in au0828_isoc_copy()
630 dev->vbi_read += lencopy; in au0828_isoc_copy()
633 if (dev->vbi_read >= vbi_field_size && buf != NULL) in au0828_isoc_copy()
634 au0828_copy_video(dev, dma_q, buf, p, outp, len); in au0828_isoc_copy()
643 struct au0828_dev *dev = vb2_get_drv_priv(vq); in queue_setup() local
644 unsigned long img_size = dev->height * dev->bytesperline; in queue_setup()
661 struct au0828_dev *dev = vb2_get_drv_priv(vb->vb2_queue); in buffer_prepare() local
663 buf->length = dev->height * dev->bytesperline; in buffer_prepare()
680 struct au0828_dev *dev = vb2_get_drv_priv(vb->vb2_queue); in buffer_queue() local
681 struct au0828_dmaqueue *vidq = &dev->vidq; in buffer_queue()
687 spin_lock_irqsave(&dev->slock, flags); in buffer_queue()
689 spin_unlock_irqrestore(&dev->slock, flags); in buffer_queue()
692 static int au0828_i2s_init(struct au0828_dev *dev) in au0828_i2s_init() argument
695 au0828_writereg(dev, AU0828_AUDIOCTRL_50C, 0x01); in au0828_i2s_init()
747 static void au0828_analog_stream_reset(struct au0828_dev *dev) in au0828_analog_stream_reset() argument
750 au0828_writereg(dev, AU0828_SENSORCTRL_100, 0x0); in au0828_analog_stream_reset()
752 au0828_writereg(dev, AU0828_SENSORCTRL_100, 0xb3); in au0828_analog_stream_reset()
758 static int au0828_stream_interrupt(struct au0828_dev *dev) in au0828_stream_interrupt() argument
762 dev->stream_state = STREAM_INTERRUPT; in au0828_stream_interrupt()
763 if (test_bit(DEV_DISCONNECTED, &dev->dev_state)) in au0828_stream_interrupt()
766 set_bit(DEV_MISCONFIGURED, &dev->dev_state); in au0828_stream_interrupt()
775 struct au0828_dev *dev = vb2_get_drv_priv(vq); in au0828_start_analog_streaming() local
779 dev->streaming_users); in au0828_start_analog_streaming()
782 dev->frame_count = 0; in au0828_start_analog_streaming()
784 dev->vbi_frame_count = 0; in au0828_start_analog_streaming()
786 if (dev->streaming_users == 0) { in au0828_start_analog_streaming()
788 au0828_i2s_init(dev); in au0828_start_analog_streaming()
789 rc = au0828_init_isoc(dev, AU0828_ISO_PACKETS_PER_URB, in au0828_start_analog_streaming()
790 AU0828_MAX_ISO_BUFS, dev->max_pkt_size, in au0828_start_analog_streaming()
798 v4l2_device_call_all(&dev->v4l2_dev, 0, video, in au0828_start_analog_streaming()
800 dev->vid_timeout_running = 1; in au0828_start_analog_streaming()
801 mod_timer(&dev->vid_timeout, jiffies + (HZ / 10)); in au0828_start_analog_streaming()
803 dev->vbi_timeout_running = 1; in au0828_start_analog_streaming()
804 mod_timer(&dev->vbi_timeout, jiffies + (HZ / 10)); in au0828_start_analog_streaming()
807 dev->streaming_users++; in au0828_start_analog_streaming()
813 struct au0828_dev *dev = vb2_get_drv_priv(vq); in au0828_stop_streaming() local
814 struct au0828_dmaqueue *vidq = &dev->vidq; in au0828_stop_streaming()
817 dprintk(1, "au0828_stop_streaming called %d\n", dev->streaming_users); in au0828_stop_streaming()
819 if (dev->streaming_users-- == 1) in au0828_stop_streaming()
820 au0828_uninit_isoc(dev); in au0828_stop_streaming()
822 v4l2_device_call_all(&dev->v4l2_dev, 0, video, s_stream, 0); in au0828_stop_streaming()
823 dev->vid_timeout_running = 0; in au0828_stop_streaming()
824 del_timer_sync(&dev->vid_timeout); in au0828_stop_streaming()
826 spin_lock_irqsave(&dev->slock, flags); in au0828_stop_streaming()
827 if (dev->isoc_ctl.buf != NULL) { in au0828_stop_streaming()
828 vb2_buffer_done(&dev->isoc_ctl.buf->vb, VB2_BUF_STATE_ERROR); in au0828_stop_streaming()
829 dev->isoc_ctl.buf = NULL; in au0828_stop_streaming()
838 spin_unlock_irqrestore(&dev->slock, flags); in au0828_stop_streaming()
843 struct au0828_dev *dev = vb2_get_drv_priv(vq); in au0828_stop_vbi_streaming() local
844 struct au0828_dmaqueue *vbiq = &dev->vbiq; in au0828_stop_vbi_streaming()
848 dev->streaming_users); in au0828_stop_vbi_streaming()
850 if (dev->streaming_users-- == 1) in au0828_stop_vbi_streaming()
851 au0828_uninit_isoc(dev); in au0828_stop_vbi_streaming()
853 spin_lock_irqsave(&dev->slock, flags); in au0828_stop_vbi_streaming()
854 if (dev->isoc_ctl.vbi_buf != NULL) { in au0828_stop_vbi_streaming()
855 vb2_buffer_done(&dev->isoc_ctl.vbi_buf->vb, in au0828_stop_vbi_streaming()
857 dev->isoc_ctl.vbi_buf = NULL; in au0828_stop_vbi_streaming()
866 spin_unlock_irqrestore(&dev->slock, flags); in au0828_stop_vbi_streaming()
868 dev->vbi_timeout_running = 0; in au0828_stop_vbi_streaming()
869 del_timer_sync(&dev->vbi_timeout); in au0828_stop_vbi_streaming()
889 void au0828_analog_unregister(struct au0828_dev *dev) in au0828_analog_unregister() argument
893 video_unregister_device(&dev->vdev); in au0828_analog_unregister()
894 video_unregister_device(&dev->vbi_dev); in au0828_analog_unregister()
903 struct au0828_dev *dev = (struct au0828_dev *) data; in au0828_vid_buffer_timeout() local
904 struct au0828_dmaqueue *dma_q = &dev->vidq; in au0828_vid_buffer_timeout()
909 spin_lock_irqsave(&dev->slock, flags); in au0828_vid_buffer_timeout()
911 buf = dev->isoc_ctl.buf; in au0828_vid_buffer_timeout()
915 buffer_filled(dev, dma_q, buf); in au0828_vid_buffer_timeout()
919 if (dev->vid_timeout_running == 1) in au0828_vid_buffer_timeout()
920 mod_timer(&dev->vid_timeout, jiffies + (HZ / 10)); in au0828_vid_buffer_timeout()
922 spin_unlock_irqrestore(&dev->slock, flags); in au0828_vid_buffer_timeout()
927 struct au0828_dev *dev = (struct au0828_dev *) data; in au0828_vbi_buffer_timeout() local
928 struct au0828_dmaqueue *dma_q = &dev->vbiq; in au0828_vbi_buffer_timeout()
933 spin_lock_irqsave(&dev->slock, flags); in au0828_vbi_buffer_timeout()
935 buf = dev->isoc_ctl.vbi_buf; in au0828_vbi_buffer_timeout()
939 buffer_filled(dev, dma_q, buf); in au0828_vbi_buffer_timeout()
943 if (dev->vbi_timeout_running == 1) in au0828_vbi_buffer_timeout()
944 mod_timer(&dev->vbi_timeout, jiffies + (HZ / 10)); in au0828_vbi_buffer_timeout()
945 spin_unlock_irqrestore(&dev->slock, flags); in au0828_vbi_buffer_timeout()
950 struct au0828_dev *dev = video_drvdata(filp); in au0828_v4l2_open() local
955 __func__, dev->std_set_in_tuner_core, dev->dev_state, in au0828_v4l2_open()
956 dev->streaming_users, dev->users); in au0828_v4l2_open()
958 if (mutex_lock_interruptible(&dev->lock)) in au0828_v4l2_open()
965 mutex_unlock(&dev->lock); in au0828_v4l2_open()
969 if (dev->users == 0) { in au0828_v4l2_open()
970 au0828_analog_stream_enable(dev); in au0828_v4l2_open()
971 au0828_analog_stream_reset(dev); in au0828_v4l2_open()
972 dev->stream_state = STREAM_OFF; in au0828_v4l2_open()
973 set_bit(DEV_INITIALIZED, &dev->dev_state); in au0828_v4l2_open()
975 dev->users++; in au0828_v4l2_open()
976 mutex_unlock(&dev->lock); in au0828_v4l2_open()
983 struct au0828_dev *dev = video_drvdata(filp); in au0828_v4l2_close() local
988 __func__, dev->std_set_in_tuner_core, dev->dev_state, in au0828_v4l2_close()
989 dev->streaming_users, dev->users); in au0828_v4l2_close()
991 mutex_lock(&dev->lock); in au0828_v4l2_close()
992 if (vdev->vfl_type == VFL_TYPE_GRABBER && dev->vid_timeout_running) { in au0828_v4l2_close()
994 dev->vid_timeout_running = 0; in au0828_v4l2_close()
995 del_timer_sync(&dev->vid_timeout); in au0828_v4l2_close()
997 dev->vbi_timeout_running) { in au0828_v4l2_close()
999 dev->vbi_timeout_running = 0; in au0828_v4l2_close()
1000 del_timer_sync(&dev->vbi_timeout); in au0828_v4l2_close()
1003 if (test_bit(DEV_DISCONNECTED, &dev->dev_state)) in au0828_v4l2_close()
1006 if (dev->users == 1) { in au0828_v4l2_close()
1008 v4l2_device_call_all(&dev->v4l2_dev, 0, core, s_power, 0); in au0828_v4l2_close()
1009 dev->std_set_in_tuner_core = 0; in au0828_v4l2_close()
1013 ret = usb_set_interface(dev->usbdev, 0, 0); in au0828_v4l2_close()
1019 dev->users--; in au0828_v4l2_close()
1020 mutex_unlock(&dev->lock); in au0828_v4l2_close()
1025 static void au0828_init_tuner(struct au0828_dev *dev) in au0828_init_tuner() argument
1028 .frequency = dev->ctrl_freq, in au0828_init_tuner()
1033 dev->std_set_in_tuner_core, dev->dev_state); in au0828_init_tuner()
1035 if (dev->std_set_in_tuner_core) in au0828_init_tuner()
1037 dev->std_set_in_tuner_core = 1; in au0828_init_tuner()
1038 i2c_gate_ctrl(dev, 1); in au0828_init_tuner()
1042 v4l2_device_call_all(&dev->v4l2_dev, 0, video, s_std, dev->std); in au0828_init_tuner()
1043 v4l2_device_call_all(&dev->v4l2_dev, 0, tuner, s_frequency, &f); in au0828_init_tuner()
1044 i2c_gate_ctrl(dev, 0); in au0828_init_tuner()
1047 static int au0828_set_format(struct au0828_dev *dev, unsigned int cmd, in au0828_set_format() argument
1078 dev->width = width; in au0828_set_format()
1079 dev->height = height; in au0828_set_format()
1080 dev->frame_size = width * height * 2; in au0828_set_format()
1081 dev->field_size = width * height; in au0828_set_format()
1082 dev->bytesperline = width * 2; in au0828_set_format()
1084 if (dev->stream_state == STREAM_ON) { in au0828_set_format()
1086 ret = au0828_stream_interrupt(dev); in au0828_set_format()
1093 au0828_analog_stream_enable(dev); in au0828_set_format()
1102 struct au0828_dev *dev = video_drvdata(file); in vidioc_querycap() local
1105 dev->std_set_in_tuner_core, dev->dev_state); in vidioc_querycap()
1108 strlcpy(cap->card, dev->board.name, sizeof(cap->card)); in vidioc_querycap()
1109 usb_make_path(dev->usbdev, cap->bus_info, sizeof(cap->bus_info)); in vidioc_querycap()
1145 struct au0828_dev *dev = video_drvdata(file); in vidioc_g_fmt_vid_cap() local
1148 dev->std_set_in_tuner_core, dev->dev_state); in vidioc_g_fmt_vid_cap()
1150 f->fmt.pix.width = dev->width; in vidioc_g_fmt_vid_cap()
1151 f->fmt.pix.height = dev->height; in vidioc_g_fmt_vid_cap()
1153 f->fmt.pix.bytesperline = dev->bytesperline; in vidioc_g_fmt_vid_cap()
1154 f->fmt.pix.sizeimage = dev->frame_size; in vidioc_g_fmt_vid_cap()
1164 struct au0828_dev *dev = video_drvdata(file); in vidioc_try_fmt_vid_cap() local
1167 dev->std_set_in_tuner_core, dev->dev_state); in vidioc_try_fmt_vid_cap()
1169 return au0828_set_format(dev, VIDIOC_TRY_FMT, f); in vidioc_try_fmt_vid_cap()
1175 struct au0828_dev *dev = video_drvdata(file); in vidioc_s_fmt_vid_cap() local
1179 dev->std_set_in_tuner_core, dev->dev_state); in vidioc_s_fmt_vid_cap()
1181 rc = check_dev(dev); in vidioc_s_fmt_vid_cap()
1185 if (vb2_is_busy(&dev->vb_vidq)) { in vidioc_s_fmt_vid_cap()
1191 rc = au0828_set_format(dev, VIDIOC_S_FMT, f); in vidioc_s_fmt_vid_cap()
1198 struct au0828_dev *dev = video_drvdata(file); in vidioc_s_std() local
1201 dev->std_set_in_tuner_core, dev->dev_state); in vidioc_s_std()
1203 if (norm == dev->std) in vidioc_s_std()
1206 if (dev->streaming_users > 0) in vidioc_s_std()
1209 dev->std = norm; in vidioc_s_std()
1211 au0828_init_tuner(dev); in vidioc_s_std()
1213 i2c_gate_ctrl(dev, 1); in vidioc_s_std()
1221 v4l2_device_call_all(&dev->v4l2_dev, 0, video, s_std, norm); in vidioc_s_std()
1223 i2c_gate_ctrl(dev, 0); in vidioc_s_std()
1230 struct au0828_dev *dev = video_drvdata(file); in vidioc_g_std() local
1233 dev->std_set_in_tuner_core, dev->dev_state); in vidioc_g_std()
1235 *norm = dev->std; in vidioc_g_std()
1242 struct au0828_dev *dev = video_drvdata(file); in vidioc_enum_input() local
1256 dev->std_set_in_tuner_core, dev->dev_state); in vidioc_enum_input()
1276 input->std = dev->vdev.tvnorms; in vidioc_enum_input()
1283 struct au0828_dev *dev = video_drvdata(file); in vidioc_g_input() local
1286 dev->std_set_in_tuner_core, dev->dev_state); in vidioc_g_input()
1288 *i = dev->ctrl_input; in vidioc_g_input()
1292 static void au0828_s_input(struct au0828_dev *dev, int index) in au0828_s_input() argument
1297 dev->std_set_in_tuner_core, dev->dev_state); in au0828_s_input()
1301 dev->input_type = AU0828_VMUX_SVIDEO; in au0828_s_input()
1302 dev->ctrl_ainput = 1; in au0828_s_input()
1305 dev->input_type = AU0828_VMUX_COMPOSITE; in au0828_s_input()
1306 dev->ctrl_ainput = 1; in au0828_s_input()
1309 dev->input_type = AU0828_VMUX_TELEVISION; in au0828_s_input()
1310 dev->ctrl_ainput = 0; in au0828_s_input()
1318 v4l2_device_call_all(&dev->v4l2_dev, 0, video, s_routing, in au0828_s_input()
1331 (AUVI_INPUT(i).audio_setup)(dev, enable); in au0828_s_input()
1337 (AUVI_INPUT(i).audio_setup)(dev, enable); in au0828_s_input()
1342 v4l2_device_call_all(&dev->v4l2_dev, 0, audio, s_routing, in au0828_s_input()
1348 struct au0828_dev *dev = video_drvdata(file); in vidioc_s_input() local
1356 dev->ctrl_input = index; in vidioc_s_input()
1357 au0828_s_input(dev, index); in vidioc_s_input()
1379 struct au0828_dev *dev = video_drvdata(file); in vidioc_g_audio() local
1382 dev->std_set_in_tuner_core, dev->dev_state); in vidioc_g_audio()
1384 a->index = dev->ctrl_ainput; in vidioc_g_audio()
1396 struct au0828_dev *dev = video_drvdata(file); in vidioc_s_audio() local
1398 if (a->index != dev->ctrl_ainput) in vidioc_s_audio()
1402 dev->std_set_in_tuner_core, dev->dev_state); in vidioc_s_audio()
1408 struct au0828_dev *dev = video_drvdata(file); in vidioc_g_tuner() local
1414 dev->std_set_in_tuner_core, dev->dev_state); in vidioc_g_tuner()
1418 au0828_init_tuner(dev); in vidioc_g_tuner()
1419 i2c_gate_ctrl(dev, 1); in vidioc_g_tuner()
1420 v4l2_device_call_all(&dev->v4l2_dev, 0, tuner, g_tuner, t); in vidioc_g_tuner()
1421 i2c_gate_ctrl(dev, 0); in vidioc_g_tuner()
1428 struct au0828_dev *dev = video_drvdata(file); in vidioc_s_tuner() local
1434 dev->std_set_in_tuner_core, dev->dev_state); in vidioc_s_tuner()
1436 au0828_init_tuner(dev); in vidioc_s_tuner()
1437 i2c_gate_ctrl(dev, 1); in vidioc_s_tuner()
1438 v4l2_device_call_all(&dev->v4l2_dev, 0, tuner, s_tuner, t); in vidioc_s_tuner()
1439 i2c_gate_ctrl(dev, 0); in vidioc_s_tuner()
1451 struct au0828_dev *dev = video_drvdata(file); in vidioc_g_frequency() local
1456 dev->std_set_in_tuner_core, dev->dev_state); in vidioc_g_frequency()
1457 freq->frequency = dev->ctrl_freq; in vidioc_g_frequency()
1464 struct au0828_dev *dev = video_drvdata(file); in vidioc_s_frequency() local
1471 dev->std_set_in_tuner_core, dev->dev_state); in vidioc_s_frequency()
1473 au0828_init_tuner(dev); in vidioc_s_frequency()
1474 i2c_gate_ctrl(dev, 1); in vidioc_s_frequency()
1476 v4l2_device_call_all(&dev->v4l2_dev, 0, tuner, s_frequency, freq); in vidioc_s_frequency()
1478 v4l2_device_call_all(&dev->v4l2_dev, 0, tuner, g_frequency, &new_freq); in vidioc_s_frequency()
1479 dev->ctrl_freq = new_freq.frequency; in vidioc_s_frequency()
1481 i2c_gate_ctrl(dev, 0); in vidioc_s_frequency()
1483 au0828_analog_stream_reset(dev); in vidioc_s_frequency()
1494 struct au0828_dev *dev = video_drvdata(file); in vidioc_g_fmt_vbi_cap() local
1497 dev->std_set_in_tuner_core, dev->dev_state); in vidioc_g_fmt_vbi_cap()
1499 format->fmt.vbi.samples_per_line = dev->vbi_width; in vidioc_g_fmt_vbi_cap()
1505 format->fmt.vbi.count[0] = dev->vbi_height; in vidioc_g_fmt_vbi_cap()
1506 format->fmt.vbi.count[1] = dev->vbi_height; in vidioc_g_fmt_vbi_cap()
1517 struct au0828_dev *dev = video_drvdata(file); in vidioc_cropcap() local
1523 dev->std_set_in_tuner_core, dev->dev_state); in vidioc_cropcap()
1527 cc->bounds.width = dev->width; in vidioc_cropcap()
1528 cc->bounds.height = dev->height; in vidioc_cropcap()
1542 struct au0828_dev *dev = video_drvdata(file); in vidioc_g_register() local
1545 dev->std_set_in_tuner_core, dev->dev_state); in vidioc_g_register()
1547 reg->val = au0828_read(dev, reg->reg); in vidioc_g_register()
1555 struct au0828_dev *dev = video_drvdata(file); in vidioc_s_register() local
1558 dev->std_set_in_tuner_core, dev->dev_state); in vidioc_s_register()
1560 return au0828_writereg(dev, reg->reg, reg->val); in vidioc_s_register()
1575 void au0828_v4l2_suspend(struct au0828_dev *dev) in au0828_v4l2_suspend() argument
1582 if (dev->stream_state == STREAM_ON) { in au0828_v4l2_suspend()
1584 au0828_analog_stream_disable(dev); in au0828_v4l2_suspend()
1586 for (i = 0; i < dev->isoc_ctl.num_bufs; i++) { in au0828_v4l2_suspend()
1587 urb = dev->isoc_ctl.urb[i]; in au0828_v4l2_suspend()
1597 if (dev->vid_timeout_running) in au0828_v4l2_suspend()
1598 del_timer_sync(&dev->vid_timeout); in au0828_v4l2_suspend()
1599 if (dev->vbi_timeout_running) in au0828_v4l2_suspend()
1600 del_timer_sync(&dev->vbi_timeout); in au0828_v4l2_suspend()
1603 void au0828_v4l2_resume(struct au0828_dev *dev) in au0828_v4l2_resume() argument
1609 if (dev->stream_state == STREAM_ON) { in au0828_v4l2_resume()
1610 au0828_stream_interrupt(dev); in au0828_v4l2_resume()
1611 au0828_init_tuner(dev); in au0828_v4l2_resume()
1614 if (dev->vid_timeout_running) in au0828_v4l2_resume()
1615 mod_timer(&dev->vid_timeout, jiffies + (HZ / 10)); in au0828_v4l2_resume()
1616 if (dev->vbi_timeout_running) in au0828_v4l2_resume()
1617 mod_timer(&dev->vbi_timeout, jiffies + (HZ / 10)); in au0828_v4l2_resume()
1620 au0828_i2s_init(dev); in au0828_v4l2_resume()
1622 au0828_analog_stream_enable(dev); in au0828_v4l2_resume()
1624 if (!(dev->stream_state == STREAM_ON)) { in au0828_v4l2_resume()
1625 au0828_analog_stream_reset(dev); in au0828_v4l2_resume()
1627 for (i = 0; i < dev->isoc_ctl.num_bufs; i++) { in au0828_v4l2_resume()
1628 rc = usb_submit_urb(dev->isoc_ctl.urb[i], GFP_ATOMIC); in au0828_v4l2_resume()
1632 au0828_uninit_isoc(dev); in au0828_v4l2_resume()
1699 static int au0828_vb2_setup(struct au0828_dev *dev) in au0828_vb2_setup() argument
1705 q = &dev->vb_vidq; in au0828_vb2_setup()
1709 q->drv_priv = dev; in au0828_vb2_setup()
1719 q = &dev->vb_vbiq; in au0828_vb2_setup()
1723 q->drv_priv = dev; in au0828_vb2_setup()
1737 int au0828_analog_register(struct au0828_dev *dev, in au0828_analog_register() argument
1749 retval = usb_set_interface(dev->usbdev, in au0828_analog_register()
1767 dev->max_pkt_size = (tmp & 0x07ff) * in au0828_analog_register()
1769 dev->isoc_in_endpointaddr = endpoint->bEndpointAddress; in au0828_analog_register()
1772 dev->isoc_in_endpointaddr, dev->max_pkt_size); in au0828_analog_register()
1775 if (!(dev->isoc_in_endpointaddr)) { in au0828_analog_register()
1780 init_waitqueue_head(&dev->open); in au0828_analog_register()
1781 spin_lock_init(&dev->slock); in au0828_analog_register()
1784 INIT_LIST_HEAD(&dev->vidq.active); in au0828_analog_register()
1785 INIT_LIST_HEAD(&dev->vbiq.active); in au0828_analog_register()
1787 setup_timer(&dev->vid_timeout, au0828_vid_buffer_timeout, in au0828_analog_register()
1788 (unsigned long)dev); in au0828_analog_register()
1789 setup_timer(&dev->vbi_timeout, au0828_vbi_buffer_timeout, in au0828_analog_register()
1790 (unsigned long)dev); in au0828_analog_register()
1792 dev->width = NTSC_STD_W; in au0828_analog_register()
1793 dev->height = NTSC_STD_H; in au0828_analog_register()
1794 dev->field_size = dev->width * dev->height; in au0828_analog_register()
1795 dev->frame_size = dev->field_size << 1; in au0828_analog_register()
1796 dev->bytesperline = dev->width << 1; in au0828_analog_register()
1797 dev->vbi_width = 720; in au0828_analog_register()
1798 dev->vbi_height = 1; in au0828_analog_register()
1799 dev->ctrl_ainput = 0; in au0828_analog_register()
1800 dev->ctrl_freq = 960; in au0828_analog_register()
1801 dev->std = V4L2_STD_NTSC_M; in au0828_analog_register()
1802 au0828_s_input(dev, 0); in au0828_analog_register()
1804 mutex_init(&dev->vb_queue_lock); in au0828_analog_register()
1805 mutex_init(&dev->vb_vbi_queue_lock); in au0828_analog_register()
1808 dev->vdev = au0828_video_template; in au0828_analog_register()
1809 dev->vdev.v4l2_dev = &dev->v4l2_dev; in au0828_analog_register()
1810 dev->vdev.lock = &dev->lock; in au0828_analog_register()
1811 dev->vdev.queue = &dev->vb_vidq; in au0828_analog_register()
1812 dev->vdev.queue->lock = &dev->vb_queue_lock; in au0828_analog_register()
1813 strcpy(dev->vdev.name, "au0828a video"); in au0828_analog_register()
1816 dev->vbi_dev = au0828_video_template; in au0828_analog_register()
1817 dev->vbi_dev.v4l2_dev = &dev->v4l2_dev; in au0828_analog_register()
1818 dev->vbi_dev.lock = &dev->lock; in au0828_analog_register()
1819 dev->vbi_dev.queue = &dev->vb_vbiq; in au0828_analog_register()
1820 dev->vbi_dev.queue->lock = &dev->vb_vbi_queue_lock; in au0828_analog_register()
1821 strcpy(dev->vbi_dev.name, "au0828a vbi"); in au0828_analog_register()
1824 retval = au0828_vb2_setup(dev); in au0828_analog_register()
1832 video_set_drvdata(&dev->vdev, dev); in au0828_analog_register()
1833 retval = video_register_device(&dev->vdev, VFL_TYPE_GRABBER, -1); in au0828_analog_register()
1842 video_set_drvdata(&dev->vbi_dev, dev); in au0828_analog_register()
1843 retval = video_register_device(&dev->vbi_dev, VFL_TYPE_VBI, -1); in au0828_analog_register()
1856 video_unregister_device(&dev->vdev); in au0828_analog_register()
1858 vb2_queue_release(&dev->vb_vidq); in au0828_analog_register()
1859 vb2_queue_release(&dev->vb_vbiq); in au0828_analog_register()