Lines Matching refs:dev

247 	struct saa7164_dev *dev = port->dev;  in saa7164_work_enchandler_helper()  local
353 struct saa7164_dev *dev = port->dev; in saa7164_work_enchandler() local
429 struct saa7164_dev *dev = port->dev; in saa7164_work_vbihandler() local
502 struct saa7164_dev *dev = container_of(w, struct saa7164_dev, workcmd); in saa7164_work_cmdhandler() local
505 saa7164_irq_dequeue(dev); in saa7164_work_cmdhandler()
520 struct saa7164_dev *dev = port->dev; in saa7164_irq_vbi() local
545 struct saa7164_dev *dev = port->dev; in saa7164_irq_encoder() local
569 struct saa7164_dev *dev = port->dev; in saa7164_irq_ts() local
607 struct saa7164_dev *dev = dev_id; in saa7164_irq() local
613 if (dev == NULL) { in saa7164_irq()
619 porta = &dev->ports[SAA7164_PORT_TS1]; in saa7164_irq()
620 portb = &dev->ports[SAA7164_PORT_TS2]; in saa7164_irq()
621 portc = &dev->ports[SAA7164_PORT_ENC1]; in saa7164_irq()
622 portd = &dev->ports[SAA7164_PORT_ENC2]; in saa7164_irq()
623 porte = &dev->ports[SAA7164_PORT_VBI1]; in saa7164_irq()
624 portf = &dev->ports[SAA7164_PORT_VBI2]; in saa7164_irq()
635 intstat[i] = saa7164_readl(dev->int_status + (i * 4)); in saa7164_irq()
659 if (intid == dev->intfdesc.bInterruptId) { in saa7164_irq()
661 schedule_work(&dev->workcmd); in saa7164_irq()
701 saa7164_writel(dev->int_ack + (i * 4), intstat[i]); in saa7164_irq()
709 void saa7164_getfirmwarestatus(struct saa7164_dev *dev) in saa7164_getfirmwarestatus() argument
711 struct saa7164_fw_status *s = &dev->fw_status; in saa7164_getfirmwarestatus()
713 dev->fw_status.status = saa7164_readl(SAA_DEVICE_SYSINIT_STATUS); in saa7164_getfirmwarestatus()
714 dev->fw_status.mode = saa7164_readl(SAA_DEVICE_SYSINIT_MODE); in saa7164_getfirmwarestatus()
715 dev->fw_status.spec = saa7164_readl(SAA_DEVICE_SYSINIT_SPEC); in saa7164_getfirmwarestatus()
716 dev->fw_status.inst = saa7164_readl(SAA_DEVICE_SYSINIT_INST); in saa7164_getfirmwarestatus()
717 dev->fw_status.cpuload = saa7164_readl(SAA_DEVICE_SYSINIT_CPULOAD); in saa7164_getfirmwarestatus()
718 dev->fw_status.remainheap = in saa7164_getfirmwarestatus()
730 u32 saa7164_getcurrentfirmwareversion(struct saa7164_dev *dev) in saa7164_getcurrentfirmwareversion() argument
746 void saa7164_dumpregs(struct saa7164_dev *dev, u32 addr) in saa7164_dumpregs() argument
774 static void saa7164_dump_hwdesc(struct saa7164_dev *dev) in saa7164_dump_hwdesc() argument
777 &dev->hwdesc, (u32)sizeof(struct tmComResHWDescr)); in saa7164_dump_hwdesc()
779 dprintk(1, " .bLength = 0x%x\n", dev->hwdesc.bLength); in saa7164_dump_hwdesc()
780 dprintk(1, " .bDescriptorType = 0x%x\n", dev->hwdesc.bDescriptorType); in saa7164_dump_hwdesc()
782 dev->hwdesc.bDescriptorSubtype); in saa7164_dump_hwdesc()
784 dprintk(1, " .bcdSpecVersion = 0x%x\n", dev->hwdesc.bcdSpecVersion); in saa7164_dump_hwdesc()
785 dprintk(1, " .dwClockFrequency = 0x%x\n", dev->hwdesc.dwClockFrequency); in saa7164_dump_hwdesc()
786 dprintk(1, " .dwClockUpdateRes = 0x%x\n", dev->hwdesc.dwClockUpdateRes); in saa7164_dump_hwdesc()
787 dprintk(1, " .bCapabilities = 0x%x\n", dev->hwdesc.bCapabilities); in saa7164_dump_hwdesc()
789 dev->hwdesc.dwDeviceRegistersLocation); in saa7164_dump_hwdesc()
792 dev->hwdesc.dwHostMemoryRegion); in saa7164_dump_hwdesc()
795 dev->hwdesc.dwHostMemoryRegionSize); in saa7164_dump_hwdesc()
798 dev->hwdesc.dwHostHibernatMemRegion); in saa7164_dump_hwdesc()
801 dev->hwdesc.dwHostHibernatMemRegionSize); in saa7164_dump_hwdesc()
804 static void saa7164_dump_intfdesc(struct saa7164_dev *dev) in saa7164_dump_intfdesc() argument
807 &dev->intfdesc, (u32)sizeof(struct tmComResInterfaceDescr)); in saa7164_dump_intfdesc()
809 dprintk(1, " .bLength = 0x%x\n", dev->intfdesc.bLength); in saa7164_dump_intfdesc()
810 dprintk(1, " .bDescriptorType = 0x%x\n", dev->intfdesc.bDescriptorType); in saa7164_dump_intfdesc()
812 dev->intfdesc.bDescriptorSubtype); in saa7164_dump_intfdesc()
814 dprintk(1, " .bFlags = 0x%x\n", dev->intfdesc.bFlags); in saa7164_dump_intfdesc()
815 dprintk(1, " .bInterfaceType = 0x%x\n", dev->intfdesc.bInterfaceType); in saa7164_dump_intfdesc()
816 dprintk(1, " .bInterfaceId = 0x%x\n", dev->intfdesc.bInterfaceId); in saa7164_dump_intfdesc()
817 dprintk(1, " .bBaseInterface = 0x%x\n", dev->intfdesc.bBaseInterface); in saa7164_dump_intfdesc()
818 dprintk(1, " .bInterruptId = 0x%x\n", dev->intfdesc.bInterruptId); in saa7164_dump_intfdesc()
820 dev->intfdesc.bDebugInterruptId); in saa7164_dump_intfdesc()
822 dprintk(1, " .BARLocation = 0x%x\n", dev->intfdesc.BARLocation); in saa7164_dump_intfdesc()
825 static void saa7164_dump_busdesc(struct saa7164_dev *dev) in saa7164_dump_busdesc() argument
828 &dev->busdesc, (u32)sizeof(struct tmComResBusDescr)); in saa7164_dump_busdesc()
830 dprintk(1, " .CommandRing = 0x%016Lx\n", dev->busdesc.CommandRing); in saa7164_dump_busdesc()
831 dprintk(1, " .ResponseRing = 0x%016Lx\n", dev->busdesc.ResponseRing); in saa7164_dump_busdesc()
832 dprintk(1, " .CommandWrite = 0x%x\n", dev->busdesc.CommandWrite); in saa7164_dump_busdesc()
833 dprintk(1, " .CommandRead = 0x%x\n", dev->busdesc.CommandRead); in saa7164_dump_busdesc()
834 dprintk(1, " .ResponseWrite = 0x%x\n", dev->busdesc.ResponseWrite); in saa7164_dump_busdesc()
835 dprintk(1, " .ResponseRead = 0x%x\n", dev->busdesc.ResponseRead); in saa7164_dump_busdesc()
843 static void saa7164_get_descriptors(struct saa7164_dev *dev) in saa7164_get_descriptors() argument
845 memcpy_fromio(&dev->hwdesc, dev->bmmio, sizeof(struct tmComResHWDescr)); in saa7164_get_descriptors()
846 memcpy_fromio(&dev->intfdesc, dev->bmmio + sizeof(struct tmComResHWDescr), in saa7164_get_descriptors()
848 memcpy_fromio(&dev->busdesc, dev->bmmio + dev->intfdesc.BARLocation, in saa7164_get_descriptors()
851 if (dev->hwdesc.bLength != sizeof(struct tmComResHWDescr)) { in saa7164_get_descriptors()
853 printk(KERN_ERR "Need %x got %d\n", dev->hwdesc.bLength, in saa7164_get_descriptors()
856 saa7164_dump_hwdesc(dev); in saa7164_get_descriptors()
858 if (dev->intfdesc.bLength != sizeof(struct tmComResInterfaceDescr)) { in saa7164_get_descriptors()
860 printk(KERN_ERR "Need %x got %d\n", dev->intfdesc.bLength, in saa7164_get_descriptors()
863 saa7164_dump_intfdesc(dev); in saa7164_get_descriptors()
865 saa7164_dump_busdesc(dev); in saa7164_get_descriptors()
868 static int saa7164_pci_quirks(struct saa7164_dev *dev) in saa7164_pci_quirks() argument
873 static int get_resources(struct saa7164_dev *dev) in get_resources() argument
875 if (request_mem_region(pci_resource_start(dev->pci, 0), in get_resources()
876 pci_resource_len(dev->pci, 0), dev->name)) { in get_resources()
878 if (request_mem_region(pci_resource_start(dev->pci, 2), in get_resources()
879 pci_resource_len(dev->pci, 2), dev->name)) in get_resources()
884 dev->name, in get_resources()
885 (u64)pci_resource_start(dev->pci, 0), in get_resources()
886 (u64)pci_resource_start(dev->pci, 2)); in get_resources()
891 static int saa7164_port_init(struct saa7164_dev *dev, int portnr) in saa7164_port_init() argument
897 port = &dev->ports[portnr]; in saa7164_port_init()
899 port->dev = dev; in saa7164_port_init()
940 static int saa7164_dev_setup(struct saa7164_dev *dev) in saa7164_dev_setup() argument
944 mutex_init(&dev->lock); in saa7164_dev_setup()
945 atomic_inc(&dev->refcount); in saa7164_dev_setup()
946 dev->nr = saa7164_devcount++; in saa7164_dev_setup()
948 snprintf(dev->name, sizeof(dev->name), "saa7164[%d]", dev->nr); in saa7164_dev_setup()
951 list_add_tail(&dev->devlist, &saa7164_devlist); in saa7164_dev_setup()
955 dev->board = UNSET; in saa7164_dev_setup()
956 if (card[dev->nr] < saa7164_bcount) in saa7164_dev_setup()
957 dev->board = card[dev->nr]; in saa7164_dev_setup()
959 for (i = 0; UNSET == dev->board && i < saa7164_idcount; i++) in saa7164_dev_setup()
960 if (dev->pci->subsystem_vendor == saa7164_subids[i].subvendor && in saa7164_dev_setup()
961 dev->pci->subsystem_device == in saa7164_dev_setup()
963 dev->board = saa7164_subids[i].card; in saa7164_dev_setup()
965 if (UNSET == dev->board) { in saa7164_dev_setup()
966 dev->board = SAA7164_BOARD_UNKNOWN; in saa7164_dev_setup()
967 saa7164_card_list(dev); in saa7164_dev_setup()
970 dev->pci_bus = dev->pci->bus->number; in saa7164_dev_setup()
971 dev->pci_slot = PCI_SLOT(dev->pci->devfn); in saa7164_dev_setup()
974 dev->i2c_bus[0].dev = dev; in saa7164_dev_setup()
975 dev->i2c_bus[0].nr = 0; in saa7164_dev_setup()
976 dev->i2c_bus[1].dev = dev; in saa7164_dev_setup()
977 dev->i2c_bus[1].nr = 1; in saa7164_dev_setup()
978 dev->i2c_bus[2].dev = dev; in saa7164_dev_setup()
979 dev->i2c_bus[2].nr = 2; in saa7164_dev_setup()
982 saa7164_port_init(dev, SAA7164_PORT_TS1); in saa7164_dev_setup()
983 saa7164_port_init(dev, SAA7164_PORT_TS2); in saa7164_dev_setup()
984 saa7164_port_init(dev, SAA7164_PORT_ENC1); in saa7164_dev_setup()
985 saa7164_port_init(dev, SAA7164_PORT_ENC2); in saa7164_dev_setup()
986 saa7164_port_init(dev, SAA7164_PORT_VBI1); in saa7164_dev_setup()
987 saa7164_port_init(dev, SAA7164_PORT_VBI2); in saa7164_dev_setup()
989 if (get_resources(dev) < 0) { in saa7164_dev_setup()
991 dev->name, dev->pci->subsystem_vendor, in saa7164_dev_setup()
992 dev->pci->subsystem_device); in saa7164_dev_setup()
999 dev->lmmio = ioremap(pci_resource_start(dev->pci, 0), in saa7164_dev_setup()
1000 pci_resource_len(dev->pci, 0)); in saa7164_dev_setup()
1002 dev->lmmio2 = ioremap(pci_resource_start(dev->pci, 2), in saa7164_dev_setup()
1003 pci_resource_len(dev->pci, 2)); in saa7164_dev_setup()
1005 dev->bmmio = (u8 __iomem *)dev->lmmio; in saa7164_dev_setup()
1006 dev->bmmio2 = (u8 __iomem *)dev->lmmio2; in saa7164_dev_setup()
1009 dev->int_status = 0x183000 + 0xf80; in saa7164_dev_setup()
1010 dev->int_ack = 0x183000 + 0xf90; in saa7164_dev_setup()
1014 dev->name, dev->pci->subsystem_vendor, in saa7164_dev_setup()
1015 dev->pci->subsystem_device, saa7164_boards[dev->board].name, in saa7164_dev_setup()
1016 dev->board, card[dev->nr] == dev->board ? in saa7164_dev_setup()
1019 saa7164_pci_quirks(dev); in saa7164_dev_setup()
1024 static void saa7164_dev_unregister(struct saa7164_dev *dev) in saa7164_dev_unregister() argument
1028 release_mem_region(pci_resource_start(dev->pci, 0), in saa7164_dev_unregister()
1029 pci_resource_len(dev->pci, 0)); in saa7164_dev_unregister()
1031 release_mem_region(pci_resource_start(dev->pci, 2), in saa7164_dev_unregister()
1032 pci_resource_len(dev->pci, 2)); in saa7164_dev_unregister()
1034 if (!atomic_dec_and_test(&dev->refcount)) in saa7164_dev_unregister()
1037 iounmap(dev->lmmio); in saa7164_dev_unregister()
1038 iounmap(dev->lmmio2); in saa7164_dev_unregister()
1046 struct saa7164_dev *dev; in saa7164_seq_start() local
1050 list_for_each_entry(dev, &saa7164_devlist, devlist) { in saa7164_seq_start()
1053 return dev; in saa7164_seq_start()
1063 struct saa7164_dev *dev = v; in saa7164_seq_next() local
1067 if (list_is_last(&dev->devlist, &saa7164_devlist)) in saa7164_seq_next()
1070 ret = list_next_entry(dev, devlist); in saa7164_seq_next()
1084 struct saa7164_dev *dev = v; in saa7164_seq_show() local
1088 seq_printf(m, "%s = %p\n", dev->name, dev); in saa7164_seq_show()
1091 b = &dev->bus; in saa7164_seq_show()
1168 struct saa7164_dev *dev = data; in saa7164_thread_function() local
1187 saa7164_api_collect_debug(dev); in saa7164_thread_function()
1191 saa7164_api_get_load_info(dev, &fwinfo); in saa7164_thread_function()
1201 static bool saa7164_enable_msi(struct pci_dev *pci_dev, struct saa7164_dev *dev) in saa7164_enable_msi() argument
1221 dev->name, dev); in saa7164_enable_msi()
1237 struct saa7164_dev *dev; in saa7164_initdev() local
1241 dev = kzalloc(sizeof(*dev), GFP_KERNEL); in saa7164_initdev()
1242 if (NULL == dev) in saa7164_initdev()
1245 err = v4l2_device_register(&pci_dev->dev, &dev->v4l2_dev); in saa7164_initdev()
1247 dev_err(&pci_dev->dev, "v4l2_device_register failed\n"); in saa7164_initdev()
1252 dev->pci = pci_dev; in saa7164_initdev()
1258 if (saa7164_dev_setup(dev) < 0) { in saa7164_initdev()
1264 dev->pci_rev = pci_dev->revision; in saa7164_initdev()
1265 pci_read_config_byte(pci_dev, PCI_LATENCY_TIMER, &dev->pci_lat); in saa7164_initdev()
1267 dev->name, in saa7164_initdev()
1268 pci_name(pci_dev), dev->pci_rev, pci_dev->irq, in saa7164_initdev()
1269 dev->pci_lat, in saa7164_initdev()
1274 err = dma_set_mask(&pci_dev->dev, 0xffffffff); in saa7164_initdev()
1276 printk("%s/0: Oops: no 32bit PCI DMA ???\n", dev->name); in saa7164_initdev()
1281 if (saa7164_enable_msi(pci_dev, dev)) { in saa7164_initdev()
1282 dev->msi = true; in saa7164_initdev()
1288 IRQF_SHARED, dev->name, dev); in saa7164_initdev()
1291 printk(KERN_ERR "%s: can't get IRQ %d\n", dev->name, in saa7164_initdev()
1298 pci_set_drvdata(pci_dev, dev); in saa7164_initdev()
1302 dev->cmds[i].seqno = i; in saa7164_initdev()
1303 dev->cmds[i].inuse = 0; in saa7164_initdev()
1304 mutex_init(&dev->cmds[i].lock); in saa7164_initdev()
1305 init_waitqueue_head(&dev->cmds[i].wait); in saa7164_initdev()
1309 INIT_WORK(&dev->workcmd, saa7164_work_cmdhandler); in saa7164_initdev()
1312 if (dev->board != SAA7164_BOARD_UNKNOWN) { in saa7164_initdev()
1314 err = saa7164_downloadfirmware(dev); in saa7164_initdev()
1321 saa7164_get_descriptors(dev); in saa7164_initdev()
1322 saa7164_dumpregs(dev, 0); in saa7164_initdev()
1323 saa7164_getcurrentfirmwareversion(dev); in saa7164_initdev()
1324 saa7164_getfirmwarestatus(dev); in saa7164_initdev()
1325 err = saa7164_bus_setup(dev); in saa7164_initdev()
1329 saa7164_bus_dump(dev); in saa7164_initdev()
1335 if (saa7164_api_get_fw_version(dev, &version) == SAA_OK) in saa7164_initdev()
1347 saa7164_i2c_register(&dev->i2c_bus[0]); in saa7164_initdev()
1348 saa7164_i2c_register(&dev->i2c_bus[1]); in saa7164_initdev()
1349 saa7164_i2c_register(&dev->i2c_bus[2]); in saa7164_initdev()
1350 saa7164_gpio_setup(dev); in saa7164_initdev()
1351 saa7164_card_setup(dev); in saa7164_initdev()
1359 saa7164_api_enum_subdevs(dev); in saa7164_initdev()
1362 if (saa7164_boards[dev->board].porta == SAA7164_MPEG_DVB) { in saa7164_initdev()
1363 if (saa7164_dvb_register(&dev->ports[SAA7164_PORT_TS1]) < 0) { in saa7164_initdev()
1369 if (saa7164_boards[dev->board].portb == SAA7164_MPEG_DVB) { in saa7164_initdev()
1370 if (saa7164_dvb_register(&dev->ports[SAA7164_PORT_TS2]) < 0) { in saa7164_initdev()
1376 if (saa7164_boards[dev->board].portc == SAA7164_MPEG_ENCODER) { in saa7164_initdev()
1377 if (saa7164_encoder_register(&dev->ports[SAA7164_PORT_ENC1]) < 0) { in saa7164_initdev()
1383 if (saa7164_boards[dev->board].portd == SAA7164_MPEG_ENCODER) { in saa7164_initdev()
1384 if (saa7164_encoder_register(&dev->ports[SAA7164_PORT_ENC2]) < 0) { in saa7164_initdev()
1390 if (saa7164_boards[dev->board].porte == SAA7164_MPEG_VBI) { in saa7164_initdev()
1391 if (saa7164_vbi_register(&dev->ports[SAA7164_PORT_VBI1]) < 0) { in saa7164_initdev()
1397 if (saa7164_boards[dev->board].portf == SAA7164_MPEG_VBI) { in saa7164_initdev()
1398 if (saa7164_vbi_register(&dev->ports[SAA7164_PORT_VBI2]) < 0) { in saa7164_initdev()
1403 saa7164_api_set_debug(dev, fw_debug); in saa7164_initdev()
1406 dev->kthread = kthread_run(saa7164_thread_function, dev, in saa7164_initdev()
1408 if (IS_ERR(dev->kthread)) { in saa7164_initdev()
1409 dev->kthread = NULL; in saa7164_initdev()
1427 saa7164_dev_unregister(dev); in saa7164_initdev()
1431 v4l2_device_unregister(&dev->v4l2_dev); in saa7164_initdev()
1432 kfree(dev); in saa7164_initdev()
1436 static void saa7164_shutdown(struct saa7164_dev *dev) in saa7164_shutdown() argument
1443 struct saa7164_dev *dev = pci_get_drvdata(pci_dev); in saa7164_finidev() local
1445 if (dev->board != SAA7164_BOARD_UNKNOWN) { in saa7164_finidev()
1446 if (fw_debug && dev->kthread) { in saa7164_finidev()
1447 kthread_stop(dev->kthread); in saa7164_finidev()
1448 dev->kthread = NULL; in saa7164_finidev()
1450 if (dev->firmwareloaded) in saa7164_finidev()
1451 saa7164_api_set_debug(dev, 0x00); in saa7164_finidev()
1454 saa7164_histogram_print(&dev->ports[SAA7164_PORT_ENC1], in saa7164_finidev()
1455 &dev->ports[SAA7164_PORT_ENC1].irq_interval); in saa7164_finidev()
1456 saa7164_histogram_print(&dev->ports[SAA7164_PORT_ENC1], in saa7164_finidev()
1457 &dev->ports[SAA7164_PORT_ENC1].svc_interval); in saa7164_finidev()
1458 saa7164_histogram_print(&dev->ports[SAA7164_PORT_ENC1], in saa7164_finidev()
1459 &dev->ports[SAA7164_PORT_ENC1].irq_svc_interval); in saa7164_finidev()
1460 saa7164_histogram_print(&dev->ports[SAA7164_PORT_ENC1], in saa7164_finidev()
1461 &dev->ports[SAA7164_PORT_ENC1].read_interval); in saa7164_finidev()
1462 saa7164_histogram_print(&dev->ports[SAA7164_PORT_ENC1], in saa7164_finidev()
1463 &dev->ports[SAA7164_PORT_ENC1].poll_interval); in saa7164_finidev()
1464 saa7164_histogram_print(&dev->ports[SAA7164_PORT_VBI1], in saa7164_finidev()
1465 &dev->ports[SAA7164_PORT_VBI1].read_interval); in saa7164_finidev()
1466 saa7164_histogram_print(&dev->ports[SAA7164_PORT_VBI2], in saa7164_finidev()
1467 &dev->ports[SAA7164_PORT_VBI2].poll_interval); in saa7164_finidev()
1469 saa7164_shutdown(dev); in saa7164_finidev()
1471 if (saa7164_boards[dev->board].porta == SAA7164_MPEG_DVB) in saa7164_finidev()
1472 saa7164_dvb_unregister(&dev->ports[SAA7164_PORT_TS1]); in saa7164_finidev()
1474 if (saa7164_boards[dev->board].portb == SAA7164_MPEG_DVB) in saa7164_finidev()
1475 saa7164_dvb_unregister(&dev->ports[SAA7164_PORT_TS2]); in saa7164_finidev()
1477 if (saa7164_boards[dev->board].portc == SAA7164_MPEG_ENCODER) in saa7164_finidev()
1478 saa7164_encoder_unregister(&dev->ports[SAA7164_PORT_ENC1]); in saa7164_finidev()
1480 if (saa7164_boards[dev->board].portd == SAA7164_MPEG_ENCODER) in saa7164_finidev()
1481 saa7164_encoder_unregister(&dev->ports[SAA7164_PORT_ENC2]); in saa7164_finidev()
1483 if (saa7164_boards[dev->board].porte == SAA7164_MPEG_VBI) in saa7164_finidev()
1484 saa7164_vbi_unregister(&dev->ports[SAA7164_PORT_VBI1]); in saa7164_finidev()
1486 if (saa7164_boards[dev->board].portf == SAA7164_MPEG_VBI) in saa7164_finidev()
1487 saa7164_vbi_unregister(&dev->ports[SAA7164_PORT_VBI2]); in saa7164_finidev()
1489 saa7164_i2c_unregister(&dev->i2c_bus[0]); in saa7164_finidev()
1490 saa7164_i2c_unregister(&dev->i2c_bus[1]); in saa7164_finidev()
1491 saa7164_i2c_unregister(&dev->i2c_bus[2]); in saa7164_finidev()
1494 free_irq(pci_dev->irq, dev); in saa7164_finidev()
1496 if (dev->msi) { in saa7164_finidev()
1498 dev->msi = false; in saa7164_finidev()
1504 list_del(&dev->devlist); in saa7164_finidev()
1507 saa7164_dev_unregister(dev); in saa7164_finidev()
1508 v4l2_device_unregister(&dev->v4l2_dev); in saa7164_finidev()
1509 kfree(dev); in saa7164_finidev()