Lines Matching refs:dev
53 printk(KERN_DEBUG "%s: " fmt, dev->name, ## arg);\
302 static void cx23885_irq_add(struct cx23885_dev *dev, u32 mask) in cx23885_irq_add() argument
305 spin_lock_irqsave(&dev->pci_irqmask_lock, flags); in cx23885_irq_add()
307 dev->pci_irqmask |= mask; in cx23885_irq_add()
309 spin_unlock_irqrestore(&dev->pci_irqmask_lock, flags); in cx23885_irq_add()
312 void cx23885_irq_add_enable(struct cx23885_dev *dev, u32 mask) in cx23885_irq_add_enable() argument
315 spin_lock_irqsave(&dev->pci_irqmask_lock, flags); in cx23885_irq_add_enable()
317 dev->pci_irqmask |= mask; in cx23885_irq_add_enable()
320 spin_unlock_irqrestore(&dev->pci_irqmask_lock, flags); in cx23885_irq_add_enable()
323 void cx23885_irq_enable(struct cx23885_dev *dev, u32 mask) in cx23885_irq_enable() argument
327 spin_lock_irqsave(&dev->pci_irqmask_lock, flags); in cx23885_irq_enable()
329 v = mask & dev->pci_irqmask; in cx23885_irq_enable()
333 spin_unlock_irqrestore(&dev->pci_irqmask_lock, flags); in cx23885_irq_enable()
336 static inline void cx23885_irq_enable_all(struct cx23885_dev *dev) in cx23885_irq_enable_all() argument
338 cx23885_irq_enable(dev, 0xffffffff); in cx23885_irq_enable_all()
341 void cx23885_irq_disable(struct cx23885_dev *dev, u32 mask) in cx23885_irq_disable() argument
344 spin_lock_irqsave(&dev->pci_irqmask_lock, flags); in cx23885_irq_disable()
348 spin_unlock_irqrestore(&dev->pci_irqmask_lock, flags); in cx23885_irq_disable()
351 static inline void cx23885_irq_disable_all(struct cx23885_dev *dev) in cx23885_irq_disable_all() argument
353 cx23885_irq_disable(dev, 0xffffffff); in cx23885_irq_disable_all()
356 void cx23885_irq_remove(struct cx23885_dev *dev, u32 mask) in cx23885_irq_remove() argument
359 spin_lock_irqsave(&dev->pci_irqmask_lock, flags); in cx23885_irq_remove()
361 dev->pci_irqmask &= ~mask; in cx23885_irq_remove()
364 spin_unlock_irqrestore(&dev->pci_irqmask_lock, flags); in cx23885_irq_remove()
367 static u32 cx23885_irq_get_mask(struct cx23885_dev *dev) in cx23885_irq_get_mask() argument
371 spin_lock_irqsave(&dev->pci_irqmask_lock, flags); in cx23885_irq_get_mask()
375 spin_unlock_irqrestore(&dev->pci_irqmask_lock, flags); in cx23885_irq_get_mask()
422 struct cx23885_dev *dev = port->dev; in cx23885_wakeup() local
438 int cx23885_sram_channel_setup(struct cx23885_dev *dev, in cx23885_sram_channel_setup() argument
502 dev->bridge, in cx23885_sram_channel_setup()
510 void cx23885_sram_channel_dump(struct cx23885_dev *dev, in cx23885_sram_channel_dump() argument
533 dev->name, ch->name); in cx23885_sram_channel_dump()
536 dev->name, name[i], in cx23885_sram_channel_dump()
541 printk(KERN_WARNING "%s: risc%d: ", dev->name, i); in cx23885_sram_channel_dump()
548 printk(KERN_WARNING "%s: (0x%08x) iq %x: ", dev->name, in cx23885_sram_channel_dump()
554 dev->name, i+j, risc, j); in cx23885_sram_channel_dump()
559 dev->name, ch->fifo_start, ch->fifo_start+ch->fifo_size); in cx23885_sram_channel_dump()
561 dev->name, ch->ctrl_start, ch->ctrl_start + 6*16); in cx23885_sram_channel_dump()
563 dev->name, cx_read(ch->ptr1_reg)); in cx23885_sram_channel_dump()
565 dev->name, cx_read(ch->ptr2_reg)); in cx23885_sram_channel_dump()
567 dev->name, cx_read(ch->cnt1_reg)); in cx23885_sram_channel_dump()
569 dev->name, cx_read(ch->cnt2_reg)); in cx23885_sram_channel_dump()
575 struct cx23885_dev *dev = port->dev; in cx23885_risc_disasm() local
579 dev->name, risc->cpu, (unsigned long)risc->dma); in cx23885_risc_disasm()
581 printk(KERN_INFO "%s: %04d: ", dev->name, i); in cx23885_risc_disasm()
585 dev->name, i + j, risc->cpu[i + j], j); in cx23885_risc_disasm()
591 static void cx23885_shutdown(struct cx23885_dev *dev) in cx23885_shutdown() argument
612 cx23885_irq_disable_all(dev); in cx23885_shutdown()
621 static void cx23885_reset(struct cx23885_dev *dev) in cx23885_reset() argument
625 cx23885_shutdown(dev); in cx23885_reset()
638 cx23885_sram_channel_setup(dev, &dev->sram_channels[SRAM_CH01], in cx23885_reset()
640 cx23885_sram_channel_setup(dev, &dev->sram_channels[SRAM_CH02], 128, 0); in cx23885_reset()
641 cx23885_sram_channel_setup(dev, &dev->sram_channels[SRAM_CH03], in cx23885_reset()
643 cx23885_sram_channel_setup(dev, &dev->sram_channels[SRAM_CH04], 128, 0); in cx23885_reset()
644 cx23885_sram_channel_setup(dev, &dev->sram_channels[SRAM_CH05], 128, 0); in cx23885_reset()
645 cx23885_sram_channel_setup(dev, &dev->sram_channels[SRAM_CH06], in cx23885_reset()
647 cx23885_sram_channel_setup(dev, &dev->sram_channels[SRAM_CH07], 128, 0); in cx23885_reset()
648 cx23885_sram_channel_setup(dev, &dev->sram_channels[SRAM_CH08], 128, 0); in cx23885_reset()
649 cx23885_sram_channel_setup(dev, &dev->sram_channels[SRAM_CH09], 128, 0); in cx23885_reset()
651 cx23885_gpio_setup(dev); in cx23885_reset()
655 static int cx23885_pci_quirks(struct cx23885_dev *dev) in cx23885_pci_quirks() argument
663 if (dev->bridge == CX23885_BRIDGE_885) in cx23885_pci_quirks()
669 static int get_resources(struct cx23885_dev *dev) in get_resources() argument
671 if (request_mem_region(pci_resource_start(dev->pci, 0), in get_resources()
672 pci_resource_len(dev->pci, 0), in get_resources()
673 dev->name)) in get_resources()
677 dev->name, (unsigned long long)pci_resource_start(dev->pci, 0)); in get_resources()
682 static int cx23885_init_tsport(struct cx23885_dev *dev, in cx23885_init_tsport() argument
694 port->dev = dev; in cx23885_init_tsport()
753 static void cx23885_dev_checkrevision(struct cx23885_dev *dev) in cx23885_dev_checkrevision() argument
758 dev->hwrevision = 0xa0; in cx23885_dev_checkrevision()
762 dev->hwrevision = 0xa1; in cx23885_dev_checkrevision()
766 dev->hwrevision = 0xb0; in cx23885_dev_checkrevision()
769 if (dev->pci->device == 0x8880) { in cx23885_dev_checkrevision()
771 dev->hwrevision = 0xc0; in cx23885_dev_checkrevision()
774 dev->hwrevision = 0xa4; in cx23885_dev_checkrevision()
778 if (dev->pci->device == 0x8880) { in cx23885_dev_checkrevision()
780 dev->hwrevision = 0xd0; in cx23885_dev_checkrevision()
783 dev->hwrevision = 0xa5; in cx23885_dev_checkrevision()
788 dev->hwrevision = 0xc0; in cx23885_dev_checkrevision()
792 dev->hwrevision = 0xb1; in cx23885_dev_checkrevision()
796 __func__, dev->hwrevision); in cx23885_dev_checkrevision()
798 if (dev->hwrevision) in cx23885_dev_checkrevision()
800 __func__, dev->hwrevision); in cx23885_dev_checkrevision()
803 __func__, dev->hwrevision); in cx23885_dev_checkrevision()
807 struct v4l2_subdev *cx23885_find_hw(struct cx23885_dev *dev, u32 hw) in cx23885_find_hw() argument
812 spin_lock(&dev->v4l2_dev.lock); in cx23885_find_hw()
813 v4l2_device_for_each_subdev(sd, &dev->v4l2_dev) { in cx23885_find_hw()
819 spin_unlock(&dev->v4l2_dev.lock); in cx23885_find_hw()
823 static int cx23885_dev_setup(struct cx23885_dev *dev) in cx23885_dev_setup() argument
827 spin_lock_init(&dev->pci_irqmask_lock); in cx23885_dev_setup()
828 spin_lock_init(&dev->slock); in cx23885_dev_setup()
830 mutex_init(&dev->lock); in cx23885_dev_setup()
831 mutex_init(&dev->gpio_lock); in cx23885_dev_setup()
833 atomic_inc(&dev->refcount); in cx23885_dev_setup()
835 dev->nr = cx23885_devcount++; in cx23885_dev_setup()
836 sprintf(dev->name, "cx23885[%d]", dev->nr); in cx23885_dev_setup()
839 if (dev->pci->device == 0x8880) { in cx23885_dev_setup()
841 dev->bridge = CX23885_BRIDGE_887; in cx23885_dev_setup()
843 dev->clk_freq = 25000000; in cx23885_dev_setup()
844 dev->sram_channels = cx23887_sram_channels; in cx23885_dev_setup()
846 if (dev->pci->device == 0x8852) { in cx23885_dev_setup()
847 dev->bridge = CX23885_BRIDGE_885; in cx23885_dev_setup()
849 dev->clk_freq = 28000000; in cx23885_dev_setup()
850 dev->sram_channels = cx23885_sram_channels; in cx23885_dev_setup()
855 __func__, dev->bridge); in cx23885_dev_setup()
858 dev->board = UNSET; in cx23885_dev_setup()
859 if (card[dev->nr] < cx23885_bcount) in cx23885_dev_setup()
860 dev->board = card[dev->nr]; in cx23885_dev_setup()
861 for (i = 0; UNSET == dev->board && i < cx23885_idcount; i++) in cx23885_dev_setup()
862 if (dev->pci->subsystem_vendor == cx23885_subids[i].subvendor && in cx23885_dev_setup()
863 dev->pci->subsystem_device == cx23885_subids[i].subdevice) in cx23885_dev_setup()
864 dev->board = cx23885_subids[i].card; in cx23885_dev_setup()
865 if (UNSET == dev->board) { in cx23885_dev_setup()
866 dev->board = CX23885_BOARD_UNKNOWN; in cx23885_dev_setup()
867 cx23885_card_list(dev); in cx23885_dev_setup()
871 if (cx23885_boards[dev->board].clk_freq > 0) in cx23885_dev_setup()
872 dev->clk_freq = cx23885_boards[dev->board].clk_freq; in cx23885_dev_setup()
874 dev->pci_bus = dev->pci->bus->number; in cx23885_dev_setup()
875 dev->pci_slot = PCI_SLOT(dev->pci->devfn); in cx23885_dev_setup()
876 cx23885_irq_add(dev, 0x001f00); in cx23885_dev_setup()
879 dev->i2c_bus[0].nr = 0; in cx23885_dev_setup()
880 dev->i2c_bus[0].dev = dev; in cx23885_dev_setup()
881 dev->i2c_bus[0].reg_stat = I2C1_STAT; in cx23885_dev_setup()
882 dev->i2c_bus[0].reg_ctrl = I2C1_CTRL; in cx23885_dev_setup()
883 dev->i2c_bus[0].reg_addr = I2C1_ADDR; in cx23885_dev_setup()
884 dev->i2c_bus[0].reg_rdata = I2C1_RDATA; in cx23885_dev_setup()
885 dev->i2c_bus[0].reg_wdata = I2C1_WDATA; in cx23885_dev_setup()
886 dev->i2c_bus[0].i2c_period = (0x9d << 24); /* 100kHz */ in cx23885_dev_setup()
889 dev->i2c_bus[1].nr = 1; in cx23885_dev_setup()
890 dev->i2c_bus[1].dev = dev; in cx23885_dev_setup()
891 dev->i2c_bus[1].reg_stat = I2C2_STAT; in cx23885_dev_setup()
892 dev->i2c_bus[1].reg_ctrl = I2C2_CTRL; in cx23885_dev_setup()
893 dev->i2c_bus[1].reg_addr = I2C2_ADDR; in cx23885_dev_setup()
894 dev->i2c_bus[1].reg_rdata = I2C2_RDATA; in cx23885_dev_setup()
895 dev->i2c_bus[1].reg_wdata = I2C2_WDATA; in cx23885_dev_setup()
896 dev->i2c_bus[1].i2c_period = (0x9d << 24); /* 100kHz */ in cx23885_dev_setup()
899 dev->i2c_bus[2].nr = 2; in cx23885_dev_setup()
900 dev->i2c_bus[2].dev = dev; in cx23885_dev_setup()
901 dev->i2c_bus[2].reg_stat = I2C3_STAT; in cx23885_dev_setup()
902 dev->i2c_bus[2].reg_ctrl = I2C3_CTRL; in cx23885_dev_setup()
903 dev->i2c_bus[2].reg_addr = I2C3_ADDR; in cx23885_dev_setup()
904 dev->i2c_bus[2].reg_rdata = I2C3_RDATA; in cx23885_dev_setup()
905 dev->i2c_bus[2].reg_wdata = I2C3_WDATA; in cx23885_dev_setup()
906 dev->i2c_bus[2].i2c_period = (0x07 << 24); /* 1.95MHz */ in cx23885_dev_setup()
908 if ((cx23885_boards[dev->board].portb == CX23885_MPEG_DVB) || in cx23885_dev_setup()
909 (cx23885_boards[dev->board].portb == CX23885_MPEG_ENCODER)) in cx23885_dev_setup()
910 cx23885_init_tsport(dev, &dev->ts1, 1); in cx23885_dev_setup()
912 if ((cx23885_boards[dev->board].portc == CX23885_MPEG_DVB) || in cx23885_dev_setup()
913 (cx23885_boards[dev->board].portc == CX23885_MPEG_ENCODER)) in cx23885_dev_setup()
914 cx23885_init_tsport(dev, &dev->ts2, 2); in cx23885_dev_setup()
916 if (get_resources(dev) < 0) { in cx23885_dev_setup()
919 dev->name, dev->pci->subsystem_vendor, in cx23885_dev_setup()
920 dev->pci->subsystem_device); in cx23885_dev_setup()
927 dev->lmmio = ioremap(pci_resource_start(dev->pci, 0), in cx23885_dev_setup()
928 pci_resource_len(dev->pci, 0)); in cx23885_dev_setup()
930 dev->bmmio = (u8 __iomem *)dev->lmmio; in cx23885_dev_setup()
933 dev->name, dev->pci->subsystem_vendor, in cx23885_dev_setup()
934 dev->pci->subsystem_device, cx23885_boards[dev->board].name, in cx23885_dev_setup()
935 dev->board, card[dev->nr] == dev->board ? in cx23885_dev_setup()
938 cx23885_pci_quirks(dev); in cx23885_dev_setup()
941 dev->tuner_type = cx23885_boards[dev->board].tuner_type; in cx23885_dev_setup()
942 dev->tuner_addr = cx23885_boards[dev->board].tuner_addr; in cx23885_dev_setup()
943 dev->tuner_bus = cx23885_boards[dev->board].tuner_bus; in cx23885_dev_setup()
944 dev->radio_type = cx23885_boards[dev->board].radio_type; in cx23885_dev_setup()
945 dev->radio_addr = cx23885_boards[dev->board].radio_addr; in cx23885_dev_setup()
948 __func__, dev->tuner_type, dev->tuner_addr, dev->tuner_bus); in cx23885_dev_setup()
950 __func__, dev->radio_type, dev->radio_addr); in cx23885_dev_setup()
956 if ((cx23885_boards[dev->board].portb == CX23885_MPEG_ENCODER) || in cx23885_dev_setup()
957 (cx23885_boards[dev->board].portc == CX23885_MPEG_ENCODER)) in cx23885_dev_setup()
958 cx23885_mc417_init(dev); in cx23885_dev_setup()
961 cx23885_reset(dev); in cx23885_dev_setup()
963 cx23885_i2c_register(&dev->i2c_bus[0]); in cx23885_dev_setup()
964 cx23885_i2c_register(&dev->i2c_bus[1]); in cx23885_dev_setup()
965 cx23885_i2c_register(&dev->i2c_bus[2]); in cx23885_dev_setup()
966 cx23885_card_setup(dev); in cx23885_dev_setup()
967 call_all(dev, core, s_power, 0); in cx23885_dev_setup()
968 cx23885_ir_init(dev); in cx23885_dev_setup()
970 if (cx23885_boards[dev->board].porta == CX23885_ANALOG_VIDEO) { in cx23885_dev_setup()
971 if (cx23885_video_register(dev) < 0) { in cx23885_dev_setup()
977 if (cx23885_boards[dev->board].portb == CX23885_MPEG_DVB) { in cx23885_dev_setup()
978 if (cx23885_boards[dev->board].num_fds_portb) in cx23885_dev_setup()
979 dev->ts1.num_frontends = in cx23885_dev_setup()
980 cx23885_boards[dev->board].num_fds_portb; in cx23885_dev_setup()
981 if (cx23885_dvb_register(&dev->ts1) < 0) { in cx23885_dev_setup()
986 if (cx23885_boards[dev->board].portb == CX23885_MPEG_ENCODER) { in cx23885_dev_setup()
987 if (cx23885_417_register(dev) < 0) { in cx23885_dev_setup()
994 if (cx23885_boards[dev->board].portc == CX23885_MPEG_DVB) { in cx23885_dev_setup()
995 if (cx23885_boards[dev->board].num_fds_portc) in cx23885_dev_setup()
996 dev->ts2.num_frontends = in cx23885_dev_setup()
997 cx23885_boards[dev->board].num_fds_portc; in cx23885_dev_setup()
998 if (cx23885_dvb_register(&dev->ts2) < 0) { in cx23885_dev_setup()
1004 if (cx23885_boards[dev->board].portc == CX23885_MPEG_ENCODER) { in cx23885_dev_setup()
1005 if (cx23885_417_register(dev) < 0) { in cx23885_dev_setup()
1012 cx23885_dev_checkrevision(dev); in cx23885_dev_setup()
1015 if (cx23885_boards[dev->board].ci_type > 0) in cx23885_dev_setup()
1018 switch (dev->board) { in cx23885_dev_setup()
1028 static void cx23885_dev_unregister(struct cx23885_dev *dev) in cx23885_dev_unregister() argument
1030 release_mem_region(pci_resource_start(dev->pci, 0), in cx23885_dev_unregister()
1031 pci_resource_len(dev->pci, 0)); in cx23885_dev_unregister()
1033 if (!atomic_dec_and_test(&dev->refcount)) in cx23885_dev_unregister()
1036 if (cx23885_boards[dev->board].porta == CX23885_ANALOG_VIDEO) in cx23885_dev_unregister()
1037 cx23885_video_unregister(dev); in cx23885_dev_unregister()
1039 if (cx23885_boards[dev->board].portb == CX23885_MPEG_DVB) in cx23885_dev_unregister()
1040 cx23885_dvb_unregister(&dev->ts1); in cx23885_dev_unregister()
1042 if (cx23885_boards[dev->board].portb == CX23885_MPEG_ENCODER) in cx23885_dev_unregister()
1043 cx23885_417_unregister(dev); in cx23885_dev_unregister()
1045 if (cx23885_boards[dev->board].portc == CX23885_MPEG_DVB) in cx23885_dev_unregister()
1046 cx23885_dvb_unregister(&dev->ts2); in cx23885_dev_unregister()
1048 if (cx23885_boards[dev->board].portc == CX23885_MPEG_ENCODER) in cx23885_dev_unregister()
1049 cx23885_417_unregister(dev); in cx23885_dev_unregister()
1051 cx23885_i2c_unregister(&dev->i2c_bus[2]); in cx23885_dev_unregister()
1052 cx23885_i2c_unregister(&dev->i2c_bus[1]); in cx23885_dev_unregister()
1053 cx23885_i2c_unregister(&dev->i2c_bus[0]); in cx23885_dev_unregister()
1055 iounmap(dev->lmmio); in cx23885_dev_unregister()
1248 void cx23885_free_buffer(struct cx23885_dev *dev, struct cx23885_buffer *buf) in cx23885_free_buffer() argument
1253 pci_free_consistent(dev->pci, risc->size, risc->cpu, risc->dma); in cx23885_free_buffer()
1258 struct cx23885_dev *dev = port->dev; in cx23885_tsport_reg_dump() local
1264 cx23885_irq_get_mask(dev)); in cx23885_tsport_reg_dump()
1312 struct cx23885_dev *dev = port->dev; in cx23885_start_dma() local
1316 dev->width, dev->height, dev->field); in cx23885_start_dma()
1322 cx23885_sram_channel_setup(dev, in cx23885_start_dma()
1323 &dev->sram_channels[port->sram_chno], in cx23885_start_dma()
1326 cx23885_sram_channel_dump(dev, in cx23885_start_dma()
1327 &dev->sram_channels[port->sram_chno]); in cx23885_start_dma()
1334 if ((!(cx23885_boards[dev->board].portb & CX23885_MPEG_DVB)) && in cx23885_start_dma()
1335 (!(cx23885_boards[dev->board].portc & CX23885_MPEG_DVB))) { in cx23885_start_dma()
1338 cx23885_boards[dev->board].portb, in cx23885_start_dma()
1339 cx23885_boards[dev->board].portc); in cx23885_start_dma()
1343 if (cx23885_boards[dev->board].portb == CX23885_MPEG_ENCODER) in cx23885_start_dma()
1344 cx23885_av_clk(dev, 0); in cx23885_start_dma()
1364 if (cx23885_boards[dev->board].portb == CX23885_MPEG_DVB) { in cx23885_start_dma()
1371 if (cx23885_boards[dev->board].portc == CX23885_MPEG_DVB) { in cx23885_start_dma()
1377 if (cx23885_boards[dev->board].portb == CX23885_MPEG_ENCODER) { in cx23885_start_dma()
1392 switch (dev->bridge) { in cx23885_start_dma()
1400 cx23885_irq_add(dev, port->pci_irqmask); in cx23885_start_dma()
1401 cx23885_irq_enable_all(dev); in cx23885_start_dma()
1409 if (cx23885_boards[dev->board].portb == CX23885_MPEG_ENCODER) in cx23885_start_dma()
1410 cx23885_av_clk(dev, 1); in cx23885_start_dma()
1420 struct cx23885_dev *dev = port->dev; in cx23885_stop_dma() local
1429 if (cx23885_boards[dev->board].portb == CX23885_MPEG_ENCODER) { in cx23885_stop_dma()
1444 if (cx23885_boards[dev->board].portb == CX23885_MPEG_ENCODER) in cx23885_stop_dma()
1445 cx23885_av_clk(dev, 0); in cx23885_stop_dma()
1454 struct cx23885_dev *dev = port->dev; in cx23885_buf_prepare() local
1463 cx23885_risc_databuffer(dev->pci, &buf->risc, in cx23885_buf_prepare()
1493 struct cx23885_dev *dev = port->dev; in cx23885_buf_queue() local
1502 spin_lock_irqsave(&dev->slock, flags); in cx23885_buf_queue()
1516 spin_unlock_irqrestore(&dev->slock, flags); in cx23885_buf_queue()
1523 struct cx23885_dev *dev = port->dev; in do_cancel_buffers() local
1542 struct cx23885_dev *dev = port->dev; in cx23885_cancel_buffers() local
1549 int cx23885_irq_417(struct cx23885_dev *dev, u32 status) in cx23885_irq_417() argument
1552 struct cx23885_tsport *port = &dev->ts1; in cx23885_irq_417()
1571 "= 0x%x\n", dev->name, status); in cx23885_irq_417()
1588 cx23885_sram_channel_dump(dev, in cx23885_irq_417()
1589 &dev->sram_channels[port->sram_chno]); in cx23885_irq_417()
1590 cx23885_417_check_encoder(dev); in cx23885_irq_417()
1607 struct cx23885_dev *dev = port->dev; in cx23885_irq_ts() local
1632 printk(KERN_ERR "%s: mpeg risc op code error\n", dev->name); in cx23885_irq_ts()
1635 cx23885_sram_channel_dump(dev, in cx23885_irq_ts()
1636 &dev->sram_channels[port->sram_chno]); in cx23885_irq_ts()
1658 struct cx23885_dev *dev = dev_id; in cx23885_irq() local
1659 struct cx23885_tsport *ts1 = &dev->ts1; in cx23885_irq()
1660 struct cx23885_tsport *ts2 = &dev->ts2; in cx23885_irq()
1671 pci_mask = cx23885_irq_get_mask(dev); in cx23885_irq()
1763 if (cx23885_boards[dev->board].ci_type == 1 && in cx23885_irq()
1765 handled += netup_ci_slot_status(dev, pci_status); in cx23885_irq()
1767 if (cx23885_boards[dev->board].ci_type == 2 && in cx23885_irq()
1769 handled += altera_ci_irq(dev); in cx23885_irq()
1772 if (cx23885_boards[dev->board].portb == CX23885_MPEG_DVB) in cx23885_irq()
1775 if (cx23885_boards[dev->board].portb == CX23885_MPEG_ENCODER) in cx23885_irq()
1776 handled += cx23885_irq_417(dev, ts1_status); in cx23885_irq()
1780 if (cx23885_boards[dev->board].portc == CX23885_MPEG_DVB) in cx23885_irq()
1783 if (cx23885_boards[dev->board].portc == CX23885_MPEG_ENCODER) in cx23885_irq()
1784 handled += cx23885_irq_417(dev, ts2_status); in cx23885_irq()
1788 handled += cx23885_video_irq(dev, vida_status); in cx23885_irq()
1791 handled += cx23885_audio_irq(dev, audint_status, audint_mask); in cx23885_irq()
1795 v4l2_subdev_call(dev->sd_ir, core, interrupt_service_routine, in cx23885_irq()
1802 cx23885_irq_disable(dev, PCI_MSK_AV_CORE); in cx23885_irq()
1803 schedule_work(&dev->cx25840_work); in cx23885_irq()
1816 struct cx23885_dev *dev; in cx23885_v4l2_dev_notify() local
1821 dev = to_cx23885(sd->v4l2_dev); in cx23885_v4l2_dev_notify()
1825 if (sd == dev->sd_ir) in cx23885_v4l2_dev_notify()
1829 if (sd == dev->sd_ir) in cx23885_v4l2_dev_notify()
1835 static void cx23885_v4l2_dev_notify_init(struct cx23885_dev *dev) in cx23885_v4l2_dev_notify_init() argument
1837 INIT_WORK(&dev->cx25840_work, cx23885_av_work_handler); in cx23885_v4l2_dev_notify_init()
1838 INIT_WORK(&dev->ir_rx_work, cx23885_ir_rx_work_handler); in cx23885_v4l2_dev_notify_init()
1839 INIT_WORK(&dev->ir_tx_work, cx23885_ir_tx_work_handler); in cx23885_v4l2_dev_notify_init()
1840 dev->v4l2_dev.notify = cx23885_v4l2_dev_notify; in cx23885_v4l2_dev_notify_init()
1843 static inline int encoder_on_portb(struct cx23885_dev *dev) in encoder_on_portb() argument
1845 return cx23885_boards[dev->board].portb == CX23885_MPEG_ENCODER; in encoder_on_portb()
1848 static inline int encoder_on_portc(struct cx23885_dev *dev) in encoder_on_portc() argument
1850 return cx23885_boards[dev->board].portc == CX23885_MPEG_ENCODER; in encoder_on_portc()
1865 void cx23885_gpio_set(struct cx23885_dev *dev, u32 mask) in cx23885_gpio_set() argument
1871 if (encoder_on_portb(dev) || encoder_on_portc(dev)) in cx23885_gpio_set()
1874 dev->name); in cx23885_gpio_set()
1880 printk(KERN_INFO "%s: Unsupported\n", dev->name); in cx23885_gpio_set()
1883 void cx23885_gpio_clear(struct cx23885_dev *dev, u32 mask) in cx23885_gpio_clear() argument
1889 if (encoder_on_portb(dev) || encoder_on_portc(dev)) in cx23885_gpio_clear()
1892 dev->name); in cx23885_gpio_clear()
1898 printk(KERN_INFO "%s: Unsupported\n", dev->name); in cx23885_gpio_clear()
1901 u32 cx23885_gpio_get(struct cx23885_dev *dev, u32 mask) in cx23885_gpio_get() argument
1907 if (encoder_on_portb(dev) || encoder_on_portc(dev)) in cx23885_gpio_get()
1910 dev->name); in cx23885_gpio_get()
1916 printk(KERN_INFO "%s: Unsupported\n", dev->name); in cx23885_gpio_get()
1921 void cx23885_gpio_enable(struct cx23885_dev *dev, u32 mask, int asoutput) in cx23885_gpio_enable() argument
1929 if (encoder_on_portb(dev) || encoder_on_portc(dev)) in cx23885_gpio_enable()
1932 dev->name); in cx23885_gpio_enable()
1948 struct cx23885_dev *dev; in cx23885_initdev() local
1952 dev = kzalloc(sizeof(*dev), GFP_KERNEL); in cx23885_initdev()
1953 if (NULL == dev) in cx23885_initdev()
1956 err = v4l2_device_register(&pci_dev->dev, &dev->v4l2_dev); in cx23885_initdev()
1960 hdl = &dev->ctrl_handler; in cx23885_initdev()
1966 dev->v4l2_dev.ctrl_handler = hdl; in cx23885_initdev()
1969 cx23885_v4l2_dev_notify_init(dev); in cx23885_initdev()
1972 dev->pci = pci_dev; in cx23885_initdev()
1978 if (cx23885_dev_setup(dev) < 0) { in cx23885_initdev()
1984 dev->pci_rev = pci_dev->revision; in cx23885_initdev()
1985 pci_read_config_byte(pci_dev, PCI_LATENCY_TIMER, &dev->pci_lat); in cx23885_initdev()
1987 "latency: %d, mmio: 0x%llx\n", dev->name, in cx23885_initdev()
1988 pci_name(pci_dev), dev->pci_rev, pci_dev->irq, in cx23885_initdev()
1989 dev->pci_lat, in cx23885_initdev()
1994 printk("%s/0: Oops: no 32bit PCI DMA ???\n", dev->name); in cx23885_initdev()
1999 dev->alloc_ctx = vb2_dma_sg_init_ctx(&pci_dev->dev); in cx23885_initdev()
2000 if (IS_ERR(dev->alloc_ctx)) { in cx23885_initdev()
2001 err = PTR_ERR(dev->alloc_ctx); in cx23885_initdev()
2005 IRQF_SHARED, dev->name, dev); in cx23885_initdev()
2008 dev->name, pci_dev->irq); in cx23885_initdev()
2012 switch (dev->board) { in cx23885_initdev()
2014 cx23885_irq_add_enable(dev, PCI_MSK_GPIO1 | PCI_MSK_GPIO0); in cx23885_initdev()
2017 cx23885_irq_add_enable(dev, PCI_MSK_GPIO0); in cx23885_initdev()
2026 cx23885_ir_pci_int_enable(dev); in cx23885_initdev()
2027 cx23885_input_init(dev); in cx23885_initdev()
2032 vb2_dma_sg_cleanup_ctx(dev->alloc_ctx); in cx23885_initdev()
2034 cx23885_dev_unregister(dev); in cx23885_initdev()
2037 v4l2_device_unregister(&dev->v4l2_dev); in cx23885_initdev()
2039 kfree(dev); in cx23885_initdev()
2046 struct cx23885_dev *dev = to_cx23885(v4l2_dev); in cx23885_finidev() local
2048 cx23885_input_fini(dev); in cx23885_finidev()
2049 cx23885_ir_fini(dev); in cx23885_finidev()
2051 cx23885_shutdown(dev); in cx23885_finidev()
2054 free_irq(pci_dev->irq, dev); in cx23885_finidev()
2058 cx23885_dev_unregister(dev); in cx23885_finidev()
2059 vb2_dma_sg_cleanup_ctx(dev->alloc_ctx); in cx23885_finidev()
2060 v4l2_ctrl_handler_free(&dev->ctrl_handler); in cx23885_finidev()
2062 kfree(dev); in cx23885_finidev()