Lines Matching refs:dev

102 int (*saa7134_dmasound_init)(struct saa7134_dev *dev);
103 int (*saa7134_dmasound_exit)(struct saa7134_dev *dev);
106 printk(KERN_DEBUG "%s/core: " fmt, dev->name , ## arg)
108 void saa7134_track_gpio(struct saa7134_dev *dev, char *msg) in saa7134_track_gpio() argument
121 dev->name, mode, (~mode) & status, mode & status, msg); in saa7134_track_gpio()
124 void saa7134_set_gpio(struct saa7134_dev *dev, int bit_no, int value) in saa7134_set_gpio() argument
158 struct saa7134_dev* dev = container_of(work, struct saa7134_dev, request_module_wk); in request_module_async() local
159 if (card_is_empress(dev)) in request_module_async()
161 if (card_is_dvb(dev)) in request_module_async()
163 if (card_is_go7007(dev)) in request_module_async()
166 if (dev->pci->device != PCI_DEVICE_ID_PHILIPS_SAA7130) in request_module_async()
171 static void request_submodules(struct saa7134_dev *dev) in request_submodules() argument
173 INIT_WORK(&dev->request_module_wk, request_module_async); in request_submodules()
174 schedule_work(&dev->request_module_wk); in request_submodules()
177 static void flush_request_submodules(struct saa7134_dev *dev) in flush_request_submodules() argument
179 flush_work(&dev->request_module_wk); in flush_request_submodules()
183 #define request_submodules(dev) argument
184 #define flush_request_submodules(dev) argument
269 int saa7134_buffer_queue(struct saa7134_dev *dev, in saa7134_buffer_queue() argument
276 spin_lock_irqsave(&dev->slock, flags); in saa7134_buffer_queue()
281 buf->activate(dev, buf, NULL); in saa7134_buffer_queue()
288 buf->activate(dev, buf, next); in saa7134_buffer_queue()
293 spin_unlock_irqrestore(&dev->slock, flags); in saa7134_buffer_queue()
297 void saa7134_buffer_finish(struct saa7134_dev *dev, in saa7134_buffer_finish() argument
310 void saa7134_buffer_next(struct saa7134_dev *dev, in saa7134_buffer_next() argument
315 assert_spin_locked(&dev->slock); in saa7134_buffer_next()
327 buf->activate(dev, buf, next); in saa7134_buffer_next()
333 saa7134_set_dmabits(dev); in saa7134_buffer_next()
341 struct saa7134_dev *dev = q->dev; in saa7134_buffer_timeout() local
344 spin_lock_irqsave(&dev->slock, flags); in saa7134_buffer_timeout()
355 saa7134_buffer_finish(dev, q, VB2_BUF_STATE_ERROR); in saa7134_buffer_timeout()
357 saa7134_buffer_next(dev, q); in saa7134_buffer_timeout()
358 spin_unlock_irqrestore(&dev->slock, flags); in saa7134_buffer_timeout()
361 void saa7134_stop_streaming(struct saa7134_dev *dev, struct saa7134_dmaqueue *q) in saa7134_stop_streaming() argument
367 spin_lock_irqsave(&dev->slock, flags); in saa7134_stop_streaming()
376 spin_unlock_irqrestore(&dev->slock, flags); in saa7134_stop_streaming()
383 int saa7134_set_dmabits(struct saa7134_dev *dev) in saa7134_set_dmabits() argument
389 assert_spin_locked(&dev->slock); in saa7134_set_dmabits()
391 if (dev->insuspend) in saa7134_set_dmabits()
395 if (dev->video_q.curr) { in saa7134_set_dmabits()
400 cap = dev->field; in saa7134_set_dmabits()
404 if (dev->video_q.curr && dev->fmt->planar) { in saa7134_set_dmabits()
410 if (dev->ovenable) { in saa7134_set_dmabits()
413 ov = dev->ovfield; in saa7134_set_dmabits()
417 if (dev->vbi_q.curr) { in saa7134_set_dmabits()
428 if (dev->dmasound.dma_running) { in saa7134_set_dmabits()
435 if (dev->ts_q.curr) { in saa7134_set_dmabits()
494 static void print_irqstatus(struct saa7134_dev *dev, int loop, in print_irqstatus() argument
500 dev->name,loop,jiffies,report,status); in print_irqstatus()
518 struct saa7134_dev *dev = (struct saa7134_dev*) dev_id; in saa7134_irq() local
522 if (dev->insuspend) in saa7134_irq()
533 (dev->dmasound.priv_data != NULL) ) in saa7134_irq()
537 dev->name); in saa7134_irq()
544 dev->name); in saa7134_irq()
551 print_irqstatus(dev,loop,report,status); in saa7134_irq()
556 saa7134_irq_video_signalchange(dev); in saa7134_irq()
561 saa7134_irq_video_done(dev,status); in saa7134_irq()
565 saa7134_irq_vbi_done(dev,status); in saa7134_irq()
568 card_has_mpeg(dev)) { in saa7134_irq()
569 if (dev->mops->irq_ts_done != NULL) in saa7134_irq()
570 dev->mops->irq_ts_done(dev, status); in saa7134_irq()
572 saa7134_irq_ts_done(dev, status); in saa7134_irq()
576 switch (dev->has_remote) { in saa7134_irq()
578 if (!dev->remote) in saa7134_irq()
580 if (dev->remote->mask_keydown & 0x10000) { in saa7134_irq()
581 saa7134_input_irq(dev); in saa7134_irq()
594 switch (dev->has_remote) { in saa7134_irq()
596 if (!dev->remote) in saa7134_irq()
598 if ((dev->remote->mask_keydown & 0x40000) || in saa7134_irq()
599 (dev->remote->mask_keyup & 0x40000)) { in saa7134_irq()
600 saa7134_input_irq(dev); in saa7134_irq()
614 print_irqstatus(dev,loop,report,status); in saa7134_irq()
618 "clearing PE (parity error!) enable bit\n",dev->name); in saa7134_irq()
623 "clearing GPIO16 enable bit\n",dev->name); in saa7134_irq()
629 "clearing GPIO18 enable bit\n",dev->name); in saa7134_irq()
635 "clearing all enable bits\n",dev->name); in saa7134_irq()
649 static int saa7134_hw_enable1(struct saa7134_dev *dev) in saa7134_hw_enable1() argument
681 static int saa7134_hwinit1(struct saa7134_dev *dev) in saa7134_hwinit1() argument
691 mutex_init(&dev->lock); in saa7134_hwinit1()
692 spin_lock_init(&dev->slock); in saa7134_hwinit1()
694 saa7134_track_gpio(dev,"pre-init"); in saa7134_hwinit1()
695 saa7134_video_init1(dev); in saa7134_hwinit1()
696 saa7134_vbi_init1(dev); in saa7134_hwinit1()
697 if (card_has_mpeg(dev)) in saa7134_hwinit1()
698 saa7134_ts_init1(dev); in saa7134_hwinit1()
699 saa7134_input_init1(dev); in saa7134_hwinit1()
701 saa7134_hw_enable1(dev); in saa7134_hwinit1()
707 static int saa7134_hw_enable2(struct saa7134_dev *dev) in saa7134_hw_enable2() argument
721 if (dev->has_remote == SAA7134_REMOTE_GPIO && dev->remote) { in saa7134_hw_enable2()
722 if (dev->remote->mask_keydown & 0x10000) in saa7134_hw_enable2()
725 if (dev->remote->mask_keydown & 0x40000) in saa7134_hw_enable2()
727 if (dev->remote->mask_keyup & 0x40000) in saa7134_hw_enable2()
732 if (dev->has_remote == SAA7134_REMOTE_I2C) { in saa7134_hw_enable2()
742 static int saa7134_hwinit2(struct saa7134_dev *dev) in saa7134_hwinit2() argument
747 saa7134_video_init2(dev); in saa7134_hwinit2()
748 saa7134_tvaudio_init2(dev); in saa7134_hwinit2()
750 saa7134_hw_enable2(dev); in saa7134_hwinit2()
757 static int saa7134_hwfini(struct saa7134_dev *dev) in saa7134_hwfini() argument
761 if (card_has_mpeg(dev)) in saa7134_hwfini()
762 saa7134_ts_fini(dev); in saa7134_hwfini()
763 saa7134_input_fini(dev); in saa7134_hwfini()
764 saa7134_vbi_fini(dev); in saa7134_hwfini()
765 saa7134_tvaudio_fini(dev); in saa7134_hwfini()
766 saa7134_video_fini(dev); in saa7134_hwfini()
806 static struct video_device *vdev_init(struct saa7134_dev *dev, in vdev_init() argument
816 vfd->v4l2_dev = &dev->v4l2_dev; in vdev_init()
819 dev->name, type, saa7134_boards[dev->board].name); in vdev_init()
820 video_set_drvdata(vfd, dev); in vdev_init()
824 static void saa7134_unregister_video(struct saa7134_dev *dev) in saa7134_unregister_video() argument
826 if (dev->video_dev) { in saa7134_unregister_video()
827 if (video_is_registered(dev->video_dev)) in saa7134_unregister_video()
828 video_unregister_device(dev->video_dev); in saa7134_unregister_video()
830 video_device_release(dev->video_dev); in saa7134_unregister_video()
831 dev->video_dev = NULL; in saa7134_unregister_video()
833 if (dev->vbi_dev) { in saa7134_unregister_video()
834 if (video_is_registered(dev->vbi_dev)) in saa7134_unregister_video()
835 video_unregister_device(dev->vbi_dev); in saa7134_unregister_video()
837 video_device_release(dev->vbi_dev); in saa7134_unregister_video()
838 dev->vbi_dev = NULL; in saa7134_unregister_video()
840 if (dev->radio_dev) { in saa7134_unregister_video()
841 if (video_is_registered(dev->radio_dev)) in saa7134_unregister_video()
842 video_unregister_device(dev->radio_dev); in saa7134_unregister_video()
844 video_device_release(dev->radio_dev); in saa7134_unregister_video()
845 dev->radio_dev = NULL; in saa7134_unregister_video()
850 struct saa7134_dev *dev) in mpeg_ops_attach() argument
854 if (NULL != dev->mops) in mpeg_ops_attach()
856 if (saa7134_boards[dev->board].mpeg != ops->type) in mpeg_ops_attach()
858 err = ops->init(dev); in mpeg_ops_attach()
861 dev->mops = ops; in mpeg_ops_attach()
865 struct saa7134_dev *dev) in mpeg_ops_detach() argument
867 if (NULL == dev->mops) in mpeg_ops_detach()
869 if (dev->mops != ops) in mpeg_ops_detach()
871 dev->mops->fini(dev); in mpeg_ops_detach()
872 dev->mops = NULL; in mpeg_ops_detach()
878 struct saa7134_dev *dev; in saa7134_initdev() local
885 dev = kzalloc(sizeof(*dev),GFP_KERNEL); in saa7134_initdev()
886 if (NULL == dev) in saa7134_initdev()
889 err = v4l2_device_register(&pci_dev->dev, &dev->v4l2_dev); in saa7134_initdev()
894 dev->pci = pci_dev; in saa7134_initdev()
900 dev->nr = saa7134_devcount; in saa7134_initdev()
901 sprintf(dev->name,"saa%x[%d]",pci_dev->device,dev->nr); in saa7134_initdev()
906 printk(KERN_INFO "%s: quirk: PCIPCI_TRITON\n", dev->name); in saa7134_initdev()
908 printk(KERN_INFO "%s: quirk: PCIPCI_NATOMA\n", dev->name); in saa7134_initdev()
910 printk(KERN_INFO "%s: quirk: PCIPCI_VIAETBF\n", dev->name); in saa7134_initdev()
912 printk(KERN_INFO "%s: quirk: PCIPCI_VSFX\n",dev->name); in saa7134_initdev()
916 dev->name); in saa7134_initdev()
923 " in overlay mode.\n",dev->name); in saa7134_initdev()
927 dev->name); in saa7134_initdev()
933 dev->name); in saa7134_initdev()
939 dev->name,latency); in saa7134_initdev()
944 dev->pci_rev = pci_dev->revision; in saa7134_initdev()
945 pci_read_config_byte(pci_dev, PCI_LATENCY_TIMER, &dev->pci_lat); in saa7134_initdev()
947 "latency: %d, mmio: 0x%llx\n", dev->name, in saa7134_initdev()
948 pci_name(pci_dev), dev->pci_rev, pci_dev->irq, in saa7134_initdev()
949 dev->pci_lat,(unsigned long long)pci_resource_start(pci_dev,0)); in saa7134_initdev()
952 printk("%s: Oops: no 32bit PCI DMA ???\n",dev->name); in saa7134_initdev()
958 dev->board = pci_id->driver_data; in saa7134_initdev()
959 if ((unsigned)card[dev->nr] < saa7134_bcount) in saa7134_initdev()
960 dev->board = card[dev->nr]; in saa7134_initdev()
961 if (SAA7134_BOARD_UNKNOWN == dev->board) in saa7134_initdev()
963 else if (SAA7134_BOARD_NOAUTO == dev->board) { in saa7134_initdev()
965 dev->board = SAA7134_BOARD_UNKNOWN; in saa7134_initdev()
967 dev->autodetected = card[dev->nr] != dev->board; in saa7134_initdev()
968 dev->tuner_type = saa7134_boards[dev->board].tuner_type; in saa7134_initdev()
969 dev->tuner_addr = saa7134_boards[dev->board].tuner_addr; in saa7134_initdev()
970 dev->radio_type = saa7134_boards[dev->board].radio_type; in saa7134_initdev()
971 dev->radio_addr = saa7134_boards[dev->board].radio_addr; in saa7134_initdev()
972 dev->tda9887_conf = saa7134_boards[dev->board].tda9887_conf; in saa7134_initdev()
973 if (UNSET != tuner[dev->nr]) in saa7134_initdev()
974 dev->tuner_type = tuner[dev->nr]; in saa7134_initdev()
976 dev->name,pci_dev->subsystem_vendor, in saa7134_initdev()
977 pci_dev->subsystem_device,saa7134_boards[dev->board].name, in saa7134_initdev()
978 dev->board, dev->autodetected ? in saa7134_initdev()
984 dev->name)) { in saa7134_initdev()
987 dev->name,(unsigned long long)pci_resource_start(pci_dev,0)); in saa7134_initdev()
990 dev->lmmio = ioremap(pci_resource_start(pci_dev, 0), in saa7134_initdev()
992 dev->bmmio = (__u8 __iomem *)dev->lmmio; in saa7134_initdev()
993 if (NULL == dev->lmmio) { in saa7134_initdev()
996 dev->name); in saa7134_initdev()
1001 saa7134_board_init1(dev); in saa7134_initdev()
1002 saa7134_hwinit1(dev); in saa7134_initdev()
1004 dev->alloc_ctx = vb2_dma_sg_init_ctx(&pci_dev->dev); in saa7134_initdev()
1005 if (IS_ERR(dev->alloc_ctx)) { in saa7134_initdev()
1006 err = PTR_ERR(dev->alloc_ctx); in saa7134_initdev()
1011 IRQF_SHARED, dev->name, dev); in saa7134_initdev()
1014 dev->name,pci_dev->irq); in saa7134_initdev()
1020 saa7134_i2c_register(dev); in saa7134_initdev()
1021 saa7134_board_init2(dev); in saa7134_initdev()
1023 saa7134_hwinit2(dev); in saa7134_initdev()
1026 if (card_is_empress(dev)) { in saa7134_initdev()
1027 dev->empress_sd = in saa7134_initdev()
1028 v4l2_i2c_new_subdev(&dev->v4l2_dev, &dev->i2c_adap, in saa7134_initdev()
1030 saa7134_boards[dev->board].empress_addr, NULL); in saa7134_initdev()
1032 if (dev->empress_sd) in saa7134_initdev()
1033 dev->empress_sd->grp_id = GRP_EMPRESS; in saa7134_initdev()
1036 if (saa7134_boards[dev->board].rds_addr) { in saa7134_initdev()
1039 sd = v4l2_i2c_new_subdev(&dev->v4l2_dev, in saa7134_initdev()
1040 &dev->i2c_adap, "saa6588", in saa7134_initdev()
1041 0, I2C_ADDRS(saa7134_boards[dev->board].rds_addr)); in saa7134_initdev()
1043 printk(KERN_INFO "%s: found RDS decoder\n", dev->name); in saa7134_initdev()
1044 dev->has_rds = 1; in saa7134_initdev()
1050 mpeg_ops_attach(mops, dev); in saa7134_initdev()
1051 list_add_tail(&dev->devlist, &saa7134_devlist); in saa7134_initdev()
1055 saa7134_irq_video_signalchange(dev); in saa7134_initdev()
1057 if (TUNER_ABSENT != dev->tuner_type) in saa7134_initdev()
1058 saa_call_all(dev, core, s_power, 0); in saa7134_initdev()
1062 printk(KERN_INFO "%s: Overlay support disabled.\n", dev->name); in saa7134_initdev()
1064 dev->video_dev = vdev_init(dev,&saa7134_video_template,"video"); in saa7134_initdev()
1065 dev->video_dev->ctrl_handler = &dev->ctrl_handler; in saa7134_initdev()
1066 dev->video_dev->lock = &dev->lock; in saa7134_initdev()
1067 dev->video_dev->queue = &dev->video_vbq; in saa7134_initdev()
1068 err = video_register_device(dev->video_dev,VFL_TYPE_GRABBER, in saa7134_initdev()
1069 video_nr[dev->nr]); in saa7134_initdev()
1072 dev->name); in saa7134_initdev()
1076 dev->name, video_device_node_name(dev->video_dev)); in saa7134_initdev()
1078 dev->vbi_dev = vdev_init(dev, &saa7134_video_template, "vbi"); in saa7134_initdev()
1079 dev->vbi_dev->ctrl_handler = &dev->ctrl_handler; in saa7134_initdev()
1080 dev->vbi_dev->lock = &dev->lock; in saa7134_initdev()
1081 dev->vbi_dev->queue = &dev->vbi_vbq; in saa7134_initdev()
1083 err = video_register_device(dev->vbi_dev,VFL_TYPE_VBI, in saa7134_initdev()
1084 vbi_nr[dev->nr]); in saa7134_initdev()
1088 dev->name, video_device_node_name(dev->vbi_dev)); in saa7134_initdev()
1090 if (card_has_radio(dev)) { in saa7134_initdev()
1091 dev->radio_dev = vdev_init(dev,&saa7134_radio_template,"radio"); in saa7134_initdev()
1092 dev->radio_dev->ctrl_handler = &dev->radio_ctrl_handler; in saa7134_initdev()
1093 dev->radio_dev->lock = &dev->lock; in saa7134_initdev()
1094 err = video_register_device(dev->radio_dev,VFL_TYPE_RADIO, in saa7134_initdev()
1095 radio_nr[dev->nr]); in saa7134_initdev()
1099 dev->name, video_device_node_name(dev->radio_dev)); in saa7134_initdev()
1105 if (saa7134_dmasound_init && !dev->dmasound.priv_data) in saa7134_initdev()
1106 saa7134_dmasound_init(dev); in saa7134_initdev()
1108 request_submodules(dev); in saa7134_initdev()
1112 saa7134_unregister_video(dev); in saa7134_initdev()
1113 saa7134_i2c_unregister(dev); in saa7134_initdev()
1114 free_irq(pci_dev->irq, dev); in saa7134_initdev()
1116 vb2_dma_sg_cleanup_ctx(dev->alloc_ctx); in saa7134_initdev()
1118 saa7134_hwfini(dev); in saa7134_initdev()
1119 iounmap(dev->lmmio); in saa7134_initdev()
1124 v4l2_device_unregister(&dev->v4l2_dev); in saa7134_initdev()
1126 kfree(dev); in saa7134_initdev()
1133 struct saa7134_dev *dev = container_of(v4l2_dev, struct saa7134_dev, v4l2_dev); in saa7134_finidev() local
1136 flush_request_submodules(dev); in saa7134_finidev()
1139 if (saa7134_dmasound_exit && dev->dmasound.priv_data) { in saa7134_finidev()
1140 saa7134_dmasound_exit(dev); in saa7134_finidev()
1147 print_irqstatus(dev,42,report,status); in saa7134_finidev()
1159 saa7134_hwfini(dev); in saa7134_finidev()
1163 list_del(&dev->devlist); in saa7134_finidev()
1165 mpeg_ops_detach(mops, dev); in saa7134_finidev()
1169 saa7134_i2c_unregister(dev); in saa7134_finidev()
1170 saa7134_unregister_video(dev); in saa7134_finidev()
1175 if (dev->dmasound.priv_data != NULL) { in saa7134_finidev()
1176 free_irq(pci_dev->irq, &dev->dmasound); in saa7134_finidev()
1177 dev->dmasound.priv_data = NULL; in saa7134_finidev()
1182 free_irq(pci_dev->irq, dev); in saa7134_finidev()
1183 vb2_dma_sg_cleanup_ctx(dev->alloc_ctx); in saa7134_finidev()
1184 iounmap(dev->lmmio); in saa7134_finidev()
1189 v4l2_device_unregister(&dev->v4l2_dev); in saa7134_finidev()
1192 kfree(dev); in saa7134_finidev()
1198 static int saa7134_buffer_requeue(struct saa7134_dev *dev, in saa7134_buffer_requeue() argument
1203 assert_spin_locked(&dev->slock); in saa7134_buffer_requeue()
1217 buf->activate(dev, buf, next); in saa7134_buffer_requeue()
1225 struct saa7134_dev *dev = container_of(v4l2_dev, struct saa7134_dev, v4l2_dev); in saa7134_suspend() local
1228 dev->ovenable = 0; in saa7134_suspend()
1235 dev->insuspend = 1; in saa7134_suspend()
1246 del_timer(&dev->video_q.timeout); in saa7134_suspend()
1247 del_timer(&dev->vbi_q.timeout); in saa7134_suspend()
1248 del_timer(&dev->ts_q.timeout); in saa7134_suspend()
1250 if (dev->remote) in saa7134_suspend()
1251 saa7134_ir_stop(dev); in saa7134_suspend()
1262 struct saa7134_dev *dev = container_of(v4l2_dev, struct saa7134_dev, v4l2_dev); in saa7134_resume() local
1271 saa7134_board_init1(dev); in saa7134_resume()
1274 if (saa7134_boards[dev->board].video_out) in saa7134_resume()
1275 saa7134_videoport_init(dev); in saa7134_resume()
1276 if (card_has_mpeg(dev)) in saa7134_resume()
1277 saa7134_ts_init_hw(dev); in saa7134_resume()
1278 if (dev->remote) in saa7134_resume()
1279 saa7134_ir_start(dev); in saa7134_resume()
1280 saa7134_hw_enable1(dev); in saa7134_resume()
1284 saa7134_board_init2(dev); in saa7134_resume()
1287 saa7134_set_tvnorm_hw(dev); in saa7134_resume()
1288 saa7134_tvaudio_setmute(dev); in saa7134_resume()
1289 saa7134_tvaudio_setvolume(dev, dev->ctl_volume); in saa7134_resume()
1290 saa7134_tvaudio_init(dev); in saa7134_resume()
1291 saa7134_enable_i2s(dev); in saa7134_resume()
1292 saa7134_hw_enable2(dev); in saa7134_resume()
1294 saa7134_irq_video_signalchange(dev); in saa7134_resume()
1297 spin_lock_irqsave(&dev->slock, flags); in saa7134_resume()
1298 saa7134_buffer_requeue(dev, &dev->video_q); in saa7134_resume()
1299 saa7134_buffer_requeue(dev, &dev->vbi_q); in saa7134_resume()
1300 saa7134_buffer_requeue(dev, &dev->ts_q); in saa7134_resume()
1305 dev->dmasound.dma_running = 0; in saa7134_resume()
1308 dev->insuspend = 0; in saa7134_resume()
1310 saa7134_set_dmabits(dev); in saa7134_resume()
1311 spin_unlock_irqrestore(&dev->slock, flags); in saa7134_resume()
1321 struct saa7134_dev *dev; in saa7134_ts_register() local
1324 list_for_each_entry(dev, &saa7134_devlist, devlist) in saa7134_ts_register()
1325 mpeg_ops_attach(ops, dev); in saa7134_ts_register()
1333 struct saa7134_dev *dev; in saa7134_ts_unregister() local
1337 list_for_each_entry(dev, &saa7134_devlist, devlist) in saa7134_ts_unregister()
1338 mpeg_ops_detach(ops, dev); in saa7134_ts_unregister()