Lines Matching refs:dev
69 printk(KERN_DEBUG "%s: " fmt, dev->name, ## arg);\
97 void cx23885_video_wakeup(struct cx23885_dev *dev, in cx23885_video_wakeup() argument
115 int cx23885_set_tvnorm(struct cx23885_dev *dev, v4l2_std_id norm) in cx23885_set_tvnorm() argument
122 if (dev->tvnorm != norm) { in cx23885_set_tvnorm()
123 if (vb2_is_busy(&dev->vb2_vidq) || vb2_is_busy(&dev->vb2_vbiq) || in cx23885_set_tvnorm()
124 vb2_is_busy(&dev->vb2_mpegq)) in cx23885_set_tvnorm()
128 dev->tvnorm = norm; in cx23885_set_tvnorm()
130 call_all(dev, video, s_std, norm); in cx23885_set_tvnorm()
135 static struct video_device *cx23885_vdev_init(struct cx23885_dev *dev, in cx23885_vdev_init() argument
147 vfd->v4l2_dev = &dev->v4l2_dev; in cx23885_vdev_init()
149 vfd->lock = &dev->lock; in cx23885_vdev_init()
151 cx23885_boards[dev->board].name, type); in cx23885_vdev_init()
152 video_set_drvdata(vfd, dev); in cx23885_vdev_init()
156 int cx23885_flatiron_write(struct cx23885_dev *dev, u8 reg, u8 data) in cx23885_flatiron_write() argument
164 return i2c_transfer(&dev->i2c_bus[2].i2c_adap, &msg, 1); in cx23885_flatiron_write()
167 u8 cx23885_flatiron_read(struct cx23885_dev *dev, u8 reg) in cx23885_flatiron_read() argument
179 ret = i2c_transfer(&dev->i2c_bus[2].i2c_adap, &msg[0], 2); in cx23885_flatiron_read()
186 static void cx23885_flatiron_dump(struct cx23885_dev *dev) in cx23885_flatiron_dump() argument
192 cx23885_flatiron_read(dev, i)); in cx23885_flatiron_dump()
196 static int cx23885_flatiron_mux(struct cx23885_dev *dev, int input) in cx23885_flatiron_mux() argument
202 val = cx23885_flatiron_read(dev, CH_PWR_CTRL1) & ~FLD_CH_SEL; in cx23885_flatiron_mux()
204 val = cx23885_flatiron_read(dev, CH_PWR_CTRL1) | FLD_CH_SEL; in cx23885_flatiron_mux()
210 cx23885_flatiron_write(dev, CH_PWR_CTRL1, val); in cx23885_flatiron_mux()
213 cx23885_flatiron_write(dev, CH_PWR_CTRL2, 0); in cx23885_flatiron_mux()
216 cx23885_flatiron_dump(dev); in cx23885_flatiron_mux()
221 static int cx23885_video_mux(struct cx23885_dev *dev, unsigned int input) in cx23885_video_mux() argument
228 dev->input = input; in cx23885_video_mux()
230 if (dev->board == CX23885_BOARD_MYGICA_X8506 || in cx23885_video_mux()
231 dev->board == CX23885_BOARD_MAGICPRO_PROHDTVE2 || in cx23885_video_mux()
232 dev->board == CX23885_BOARD_MYGICA_X8507) { in cx23885_video_mux()
235 cx23885_gpio_clear(dev, GPIO_0); in cx23885_video_mux()
239 v4l2_subdev_call(dev->sd_cx25840, video, s_routing, in cx23885_video_mux()
242 if ((dev->board == CX23885_BOARD_HAUPPAUGE_HVR1800) || in cx23885_video_mux()
243 (dev->board == CX23885_BOARD_MPX885) || in cx23885_video_mux()
244 (dev->board == CX23885_BOARD_HAUPPAUGE_HVR1250) || in cx23885_video_mux()
245 (dev->board == CX23885_BOARD_HAUPPAUGE_IMPACTVCBE) || in cx23885_video_mux()
246 (dev->board == CX23885_BOARD_HAUPPAUGE_HVR1255) || in cx23885_video_mux()
247 (dev->board == CX23885_BOARD_HAUPPAUGE_HVR1255_22111) || in cx23885_video_mux()
248 (dev->board == CX23885_BOARD_HAUPPAUGE_HVR1850) || in cx23885_video_mux()
249 (dev->board == CX23885_BOARD_MYGICA_X8507) || in cx23885_video_mux()
250 (dev->board == CX23885_BOARD_AVERMEDIA_HC81R)) { in cx23885_video_mux()
252 v4l2_subdev_call(dev->sd_cx25840, audio, s_routing, in cx23885_video_mux()
256 cx23885_flatiron_mux(dev, 1); in cx23885_video_mux()
258 cx23885_flatiron_mux(dev, 2); in cx23885_video_mux()
264 static int cx23885_audio_mux(struct cx23885_dev *dev, unsigned int input) in cx23885_audio_mux() argument
278 cx23885_flatiron_mux(dev, 1); in cx23885_audio_mux()
280 cx23885_flatiron_mux(dev, 2); in cx23885_audio_mux()
283 cx23885_flatiron_mux(dev, 1); in cx23885_audio_mux()
290 static int cx23885_start_video_dma(struct cx23885_dev *dev, in cx23885_start_video_dma() argument
300 cx23885_sram_channel_setup(dev, &dev->sram_channels[SRAM_CH01], in cx23885_start_video_dma()
308 cx23885_irq_add_enable(dev, 0x01); in cx23885_start_video_dma()
322 struct cx23885_dev *dev = q->drv_priv; in queue_setup() local
325 sizes[0] = (dev->fmt->depth * dev->width * dev->height) >> 3; in queue_setup()
326 alloc_ctxs[0] = dev->alloc_ctx; in queue_setup()
333 struct cx23885_dev *dev = vb->vb2_queue->drv_priv; in buffer_prepare() local
340 buf->bpl = (dev->width * dev->fmt->depth) >> 3; in buffer_prepare()
342 if (vb2_plane_size(vb, 0) < dev->height * buf->bpl) in buffer_prepare()
344 vb2_set_plane_payload(vb, 0, dev->height * buf->bpl); in buffer_prepare()
346 switch (dev->field) { in buffer_prepare()
348 cx23885_risc_buffer(dev->pci, &buf->risc, in buffer_prepare()
350 buf->bpl, 0, dev->height); in buffer_prepare()
353 cx23885_risc_buffer(dev->pci, &buf->risc, in buffer_prepare()
355 buf->bpl, 0, dev->height); in buffer_prepare()
358 if (dev->tvnorm & V4L2_STD_525_60) in buffer_prepare()
364 if (cx23885_boards[dev->board].force_bff) in buffer_prepare()
381 cx23885_risc_buffer(dev->pci, &buf->risc, in buffer_prepare()
385 dev->height >> 1); in buffer_prepare()
388 cx23885_risc_buffer(dev->pci, &buf->risc, in buffer_prepare()
390 0, buf->bpl * (dev->height >> 1), in buffer_prepare()
392 dev->height >> 1); in buffer_prepare()
395 cx23885_risc_buffer(dev->pci, &buf->risc, in buffer_prepare()
397 buf->bpl * (dev->height >> 1), 0, in buffer_prepare()
399 dev->height >> 1); in buffer_prepare()
406 dev->width, dev->height, dev->fmt->depth, dev->fmt->name, in buffer_prepare()
444 struct cx23885_dev *dev = vb->vb2_queue->drv_priv; in buffer_queue() local
448 struct cx23885_dmaqueue *q = &dev->vidq; in buffer_queue()
457 spin_lock_irqsave(&dev->slock, flags); in buffer_queue()
471 spin_unlock_irqrestore(&dev->slock, flags); in buffer_queue()
476 struct cx23885_dev *dev = q->drv_priv; in cx23885_start_streaming() local
477 struct cx23885_dmaqueue *dmaq = &dev->vidq; in cx23885_start_streaming()
481 cx23885_start_video_dma(dev, dmaq, buf); in cx23885_start_streaming()
487 struct cx23885_dev *dev = q->drv_priv; in cx23885_stop_streaming() local
488 struct cx23885_dmaqueue *dmaq = &dev->vidq; in cx23885_stop_streaming()
492 spin_lock_irqsave(&dev->slock, flags); in cx23885_stop_streaming()
500 spin_unlock_irqrestore(&dev->slock, flags); in cx23885_stop_streaming()
520 struct cx23885_dev *dev = video_drvdata(file); in vidioc_g_fmt_vid_cap() local
522 f->fmt.pix.width = dev->width; in vidioc_g_fmt_vid_cap()
523 f->fmt.pix.height = dev->height; in vidioc_g_fmt_vid_cap()
524 f->fmt.pix.field = dev->field; in vidioc_g_fmt_vid_cap()
525 f->fmt.pix.pixelformat = dev->fmt->fourcc; in vidioc_g_fmt_vid_cap()
527 (f->fmt.pix.width * dev->fmt->depth) >> 3; in vidioc_g_fmt_vid_cap()
538 struct cx23885_dev *dev = video_drvdata(file); in vidioc_try_fmt_vid_cap() local
548 maxw = norm_maxw(dev->tvnorm); in vidioc_try_fmt_vid_cap()
549 maxh = norm_maxh(dev->tvnorm); in vidioc_try_fmt_vid_cap()
586 struct cx23885_dev *dev = video_drvdata(file); in vidioc_s_fmt_vid_cap() local
598 if (vb2_is_busy(&dev->vb2_vidq) || vb2_is_busy(&dev->vb2_vbiq) || in vidioc_s_fmt_vid_cap()
599 vb2_is_busy(&dev->vb2_mpegq)) in vidioc_s_fmt_vid_cap()
602 dev->fmt = format_by_fourcc(f->fmt.pix.pixelformat); in vidioc_s_fmt_vid_cap()
603 dev->width = f->fmt.pix.width; in vidioc_s_fmt_vid_cap()
604 dev->height = f->fmt.pix.height; in vidioc_s_fmt_vid_cap()
605 dev->field = f->fmt.pix.field; in vidioc_s_fmt_vid_cap()
607 dev->width, dev->height, dev->field); in vidioc_s_fmt_vid_cap()
609 call_all(dev, pad, set_fmt, NULL, &format); in vidioc_s_fmt_vid_cap()
612 f->fmt.pix.field = dev->field; in vidioc_s_fmt_vid_cap()
619 struct cx23885_dev *dev = video_drvdata(file); in vidioc_querycap() local
623 strlcpy(cap->card, cx23885_boards[dev->board].name, in vidioc_querycap()
625 sprintf(cap->bus_info, "PCIe:%s", pci_name(dev->pci)); in vidioc_querycap()
627 if (dev->tuner_type != TUNER_ABSENT) in vidioc_querycap()
653 struct cx23885_dev *dev = video_drvdata(file); in vidioc_g_std() local
656 *id = dev->tvnorm; in vidioc_g_std()
662 struct cx23885_dev *dev = video_drvdata(file); in vidioc_s_std() local
665 return cx23885_set_tvnorm(dev, tvnorms); in vidioc_s_std()
668 int cx23885_enum_input(struct cx23885_dev *dev, struct v4l2_input *i) in cx23885_enum_input() argument
705 if (dev->input == n) { in cx23885_enum_input()
711 call_all(dev, video, g_input_status, &i->status); in cx23885_enum_input()
720 struct cx23885_dev *dev = video_drvdata(file); in vidioc_enum_input() local
722 return cx23885_enum_input(dev, i); in vidioc_enum_input()
727 struct cx23885_dev *dev = video_drvdata(file); in cx23885_get_input() local
729 *i = dev->input; in cx23885_get_input()
741 struct cx23885_dev *dev = video_drvdata(file); in cx23885_set_input() local
753 cx23885_video_mux(dev, i); in cx23885_set_input()
757 cx23885_audio_mux(dev, i); in cx23885_set_input()
768 struct cx23885_dev *dev = video_drvdata(file); in vidioc_log_status() local
770 call_all(dev, core, log_status); in vidioc_log_status()
777 struct cx23885_dev *dev = video_drvdata(file); in cx23885_query_audinput() local
807 struct cx23885_dev *dev = video_drvdata(file); in vidioc_g_audinput() local
809 if ((CX23885_VMUX_TELEVISION == INPUT(dev->input)->type) || in vidioc_g_audinput()
810 (CX23885_VMUX_CABLE == INPUT(dev->input)->type)) in vidioc_g_audinput()
813 i->index = dev->audinput; in vidioc_g_audinput()
822 struct cx23885_dev *dev = video_drvdata(file); in vidioc_s_audinput() local
824 if ((CX23885_VMUX_TELEVISION == INPUT(dev->input)->type) || in vidioc_s_audinput()
825 (CX23885_VMUX_CABLE == INPUT(dev->input)->type)) { in vidioc_s_audinput()
833 dev->audinput = i->index; in vidioc_s_audinput()
837 cx23885_flatiron_mux(dev, dev->audinput + 1); in vidioc_s_audinput()
844 struct cx23885_dev *dev = video_drvdata(file); in vidioc_g_tuner() local
846 if (dev->tuner_type == TUNER_ABSENT) in vidioc_g_tuner()
853 call_all(dev, tuner, g_tuner, t); in vidioc_g_tuner()
860 struct cx23885_dev *dev = video_drvdata(file); in vidioc_s_tuner() local
862 if (dev->tuner_type == TUNER_ABSENT) in vidioc_s_tuner()
867 call_all(dev, tuner, s_tuner, t); in vidioc_s_tuner()
875 struct cx23885_dev *dev = video_drvdata(file); in vidioc_g_frequency() local
877 if (dev->tuner_type == TUNER_ABSENT) in vidioc_g_frequency()
881 f->frequency = dev->freq; in vidioc_g_frequency()
883 call_all(dev, tuner, g_frequency, f); in vidioc_g_frequency()
888 static int cx23885_set_freq(struct cx23885_dev *dev, const struct v4l2_frequency *f) in cx23885_set_freq() argument
893 if (dev->tuner_type == TUNER_ABSENT) in cx23885_set_freq()
898 dev->freq = f->frequency; in cx23885_set_freq()
901 mute = v4l2_ctrl_find(&dev->ctrl_handler, V4L2_CID_AUDIO_MUTE); in cx23885_set_freq()
908 call_all(dev, tuner, s_frequency, f); in cx23885_set_freq()
920 static int cx23885_set_freq_via_ops(struct cx23885_dev *dev, in cx23885_set_freq_via_ops() argument
931 .std = dev->tvnorm, in cx23885_set_freq_via_ops()
935 dev->freq = f->frequency; in cx23885_set_freq_via_ops()
938 mute = v4l2_ctrl_find(&dev->ctrl_handler, V4L2_CID_AUDIO_MUTE); in cx23885_set_freq_via_ops()
949 vfe = vb2_dvb_get_frontend(&dev->ts2.frontends, 1); in cx23885_set_freq_via_ops()
956 if ((dev->board == CX23885_BOARD_HAUPPAUGE_HVR1850) || in cx23885_set_freq_via_ops()
957 (dev->board == CX23885_BOARD_HAUPPAUGE_HVR1255) || in cx23885_set_freq_via_ops()
958 (dev->board == CX23885_BOARD_HAUPPAUGE_HVR1255_22111)) in cx23885_set_freq_via_ops()
959 fe = &dev->ts1.analog_fe; in cx23885_set_freq_via_ops()
962 call_all(dev, video, s_std, dev->tvnorm); in cx23885_set_freq_via_ops()
981 struct cx23885_dev *dev = video_drvdata(file); in cx23885_set_frequency() local
984 switch (dev->board) { in cx23885_set_frequency()
988 ret = cx23885_set_freq_via_ops(dev, f); in cx23885_set_frequency()
991 ret = cx23885_set_freq(dev, f); in cx23885_set_frequency()
1005 int cx23885_video_irq(struct cx23885_dev *dev, u32 status) in cx23885_video_irq() argument
1025 dev->name); in cx23885_video_irq()
1026 cx23885_sram_channel_dump(dev, in cx23885_video_irq()
1027 &dev->sram_channels[SRAM_CH01]); in cx23885_video_irq()
1043 spin_lock(&dev->slock); in cx23885_video_irq()
1045 cx23885_video_wakeup(dev, &dev->vidq, count); in cx23885_video_irq()
1046 spin_unlock(&dev->slock); in cx23885_video_irq()
1051 handled += cx23885_vbi_irq(dev, status); in cx23885_video_irq()
1115 void cx23885_video_unregister(struct cx23885_dev *dev) in cx23885_video_unregister() argument
1118 cx23885_irq_remove(dev, 0x01); in cx23885_video_unregister()
1120 if (dev->vbi_dev) { in cx23885_video_unregister()
1121 if (video_is_registered(dev->vbi_dev)) in cx23885_video_unregister()
1122 video_unregister_device(dev->vbi_dev); in cx23885_video_unregister()
1124 video_device_release(dev->vbi_dev); in cx23885_video_unregister()
1125 dev->vbi_dev = NULL; in cx23885_video_unregister()
1127 if (dev->video_dev) { in cx23885_video_unregister()
1128 if (video_is_registered(dev->video_dev)) in cx23885_video_unregister()
1129 video_unregister_device(dev->video_dev); in cx23885_video_unregister()
1131 video_device_release(dev->video_dev); in cx23885_video_unregister()
1132 dev->video_dev = NULL; in cx23885_video_unregister()
1135 if (dev->audio_dev) in cx23885_video_unregister()
1136 cx23885_audio_unregister(dev); in cx23885_video_unregister()
1139 int cx23885_video_register(struct cx23885_dev *dev) in cx23885_video_register() argument
1150 dev->tvnorm = V4L2_STD_NTSC_M; in cx23885_video_register()
1151 dev->fmt = format_by_fourcc(V4L2_PIX_FMT_YUYV); in cx23885_video_register()
1152 dev->field = V4L2_FIELD_INTERLACED; in cx23885_video_register()
1153 dev->width = 720; in cx23885_video_register()
1154 dev->height = norm_maxh(dev->tvnorm); in cx23885_video_register()
1157 INIT_LIST_HEAD(&dev->vidq.active); in cx23885_video_register()
1160 INIT_LIST_HEAD(&dev->vbiq.active); in cx23885_video_register()
1162 cx23885_irq_add_enable(dev, 0x01); in cx23885_video_register()
1164 if ((TUNER_ABSENT != dev->tuner_type) && in cx23885_video_register()
1165 ((dev->tuner_bus == 0) || (dev->tuner_bus == 1))) { in cx23885_video_register()
1168 if (dev->tuner_addr) in cx23885_video_register()
1169 sd = v4l2_i2c_new_subdev(&dev->v4l2_dev, in cx23885_video_register()
1170 &dev->i2c_bus[dev->tuner_bus].i2c_adap, in cx23885_video_register()
1171 "tuner", dev->tuner_addr, NULL); in cx23885_video_register()
1173 sd = v4l2_i2c_new_subdev(&dev->v4l2_dev, in cx23885_video_register()
1174 &dev->i2c_bus[dev->tuner_bus].i2c_adap, in cx23885_video_register()
1181 tun_setup.type = dev->tuner_type; in cx23885_video_register()
1187 if ((dev->board == CX23885_BOARD_LEADTEK_WINFAST_PXTV1200) || in cx23885_video_register()
1188 (dev->board == CX23885_BOARD_LEADTEK_WINFAST_PXPVR2200)) { in cx23885_video_register()
1194 .tuner = dev->tuner_type, in cx23885_video_register()
1200 if (dev->board == CX23885_BOARD_AVERMEDIA_HC81R) { in cx23885_video_register()
1206 .tuner = dev->tuner_type, in cx23885_video_register()
1215 mutex_lock(&dev->lock); in cx23885_video_register()
1216 cx23885_set_tvnorm(dev, dev->tvnorm); in cx23885_video_register()
1217 cx23885_video_mux(dev, 0); in cx23885_video_register()
1218 cx23885_audio_mux(dev, 0); in cx23885_video_register()
1219 mutex_unlock(&dev->lock); in cx23885_video_register()
1221 q = &dev->vb2_vidq; in cx23885_video_register()
1226 q->drv_priv = dev; in cx23885_video_register()
1231 q->lock = &dev->lock; in cx23885_video_register()
1237 q = &dev->vb2_vbiq; in cx23885_video_register()
1242 q->drv_priv = dev; in cx23885_video_register()
1247 q->lock = &dev->lock; in cx23885_video_register()
1254 dev->video_dev = cx23885_vdev_init(dev, dev->pci, in cx23885_video_register()
1256 dev->video_dev->queue = &dev->vb2_vidq; in cx23885_video_register()
1257 err = video_register_device(dev->video_dev, VFL_TYPE_GRABBER, in cx23885_video_register()
1258 video_nr[dev->nr]); in cx23885_video_register()
1261 dev->name); in cx23885_video_register()
1265 dev->name, video_device_node_name(dev->video_dev)); in cx23885_video_register()
1268 dev->vbi_dev = cx23885_vdev_init(dev, dev->pci, in cx23885_video_register()
1270 dev->vbi_dev->queue = &dev->vb2_vbiq; in cx23885_video_register()
1271 err = video_register_device(dev->vbi_dev, VFL_TYPE_VBI, in cx23885_video_register()
1272 vbi_nr[dev->nr]); in cx23885_video_register()
1275 dev->name); in cx23885_video_register()
1279 dev->name, video_device_node_name(dev->vbi_dev)); in cx23885_video_register()
1282 dev->audio_dev = cx23885_audio_register(dev); in cx23885_video_register()
1287 cx23885_video_unregister(dev); in cx23885_video_register()