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()
332 struct cx23885_dev *dev = vb->vb2_queue->drv_priv; in buffer_prepare() local
339 buf->bpl = (dev->width * dev->fmt->depth) >> 3; in buffer_prepare()
341 if (vb2_plane_size(vb, 0) < dev->height * buf->bpl) in buffer_prepare()
343 vb2_set_plane_payload(vb, 0, dev->height * buf->bpl); in buffer_prepare()
345 switch (dev->field) { in buffer_prepare()
347 cx23885_risc_buffer(dev->pci, &buf->risc, in buffer_prepare()
349 buf->bpl, 0, dev->height); in buffer_prepare()
352 cx23885_risc_buffer(dev->pci, &buf->risc, in buffer_prepare()
354 buf->bpl, 0, dev->height); in buffer_prepare()
357 if (dev->tvnorm & V4L2_STD_525_60) in buffer_prepare()
363 if (cx23885_boards[dev->board].force_bff) in buffer_prepare()
380 cx23885_risc_buffer(dev->pci, &buf->risc, in buffer_prepare()
384 dev->height >> 1); in buffer_prepare()
387 cx23885_risc_buffer(dev->pci, &buf->risc, in buffer_prepare()
389 0, buf->bpl * (dev->height >> 1), in buffer_prepare()
391 dev->height >> 1); in buffer_prepare()
394 cx23885_risc_buffer(dev->pci, &buf->risc, in buffer_prepare()
396 buf->bpl * (dev->height >> 1), 0, in buffer_prepare()
398 dev->height >> 1); in buffer_prepare()
405 dev->width, dev->height, dev->fmt->depth, dev->fmt->name, in buffer_prepare()
441 struct cx23885_dev *dev = vb->vb2_queue->drv_priv; in buffer_queue() local
445 struct cx23885_dmaqueue *q = &dev->vidq; in buffer_queue()
454 spin_lock_irqsave(&dev->slock, flags); in buffer_queue()
468 spin_unlock_irqrestore(&dev->slock, flags); in buffer_queue()
473 struct cx23885_dev *dev = q->drv_priv; in cx23885_start_streaming() local
474 struct cx23885_dmaqueue *dmaq = &dev->vidq; in cx23885_start_streaming()
478 cx23885_start_video_dma(dev, dmaq, buf); in cx23885_start_streaming()
484 struct cx23885_dev *dev = q->drv_priv; in cx23885_stop_streaming() local
485 struct cx23885_dmaqueue *dmaq = &dev->vidq; in cx23885_stop_streaming()
489 spin_lock_irqsave(&dev->slock, flags); in cx23885_stop_streaming()
497 spin_unlock_irqrestore(&dev->slock, flags); in cx23885_stop_streaming()
517 struct cx23885_dev *dev = video_drvdata(file); in vidioc_g_fmt_vid_cap() local
519 f->fmt.pix.width = dev->width; in vidioc_g_fmt_vid_cap()
520 f->fmt.pix.height = dev->height; in vidioc_g_fmt_vid_cap()
521 f->fmt.pix.field = dev->field; in vidioc_g_fmt_vid_cap()
522 f->fmt.pix.pixelformat = dev->fmt->fourcc; in vidioc_g_fmt_vid_cap()
524 (f->fmt.pix.width * dev->fmt->depth) >> 3; in vidioc_g_fmt_vid_cap()
535 struct cx23885_dev *dev = video_drvdata(file); in vidioc_try_fmt_vid_cap() local
545 maxw = norm_maxw(dev->tvnorm); in vidioc_try_fmt_vid_cap()
546 maxh = norm_maxh(dev->tvnorm); in vidioc_try_fmt_vid_cap()
583 struct cx23885_dev *dev = video_drvdata(file); in vidioc_s_fmt_vid_cap() local
593 if (vb2_is_busy(&dev->vb2_vidq) || vb2_is_busy(&dev->vb2_vbiq) || in vidioc_s_fmt_vid_cap()
594 vb2_is_busy(&dev->vb2_mpegq)) in vidioc_s_fmt_vid_cap()
597 dev->fmt = format_by_fourcc(f->fmt.pix.pixelformat); in vidioc_s_fmt_vid_cap()
598 dev->width = f->fmt.pix.width; in vidioc_s_fmt_vid_cap()
599 dev->height = f->fmt.pix.height; in vidioc_s_fmt_vid_cap()
600 dev->field = f->fmt.pix.field; in vidioc_s_fmt_vid_cap()
602 dev->width, dev->height, dev->field); in vidioc_s_fmt_vid_cap()
604 call_all(dev, video, s_mbus_fmt, &mbus_fmt); in vidioc_s_fmt_vid_cap()
607 f->fmt.pix.field = dev->field; in vidioc_s_fmt_vid_cap()
614 struct cx23885_dev *dev = video_drvdata(file); in vidioc_querycap() local
618 strlcpy(cap->card, cx23885_boards[dev->board].name, in vidioc_querycap()
620 sprintf(cap->bus_info, "PCIe:%s", pci_name(dev->pci)); in vidioc_querycap()
622 if (dev->tuner_type != TUNER_ABSENT) in vidioc_querycap()
648 struct cx23885_dev *dev = video_drvdata(file); in vidioc_g_std() local
651 *id = dev->tvnorm; in vidioc_g_std()
657 struct cx23885_dev *dev = video_drvdata(file); in vidioc_s_std() local
660 return cx23885_set_tvnorm(dev, tvnorms); in vidioc_s_std()
663 int cx23885_enum_input(struct cx23885_dev *dev, struct v4l2_input *i) in cx23885_enum_input() argument
700 if (dev->input == n) { in cx23885_enum_input()
706 call_all(dev, video, g_input_status, &i->status); in cx23885_enum_input()
715 struct cx23885_dev *dev = video_drvdata(file); in vidioc_enum_input() local
717 return cx23885_enum_input(dev, i); in vidioc_enum_input()
722 struct cx23885_dev *dev = video_drvdata(file); in cx23885_get_input() local
724 *i = dev->input; in cx23885_get_input()
736 struct cx23885_dev *dev = video_drvdata(file); in cx23885_set_input() local
748 cx23885_video_mux(dev, i); in cx23885_set_input()
752 cx23885_audio_mux(dev, i); in cx23885_set_input()
763 struct cx23885_dev *dev = video_drvdata(file); in vidioc_log_status() local
765 call_all(dev, core, log_status); in vidioc_log_status()
772 struct cx23885_dev *dev = video_drvdata(file); in cx23885_query_audinput() local
802 struct cx23885_dev *dev = video_drvdata(file); in vidioc_g_audinput() local
804 if ((CX23885_VMUX_TELEVISION == INPUT(dev->input)->type) || in vidioc_g_audinput()
805 (CX23885_VMUX_CABLE == INPUT(dev->input)->type)) in vidioc_g_audinput()
808 i->index = dev->audinput; in vidioc_g_audinput()
817 struct cx23885_dev *dev = video_drvdata(file); in vidioc_s_audinput() local
819 if ((CX23885_VMUX_TELEVISION == INPUT(dev->input)->type) || in vidioc_s_audinput()
820 (CX23885_VMUX_CABLE == INPUT(dev->input)->type)) { in vidioc_s_audinput()
828 dev->audinput = i->index; in vidioc_s_audinput()
832 cx23885_flatiron_mux(dev, dev->audinput + 1); in vidioc_s_audinput()
839 struct cx23885_dev *dev = video_drvdata(file); in vidioc_g_tuner() local
841 if (dev->tuner_type == TUNER_ABSENT) in vidioc_g_tuner()
848 call_all(dev, tuner, g_tuner, t); in vidioc_g_tuner()
855 struct cx23885_dev *dev = video_drvdata(file); in vidioc_s_tuner() local
857 if (dev->tuner_type == TUNER_ABSENT) in vidioc_s_tuner()
862 call_all(dev, tuner, s_tuner, t); in vidioc_s_tuner()
870 struct cx23885_dev *dev = video_drvdata(file); in vidioc_g_frequency() local
872 if (dev->tuner_type == TUNER_ABSENT) in vidioc_g_frequency()
876 f->frequency = dev->freq; in vidioc_g_frequency()
878 call_all(dev, tuner, g_frequency, f); in vidioc_g_frequency()
883 static int cx23885_set_freq(struct cx23885_dev *dev, const struct v4l2_frequency *f) in cx23885_set_freq() argument
888 if (dev->tuner_type == TUNER_ABSENT) in cx23885_set_freq()
893 dev->freq = f->frequency; in cx23885_set_freq()
896 mute = v4l2_ctrl_find(&dev->ctrl_handler, V4L2_CID_AUDIO_MUTE); in cx23885_set_freq()
903 call_all(dev, tuner, s_frequency, f); in cx23885_set_freq()
915 static int cx23885_set_freq_via_ops(struct cx23885_dev *dev, in cx23885_set_freq_via_ops() argument
926 .std = dev->tvnorm, in cx23885_set_freq_via_ops()
930 dev->freq = f->frequency; in cx23885_set_freq_via_ops()
933 mute = v4l2_ctrl_find(&dev->ctrl_handler, V4L2_CID_AUDIO_MUTE); in cx23885_set_freq_via_ops()
944 vfe = vb2_dvb_get_frontend(&dev->ts2.frontends, 1); in cx23885_set_freq_via_ops()
951 if ((dev->board == CX23885_BOARD_HAUPPAUGE_HVR1850) || in cx23885_set_freq_via_ops()
952 (dev->board == CX23885_BOARD_HAUPPAUGE_HVR1255) || in cx23885_set_freq_via_ops()
953 (dev->board == CX23885_BOARD_HAUPPAUGE_HVR1255_22111)) in cx23885_set_freq_via_ops()
954 fe = &dev->ts1.analog_fe; in cx23885_set_freq_via_ops()
957 call_all(dev, video, s_std, dev->tvnorm); in cx23885_set_freq_via_ops()
976 struct cx23885_dev *dev = video_drvdata(file); in cx23885_set_frequency() local
979 switch (dev->board) { in cx23885_set_frequency()
983 ret = cx23885_set_freq_via_ops(dev, f); in cx23885_set_frequency()
986 ret = cx23885_set_freq(dev, f); in cx23885_set_frequency()
1000 int cx23885_video_irq(struct cx23885_dev *dev, u32 status) in cx23885_video_irq() argument
1020 dev->name); in cx23885_video_irq()
1021 cx23885_sram_channel_dump(dev, in cx23885_video_irq()
1022 &dev->sram_channels[SRAM_CH01]); in cx23885_video_irq()
1038 spin_lock(&dev->slock); in cx23885_video_irq()
1040 cx23885_video_wakeup(dev, &dev->vidq, count); in cx23885_video_irq()
1041 spin_unlock(&dev->slock); in cx23885_video_irq()
1046 handled += cx23885_vbi_irq(dev, status); in cx23885_video_irq()
1110 void cx23885_video_unregister(struct cx23885_dev *dev) in cx23885_video_unregister() argument
1113 cx23885_irq_remove(dev, 0x01); in cx23885_video_unregister()
1115 if (dev->vbi_dev) { in cx23885_video_unregister()
1116 if (video_is_registered(dev->vbi_dev)) in cx23885_video_unregister()
1117 video_unregister_device(dev->vbi_dev); in cx23885_video_unregister()
1119 video_device_release(dev->vbi_dev); in cx23885_video_unregister()
1120 dev->vbi_dev = NULL; in cx23885_video_unregister()
1122 if (dev->video_dev) { in cx23885_video_unregister()
1123 if (video_is_registered(dev->video_dev)) in cx23885_video_unregister()
1124 video_unregister_device(dev->video_dev); in cx23885_video_unregister()
1126 video_device_release(dev->video_dev); in cx23885_video_unregister()
1127 dev->video_dev = NULL; in cx23885_video_unregister()
1130 if (dev->audio_dev) in cx23885_video_unregister()
1131 cx23885_audio_unregister(dev); in cx23885_video_unregister()
1134 int cx23885_video_register(struct cx23885_dev *dev) in cx23885_video_register() argument
1145 dev->tvnorm = V4L2_STD_NTSC_M; in cx23885_video_register()
1146 dev->fmt = format_by_fourcc(V4L2_PIX_FMT_YUYV); in cx23885_video_register()
1147 dev->field = V4L2_FIELD_INTERLACED; in cx23885_video_register()
1148 dev->width = 720; in cx23885_video_register()
1149 dev->height = norm_maxh(dev->tvnorm); in cx23885_video_register()
1152 INIT_LIST_HEAD(&dev->vidq.active); in cx23885_video_register()
1155 INIT_LIST_HEAD(&dev->vbiq.active); in cx23885_video_register()
1157 cx23885_irq_add_enable(dev, 0x01); in cx23885_video_register()
1159 if ((TUNER_ABSENT != dev->tuner_type) && in cx23885_video_register()
1160 ((dev->tuner_bus == 0) || (dev->tuner_bus == 1))) { in cx23885_video_register()
1163 if (dev->tuner_addr) in cx23885_video_register()
1164 sd = v4l2_i2c_new_subdev(&dev->v4l2_dev, in cx23885_video_register()
1165 &dev->i2c_bus[dev->tuner_bus].i2c_adap, in cx23885_video_register()
1166 "tuner", dev->tuner_addr, NULL); in cx23885_video_register()
1168 sd = v4l2_i2c_new_subdev(&dev->v4l2_dev, in cx23885_video_register()
1169 &dev->i2c_bus[dev->tuner_bus].i2c_adap, in cx23885_video_register()
1176 tun_setup.type = dev->tuner_type; in cx23885_video_register()
1182 if ((dev->board == CX23885_BOARD_LEADTEK_WINFAST_PXTV1200) || in cx23885_video_register()
1183 (dev->board == CX23885_BOARD_LEADTEK_WINFAST_PXPVR2200)) { in cx23885_video_register()
1189 .tuner = dev->tuner_type, in cx23885_video_register()
1195 if (dev->board == CX23885_BOARD_AVERMEDIA_HC81R) { in cx23885_video_register()
1201 .tuner = dev->tuner_type, in cx23885_video_register()
1210 mutex_lock(&dev->lock); in cx23885_video_register()
1211 cx23885_set_tvnorm(dev, dev->tvnorm); in cx23885_video_register()
1212 cx23885_video_mux(dev, 0); in cx23885_video_register()
1213 cx23885_audio_mux(dev, 0); in cx23885_video_register()
1214 mutex_unlock(&dev->lock); in cx23885_video_register()
1216 q = &dev->vb2_vidq; in cx23885_video_register()
1221 q->drv_priv = dev; in cx23885_video_register()
1226 q->lock = &dev->lock; in cx23885_video_register()
1232 q = &dev->vb2_vbiq; in cx23885_video_register()
1237 q->drv_priv = dev; in cx23885_video_register()
1242 q->lock = &dev->lock; in cx23885_video_register()
1249 dev->video_dev = cx23885_vdev_init(dev, dev->pci, in cx23885_video_register()
1251 dev->video_dev->queue = &dev->vb2_vidq; in cx23885_video_register()
1252 err = video_register_device(dev->video_dev, VFL_TYPE_GRABBER, in cx23885_video_register()
1253 video_nr[dev->nr]); in cx23885_video_register()
1256 dev->name); in cx23885_video_register()
1260 dev->name, video_device_node_name(dev->video_dev)); in cx23885_video_register()
1263 dev->vbi_dev = cx23885_vdev_init(dev, dev->pci, in cx23885_video_register()
1265 dev->vbi_dev->queue = &dev->vb2_vbiq; in cx23885_video_register()
1266 err = video_register_device(dev->vbi_dev, VFL_TYPE_VBI, in cx23885_video_register()
1267 vbi_nr[dev->nr]); in cx23885_video_register()
1270 dev->name); in cx23885_video_register()
1274 dev->name, video_device_node_name(dev->vbi_dev)); in cx23885_video_register()
1277 dev->audio_dev = cx23885_audio_register(dev); in cx23885_video_register()
1282 cx23885_video_unregister(dev); in cx23885_video_register()