Lines Matching refs:dev

361 static void set_tvnorm(struct saa7134_dev *dev, struct saa7134_tvnorm *norm)  in set_tvnorm()  argument
364 dev->tvnorm = norm; in set_tvnorm()
367 dev->crop_bounds.left = norm->h_start; in set_tvnorm()
368 dev->crop_defrect.left = norm->h_start; in set_tvnorm()
369 dev->crop_bounds.width = norm->h_stop - norm->h_start +1; in set_tvnorm()
370 dev->crop_defrect.width = norm->h_stop - norm->h_start +1; in set_tvnorm()
372 dev->crop_bounds.top = (norm->vbi_v_stop_0+1)*2; in set_tvnorm()
373 dev->crop_defrect.top = norm->video_v_start*2; in set_tvnorm()
374 dev->crop_bounds.height = ((norm->id & V4L2_STD_525_60) ? 524 : 624) in set_tvnorm()
375 - dev->crop_bounds.top; in set_tvnorm()
376 dev->crop_defrect.height = (norm->video_v_stop - norm->video_v_start +1)*2; in set_tvnorm()
378 dev->crop_current = dev->crop_defrect; in set_tvnorm()
380 saa7134_set_tvnorm_hw(dev); in set_tvnorm()
383 static void video_mux(struct saa7134_dev *dev, int input) in video_mux() argument
386 input, saa7134_input_name[card_in(dev, input).type]); in video_mux()
387 dev->ctl_input = input; in video_mux()
388 set_tvnorm(dev, dev->tvnorm); in video_mux()
389 saa7134_tvaudio_setinput(dev, &card_in(dev, input)); in video_mux()
393 static void saa7134_set_decoder(struct saa7134_dev *dev) in saa7134_set_decoder() argument
397 struct saa7134_tvnorm *norm = dev->tvnorm; in saa7134_set_decoder()
398 mux = card_in(dev, dev->ctl_input).vmux; in saa7134_set_decoder()
406 if (noninterlaced || dev->nosignal) in saa7134_set_decoder()
428 saa_writeb(SAA7134_DEC_LUMA_BRIGHT, dev->ctl_bright); in saa7134_set_decoder()
431 dev->ctl_invert ? -dev->ctl_contrast : dev->ctl_contrast); in saa7134_set_decoder()
434 dev->ctl_invert ? -dev->ctl_saturation : dev->ctl_saturation); in saa7134_set_decoder()
436 saa_writeb(SAA7134_DEC_CHROMA_HUE, dev->ctl_hue); in saa7134_set_decoder()
451 void saa7134_set_tvnorm_hw(struct saa7134_dev *dev) in saa7134_set_tvnorm_hw() argument
453 saa7134_set_decoder(dev); in saa7134_set_tvnorm_hw()
455 saa_call_all(dev, video, s_std, dev->tvnorm->id); in saa7134_set_tvnorm_hw()
458 saa_call_empress(dev, video, s_std, dev->tvnorm->id); in saa7134_set_tvnorm_hw()
461 static void set_h_prescale(struct saa7134_dev *dev, int task, int prescale) in set_h_prescale() argument
499 static void set_v_scale(struct saa7134_dev *dev, int task, int yscale) in set_v_scale() argument
506 mirror = (dev->ctl_mirror) ? 0x02 : 0x00; in set_v_scale()
524 static void set_size(struct saa7134_dev *dev, int task, in set_size() argument
532 h_start = dev->crop_current.left; in set_size()
533 v_start = dev->crop_current.top/2; in set_size()
534 h_stop = (dev->crop_current.left + dev->crop_current.width -1); in set_size()
535 v_stop = (dev->crop_current.top + dev->crop_current.height -1)/2; in set_size()
546 prescale = dev->crop_current.width / width; in set_size()
549 xscale = 1024 * dev->crop_current.width / prescale / width; in set_size()
550 yscale = 512 * div * dev->crop_current.height / height; in set_size()
553 set_h_prescale(dev,task,prescale); in set_size()
556 set_v_scale(dev,task,yscale); in set_size()
564 y_odd = dev->ctl_y_odd; in set_size()
565 y_even = dev->ctl_y_even; in set_size()
578 static int saa7134_enable_analog_tuner(struct saa7134_dev *dev) in saa7134_enable_analog_tuner() argument
581 struct media_device *mdev = dev->media_dev; in saa7134_enable_analog_tuner()
586 if (!mdev || !dev->decoder) in saa7134_enable_analog_tuner()
596 list_for_each_entry(link, &dev->decoder->links, list) { in saa7134_enable_analog_tuner()
597 if (link->sink->entity == dev->decoder) { in saa7134_enable_analog_tuner()
615 if (sink == dev->decoder) in saa7134_enable_analog_tuner()
633 static int buffer_activate(struct saa7134_dev *dev, in buffer_activate() argument
644 set_size(dev, TASK_A, dev->width, dev->height, in buffer_activate()
645 V4L2_FIELD_HAS_BOTH(dev->field)); in buffer_activate()
646 if (dev->fmt->yuv) in buffer_activate()
650 saa_writeb(SAA7134_OFMT_VIDEO_A, dev->fmt->pm); in buffer_activate()
654 if (dev->fmt->planar) in buffer_activate()
655 bpl = dev->width; in buffer_activate()
657 bpl = (dev->width * dev->fmt->depth) / 8; in buffer_activate()
661 if (dev->fmt->bswap) in buffer_activate()
663 if (dev->fmt->wswap) in buffer_activate()
665 if (V4L2_FIELD_HAS_BOTH(dev->field)) { in buffer_activate()
678 if (dev->fmt->planar) { in buffer_activate()
680 bpl_uv = bpl >> dev->fmt->hshift; in buffer_activate()
681 lines_uv = dev->height >> dev->fmt->vshift; in buffer_activate()
682 base2 = base + bpl * dev->height; in buffer_activate()
684 if (dev->fmt->uvswap) in buffer_activate()
688 if (V4L2_FIELD_HAS_BOTH(dev->field)) { in buffer_activate()
710 saa7134_set_dmabits(dev); in buffer_activate()
729 struct saa7134_dev *dev = dmaq->dev; in buffer_prepare() local
739 size = (dev->width * dev->height * dev->fmt->depth) >> 3; in buffer_prepare()
744 vbuf->field = dev->field; in buffer_prepare()
746 return saa7134_pgtable_build(dev->pci, &dmaq->pt, dma->sgl, dma->nents, in buffer_prepare()
755 struct saa7134_dev *dev = dmaq->dev; in queue_setup() local
756 int size = dev->fmt->depth * dev->width * dev->height >> 3; in queue_setup()
758 if (dev->width < 48 || in queue_setup()
759 dev->height < 32 || in queue_setup()
760 dev->width/4 > dev->crop_current.width || in queue_setup()
761 dev->height/4 > dev->crop_current.height || in queue_setup()
762 dev->width > dev->crop_bounds.width || in queue_setup()
763 dev->height > dev->crop_bounds.height) in queue_setup()
770 saa7134_enable_analog_tuner(dev); in queue_setup()
781 struct saa7134_dev *dev = dmaq->dev; in saa7134_vb2_buffer_queue() local
785 saa7134_buffer_queue(dev, dmaq, buf); in saa7134_vb2_buffer_queue()
792 struct saa7134_dev *dev = dmaq->dev; in saa7134_vb2_start_streaming() local
798 if (card_is_empress(dev) && vb2_is_busy(&dev->empress_vbq) && in saa7134_vb2_start_streaming()
799 dmaq == &dev->video_q && dev->fmt->planar) { in saa7134_vb2_start_streaming()
822 if ((dmaq == &dev->video_q && !vb2_is_streaming(&dev->vbi_vbq)) || in saa7134_vb2_start_streaming()
823 (dmaq == &dev->vbi_q && !vb2_is_streaming(&dev->video_vbq))) in saa7134_vb2_start_streaming()
824 cpu_latency_qos_add_request(&dev->qos_request, 20); in saa7134_vb2_start_streaming()
833 struct saa7134_dev *dev = dmaq->dev; in saa7134_vb2_stop_streaming() local
835 saa7134_stop_streaming(dev, dmaq); in saa7134_vb2_stop_streaming()
837 if ((dmaq == &dev->video_q && !vb2_is_streaming(&dev->vbi_vbq)) || in saa7134_vb2_stop_streaming()
838 (dmaq == &dev->vbi_q && !vb2_is_streaming(&dev->video_vbq))) in saa7134_vb2_stop_streaming()
839 cpu_latency_qos_remove_request(&dev->qos_request); in saa7134_vb2_stop_streaming()
857 struct saa7134_dev *dev = container_of(ctrl->handler, struct saa7134_dev, ctrl_handler); in saa7134_s_ctrl() local
861 dev->ctl_bright = ctrl->val; in saa7134_s_ctrl()
865 dev->ctl_hue = ctrl->val; in saa7134_s_ctrl()
869 dev->ctl_contrast = ctrl->val; in saa7134_s_ctrl()
871 dev->ctl_invert ? -dev->ctl_contrast : dev->ctl_contrast); in saa7134_s_ctrl()
874 dev->ctl_saturation = ctrl->val; in saa7134_s_ctrl()
876 dev->ctl_invert ? -dev->ctl_saturation : dev->ctl_saturation); in saa7134_s_ctrl()
879 dev->ctl_mute = ctrl->val; in saa7134_s_ctrl()
880 saa7134_tvaudio_setmute(dev); in saa7134_s_ctrl()
883 dev->ctl_volume = ctrl->val; in saa7134_s_ctrl()
884 saa7134_tvaudio_setvolume(dev,dev->ctl_volume); in saa7134_s_ctrl()
887 dev->ctl_invert = ctrl->val; in saa7134_s_ctrl()
889 dev->ctl_invert ? -dev->ctl_contrast : dev->ctl_contrast); in saa7134_s_ctrl()
891 dev->ctl_invert ? -dev->ctl_saturation : dev->ctl_saturation); in saa7134_s_ctrl()
894 dev->ctl_mirror = ctrl->val; in saa7134_s_ctrl()
897 dev->ctl_y_even = ctrl->val; in saa7134_s_ctrl()
900 dev->ctl_y_odd = ctrl->val; in saa7134_s_ctrl()
907 tda9887_cfg.priv = &dev->tda9887_conf; in saa7134_s_ctrl()
909 dev->ctl_automute = ctrl->val; in saa7134_s_ctrl()
910 if (dev->tda9887_conf) { in saa7134_s_ctrl()
911 if (dev->ctl_automute) in saa7134_s_ctrl()
912 dev->tda9887_conf |= TDA9887_AUTOMUTE; in saa7134_s_ctrl()
914 dev->tda9887_conf &= ~TDA9887_AUTOMUTE; in saa7134_s_ctrl()
916 saa_call_all(dev, tuner, s_config, &tda9887_cfg); in saa7134_s_ctrl()
931 struct saa7134_dev *dev = video_drvdata(file); in video_open() local
937 mutex_lock(&dev->lock); in video_open()
940 saa7134_tvaudio_setinput(dev, &card(dev).radio); in video_open()
941 saa_call_all(dev, tuner, s_radio); in video_open()
944 video_mux(dev, dev->ctl_input); in video_open()
946 mutex_unlock(&dev->lock); in video_open()
954 struct saa7134_dev *dev = video_drvdata(file); in video_release() local
957 mutex_lock(&dev->lock); in video_release()
958 saa7134_tvaudio_close(dev); in video_release()
971 saa_call_all(dev, tuner, standby); in video_release()
973 saa_call_all(dev, core, command, SAA6588_CMD_CLOSE, &cmd); in video_release()
974 mutex_unlock(&dev->lock); in video_release()
982 struct saa7134_dev *dev = video_drvdata(file); in radio_read() local
991 mutex_lock(&dev->lock); in radio_read()
992 saa_call_all(dev, core, command, SAA6588_CMD_READ, &cmd); in radio_read()
993 mutex_unlock(&dev->lock); in radio_read()
1000 struct saa7134_dev *dev = video_drvdata(file); in radio_poll() local
1007 mutex_lock(&dev->lock); in radio_poll()
1008 saa_call_all(dev, core, command, SAA6588_CMD_POLL, &cmd); in radio_poll()
1009 mutex_unlock(&dev->lock); in radio_poll()
1019 struct saa7134_dev *dev = video_drvdata(file); in saa7134_try_get_set_fmt_vbi_cap() local
1020 struct saa7134_tvnorm *norm = dev->tvnorm; in saa7134_try_get_set_fmt_vbi_cap()
1039 struct saa7134_dev *dev = video_drvdata(file); in saa7134_g_fmt_vid_cap() local
1041 f->fmt.pix.width = dev->width; in saa7134_g_fmt_vid_cap()
1042 f->fmt.pix.height = dev->height; in saa7134_g_fmt_vid_cap()
1043 f->fmt.pix.field = dev->field; in saa7134_g_fmt_vid_cap()
1044 f->fmt.pix.pixelformat = dev->fmt->fourcc; in saa7134_g_fmt_vid_cap()
1045 if (dev->fmt->planar) in saa7134_g_fmt_vid_cap()
1049 (f->fmt.pix.width * dev->fmt->depth) / 8; in saa7134_g_fmt_vid_cap()
1051 (f->fmt.pix.height * f->fmt.pix.width * dev->fmt->depth) / 8; in saa7134_g_fmt_vid_cap()
1059 struct saa7134_dev *dev = video_drvdata(file); in saa7134_try_fmt_vid_cap() local
1069 maxw = min(dev->crop_current.width*4, dev->crop_bounds.width); in saa7134_try_fmt_vid_cap()
1070 maxh = min(dev->crop_current.height*4, dev->crop_bounds.height); in saa7134_try_fmt_vid_cap()
1112 struct saa7134_dev *dev = video_drvdata(file); in saa7134_s_fmt_vid_cap() local
1119 dev->fmt = format_by_fourcc(f->fmt.pix.pixelformat); in saa7134_s_fmt_vid_cap()
1120 dev->width = f->fmt.pix.width; in saa7134_s_fmt_vid_cap()
1121 dev->height = f->fmt.pix.height; in saa7134_s_fmt_vid_cap()
1122 dev->field = f->fmt.pix.field; in saa7134_s_fmt_vid_cap()
1128 struct saa7134_dev *dev = video_drvdata(file); in saa7134_enum_input() local
1134 if (card_in(dev, i->index).type == SAA7134_NO_INPUT) in saa7134_enum_input()
1137 strscpy(i->name, saa7134_input_name[card_in(dev, n).type], in saa7134_enum_input()
1139 switch (card_in(dev, n).type) { in saa7134_enum_input()
1148 if (n == dev->ctl_input) { in saa7134_enum_input()
1166 struct saa7134_dev *dev = video_drvdata(file); in saa7134_g_input() local
1168 *i = dev->ctl_input; in saa7134_g_input()
1175 struct saa7134_dev *dev = video_drvdata(file); in saa7134_s_input() local
1179 if (card_in(dev, i).type == SAA7134_NO_INPUT) in saa7134_s_input()
1181 video_mux(dev, i); in saa7134_s_input()
1189 struct saa7134_dev *dev = video_drvdata(file); in saa7134_querycap() local
1192 strscpy(cap->card, saa7134_boards[dev->board].name, in saa7134_querycap()
1197 if (dev->tuner_type != TUNER_ABSENT && dev->tuner_type != UNSET) in saa7134_querycap()
1199 if (dev->has_rds) in saa7134_querycap()
1208 struct saa7134_dev *dev = video_drvdata(file); in saa7134_s_std() local
1243 set_tvnorm(dev, &tvnorms[i]); in saa7134_s_std()
1245 saa7134_tvaudio_do_scan(dev); in saa7134_s_std()
1252 struct saa7134_dev *dev = video_drvdata(file); in saa7134_g_std() local
1254 *id = dev->tvnorm->id; in saa7134_g_std()
1259 static v4l2_std_id saa7134_read_std(struct saa7134_dev *dev) in saa7134_read_std() argument
1282 struct saa7134_dev *dev = video_drvdata(file); in saa7134_querystd() local
1283 *std &= saa7134_read_std(dev); in saa7134_querystd()
1291 struct saa7134_dev *dev = video_drvdata(file); in saa7134_g_pixelaspect() local
1296 if (dev->tvnorm->id & V4L2_STD_525_60) { in saa7134_g_pixelaspect()
1300 if (dev->tvnorm->id & V4L2_STD_625_50) { in saa7134_g_pixelaspect()
1309 struct saa7134_dev *dev = video_drvdata(file); in saa7134_g_selection() local
1316 sel->r = dev->crop_current; in saa7134_g_selection()
1319 sel->r = dev->crop_defrect; in saa7134_g_selection()
1322 sel->r = dev->crop_bounds; in saa7134_g_selection()
1332 struct saa7134_dev *dev = video_drvdata(file); in saa7134_s_selection() local
1333 struct v4l2_rect *b = &dev->crop_bounds; in saa7134_s_selection()
1334 struct v4l2_rect *c = &dev->crop_current; in saa7134_s_selection()
1342 if (vb2_is_streaming(&dev->video_vbq)) in saa7134_s_selection()
1366 struct saa7134_dev *dev = video_drvdata(file); in saa7134_g_tuner() local
1373 if (card_in(dev, n).type == SAA7134_INPUT_TV || in saa7134_g_tuner()
1374 card_in(dev, n).type == SAA7134_INPUT_TV_MONO) in saa7134_g_tuner()
1379 if (card_in(dev, n).type != SAA7134_NO_INPUT) { in saa7134_g_tuner()
1382 saa_call_all(dev, tuner, g_tuner, t); in saa7134_g_tuner()
1387 t->rxsubchans = saa7134_tvaudio_getstereo(dev); in saa7134_g_tuner()
1399 struct saa7134_dev *dev = video_drvdata(file); in saa7134_s_tuner() local
1405 mode = dev->thread.mode; in saa7134_s_tuner()
1407 rx = saa7134_tvaudio_getstereo(dev); in saa7134_s_tuner()
1411 dev->thread.mode = t->audmode; in saa7134_s_tuner()
1420 struct saa7134_dev *dev = video_drvdata(file); in saa7134_g_frequency() local
1425 saa_call_all(dev, tuner, g_frequency, f); in saa7134_g_frequency()
1434 struct saa7134_dev *dev = video_drvdata(file); in saa7134_s_frequency() local
1439 saa_call_all(dev, tuner, s_frequency, f); in saa7134_s_frequency()
1441 saa7134_tvaudio_do_scan(dev); in saa7134_s_frequency()
1461 struct saa7134_dev *dev = video_drvdata(file); in vidioc_g_register() local
1471 struct saa7134_dev *dev = video_drvdata(file); in vidioc_s_register() local
1481 struct saa7134_dev *dev = video_drvdata(file); in radio_g_tuner() local
1488 saa_call_all(dev, tuner, g_tuner, t); in radio_g_tuner()
1490 if (dev->input->amux == TV) { in radio_g_tuner()
1500 struct saa7134_dev *dev = video_drvdata(file); in radio_s_tuner() local
1505 saa_call_all(dev, tuner, s_tuner, t); in radio_s_tuner()
1638 int saa7134_video_init1(struct saa7134_dev *dev) in saa7134_video_init1() argument
1640 struct v4l2_ctrl_handler *hdl = &dev->ctrl_handler; in saa7134_video_init1()
1672 if (card_has_radio(dev)) { in saa7134_video_init1()
1673 hdl = &dev->radio_ctrl_handler; in saa7134_video_init1()
1675 v4l2_ctrl_add_handler(hdl, &dev->ctrl_handler, in saa7134_video_init1()
1680 dev->ctl_mute = 1; in saa7134_video_init1()
1682 if (dev->tda9887_conf && saa7134_ctrl_automute.def) in saa7134_video_init1()
1683 dev->tda9887_conf |= TDA9887_AUTOMUTE; in saa7134_video_init1()
1684 dev->automute = 0; in saa7134_video_init1()
1686 INIT_LIST_HEAD(&dev->video_q.queue); in saa7134_video_init1()
1687 timer_setup(&dev->video_q.timeout, saa7134_buffer_timeout, 0); in saa7134_video_init1()
1688 dev->video_q.dev = dev; in saa7134_video_init1()
1689 dev->fmt = format_by_fourcc(V4L2_PIX_FMT_BGR24); in saa7134_video_init1()
1690 dev->width = 720; in saa7134_video_init1()
1691 dev->height = 576; in saa7134_video_init1()
1692 dev->field = V4L2_FIELD_INTERLACED; in saa7134_video_init1()
1694 if (saa7134_boards[dev->board].video_out) in saa7134_video_init1()
1695 saa7134_videoport_init(dev); in saa7134_video_init1()
1697 q = &dev->video_vbq; in saa7134_video_init1()
1709 q->drv_priv = &dev->video_q; in saa7134_video_init1()
1715 q->lock = &dev->lock; in saa7134_video_init1()
1716 q->dev = &dev->pci->dev; in saa7134_video_init1()
1720 saa7134_pgtable_alloc(dev->pci, &dev->video_q.pt); in saa7134_video_init1()
1722 q = &dev->vbi_vbq; in saa7134_video_init1()
1728 q->drv_priv = &dev->vbi_q; in saa7134_video_init1()
1734 q->lock = &dev->lock; in saa7134_video_init1()
1735 q->dev = &dev->pci->dev; in saa7134_video_init1()
1739 saa7134_pgtable_alloc(dev->pci, &dev->vbi_q.pt); in saa7134_video_init1()
1744 void saa7134_video_fini(struct saa7134_dev *dev) in saa7134_video_fini() argument
1746 del_timer_sync(&dev->video_q.timeout); in saa7134_video_fini()
1748 saa7134_pgtable_free(dev->pci, &dev->video_q.pt); in saa7134_video_fini()
1749 saa7134_pgtable_free(dev->pci, &dev->vbi_q.pt); in saa7134_video_fini()
1750 v4l2_ctrl_handler_free(&dev->ctrl_handler); in saa7134_video_fini()
1751 if (card_has_radio(dev)) in saa7134_video_fini()
1752 v4l2_ctrl_handler_free(&dev->radio_ctrl_handler); in saa7134_video_fini()
1755 int saa7134_videoport_init(struct saa7134_dev *dev) in saa7134_videoport_init() argument
1758 int vo = saa7134_boards[dev->board].video_out; in saa7134_videoport_init()
1760 unsigned int vid_port_opts = saa7134_boards[dev->board].vid_port_opts; in saa7134_videoport_init()
1791 int saa7134_video_init2(struct saa7134_dev *dev) in saa7134_video_init2() argument
1794 set_tvnorm(dev,&tvnorms[0]); in saa7134_video_init2()
1795 video_mux(dev,0); in saa7134_video_init2()
1796 v4l2_ctrl_handler_setup(&dev->ctrl_handler); in saa7134_video_init2()
1797 saa7134_tvaudio_setmute(dev); in saa7134_video_init2()
1798 saa7134_tvaudio_setvolume(dev,dev->ctl_volume); in saa7134_video_init2()
1802 void saa7134_irq_video_signalchange(struct saa7134_dev *dev) in saa7134_irq_video_signalchange() argument
1814 dev->nosignal = (st1 & 0x40) || (st2 & 0x40) || !(st2 & 0x1); in saa7134_irq_video_signalchange()
1816 if (dev->nosignal) { in saa7134_irq_video_signalchange()
1818 if (dev->ctl_automute) in saa7134_irq_video_signalchange()
1819 dev->automute = 1; in saa7134_irq_video_signalchange()
1820 saa7134_tvaudio_setmute(dev); in saa7134_irq_video_signalchange()
1823 saa7134_tvaudio_do_scan(dev); in saa7134_irq_video_signalchange()
1826 if ((st2 & 0x80) && !noninterlaced && !dev->nosignal) in saa7134_irq_video_signalchange()
1831 if (dev->mops && dev->mops->signal_change) in saa7134_irq_video_signalchange()
1832 dev->mops->signal_change(dev); in saa7134_irq_video_signalchange()
1836 void saa7134_irq_video_done(struct saa7134_dev *dev, unsigned long status) in saa7134_irq_video_done() argument
1840 spin_lock(&dev->slock); in saa7134_irq_video_done()
1841 if (dev->video_q.curr) { in saa7134_irq_video_done()
1842 field = dev->field; in saa7134_irq_video_done()
1846 dev->video_q.curr->top_seen = 1; in saa7134_irq_video_done()
1849 if (!dev->video_q.curr->top_seen) in saa7134_irq_video_done()
1858 saa7134_buffer_finish(dev, &dev->video_q, VB2_BUF_STATE_DONE); in saa7134_irq_video_done()
1860 saa7134_buffer_next(dev, &dev->video_q); in saa7134_irq_video_done()
1863 spin_unlock(&dev->slock); in saa7134_irq_video_done()