pluto 115 drivers/media/pci/pluto2/pluto2.c static inline struct pluto *feed_to_pluto(struct dvb_demux_feed *feed) pluto 117 drivers/media/pci/pluto2/pluto2.c return container_of(feed->demux, struct pluto, demux); pluto 120 drivers/media/pci/pluto2/pluto2.c static inline struct pluto *frontend_to_pluto(struct dvb_frontend *fe) pluto 122 drivers/media/pci/pluto2/pluto2.c return container_of(fe->dvb, struct pluto, dvb_adapter); pluto 125 drivers/media/pci/pluto2/pluto2.c static inline u32 pluto_readreg(struct pluto *pluto, u32 reg) pluto 127 drivers/media/pci/pluto2/pluto2.c return readl(&pluto->io_mem[reg]); pluto 130 drivers/media/pci/pluto2/pluto2.c static inline void pluto_writereg(struct pluto *pluto, u32 reg, u32 val) pluto 132 drivers/media/pci/pluto2/pluto2.c writel(val, &pluto->io_mem[reg]); pluto 135 drivers/media/pci/pluto2/pluto2.c static inline void pluto_rw(struct pluto *pluto, u32 reg, u32 mask, u32 bits) pluto 137 drivers/media/pci/pluto2/pluto2.c u32 val = readl(&pluto->io_mem[reg]); pluto 140 drivers/media/pci/pluto2/pluto2.c writel(val, &pluto->io_mem[reg]); pluto 143 drivers/media/pci/pluto2/pluto2.c static void pluto_write_tscr(struct pluto *pluto, u32 val) pluto 149 drivers/media/pci/pluto2/pluto2.c pluto_writereg(pluto, REG_TSCR, val); pluto 154 drivers/media/pci/pluto2/pluto2.c struct pluto *pluto = data; pluto 157 drivers/media/pci/pluto2/pluto2.c pluto_rw(pluto, REG_SLCS, SLCS_SDA, SLCS_SDA); pluto 159 drivers/media/pci/pluto2/pluto2.c pluto_rw(pluto, REG_SLCS, SLCS_SDA, 0); pluto 164 drivers/media/pci/pluto2/pluto2.c struct pluto *pluto = data; pluto 167 drivers/media/pci/pluto2/pluto2.c pluto_rw(pluto, REG_SLCS, SLCS_SCL, SLCS_SCL); pluto 169 drivers/media/pci/pluto2/pluto2.c pluto_rw(pluto, REG_SLCS, SLCS_SCL, 0); pluto 173 drivers/media/pci/pluto2/pluto2.c if ((state) && (pluto->i2cbug == 0)) { pluto 174 drivers/media/pci/pluto2/pluto2.c pluto->i2cbug = 1; pluto 176 drivers/media/pci/pluto2/pluto2.c if ((!state) && (pluto->i2cbug == 1)) pluto 177 drivers/media/pci/pluto2/pluto2.c pluto_setsda(pluto, 1); pluto 178 drivers/media/pci/pluto2/pluto2.c pluto->i2cbug = 0; pluto 184 drivers/media/pci/pluto2/pluto2.c struct pluto *pluto = data; pluto 186 drivers/media/pci/pluto2/pluto2.c return pluto_readreg(pluto, REG_SLCS) & SLCS_SDA; pluto 191 drivers/media/pci/pluto2/pluto2.c struct pluto *pluto = data; pluto 193 drivers/media/pci/pluto2/pluto2.c return pluto_readreg(pluto, REG_SLCS) & SLCS_SCL; pluto 196 drivers/media/pci/pluto2/pluto2.c static void pluto_reset_frontend(struct pluto *pluto, int reenable) pluto 198 drivers/media/pci/pluto2/pluto2.c u32 val = pluto_readreg(pluto, REG_MISC); pluto 202 drivers/media/pci/pluto2/pluto2.c pluto_writereg(pluto, REG_MISC, val); pluto 206 drivers/media/pci/pluto2/pluto2.c pluto_writereg(pluto, REG_MISC, val); pluto 210 drivers/media/pci/pluto2/pluto2.c static void pluto_reset_ts(struct pluto *pluto, int reenable) pluto 212 drivers/media/pci/pluto2/pluto2.c u32 val = pluto_readreg(pluto, REG_TSCR); pluto 216 drivers/media/pci/pluto2/pluto2.c pluto_write_tscr(pluto, val); pluto 220 drivers/media/pci/pluto2/pluto2.c pluto_write_tscr(pluto, val); pluto 224 drivers/media/pci/pluto2/pluto2.c static void pluto_set_dma_addr(struct pluto *pluto) pluto 226 drivers/media/pci/pluto2/pluto2.c pluto_writereg(pluto, REG_PCAR, pluto->dma_addr); pluto 229 drivers/media/pci/pluto2/pluto2.c static int pluto_dma_map(struct pluto *pluto) pluto 231 drivers/media/pci/pluto2/pluto2.c pluto->dma_addr = pci_map_single(pluto->pdev, pluto->dma_buf, pluto 234 drivers/media/pci/pluto2/pluto2.c return pci_dma_mapping_error(pluto->pdev, pluto->dma_addr); pluto 237 drivers/media/pci/pluto2/pluto2.c static void pluto_dma_unmap(struct pluto *pluto) pluto 239 drivers/media/pci/pluto2/pluto2.c pci_unmap_single(pluto->pdev, pluto->dma_addr, pluto 245 drivers/media/pci/pluto2/pluto2.c struct pluto *pluto = feed_to_pluto(f); pluto 248 drivers/media/pci/pluto2/pluto2.c if (pluto->users++ == 0) pluto 249 drivers/media/pci/pluto2/pluto2.c pluto_rw(pluto, REG_PIDn(0), PID0_AFIL | PID0_NOFIL, 0); pluto 252 drivers/media/pci/pluto2/pluto2.c pluto_rw(pluto, REG_PIDn(f->index), PIDn_ENP | PIDn_PID, PIDn_ENP | f->pid); pluto 253 drivers/media/pci/pluto2/pluto2.c else if (pluto->full_ts_users++ == 0) pluto 254 drivers/media/pci/pluto2/pluto2.c pluto_rw(pluto, REG_PIDn(0), PID0_NOFIL, PID0_NOFIL); pluto 261 drivers/media/pci/pluto2/pluto2.c struct pluto *pluto = feed_to_pluto(f); pluto 264 drivers/media/pci/pluto2/pluto2.c if (--pluto->users == 0) pluto 265 drivers/media/pci/pluto2/pluto2.c pluto_rw(pluto, REG_PIDn(0), PID0_AFIL, PID0_AFIL); pluto 268 drivers/media/pci/pluto2/pluto2.c pluto_rw(pluto, REG_PIDn(f->index), PIDn_ENP | PIDn_PID, 0x1fff); pluto 269 drivers/media/pci/pluto2/pluto2.c else if (--pluto->full_ts_users == 0) pluto 270 drivers/media/pci/pluto2/pluto2.c pluto_rw(pluto, REG_PIDn(0), PID0_NOFIL, 0); pluto 275 drivers/media/pci/pluto2/pluto2.c static void pluto_dma_end(struct pluto *pluto, unsigned int nbpackets) pluto 279 drivers/media/pci/pluto2/pluto2.c pci_dma_sync_single_for_cpu(pluto->pdev, pluto->dma_addr, pluto 294 drivers/media/pci/pluto2/pluto2.c while (pluto->dma_buf[i] == 0x47) pluto 298 drivers/media/pci/pluto2/pluto2.c pluto_reset_ts(pluto, 1); pluto 299 drivers/media/pci/pluto2/pluto2.c dev_printk(KERN_DEBUG, &pluto->pdev->dev, "resetting TS because of invalid packet counter\n"); pluto 303 drivers/media/pci/pluto2/pluto2.c dvb_dmx_swfilter_packets(&pluto->demux, pluto->dma_buf, nbpackets); pluto 307 drivers/media/pci/pluto2/pluto2.c memset(pluto->dma_buf, 0, nbpackets * 188); pluto 310 drivers/media/pci/pluto2/pluto2.c pluto_set_dma_addr(pluto); pluto 313 drivers/media/pci/pluto2/pluto2.c pci_dma_sync_single_for_device(pluto->pdev, pluto->dma_addr, pluto 319 drivers/media/pci/pluto2/pluto2.c struct pluto *pluto = dev_id; pluto 323 drivers/media/pci/pluto2/pluto2.c tscr = pluto_readreg(pluto, REG_TSCR); pluto 328 drivers/media/pci/pluto2/pluto2.c if (pluto->dead == 0) pluto 329 drivers/media/pci/pluto2/pluto2.c dev_err(&pluto->pdev->dev, "card has hung or been ejected.\n"); pluto 331 drivers/media/pci/pluto2/pluto2.c pluto->dead = 1; pluto 337 drivers/media/pci/pluto2/pluto2.c pluto_dma_end(pluto, (tscr & TSCR_NBPACKETS) >> 24); pluto 340 drivers/media/pci/pluto2/pluto2.c pluto->overflow++; pluto 341 drivers/media/pci/pluto2/pluto2.c if (pluto->overflow) { pluto 342 drivers/media/pci/pluto2/pluto2.c dev_err(&pluto->pdev->dev, "overflow irq (%d)\n", pluto 343 drivers/media/pci/pluto2/pluto2.c pluto->overflow); pluto 344 drivers/media/pci/pluto2/pluto2.c pluto_reset_ts(pluto, 1); pluto 345 drivers/media/pci/pluto2/pluto2.c pluto->overflow = 0; pluto 348 drivers/media/pci/pluto2/pluto2.c pluto->overflow++; pluto 352 drivers/media/pci/pluto2/pluto2.c pluto_write_tscr(pluto, tscr | TSCR_IACK); pluto 357 drivers/media/pci/pluto2/pluto2.c static void pluto_enable_irqs(struct pluto *pluto) pluto 359 drivers/media/pci/pluto2/pluto2.c u32 val = pluto_readreg(pluto, REG_TSCR); pluto 368 drivers/media/pci/pluto2/pluto2.c pluto_write_tscr(pluto, val); pluto 371 drivers/media/pci/pluto2/pluto2.c static void pluto_disable_irqs(struct pluto *pluto) pluto 373 drivers/media/pci/pluto2/pluto2.c u32 val = pluto_readreg(pluto, REG_TSCR); pluto 380 drivers/media/pci/pluto2/pluto2.c pluto_write_tscr(pluto, val); pluto 383 drivers/media/pci/pluto2/pluto2.c static int pluto_hw_init(struct pluto *pluto) pluto 385 drivers/media/pci/pluto2/pluto2.c pluto_reset_frontend(pluto, 1); pluto 388 drivers/media/pci/pluto2/pluto2.c pluto_rw(pluto, REG_MISC, MISC_ALED, MISC_ALED); pluto 392 drivers/media/pci/pluto2/pluto2.c pluto_rw(pluto, REG_PIDn(0), PID0_END, PID0_END); pluto 394 drivers/media/pci/pluto2/pluto2.c pluto_rw(pluto, REG_PIDn(0), PID0_END, 0); pluto 397 drivers/media/pci/pluto2/pluto2.c pluto_dma_map(pluto); pluto 398 drivers/media/pci/pluto2/pluto2.c pluto_set_dma_addr(pluto); pluto 401 drivers/media/pci/pluto2/pluto2.c pluto_enable_irqs(pluto); pluto 404 drivers/media/pci/pluto2/pluto2.c pluto_reset_ts(pluto, 1); pluto 409 drivers/media/pci/pluto2/pluto2.c static void pluto_hw_exit(struct pluto *pluto) pluto 412 drivers/media/pci/pluto2/pluto2.c pluto_disable_irqs(pluto); pluto 414 drivers/media/pci/pluto2/pluto2.c pluto_reset_ts(pluto, 0); pluto 417 drivers/media/pci/pluto2/pluto2.c pluto_rw(pluto, REG_MISC, MISC_ALED | MISC_LED1 | MISC_LED0, MISC_LED1); pluto 420 drivers/media/pci/pluto2/pluto2.c pluto_dma_unmap(pluto); pluto 422 drivers/media/pci/pluto2/pluto2.c pluto_reset_frontend(pluto, 0); pluto 437 drivers/media/pci/pluto2/pluto2.c struct pluto *pluto = frontend_to_pluto(fe); pluto 477 drivers/media/pci/pluto2/pluto2.c ret = i2c_transfer(&pluto->i2c_adap, &msg, 1); pluto 489 drivers/media/pci/pluto2/pluto2.c struct pluto *pluto = frontend_to_pluto(fe); pluto 491 drivers/media/pci/pluto2/pluto2.c return request_firmware(fw, name, &pluto->pdev->dev); pluto 504 drivers/media/pci/pluto2/pluto2.c static int frontend_init(struct pluto *pluto) pluto 508 drivers/media/pci/pluto2/pluto2.c pluto->fe = tda10046_attach(&pluto2_fe_config, &pluto->i2c_adap); pluto 509 drivers/media/pci/pluto2/pluto2.c if (!pluto->fe) { pluto 510 drivers/media/pci/pluto2/pluto2.c dev_err(&pluto->pdev->dev, "could not attach frontend\n"); pluto 513 drivers/media/pci/pluto2/pluto2.c pluto->fe->ops.tuner_ops.set_params = lg_tdtpe001p_tuner_set_params; pluto 515 drivers/media/pci/pluto2/pluto2.c ret = dvb_register_frontend(&pluto->dvb_adapter, pluto->fe); pluto 517 drivers/media/pci/pluto2/pluto2.c if (pluto->fe->ops.release) pluto 518 drivers/media/pci/pluto2/pluto2.c pluto->fe->ops.release(pluto->fe); pluto 525 drivers/media/pci/pluto2/pluto2.c static void pluto_read_rev(struct pluto *pluto) pluto 527 drivers/media/pci/pluto2/pluto2.c u32 val = pluto_readreg(pluto, REG_MISC) & MISC_DVR; pluto 528 drivers/media/pci/pluto2/pluto2.c dev_info(&pluto->pdev->dev, "board revision %d.%d\n", pluto 532 drivers/media/pci/pluto2/pluto2.c static void pluto_read_mac(struct pluto *pluto, u8 *mac) pluto 534 drivers/media/pci/pluto2/pluto2.c u32 val = pluto_readreg(pluto, REG_MMAC); pluto 538 drivers/media/pci/pluto2/pluto2.c val = pluto_readreg(pluto, REG_IMAC); pluto 542 drivers/media/pci/pluto2/pluto2.c val = pluto_readreg(pluto, REG_LMAC); pluto 546 drivers/media/pci/pluto2/pluto2.c dev_info(&pluto->pdev->dev, "MAC %pM\n", mac); pluto 549 drivers/media/pci/pluto2/pluto2.c static int pluto_read_serial(struct pluto *pluto) pluto 551 drivers/media/pci/pluto2/pluto2.c struct pci_dev *pdev = pluto->pdev; pluto 579 drivers/media/pci/pluto2/pluto2.c struct pluto *pluto; pluto 585 drivers/media/pci/pluto2/pluto2.c pluto = kzalloc(sizeof(struct pluto), GFP_KERNEL); pluto 586 drivers/media/pci/pluto2/pluto2.c if (!pluto) pluto 589 drivers/media/pci/pluto2/pluto2.c pluto->pdev = pdev; pluto 608 drivers/media/pci/pluto2/pluto2.c pluto->io_mem = pci_iomap(pdev, 0, 0x40); pluto 609 drivers/media/pci/pluto2/pluto2.c if (!pluto->io_mem) { pluto 614 drivers/media/pci/pluto2/pluto2.c pci_set_drvdata(pdev, pluto); pluto 616 drivers/media/pci/pluto2/pluto2.c ret = request_irq(pdev->irq, pluto_irq, IRQF_SHARED, DRIVER_NAME, pluto); pluto 620 drivers/media/pci/pluto2/pluto2.c ret = pluto_hw_init(pluto); pluto 625 drivers/media/pci/pluto2/pluto2.c i2c_set_adapdata(&pluto->i2c_adap, pluto); pluto 626 drivers/media/pci/pluto2/pluto2.c strscpy(pluto->i2c_adap.name, DRIVER_NAME, sizeof(pluto->i2c_adap.name)); pluto 627 drivers/media/pci/pluto2/pluto2.c pluto->i2c_adap.owner = THIS_MODULE; pluto 628 drivers/media/pci/pluto2/pluto2.c pluto->i2c_adap.dev.parent = &pdev->dev; pluto 629 drivers/media/pci/pluto2/pluto2.c pluto->i2c_adap.algo_data = &pluto->i2c_bit; pluto 630 drivers/media/pci/pluto2/pluto2.c pluto->i2c_bit.data = pluto; pluto 631 drivers/media/pci/pluto2/pluto2.c pluto->i2c_bit.setsda = pluto_setsda; pluto 632 drivers/media/pci/pluto2/pluto2.c pluto->i2c_bit.setscl = pluto_setscl; pluto 633 drivers/media/pci/pluto2/pluto2.c pluto->i2c_bit.getsda = pluto_getsda; pluto 634 drivers/media/pci/pluto2/pluto2.c pluto->i2c_bit.getscl = pluto_getscl; pluto 635 drivers/media/pci/pluto2/pluto2.c pluto->i2c_bit.udelay = 10; pluto 636 drivers/media/pci/pluto2/pluto2.c pluto->i2c_bit.timeout = 10; pluto 639 drivers/media/pci/pluto2/pluto2.c pluto_setsda(pluto, 1); pluto 640 drivers/media/pci/pluto2/pluto2.c pluto_setscl(pluto, 1); pluto 642 drivers/media/pci/pluto2/pluto2.c ret = i2c_bit_add_bus(&pluto->i2c_adap); pluto 647 drivers/media/pci/pluto2/pluto2.c ret = dvb_register_adapter(&pluto->dvb_adapter, DRIVER_NAME, pluto 652 drivers/media/pci/pluto2/pluto2.c dvb_adapter = &pluto->dvb_adapter; pluto 654 drivers/media/pci/pluto2/pluto2.c pluto_read_rev(pluto); pluto 655 drivers/media/pci/pluto2/pluto2.c pluto_read_serial(pluto); pluto 656 drivers/media/pci/pluto2/pluto2.c pluto_read_mac(pluto, dvb_adapter->proposed_mac); pluto 658 drivers/media/pci/pluto2/pluto2.c dvbdemux = &pluto->demux; pluto 671 drivers/media/pci/pluto2/pluto2.c pluto->hw_frontend.source = DMX_FRONTEND_0; pluto 672 drivers/media/pci/pluto2/pluto2.c pluto->mem_frontend.source = DMX_MEMORY_FE; pluto 673 drivers/media/pci/pluto2/pluto2.c pluto->dmxdev.filternum = NHWFILTERS; pluto 674 drivers/media/pci/pluto2/pluto2.c pluto->dmxdev.demux = dmx; pluto 676 drivers/media/pci/pluto2/pluto2.c ret = dvb_dmxdev_init(&pluto->dmxdev, dvb_adapter); pluto 680 drivers/media/pci/pluto2/pluto2.c ret = dmx->add_frontend(dmx, &pluto->hw_frontend); pluto 684 drivers/media/pci/pluto2/pluto2.c ret = dmx->add_frontend(dmx, &pluto->mem_frontend); pluto 688 drivers/media/pci/pluto2/pluto2.c ret = dmx->connect_frontend(dmx, &pluto->hw_frontend); pluto 692 drivers/media/pci/pluto2/pluto2.c ret = frontend_init(pluto); pluto 696 drivers/media/pci/pluto2/pluto2.c dvb_net_init(dvb_adapter, &pluto->dvbnet, dmx); pluto 703 drivers/media/pci/pluto2/pluto2.c dmx->remove_frontend(dmx, &pluto->mem_frontend); pluto 705 drivers/media/pci/pluto2/pluto2.c dmx->remove_frontend(dmx, &pluto->hw_frontend); pluto 707 drivers/media/pci/pluto2/pluto2.c dvb_dmxdev_release(&pluto->dmxdev); pluto 713 drivers/media/pci/pluto2/pluto2.c i2c_del_adapter(&pluto->i2c_adap); pluto 715 drivers/media/pci/pluto2/pluto2.c pluto_hw_exit(pluto); pluto 717 drivers/media/pci/pluto2/pluto2.c free_irq(pdev->irq, pluto); pluto 719 drivers/media/pci/pluto2/pluto2.c pci_iounmap(pdev, pluto->io_mem); pluto 725 drivers/media/pci/pluto2/pluto2.c kfree(pluto); pluto 731 drivers/media/pci/pluto2/pluto2.c struct pluto *pluto = pci_get_drvdata(pdev); pluto 732 drivers/media/pci/pluto2/pluto2.c struct dvb_adapter *dvb_adapter = &pluto->dvb_adapter; pluto 733 drivers/media/pci/pluto2/pluto2.c struct dvb_demux *dvbdemux = &pluto->demux; pluto 737 drivers/media/pci/pluto2/pluto2.c dvb_net_release(&pluto->dvbnet); pluto 738 drivers/media/pci/pluto2/pluto2.c if (pluto->fe) pluto 739 drivers/media/pci/pluto2/pluto2.c dvb_unregister_frontend(pluto->fe); pluto 742 drivers/media/pci/pluto2/pluto2.c dmx->remove_frontend(dmx, &pluto->mem_frontend); pluto 743 drivers/media/pci/pluto2/pluto2.c dmx->remove_frontend(dmx, &pluto->hw_frontend); pluto 744 drivers/media/pci/pluto2/pluto2.c dvb_dmxdev_release(&pluto->dmxdev); pluto 747 drivers/media/pci/pluto2/pluto2.c i2c_del_adapter(&pluto->i2c_adap); pluto 748 drivers/media/pci/pluto2/pluto2.c pluto_hw_exit(pluto); pluto 749 drivers/media/pci/pluto2/pluto2.c free_irq(pdev->irq, pluto); pluto 750 drivers/media/pci/pluto2/pluto2.c pci_iounmap(pdev, pluto->io_mem); pluto 753 drivers/media/pci/pluto2/pluto2.c kfree(pluto);