Lines Matching refs:dev
102 int (*saa7134_dmasound_init)(struct saa7134_dev *dev);
103 int (*saa7134_dmasound_exit)(struct saa7134_dev *dev);
115 void saa7134_track_gpio(struct saa7134_dev *dev, char *msg) in saa7134_track_gpio() argument
127 dev->name, mode, (~mode) & status, mode & status, msg); in saa7134_track_gpio()
130 void saa7134_set_gpio(struct saa7134_dev *dev, int bit_no, int value) in saa7134_set_gpio() argument
165 struct saa7134_dev* dev = container_of(work, struct saa7134_dev, request_module_wk); in request_module_async() local
166 if (card_is_empress(dev)) in request_module_async()
168 if (card_is_dvb(dev)) in request_module_async()
170 if (card_is_go7007(dev)) in request_module_async()
173 if (dev->pci->device != PCI_DEVICE_ID_PHILIPS_SAA7130) in request_module_async()
178 static void request_submodules(struct saa7134_dev *dev) in request_submodules() argument
180 INIT_WORK(&dev->request_module_wk, request_module_async); in request_submodules()
181 schedule_work(&dev->request_module_wk); in request_submodules()
184 static void flush_request_submodules(struct saa7134_dev *dev) in flush_request_submodules() argument
186 flush_work(&dev->request_module_wk); in flush_request_submodules()
190 #define request_submodules(dev) argument
191 #define flush_request_submodules(dev) argument
277 int saa7134_buffer_queue(struct saa7134_dev *dev, in saa7134_buffer_queue() argument
284 spin_lock_irqsave(&dev->slock, flags); in saa7134_buffer_queue()
289 buf->activate(dev, buf, NULL); in saa7134_buffer_queue()
296 buf->activate(dev, buf, next); in saa7134_buffer_queue()
301 spin_unlock_irqrestore(&dev->slock, flags); in saa7134_buffer_queue()
305 void saa7134_buffer_finish(struct saa7134_dev *dev, in saa7134_buffer_finish() argument
318 void saa7134_buffer_next(struct saa7134_dev *dev, in saa7134_buffer_next() argument
323 assert_spin_locked(&dev->slock); in saa7134_buffer_next()
335 buf->activate(dev, buf, next); in saa7134_buffer_next()
341 saa7134_set_dmabits(dev); in saa7134_buffer_next()
349 struct saa7134_dev *dev = q->dev; in saa7134_buffer_timeout() local
352 spin_lock_irqsave(&dev->slock, flags); in saa7134_buffer_timeout()
363 saa7134_buffer_finish(dev, q, VB2_BUF_STATE_ERROR); in saa7134_buffer_timeout()
365 saa7134_buffer_next(dev, q); in saa7134_buffer_timeout()
366 spin_unlock_irqrestore(&dev->slock, flags); in saa7134_buffer_timeout()
369 void saa7134_stop_streaming(struct saa7134_dev *dev, struct saa7134_dmaqueue *q) in saa7134_stop_streaming() argument
375 spin_lock_irqsave(&dev->slock, flags); in saa7134_stop_streaming()
385 spin_unlock_irqrestore(&dev->slock, flags); in saa7134_stop_streaming()
392 int saa7134_set_dmabits(struct saa7134_dev *dev) in saa7134_set_dmabits() argument
398 assert_spin_locked(&dev->slock); in saa7134_set_dmabits()
400 if (dev->insuspend) in saa7134_set_dmabits()
404 if (dev->video_q.curr) { in saa7134_set_dmabits()
409 cap = dev->field; in saa7134_set_dmabits()
413 if (dev->video_q.curr && dev->fmt->planar) { in saa7134_set_dmabits()
419 if (dev->ovenable) { in saa7134_set_dmabits()
422 ov = dev->ovfield; in saa7134_set_dmabits()
426 if (dev->vbi_q.curr) { in saa7134_set_dmabits()
437 if (dev->dmasound.dma_running) { in saa7134_set_dmabits()
444 if (dev->ts_q.curr) { in saa7134_set_dmabits()
503 static void print_irqstatus(struct saa7134_dev *dev, int loop, in print_irqstatus() argument
527 struct saa7134_dev *dev = (struct saa7134_dev*) dev_id; in saa7134_irq() local
531 if (dev->insuspend) in saa7134_irq()
542 (dev->dmasound.priv_data != NULL) ) in saa7134_irq()
556 print_irqstatus(dev,loop,report,status); in saa7134_irq()
561 saa7134_irq_video_signalchange(dev); in saa7134_irq()
566 saa7134_irq_video_done(dev,status); in saa7134_irq()
570 saa7134_irq_vbi_done(dev,status); in saa7134_irq()
573 card_has_mpeg(dev)) { in saa7134_irq()
574 if (dev->mops->irq_ts_done != NULL) in saa7134_irq()
575 dev->mops->irq_ts_done(dev, status); in saa7134_irq()
577 saa7134_irq_ts_done(dev, status); in saa7134_irq()
581 switch (dev->has_remote) { in saa7134_irq()
583 if (!dev->remote) in saa7134_irq()
585 if (dev->remote->mask_keydown & 0x10000) { in saa7134_irq()
586 saa7134_input_irq(dev); in saa7134_irq()
599 switch (dev->has_remote) { in saa7134_irq()
601 if (!dev->remote) in saa7134_irq()
603 if ((dev->remote->mask_keydown & 0x40000) || in saa7134_irq()
604 (dev->remote->mask_keyup & 0x40000)) { in saa7134_irq()
605 saa7134_input_irq(dev); in saa7134_irq()
619 print_irqstatus(dev,loop,report,status); in saa7134_irq()
623 "clearing PE (parity error!) enable bit\n",dev->name); in saa7134_irq()
628 "clearing GPIO16 enable bit\n",dev->name); in saa7134_irq()
634 "clearing GPIO18 enable bit\n",dev->name); in saa7134_irq()
640 "clearing all enable bits\n",dev->name); in saa7134_irq()
654 static int saa7134_hw_enable1(struct saa7134_dev *dev) in saa7134_hw_enable1() argument
686 static int saa7134_hwinit1(struct saa7134_dev *dev) in saa7134_hwinit1() argument
696 mutex_init(&dev->lock); in saa7134_hwinit1()
697 spin_lock_init(&dev->slock); in saa7134_hwinit1()
699 saa7134_track_gpio(dev,"pre-init"); in saa7134_hwinit1()
700 saa7134_video_init1(dev); in saa7134_hwinit1()
701 saa7134_vbi_init1(dev); in saa7134_hwinit1()
702 if (card_has_mpeg(dev)) in saa7134_hwinit1()
703 saa7134_ts_init1(dev); in saa7134_hwinit1()
704 saa7134_input_init1(dev); in saa7134_hwinit1()
706 saa7134_hw_enable1(dev); in saa7134_hwinit1()
712 static int saa7134_hw_enable2(struct saa7134_dev *dev) in saa7134_hw_enable2() argument
726 if (dev->has_remote == SAA7134_REMOTE_GPIO && dev->remote) { in saa7134_hw_enable2()
727 if (dev->remote->mask_keydown & 0x10000) in saa7134_hw_enable2()
730 if (dev->remote->mask_keydown & 0x40000) in saa7134_hw_enable2()
732 if (dev->remote->mask_keyup & 0x40000) in saa7134_hw_enable2()
737 if (dev->has_remote == SAA7134_REMOTE_I2C) { in saa7134_hw_enable2()
747 static int saa7134_hwinit2(struct saa7134_dev *dev) in saa7134_hwinit2() argument
752 saa7134_video_init2(dev); in saa7134_hwinit2()
753 saa7134_tvaudio_init2(dev); in saa7134_hwinit2()
755 saa7134_hw_enable2(dev); in saa7134_hwinit2()
762 static int saa7134_hwfini(struct saa7134_dev *dev) in saa7134_hwfini() argument
766 if (card_has_mpeg(dev)) in saa7134_hwfini()
767 saa7134_ts_fini(dev); in saa7134_hwfini()
768 saa7134_input_fini(dev); in saa7134_hwfini()
769 saa7134_vbi_fini(dev); in saa7134_hwfini()
770 saa7134_tvaudio_fini(dev); in saa7134_hwfini()
771 saa7134_video_fini(dev); in saa7134_hwfini()
809 static struct video_device *vdev_init(struct saa7134_dev *dev, in vdev_init() argument
819 vfd->v4l2_dev = &dev->v4l2_dev; in vdev_init()
822 dev->name, type, saa7134_boards[dev->board].name); in vdev_init()
823 video_set_drvdata(vfd, dev); in vdev_init()
827 static void saa7134_unregister_video(struct saa7134_dev *dev) in saa7134_unregister_video() argument
829 if (dev->video_dev) { in saa7134_unregister_video()
830 if (video_is_registered(dev->video_dev)) in saa7134_unregister_video()
831 video_unregister_device(dev->video_dev); in saa7134_unregister_video()
833 video_device_release(dev->video_dev); in saa7134_unregister_video()
834 dev->video_dev = NULL; in saa7134_unregister_video()
836 if (dev->vbi_dev) { in saa7134_unregister_video()
837 if (video_is_registered(dev->vbi_dev)) in saa7134_unregister_video()
838 video_unregister_device(dev->vbi_dev); in saa7134_unregister_video()
840 video_device_release(dev->vbi_dev); in saa7134_unregister_video()
841 dev->vbi_dev = NULL; in saa7134_unregister_video()
843 if (dev->radio_dev) { in saa7134_unregister_video()
844 if (video_is_registered(dev->radio_dev)) in saa7134_unregister_video()
845 video_unregister_device(dev->radio_dev); in saa7134_unregister_video()
847 video_device_release(dev->radio_dev); in saa7134_unregister_video()
848 dev->radio_dev = NULL; in saa7134_unregister_video()
853 struct saa7134_dev *dev) in mpeg_ops_attach() argument
857 if (NULL != dev->mops) in mpeg_ops_attach()
859 if (saa7134_boards[dev->board].mpeg != ops->type) in mpeg_ops_attach()
861 err = ops->init(dev); in mpeg_ops_attach()
864 dev->mops = ops; in mpeg_ops_attach()
868 struct saa7134_dev *dev) in mpeg_ops_detach() argument
870 if (NULL == dev->mops) in mpeg_ops_detach()
872 if (dev->mops != ops) in mpeg_ops_detach()
874 dev->mops->fini(dev); in mpeg_ops_detach()
875 dev->mops = NULL; in mpeg_ops_detach()
881 struct saa7134_dev *dev; in saa7134_initdev() local
888 dev = kzalloc(sizeof(*dev),GFP_KERNEL); in saa7134_initdev()
889 if (NULL == dev) in saa7134_initdev()
892 err = v4l2_device_register(&pci_dev->dev, &dev->v4l2_dev); in saa7134_initdev()
897 dev->pci = pci_dev; in saa7134_initdev()
903 dev->nr = saa7134_devcount; in saa7134_initdev()
904 sprintf(dev->name,"saa%x[%d]",pci_dev->device,dev->nr); in saa7134_initdev()
909 pr_info("%s: quirk: PCIPCI_TRITON\n", dev->name); in saa7134_initdev()
911 pr_info("%s: quirk: PCIPCI_NATOMA\n", dev->name); in saa7134_initdev()
913 pr_info("%s: quirk: PCIPCI_VIAETBF\n", dev->name); in saa7134_initdev()
915 pr_info("%s: quirk: PCIPCI_VSFX\n", dev->name); in saa7134_initdev()
919 dev->name); in saa7134_initdev()
926 " in overlay mode.\n",dev->name); in saa7134_initdev()
930 dev->name); in saa7134_initdev()
936 dev->name); in saa7134_initdev()
942 dev->name,latency); in saa7134_initdev()
947 dev->pci_rev = pci_dev->revision; in saa7134_initdev()
948 pci_read_config_byte(pci_dev, PCI_LATENCY_TIMER, &dev->pci_lat); in saa7134_initdev()
950 "latency: %d, mmio: 0x%llx\n", dev->name, in saa7134_initdev()
951 pci_name(pci_dev), dev->pci_rev, pci_dev->irq, in saa7134_initdev()
952 dev->pci_lat,(unsigned long long)pci_resource_start(pci_dev,0)); in saa7134_initdev()
956 pr_warn("%s: Oops: no 32bit PCI DMA ???\n", dev->name); in saa7134_initdev()
961 dev->board = pci_id->driver_data; in saa7134_initdev()
962 if ((unsigned)card[dev->nr] < saa7134_bcount) in saa7134_initdev()
963 dev->board = card[dev->nr]; in saa7134_initdev()
964 if (SAA7134_BOARD_UNKNOWN == dev->board) in saa7134_initdev()
966 else if (SAA7134_BOARD_NOAUTO == dev->board) { in saa7134_initdev()
968 dev->board = SAA7134_BOARD_UNKNOWN; in saa7134_initdev()
970 dev->autodetected = card[dev->nr] != dev->board; in saa7134_initdev()
971 dev->tuner_type = saa7134_boards[dev->board].tuner_type; in saa7134_initdev()
972 dev->tuner_addr = saa7134_boards[dev->board].tuner_addr; in saa7134_initdev()
973 dev->radio_type = saa7134_boards[dev->board].radio_type; in saa7134_initdev()
974 dev->radio_addr = saa7134_boards[dev->board].radio_addr; in saa7134_initdev()
975 dev->tda9887_conf = saa7134_boards[dev->board].tda9887_conf; in saa7134_initdev()
976 if (UNSET != tuner[dev->nr]) in saa7134_initdev()
977 dev->tuner_type = tuner[dev->nr]; in saa7134_initdev()
979 dev->name,pci_dev->subsystem_vendor, in saa7134_initdev()
980 pci_dev->subsystem_device,saa7134_boards[dev->board].name, in saa7134_initdev()
981 dev->board, dev->autodetected ? in saa7134_initdev()
987 dev->name)) { in saa7134_initdev()
990 dev->name,(unsigned long long)pci_resource_start(pci_dev,0)); in saa7134_initdev()
993 dev->lmmio = ioremap(pci_resource_start(pci_dev, 0), in saa7134_initdev()
995 dev->bmmio = (__u8 __iomem *)dev->lmmio; in saa7134_initdev()
996 if (NULL == dev->lmmio) { in saa7134_initdev()
999 dev->name); in saa7134_initdev()
1004 saa7134_board_init1(dev); in saa7134_initdev()
1005 saa7134_hwinit1(dev); in saa7134_initdev()
1007 dev->alloc_ctx = vb2_dma_sg_init_ctx(&pci_dev->dev); in saa7134_initdev()
1008 if (IS_ERR(dev->alloc_ctx)) { in saa7134_initdev()
1009 err = PTR_ERR(dev->alloc_ctx); in saa7134_initdev()
1014 IRQF_SHARED, dev->name, dev); in saa7134_initdev()
1017 dev->name,pci_dev->irq); in saa7134_initdev()
1023 saa7134_i2c_register(dev); in saa7134_initdev()
1024 saa7134_board_init2(dev); in saa7134_initdev()
1026 saa7134_hwinit2(dev); in saa7134_initdev()
1029 if (card_is_empress(dev)) { in saa7134_initdev()
1030 dev->empress_sd = in saa7134_initdev()
1031 v4l2_i2c_new_subdev(&dev->v4l2_dev, &dev->i2c_adap, in saa7134_initdev()
1033 saa7134_boards[dev->board].empress_addr, NULL); in saa7134_initdev()
1035 if (dev->empress_sd) in saa7134_initdev()
1036 dev->empress_sd->grp_id = GRP_EMPRESS; in saa7134_initdev()
1039 if (saa7134_boards[dev->board].rds_addr) { in saa7134_initdev()
1042 sd = v4l2_i2c_new_subdev(&dev->v4l2_dev, in saa7134_initdev()
1043 &dev->i2c_adap, "saa6588", in saa7134_initdev()
1044 0, I2C_ADDRS(saa7134_boards[dev->board].rds_addr)); in saa7134_initdev()
1046 pr_info("%s: found RDS decoder\n", dev->name); in saa7134_initdev()
1047 dev->has_rds = 1; in saa7134_initdev()
1053 mpeg_ops_attach(mops, dev); in saa7134_initdev()
1054 list_add_tail(&dev->devlist, &saa7134_devlist); in saa7134_initdev()
1058 saa7134_irq_video_signalchange(dev); in saa7134_initdev()
1060 if (TUNER_ABSENT != dev->tuner_type) in saa7134_initdev()
1061 saa_call_all(dev, core, s_power, 0); in saa7134_initdev()
1065 pr_info("%s: Overlay support disabled.\n", dev->name); in saa7134_initdev()
1067 dev->video_dev = vdev_init(dev,&saa7134_video_template,"video"); in saa7134_initdev()
1068 dev->video_dev->ctrl_handler = &dev->ctrl_handler; in saa7134_initdev()
1069 dev->video_dev->lock = &dev->lock; in saa7134_initdev()
1070 dev->video_dev->queue = &dev->video_vbq; in saa7134_initdev()
1071 err = video_register_device(dev->video_dev,VFL_TYPE_GRABBER, in saa7134_initdev()
1072 video_nr[dev->nr]); in saa7134_initdev()
1075 dev->name); in saa7134_initdev()
1079 dev->name, video_device_node_name(dev->video_dev)); in saa7134_initdev()
1081 dev->vbi_dev = vdev_init(dev, &saa7134_video_template, "vbi"); in saa7134_initdev()
1082 dev->vbi_dev->ctrl_handler = &dev->ctrl_handler; in saa7134_initdev()
1083 dev->vbi_dev->lock = &dev->lock; in saa7134_initdev()
1084 dev->vbi_dev->queue = &dev->vbi_vbq; in saa7134_initdev()
1086 err = video_register_device(dev->vbi_dev,VFL_TYPE_VBI, in saa7134_initdev()
1087 vbi_nr[dev->nr]); in saa7134_initdev()
1091 dev->name, video_device_node_name(dev->vbi_dev)); in saa7134_initdev()
1093 if (card_has_radio(dev)) { in saa7134_initdev()
1094 dev->radio_dev = vdev_init(dev,&saa7134_radio_template,"radio"); in saa7134_initdev()
1095 dev->radio_dev->ctrl_handler = &dev->radio_ctrl_handler; in saa7134_initdev()
1096 dev->radio_dev->lock = &dev->lock; in saa7134_initdev()
1097 err = video_register_device(dev->radio_dev,VFL_TYPE_RADIO, in saa7134_initdev()
1098 radio_nr[dev->nr]); in saa7134_initdev()
1102 dev->name, video_device_node_name(dev->radio_dev)); in saa7134_initdev()
1108 if (saa7134_dmasound_init && !dev->dmasound.priv_data) in saa7134_initdev()
1109 saa7134_dmasound_init(dev); in saa7134_initdev()
1111 request_submodules(dev); in saa7134_initdev()
1115 saa7134_unregister_video(dev); in saa7134_initdev()
1116 saa7134_i2c_unregister(dev); in saa7134_initdev()
1117 free_irq(pci_dev->irq, dev); in saa7134_initdev()
1119 vb2_dma_sg_cleanup_ctx(dev->alloc_ctx); in saa7134_initdev()
1121 saa7134_hwfini(dev); in saa7134_initdev()
1122 iounmap(dev->lmmio); in saa7134_initdev()
1127 v4l2_device_unregister(&dev->v4l2_dev); in saa7134_initdev()
1129 kfree(dev); in saa7134_initdev()
1136 struct saa7134_dev *dev = container_of(v4l2_dev, struct saa7134_dev, v4l2_dev); in saa7134_finidev() local
1139 flush_request_submodules(dev); in saa7134_finidev()
1142 if (saa7134_dmasound_exit && dev->dmasound.priv_data) { in saa7134_finidev()
1143 saa7134_dmasound_exit(dev); in saa7134_finidev()
1150 print_irqstatus(dev,42,report,status); in saa7134_finidev()
1162 saa7134_hwfini(dev); in saa7134_finidev()
1166 list_del(&dev->devlist); in saa7134_finidev()
1168 mpeg_ops_detach(mops, dev); in saa7134_finidev()
1172 saa7134_i2c_unregister(dev); in saa7134_finidev()
1173 saa7134_unregister_video(dev); in saa7134_finidev()
1178 if (dev->dmasound.priv_data != NULL) { in saa7134_finidev()
1179 free_irq(pci_dev->irq, &dev->dmasound); in saa7134_finidev()
1180 dev->dmasound.priv_data = NULL; in saa7134_finidev()
1185 free_irq(pci_dev->irq, dev); in saa7134_finidev()
1186 vb2_dma_sg_cleanup_ctx(dev->alloc_ctx); in saa7134_finidev()
1187 iounmap(dev->lmmio); in saa7134_finidev()
1192 v4l2_device_unregister(&dev->v4l2_dev); in saa7134_finidev()
1195 kfree(dev); in saa7134_finidev()
1201 static int saa7134_buffer_requeue(struct saa7134_dev *dev, in saa7134_buffer_requeue() argument
1206 assert_spin_locked(&dev->slock); in saa7134_buffer_requeue()
1220 buf->activate(dev, buf, next); in saa7134_buffer_requeue()
1228 struct saa7134_dev *dev = container_of(v4l2_dev, struct saa7134_dev, v4l2_dev); in saa7134_suspend() local
1231 dev->ovenable = 0; in saa7134_suspend()
1238 dev->insuspend = 1; in saa7134_suspend()
1249 del_timer(&dev->video_q.timeout); in saa7134_suspend()
1250 del_timer(&dev->vbi_q.timeout); in saa7134_suspend()
1251 del_timer(&dev->ts_q.timeout); in saa7134_suspend()
1253 if (dev->remote) in saa7134_suspend()
1254 saa7134_ir_stop(dev); in saa7134_suspend()
1265 struct saa7134_dev *dev = container_of(v4l2_dev, struct saa7134_dev, v4l2_dev); in saa7134_resume() local
1274 saa7134_board_init1(dev); in saa7134_resume()
1277 if (saa7134_boards[dev->board].video_out) in saa7134_resume()
1278 saa7134_videoport_init(dev); in saa7134_resume()
1279 if (card_has_mpeg(dev)) in saa7134_resume()
1280 saa7134_ts_init_hw(dev); in saa7134_resume()
1281 if (dev->remote) in saa7134_resume()
1282 saa7134_ir_start(dev); in saa7134_resume()
1283 saa7134_hw_enable1(dev); in saa7134_resume()
1287 saa7134_board_init2(dev); in saa7134_resume()
1290 saa7134_set_tvnorm_hw(dev); in saa7134_resume()
1291 saa7134_tvaudio_setmute(dev); in saa7134_resume()
1292 saa7134_tvaudio_setvolume(dev, dev->ctl_volume); in saa7134_resume()
1293 saa7134_tvaudio_init(dev); in saa7134_resume()
1294 saa7134_enable_i2s(dev); in saa7134_resume()
1295 saa7134_hw_enable2(dev); in saa7134_resume()
1297 saa7134_irq_video_signalchange(dev); in saa7134_resume()
1300 spin_lock_irqsave(&dev->slock, flags); in saa7134_resume()
1301 saa7134_buffer_requeue(dev, &dev->video_q); in saa7134_resume()
1302 saa7134_buffer_requeue(dev, &dev->vbi_q); in saa7134_resume()
1303 saa7134_buffer_requeue(dev, &dev->ts_q); in saa7134_resume()
1308 dev->dmasound.dma_running = 0; in saa7134_resume()
1311 dev->insuspend = 0; in saa7134_resume()
1313 saa7134_set_dmabits(dev); in saa7134_resume()
1314 spin_unlock_irqrestore(&dev->slock, flags); in saa7134_resume()
1324 struct saa7134_dev *dev; in saa7134_ts_register() local
1327 list_for_each_entry(dev, &saa7134_devlist, devlist) in saa7134_ts_register()
1328 mpeg_ops_attach(ops, dev); in saa7134_ts_register()
1336 struct saa7134_dev *dev; in saa7134_ts_unregister() local
1340 list_for_each_entry(dev, &saa7134_devlist, devlist) in saa7134_ts_unregister()
1341 mpeg_ops_detach(ops, dev); in saa7134_ts_unregister()