Lines Matching refs:av7110
120 static void restart_feeds(struct av7110 *av7110);
135 static void init_av7110_av(struct av7110 *av7110) in init_av7110_av() argument
138 struct saa7146_dev *dev = av7110->dev; in init_av7110_av()
141 av7110->adac_type = DVB_ADAC_TI; in init_av7110_av()
142 ret = av7110_set_volume(av7110, av7110->mixer.volume_left, av7110->mixer.volume_right); in init_av7110_av()
146 ret = av7110_fw_cmd(av7110, COMTYPE_ENCODER, SetMonitorType, in init_av7110_av()
147 1, (u16) av7110->display_ar); in init_av7110_av()
150 ret = av7110_fw_cmd(av7110, COMTYPE_ENCODER, SetPanScanType, in init_av7110_av()
151 1, av7110->display_panscan); in init_av7110_av()
155 ret = av7110_fw_cmd(av7110, COMTYPE_ENCODER, SetWSSConfig, 2, 2, wss_cfg_4_3); in init_av7110_av()
158 ret = av7110_fw_cmd(av7110, COMTYPE_ENCODER, SetWSSConfig, 2, 3, wss_cfg_16_9); in init_av7110_av()
162 ret = av7710_set_video_mode(av7110, vidmode); in init_av7110_av()
168 av7110->analog_tuner_flags = 0; in init_av7110_av()
169 av7110->current_input = 0; in init_av7110_av()
171 av7110_fw_cmd(av7110, COMTYPE_AUDIODAC, ADSwitch, 1, 0); // SPDIF on in init_av7110_av()
172 if (i2c_writereg(av7110, 0x20, 0x00, 0x00) == 1) { in init_av7110_av()
174 av7110->dvb_adapter.num); in init_av7110_av()
175 av7110->adac_type = DVB_ADAC_CRYSTAL; in init_av7110_av()
176 i2c_writereg(av7110, 0x20, 0x01, 0xd2); in init_av7110_av()
177 i2c_writereg(av7110, 0x20, 0x02, 0x49); in init_av7110_av()
178 i2c_writereg(av7110, 0x20, 0x03, 0x00); in init_av7110_av()
179 i2c_writereg(av7110, 0x20, 0x04, 0x00); in init_av7110_av()
184 } else if (0 == av7110_init_analog_module(av7110)) { in init_av7110_av()
189 av7110->dvb_adapter.num); in init_av7110_av()
190 av7110->adac_type = DVB_ADAC_NONE; in init_av7110_av()
193 av7110->adac_type = adac; in init_av7110_av()
195 av7110->adac_type, av7110->dvb_adapter.num); in init_av7110_av()
198 if (av7110->adac_type == DVB_ADAC_NONE || av7110->adac_type == DVB_ADAC_MSP34x0) { in init_av7110_av()
200 ret = av7110_fw_cmd(av7110, COMTYPE_AUDIODAC, MainSwitch, 1, 0); in init_av7110_av()
203 ret = av7110_fw_cmd(av7110, COMTYPE_AUDIODAC, ADSwitch, 1, 1); in init_av7110_av()
207 ((av7110->dev->pci->subsystem_vendor == 0x110a) || in init_av7110_av()
208 (av7110->dev->pci->subsystem_vendor == 0x13c2)) && in init_av7110_av()
209 (av7110->dev->pci->subsystem_device == 0x0000)) { in init_av7110_av()
216 av7110_fw_cmd(av7110, COMTYPE_AUDIODAC, SpdifSwitch, 1, 0); // SPDIF on in init_av7110_av()
218 ret = av7110_set_volume(av7110, av7110->mixer.volume_left, av7110->mixer.volume_right); in init_av7110_av()
223 static void recover_arm(struct av7110 *av7110) in recover_arm() argument
225 dprintk(4, "%p\n",av7110); in recover_arm()
227 av7110_bootarm(av7110); in recover_arm()
230 init_av7110_av(av7110); in recover_arm()
233 if (av7110->recover) in recover_arm()
234 av7110->recover(av7110); in recover_arm()
236 restart_feeds(av7110); in recover_arm()
239 av7110_check_ir_config(av7110, true); in recover_arm()
243 static void av7110_arm_sync(struct av7110 *av7110) in av7110_arm_sync() argument
245 if (av7110->arm_thread) in av7110_arm_sync()
246 kthread_stop(av7110->arm_thread); in av7110_arm_sync()
248 av7110->arm_thread = NULL; in av7110_arm_sync()
253 struct av7110 *av7110 = data; in arm_thread() local
257 dprintk(4, "%p\n",av7110); in arm_thread()
260 timeout = wait_event_interruptible_timeout(av7110->arm_wait, in arm_thread()
268 if (!av7110->arm_ready) in arm_thread()
272 av7110_check_ir_config(av7110, false); in arm_thread()
275 if (mutex_lock_interruptible(&av7110->dcomlock)) in arm_thread()
277 newloops = rdebi(av7110, DEBINOSWAP, STATUS_LOOPS, 0, 2); in arm_thread()
278 mutex_unlock(&av7110->dcomlock); in arm_thread()
280 if (newloops == av7110->arm_loops || av7110->arm_errors > 3) { in arm_thread()
282 av7110->dvb_adapter.num); in arm_thread()
284 recover_arm(av7110); in arm_thread()
286 if (mutex_lock_interruptible(&av7110->dcomlock)) in arm_thread()
288 newloops = rdebi(av7110, DEBINOSWAP, STATUS_LOOPS, 0, 2) - 1; in arm_thread()
289 mutex_unlock(&av7110->dcomlock); in arm_thread()
291 av7110->arm_loops = newloops; in arm_thread()
292 av7110->arm_errors = 0; in arm_thread()
307 struct av7110 *av7110) in DvbDmxFilterCallback() argument
345 &av7110->p2t_filter[dvbdmxfilter->index]); in DvbDmxFilterCallback()
364 static inline void start_debi_dma(struct av7110 *av7110, int dir, in start_debi_dma() argument
368 if (saa7146_wait_for_debi_done(av7110->dev, 0)) { in start_debi_dma()
373 SAA7146_ISR_CLEAR(av7110->dev, MASK_19); /* for good measure */ in start_debi_dma()
374 SAA7146_IER_ENABLE(av7110->dev, MASK_19); in start_debi_dma()
378 iwdebi(av7110, DEBISWAB, addr, 0, (len + 3) & ~3); in start_debi_dma()
380 irdebi(av7110, DEBISWAB, addr, 0, len); in start_debi_dma()
385 struct av7110 *av7110 = (struct av7110 *)cookie; in debiirq() local
386 int type = av7110->debitype; in debiirq()
395 jiffies, saa7146_read(av7110->dev, PSR), in debiirq()
396 saa7146_read(av7110->dev, SSR)); in debiirq()
399 av7110->debitype = -1; in debiirq()
404 dvb_dmx_swfilter_packets(&av7110->demux, in debiirq()
405 (const u8 *) av7110->debi_virt, in debiirq()
406 av7110->debilen / 188); in debiirq()
411 if (av7110->demux.recording) in debiirq()
412 av7110_record_cb(&av7110->p2t[handle], in debiirq()
413 (u8 *) av7110->debi_virt, in debiirq()
414 av7110->debilen); in debiirq()
421 if (av7110->handle2filter[handle]) in debiirq()
422 DvbDmxFilterCallback((u8 *)av7110->debi_virt, in debiirq()
423 av7110->debilen, NULL, 0, in debiirq()
424 av7110->handle2filter[handle], in debiirq()
425 DMX_OK, av7110); in debiirq()
431 u8 *data = av7110->debi_virt; in debiirq()
439 av7110->ci_slot[data[0]].flags = flags; in debiirq()
441 ci_get_data(&av7110->ci_rbuffer, in debiirq()
442 av7110->debi_virt, in debiirq()
443 av7110->debilen); in debiirq()
449 CI_handle(av7110, (u8 *)av7110->debi_virt, av7110->debilen); in debiirq()
454 printk("av7110%d: ", av7110->num); in debiirq()
455 printk("%02x ", *(u8 *)av7110->debi_virt); in debiirq()
456 printk("%02x ", *(1+(u8 *)av7110->debi_virt)); in debiirq()
457 for (i = 2; i < av7110->debilen; i++) in debiirq()
458 printk("%02x ", (*(i+(unsigned char *)av7110->debi_virt))); in debiirq()
459 for (i = 2; i < av7110->debilen; i++) in debiirq()
460 printk("%c", chtrans(*(i+(unsigned char *)av7110->debi_virt))); in debiirq()
469 ((s8*)av7110->debi_virt)[Reserved_SIZE - 1] = 0; in debiirq()
470 printk("%s\n", (s8 *) av7110->debi_virt); in debiirq()
486 spin_lock(&av7110->debilock); in debiirq()
488 iwdebi(av7110, DEBINOSWAP, xfer, 0, 2); in debiirq()
489 ARM_ClearMailBox(av7110); in debiirq()
490 spin_unlock(&av7110->debilock); in debiirq()
496 struct av7110 *av7110 = (struct av7110 *)cookie; in gpioirq() local
500 if (av7110->debitype != -1) in gpioirq()
503 jiffies, saa7146_read(av7110->dev, PSR), in gpioirq()
504 saa7146_read(av7110->dev, SSR)); in gpioirq()
506 if (saa7146_wait_for_debi_done(av7110->dev, 0)) { in gpioirq()
511 spin_lock(&av7110->debilock); in gpioirq()
512 ARM_ClearIrq(av7110); in gpioirq()
515 av7110->debitype = irdebi(av7110, DEBINOSWAP, IRQ_STATE, 0, 2); in gpioirq()
516 av7110->debilen = irdebi(av7110, DEBINOSWAP, IRQ_STATE_EXT, 0, 2); in gpioirq()
517 rxbuf = irdebi(av7110, DEBINOSWAP, RX_BUFF, 0, 2); in gpioirq()
518 txbuf = irdebi(av7110, DEBINOSWAP, TX_BUFF, 0, 2); in gpioirq()
519 len = (av7110->debilen + 3) & ~3; in gpioirq()
522 dprintk(8, "GPIO0 irq 0x%04x %d\n", av7110->debitype, av7110->debilen); in gpioirq()
524 switch (av7110->debitype & 0xff) { in gpioirq()
535 av7110->video_size.w = irdebi(av7110, DEBINOSWAP, STATUS_MPEG_WIDTH, 0, 2); in gpioirq()
536 h_ar = irdebi(av7110, DEBINOSWAP, STATUS_MPEG_HEIGHT_AR, 0, 2); in gpioirq()
538 iwdebi(av7110, DEBINOSWAP, IRQ_STATE_EXT, 0, 2); in gpioirq()
539 iwdebi(av7110, DEBINOSWAP, RX_BUFF, 0, 2); in gpioirq()
541 av7110->video_size.h = h_ar & 0xfff; in gpioirq()
544 event.u.size.w = av7110->video_size.w; in gpioirq()
545 event.u.size.h = av7110->video_size.h; in gpioirq()
549 av7110->video_size.aspect_ratio = VIDEO_FORMAT_16_9; in gpioirq()
551 av7110->videostate.video_format = VIDEO_FORMAT_16_9; in gpioirq()
554 av7110->video_size.aspect_ratio = VIDEO_FORMAT_221_1; in gpioirq()
556 av7110->videostate.video_format = VIDEO_FORMAT_221_1; in gpioirq()
559 av7110->video_size.aspect_ratio = VIDEO_FORMAT_4_3; in gpioirq()
561 av7110->videostate.video_format = VIDEO_FORMAT_4_3; in gpioirq()
565 av7110->video_size.w, av7110->video_size.h, in gpioirq()
566 av7110->video_size.aspect_ratio); in gpioirq()
568 dvb_video_add_event(av7110, &event); in gpioirq()
575 struct dvb_ringbuffer *cibuf = &av7110->ci_wbuffer; in gpioirq()
579 iwdebi(av7110, DEBINOSWAP, IRQ_STATE_EXT, 0, 2); in gpioirq()
580 iwdebi(av7110, DEBINOSWAP, TX_LEN, 0, 2); in gpioirq()
581 iwdebi(av7110, DEBINOSWAP, TX_BUFF, 0, 2); in gpioirq()
587 iwdebi(av7110, DEBINOSWAP, IRQ_STATE_EXT, 0, 2); in gpioirq()
588 iwdebi(av7110, DEBINOSWAP, TX_LEN, 0, 2); in gpioirq()
589 iwdebi(av7110, DEBINOSWAP, TX_BUFF, 0, 2); in gpioirq()
594 dvb_ringbuffer_read(cibuf, av7110->debi_virt, len); in gpioirq()
596 iwdebi(av7110, DEBINOSWAP, TX_LEN, len, 2); in gpioirq()
597 iwdebi(av7110, DEBINOSWAP, IRQ_STATE_EXT, len, 2); in gpioirq()
599 start_debi_dma(av7110, DEBI_WRITE, DPRAM_BASE + txbuf, len); in gpioirq()
600 spin_unlock(&av7110->debilock); in gpioirq()
606 if (!av7110->playing) { in gpioirq()
607 iwdebi(av7110, DEBINOSWAP, IRQ_STATE_EXT, 0, 2); in gpioirq()
608 iwdebi(av7110, DEBINOSWAP, TX_LEN, 0, 2); in gpioirq()
609 iwdebi(av7110, DEBINOSWAP, TX_BUFF, 0, 2); in gpioirq()
613 if (av7110->debitype & 0x100) { in gpioirq()
614 spin_lock(&av7110->aout.lock); in gpioirq()
615 len = av7110_pes_play(av7110->debi_virt, &av7110->aout, 2048); in gpioirq()
616 spin_unlock(&av7110->aout.lock); in gpioirq()
618 if (len <= 0 && (av7110->debitype & 0x200) in gpioirq()
619 &&av7110->videostate.play_state != VIDEO_FREEZED) { in gpioirq()
620 spin_lock(&av7110->avout.lock); in gpioirq()
621 len = av7110_pes_play(av7110->debi_virt, &av7110->avout, 2048); in gpioirq()
622 spin_unlock(&av7110->avout.lock); in gpioirq()
625 iwdebi(av7110, DEBINOSWAP, IRQ_STATE_EXT, 0, 2); in gpioirq()
626 iwdebi(av7110, DEBINOSWAP, TX_LEN, 0, 2); in gpioirq()
627 iwdebi(av7110, DEBINOSWAP, TX_BUFF, 0, 2); in gpioirq()
631 iwdebi(av7110, DEBINOSWAP, TX_LEN, len, 2); in gpioirq()
632 iwdebi(av7110, DEBINOSWAP, IRQ_STATE_EXT, len, 2); in gpioirq()
634 start_debi_dma(av7110, DEBI_WRITE, DPRAM_BASE + txbuf, len); in gpioirq()
635 spin_unlock(&av7110->debilock); in gpioirq()
639 len = av7110->debilen; in gpioirq()
642 av7110->bmp_state = BMP_LOADED; in gpioirq()
643 iwdebi(av7110, DEBINOSWAP, IRQ_STATE_EXT, 0, 2); in gpioirq()
644 iwdebi(av7110, DEBINOSWAP, TX_LEN, 0, 2); in gpioirq()
645 iwdebi(av7110, DEBINOSWAP, TX_BUFF, 0, 2); in gpioirq()
646 wake_up(&av7110->bmpq); in gpioirq()
650 if (len > av7110->bmplen) in gpioirq()
651 len = av7110->bmplen; in gpioirq()
654 iwdebi(av7110, DEBINOSWAP, TX_LEN, len, 2); in gpioirq()
655 iwdebi(av7110, DEBINOSWAP, IRQ_STATE_EXT, len, 2); in gpioirq()
656 memcpy(av7110->debi_virt, av7110->bmpbuf+av7110->bmpp, len); in gpioirq()
657 av7110->bmpp += len; in gpioirq()
658 av7110->bmplen -= len; in gpioirq()
660 start_debi_dma(av7110, DEBI_WRITE, DPRAM_BASE+txbuf, len); in gpioirq()
661 spin_unlock(&av7110->debilock); in gpioirq()
670 iwdebi(av7110, DEBINOSWAP, RX_BUFF, 0, 2); in gpioirq()
678 start_debi_dma(av7110, DEBI_READ, DPRAM_BASE+rxbuf, len); in gpioirq()
679 spin_unlock(&av7110->debilock); in gpioirq()
684 iwdebi(av7110, DEBINOSWAP, RX_BUFF, 0, 2); in gpioirq()
687 start_debi_dma(av7110, DEBI_READ, Reserved, len); in gpioirq()
688 spin_unlock(&av7110->debilock); in gpioirq()
692 if (av7110->ir.ir_handler) in gpioirq()
693 av7110->ir.ir_handler(av7110, in gpioirq()
694 swahw32(irdebi(av7110, DEBINOSWAP, Reserved, 0, 4))); in gpioirq()
695 iwdebi(av7110, DEBINOSWAP, RX_BUFF, 0, 2); in gpioirq()
700 av7110->debitype, av7110->debilen); in gpioirq()
703 av7110->debitype = -1; in gpioirq()
704 ARM_ClearMailBox(av7110); in gpioirq()
705 spin_unlock(&av7110->debilock); in gpioirq()
714 struct av7110 *av7110 = dvbdev->priv; in dvb_osd_ioctl() local
716 dprintk(4, "%p\n", av7110); in dvb_osd_ioctl()
719 return av7110_osd_cmd(av7110, (osd_cmd_t *) parg); in dvb_osd_ioctl()
721 return av7110_osd_capability(av7110, (osd_cap_t *) parg); in dvb_osd_ioctl()
745 static inline int SetPIDs(struct av7110 *av7110, u16 vpid, u16 apid, u16 ttpid, in SetPIDs() argument
750 dprintk(4, "%p\n", av7110); in SetPIDs()
755 av7110->pids[DMX_PES_VIDEO] = 0; in SetPIDs()
756 av7110->pids[DMX_PES_AUDIO] = 0; in SetPIDs()
757 av7110->pids[DMX_PES_TELETEXT] = 0; in SetPIDs()
758 av7110->pids[DMX_PES_PCR] = 0; in SetPIDs()
761 if (av7110->audiostate.bypass_mode) in SetPIDs()
764 return av7110_fw_cmd(av7110, COMTYPE_PIDFILTER, MultiPID, 6, in SetPIDs()
768 int ChangePIDs(struct av7110 *av7110, u16 vpid, u16 apid, u16 ttpid, in ChangePIDs() argument
772 dprintk(4, "%p\n", av7110); in ChangePIDs()
774 if (mutex_lock_interruptible(&av7110->pid_mutex)) in ChangePIDs()
778 av7110->pids[DMX_PES_VIDEO] = vpid; in ChangePIDs()
780 av7110->pids[DMX_PES_AUDIO] = apid; in ChangePIDs()
782 av7110->pids[DMX_PES_TELETEXT] = ttpid; in ChangePIDs()
784 av7110->pids[DMX_PES_PCR] = pcrpid; in ChangePIDs()
786 av7110->pids[DMX_PES_SUBTITLE] = 0; in ChangePIDs()
788 if (av7110->fe_synced) { in ChangePIDs()
789 pcrpid = av7110->pids[DMX_PES_PCR]; in ChangePIDs()
790 ret = SetPIDs(av7110, vpid, apid, ttpid, subpid, pcrpid); in ChangePIDs()
793 mutex_unlock(&av7110->pid_mutex); in ChangePIDs()
805 struct av7110 *av7110 = dvbdmxfeed->demux->priv; in StartHWFilter() local
812 dprintk(4, "%p\n", av7110); in StartHWFilter()
814 if (av7110->full_ts) in StartHWFilter()
829 av7110_p2t_init(&av7110->p2t_filter[dvbdmxfilter->index], dvbdmxfeed); in StartHWFilter()
837 ret = av7110_fw_request(av7110, buf, 20, &handle, 1); in StartHWFilter()
849 av7110->handle2filter[handle] = dvbdmxfilter; in StartHWFilter()
857 struct av7110 *av7110 = dvbdmxfilter->feed->demux->priv; in StopHWFilter() local
863 dprintk(4, "%p\n", av7110); in StopHWFilter()
865 if (av7110->full_ts) in StopHWFilter()
875 av7110->handle2filter[handle] = NULL; in StopHWFilter()
880 ret = av7110_fw_request(av7110, buf, 3, answ, 2); in StopHWFilter()
896 struct av7110 *av7110 = dvbdmx->priv; in dvb_feed_start_pid() local
901 dprintk(4, "%p\n", av7110); in dvb_feed_start_pid()
908 ret = ChangePIDs(av7110, npids[1], npids[0], npids[2], npids[3], npids[4]); in dvb_feed_start_pid()
914 ret = ChangePIDs(av7110, npids[1], npids[0], npids[2], npids[3], npids[4]); in dvb_feed_start_pid()
920 if (av7110->fe_synced) in dvb_feed_start_pid()
922 ret = av7110_fw_cmd(av7110, COMTYPE_PIDFILTER, Scan, 0); in dvb_feed_start_pid()
927 if ((dvbdmxfeed->ts_type & TS_PACKET) && !av7110->full_ts) { in dvb_feed_start_pid()
929 ret = av7110_av_start_record(av7110, RP_AUDIO, dvbdmxfeed); in dvb_feed_start_pid()
931 ret = av7110_av_start_record(av7110, RP_VIDEO, dvbdmxfeed); in dvb_feed_start_pid()
939 struct av7110 *av7110 = dvbdmx->priv; in dvb_feed_stop_pid() local
945 dprintk(4, "%p\n", av7110); in dvb_feed_stop_pid()
948 ret = av7110_av_stop(av7110, dvbdmxfeed->pes_type ? RP_VIDEO : RP_AUDIO); in dvb_feed_stop_pid()
951 if (!av7110->rec_mode) in dvb_feed_stop_pid()
953 if (!av7110->playing) in dvb_feed_stop_pid()
973 ret = ChangePIDs(av7110, npids[1], npids[0], npids[2], npids[3], npids[4]); in dvb_feed_stop_pid()
980 struct av7110 *av7110 = demux->priv; in av7110_start_feed() local
983 dprintk(4, "%p\n", av7110); in av7110_start_feed()
988 if (!av7110->full_ts && feed->pid > 0x1fff) in av7110_start_feed()
1000 dvb_ringbuffer_flush_spinlock_wakeup(&av7110->avout); in av7110_start_feed()
1001 dvb_ringbuffer_flush_spinlock_wakeup(&av7110->aout); in av7110_start_feed()
1002 ret = av7110_av_start_play(av7110,RP_AV); in av7110_start_feed()
1017 if (av7110->full_ts) { in av7110_start_feed()
1048 struct av7110 *av7110 = demux->priv; in av7110_stop_feed() local
1050 dprintk(4, "%p\n", av7110); in av7110_stop_feed()
1069 if (av7110->full_ts) { in av7110_stop_feed()
1093 static void restart_feeds(struct av7110 *av7110) in restart_feeds() argument
1095 struct dvb_demux *dvbdmx = &av7110->demux; in restart_feeds()
1101 dprintk(4, "%p\n", av7110); in restart_feeds()
1103 mode = av7110->playing; in restart_feeds()
1104 av7110->playing = 0; in restart_feeds()
1105 av7110->rec_mode = 0; in restart_feeds()
1107 feeding = av7110->feeding1; /* full_ts mod */ in restart_feeds()
1126 av7110->feeding1 = feeding; /* full_ts mod */ in restart_feeds()
1129 av7110_av_start_play(av7110, mode); in restart_feeds()
1139 struct av7110 *av7110; in dvb_get_stc() local
1145 av7110 = dvbdemux->priv; in dvb_get_stc()
1147 dprintk(4, "%p\n", av7110); in dvb_get_stc()
1152 ret = av7110_fw_request(av7110, &tag, 0, fwstc, 4); in dvb_get_stc()
1177 struct av7110* av7110 = fe->dvb->priv; in av7110_set_tone() local
1181 return Set22K(av7110, 1); in av7110_set_tone()
1184 return Set22K(av7110, 0); in av7110_set_tone()
1194 struct av7110* av7110 = fe->dvb->priv; in av7110_diseqc_send_master_cmd() local
1196 return av7110_diseqc_send(av7110, cmd->msg_len, cmd->msg, -1); in av7110_diseqc_send_master_cmd()
1202 struct av7110* av7110 = fe->dvb->priv; in av7110_diseqc_send_burst() local
1204 return av7110_diseqc_send(av7110, 0, NULL, minicmd); in av7110_diseqc_send_burst()
1208 static int stop_ts_capture(struct av7110 *budget) in stop_ts_capture()
1220 static int start_ts_capture(struct av7110 *budget) in start_ts_capture()
1240 struct av7110 *budget = demux->priv; in budget_start_feed()
1255 struct av7110 *budget = demux->priv; in budget_stop_feed()
1268 struct av7110 *budget = (struct av7110 *)cookie; in vpeirq()
1305 static int av7110_register(struct av7110 *av7110) in av7110_register() argument
1308 struct dvb_demux *dvbdemux = &av7110->demux; in av7110_register()
1309 struct dvb_demux *dvbdemux1 = &av7110->demux1; in av7110_register()
1311 dprintk(4, "%p\n", av7110); in av7110_register()
1313 if (av7110->registered) in av7110_register()
1316 av7110->registered = 1; in av7110_register()
1318 dvbdemux->priv = (void *) av7110; in av7110_register()
1321 av7110->handle2filter[i] = NULL; in av7110_register()
1323 dvbdemux->filternum = (av7110->full_ts) ? 256 : 32; in av7110_register()
1324 dvbdemux->feednum = (av7110->full_ts) ? 256 : 32; in av7110_register()
1331 dvb_dmx_init(&av7110->demux); in av7110_register()
1332 av7110->demux.dmx.get_stc = dvb_get_stc; in av7110_register()
1334 av7110->dmxdev.filternum = (av7110->full_ts) ? 256 : 32; in av7110_register()
1335 av7110->dmxdev.demux = &dvbdemux->dmx; in av7110_register()
1336 av7110->dmxdev.capabilities = 0; in av7110_register()
1338 dvb_dmxdev_init(&av7110->dmxdev, &av7110->dvb_adapter); in av7110_register()
1340 av7110->hw_frontend.source = DMX_FRONTEND_0; in av7110_register()
1342 ret = dvbdemux->dmx.add_frontend(&dvbdemux->dmx, &av7110->hw_frontend); in av7110_register()
1347 av7110->mem_frontend.source = DMX_MEMORY_FE; in av7110_register()
1349 ret = dvbdemux->dmx.add_frontend(&dvbdemux->dmx, &av7110->mem_frontend); in av7110_register()
1355 &av7110->hw_frontend); in av7110_register()
1359 av7110_av_register(av7110); in av7110_register()
1360 av7110_ca_register(av7110); in av7110_register()
1363 dvb_register_device(&av7110->dvb_adapter, &av7110->osd_dev, in av7110_register()
1364 &dvbdev_osd, av7110, DVB_DEVICE_OSD); in av7110_register()
1367 dvb_net_init(&av7110->dvb_adapter, &av7110->dvb_net, &dvbdemux->dmx); in av7110_register()
1373 dvbdemux1->priv = (void *) av7110; in av7110_register()
1384 dvb_dmx_init(&av7110->demux1); in av7110_register()
1386 av7110->dmxdev1.filternum = 256; in av7110_register()
1387 av7110->dmxdev1.demux = &dvbdemux1->dmx; in av7110_register()
1388 av7110->dmxdev1.capabilities = 0; in av7110_register()
1390 dvb_dmxdev_init(&av7110->dmxdev1, &av7110->dvb_adapter); in av7110_register()
1392 dvb_net_init(&av7110->dvb_adapter, &av7110->dvb_net1, &dvbdemux1->dmx); in av7110_register()
1399 static void dvb_unregister(struct av7110 *av7110) in dvb_unregister() argument
1401 struct dvb_demux *dvbdemux = &av7110->demux; in dvb_unregister()
1402 struct dvb_demux *dvbdemux1 = &av7110->demux1; in dvb_unregister()
1404 dprintk(4, "%p\n", av7110); in dvb_unregister()
1406 if (!av7110->registered) in dvb_unregister()
1410 dvb_net_release(&av7110->dvb_net1); in dvb_unregister()
1412 dvb_dmxdev_release(&av7110->dmxdev1); in dvb_unregister()
1413 dvb_dmx_release(&av7110->demux1); in dvb_unregister()
1416 dvb_net_release(&av7110->dvb_net); in dvb_unregister()
1419 dvbdemux->dmx.remove_frontend(&dvbdemux->dmx, &av7110->hw_frontend); in dvb_unregister()
1420 dvbdemux->dmx.remove_frontend(&dvbdemux->dmx, &av7110->mem_frontend); in dvb_unregister()
1422 dvb_dmxdev_release(&av7110->dmxdev); in dvb_unregister()
1423 dvb_dmx_release(&av7110->demux); in dvb_unregister()
1425 if (av7110->fe != NULL) { in dvb_unregister()
1426 dvb_unregister_frontend(av7110->fe); in dvb_unregister()
1427 dvb_frontend_detach(av7110->fe); in dvb_unregister()
1429 dvb_unregister_device(av7110->osd_dev); in dvb_unregister()
1430 av7110_av_unregister(av7110); in dvb_unregister()
1431 av7110_ca_unregister(av7110); in dvb_unregister()
1439 int i2c_writereg(struct av7110 *av7110, u8 id, u8 reg, u8 val) in i2c_writereg() argument
1448 return i2c_transfer(&av7110->i2c_adap, &msgs, 1); in i2c_writereg()
1451 u8 i2c_readreg(struct av7110 *av7110, u8 id, u8 reg) in i2c_readreg() argument
1463 i2c_transfer(&av7110->i2c_adap, msgs, 2); in i2c_readreg()
1473 static int check_firmware(struct av7110* av7110) in check_firmware() argument
1479 ptr = av7110->bin_fw; in check_firmware()
1500 av7110->bin_dpram = ptr; in check_firmware()
1501 av7110->size_dpram = len; in check_firmware()
1511 len > ((av7110->bin_fw + av7110->size_fw) - ptr)) { in check_firmware()
1519 av7110->bin_root = ptr; in check_firmware()
1520 av7110->size_root = len; in check_firmware()
1524 static void put_firmware(struct av7110* av7110) in put_firmware() argument
1526 vfree(av7110->bin_fw); in put_firmware()
1529 static int get_firmware(struct av7110* av7110) in get_firmware() argument
1535 ret = request_firmware(&fw, "dvb-ttpci-01.fw", &av7110->dev->pci->dev); in get_firmware()
1557 av7110->bin_fw = vmalloc(fw->size); in get_firmware()
1558 if (NULL == av7110->bin_fw) { in get_firmware()
1564 memcpy(av7110->bin_fw, fw->data, fw->size); in get_firmware()
1565 av7110->size_fw = fw->size; in get_firmware()
1566 if ((ret = check_firmware(av7110))) in get_firmware()
1567 vfree(av7110->bin_fw); in get_firmware()
1576 struct av7110* av7110 = fe->dvb->priv; in alps_bsrv2_tuner_set_params() local
1605 if (i2c_transfer (&av7110->i2c_adap, &msg, 1) != 1) in alps_bsrv2_tuner_set_params()
1619 struct av7110* av7110 = fe->dvb->priv; in alps_tdbe2_tuner_set_params() local
1633 if (i2c_transfer(&av7110->i2c_adap, &msg, 1) != 1) in alps_tdbe2_tuner_set_params()
1651 struct av7110* av7110 = fe->dvb->priv; in grundig_29504_451_tuner_set_params() local
1664 if (i2c_transfer(&av7110->i2c_adap, &msg, 1) != 1) in grundig_29504_451_tuner_set_params()
1678 struct av7110* av7110 = fe->dvb->priv; in philips_cd1516_tuner_set_params() local
1693 if (i2c_transfer(&av7110->i2c_adap, &msg, 1) != 1) in philips_cd1516_tuner_set_params()
1710 struct av7110* av7110 = fe->dvb->priv; in alps_tdlb7_tuner_set_params() local
1729 if (i2c_transfer(&av7110->i2c_adap, &msg, 1) != 1) in alps_tdlb7_tuner_set_params()
1737 struct av7110* av7110 = fe->dvb->priv; in alps_tdlb7_request_firmware() local
1739 return request_firmware(fw, name, &av7110->dev->pci->dev); in alps_tdlb7_request_firmware()
1848 struct av7110* av7110 = fe->dvb->priv; in nexusca_stv0297_tuner_set_params() local
1874 if (i2c_transfer(&av7110->i2c_adap, &msg, 1) != 1) { in nexusca_stv0297_tuner_set_params()
1883 if (i2c_transfer(&av7110->i2c_adap, &readmsg, 1) == 1) in nexusca_stv0297_tuner_set_params()
1904 struct av7110* av7110 = fe->dvb->priv; in grundig_29504_401_tuner_set_params() local
1939 if (i2c_transfer (&av7110->i2c_adap, &msg, 1) != 1) return -EIO; in grundig_29504_401_tuner_set_params()
1949 static int av7110_fe_lock_fix(struct av7110* av7110, fe_status_t status) in av7110_fe_lock_fix() argument
1954 av7110->fe_status = status; in av7110_fe_lock_fix()
1956 if (av7110->fe_synced == synced) in av7110_fe_lock_fix()
1959 if (av7110->playing) { in av7110_fe_lock_fix()
1960 av7110->fe_synced = synced; in av7110_fe_lock_fix()
1964 if (mutex_lock_interruptible(&av7110->pid_mutex)) in av7110_fe_lock_fix()
1968 ret = SetPIDs(av7110, av7110->pids[DMX_PES_VIDEO], in av7110_fe_lock_fix()
1969 av7110->pids[DMX_PES_AUDIO], in av7110_fe_lock_fix()
1970 av7110->pids[DMX_PES_TELETEXT], 0, in av7110_fe_lock_fix()
1971 av7110->pids[DMX_PES_PCR]); in av7110_fe_lock_fix()
1973 ret = av7110_fw_cmd(av7110, COMTYPE_PIDFILTER, Scan, 0); in av7110_fe_lock_fix()
1975 ret = SetPIDs(av7110, 0, 0, 0, 0, 0); in av7110_fe_lock_fix()
1977 ret = av7110_fw_cmd(av7110, COMTYPE_PID_FILTER, FlushTSQueue, 0); in av7110_fe_lock_fix()
1979 ret = av7110_wait_msgstate(av7110, GPMQBusy); in av7110_fe_lock_fix()
1984 av7110->fe_synced = synced; in av7110_fe_lock_fix()
1986 mutex_unlock(&av7110->pid_mutex); in av7110_fe_lock_fix()
1992 struct av7110* av7110 = fe->dvb->priv; in av7110_fe_set_frontend() local
1994 int ret = av7110_fe_lock_fix(av7110, 0); in av7110_fe_set_frontend()
1996 ret = av7110->fe_set_frontend(fe); in av7110_fe_set_frontend()
2003 struct av7110* av7110 = fe->dvb->priv; in av7110_fe_init() local
2005 int ret = av7110_fe_lock_fix(av7110, 0); in av7110_fe_init()
2007 ret = av7110->fe_init(fe); in av7110_fe_init()
2013 struct av7110* av7110 = fe->dvb->priv; in av7110_fe_read_status() local
2016 int ret = av7110->fe_read_status(fe, status); in av7110_fe_read_status()
2018 if (((*status ^ av7110->fe_status) & FE_HAS_LOCK) && (*status & FE_HAS_LOCK)) in av7110_fe_read_status()
2019 ret = av7110_fe_lock_fix(av7110, *status); in av7110_fe_read_status()
2025 struct av7110* av7110 = fe->dvb->priv; in av7110_fe_diseqc_reset_overload() local
2027 int ret = av7110_fe_lock_fix(av7110, 0); in av7110_fe_diseqc_reset_overload()
2029 ret = av7110->fe_diseqc_reset_overload(fe); in av7110_fe_diseqc_reset_overload()
2036 struct av7110* av7110 = fe->dvb->priv; in av7110_fe_diseqc_send_master_cmd() local
2038 int ret = av7110_fe_lock_fix(av7110, 0); in av7110_fe_diseqc_send_master_cmd()
2040 av7110->saved_master_cmd = *cmd; in av7110_fe_diseqc_send_master_cmd()
2041 ret = av7110->fe_diseqc_send_master_cmd(fe, cmd); in av7110_fe_diseqc_send_master_cmd()
2048 struct av7110* av7110 = fe->dvb->priv; in av7110_fe_diseqc_send_burst() local
2050 int ret = av7110_fe_lock_fix(av7110, 0); in av7110_fe_diseqc_send_burst()
2052 av7110->saved_minicmd = minicmd; in av7110_fe_diseqc_send_burst()
2053 ret = av7110->fe_diseqc_send_burst(fe, minicmd); in av7110_fe_diseqc_send_burst()
2060 struct av7110* av7110 = fe->dvb->priv; in av7110_fe_set_tone() local
2062 int ret = av7110_fe_lock_fix(av7110, 0); in av7110_fe_set_tone()
2064 av7110->saved_tone = tone; in av7110_fe_set_tone()
2065 ret = av7110->fe_set_tone(fe, tone); in av7110_fe_set_tone()
2072 struct av7110* av7110 = fe->dvb->priv; in av7110_fe_set_voltage() local
2074 int ret = av7110_fe_lock_fix(av7110, 0); in av7110_fe_set_voltage()
2076 av7110->saved_voltage = voltage; in av7110_fe_set_voltage()
2077 ret = av7110->fe_set_voltage(fe, voltage); in av7110_fe_set_voltage()
2084 struct av7110* av7110 = fe->dvb->priv; in av7110_fe_dishnetwork_send_legacy_command() local
2086 int ret = av7110_fe_lock_fix(av7110, 0); in av7110_fe_dishnetwork_send_legacy_command()
2088 ret = av7110->fe_dishnetwork_send_legacy_command(fe, cmd); in av7110_fe_dishnetwork_send_legacy_command()
2092 static void dvb_s_recover(struct av7110* av7110) in dvb_s_recover() argument
2094 av7110_fe_init(av7110->fe); in dvb_s_recover()
2096 av7110_fe_set_voltage(av7110->fe, av7110->saved_voltage); in dvb_s_recover()
2097 if (av7110->saved_master_cmd.msg_len) { in dvb_s_recover()
2099 av7110_fe_diseqc_send_master_cmd(av7110->fe, &av7110->saved_master_cmd); in dvb_s_recover()
2102 av7110_fe_diseqc_send_burst(av7110->fe, av7110->saved_minicmd); in dvb_s_recover()
2104 av7110_fe_set_tone(av7110->fe, av7110->saved_tone); in dvb_s_recover()
2106 av7110_fe_set_frontend(av7110->fe); in dvb_s_recover()
2109 static u8 read_pwm(struct av7110* av7110) in read_pwm() argument
2116 if ((i2c_transfer(&av7110->i2c_adap, msg, 2) != 2) || (pwm == 0xff)) in read_pwm()
2122 static int frontend_init(struct av7110 *av7110) in frontend_init() argument
2126 if (av7110->dev->pci->subsystem_vendor == 0x110a) { in frontend_init()
2127 switch(av7110->dev->pci->subsystem_device) { in frontend_init()
2129 av7110->fe = dvb_attach(ves1820_attach, &philips_cd1516_config, in frontend_init()
2130 &av7110->i2c_adap, read_pwm(av7110)); in frontend_init()
2131 if (av7110->fe) { in frontend_init()
2132 av7110->fe->ops.tuner_ops.set_params = philips_cd1516_tuner_set_params; in frontend_init()
2137 } else if (av7110->dev->pci->subsystem_vendor == 0x13c2) { in frontend_init()
2138 switch(av7110->dev->pci->subsystem_device) { in frontend_init()
2144 av7110->fe = dvb_attach(ves1x93_attach, &alps_bsrv2_config, &av7110->i2c_adap); in frontend_init()
2145 if (av7110->fe) { in frontend_init()
2146 av7110->fe->ops.tuner_ops.set_params = alps_bsrv2_tuner_set_params; in frontend_init()
2147 av7110->fe->ops.diseqc_send_master_cmd = av7110_diseqc_send_master_cmd; in frontend_init()
2148 av7110->fe->ops.diseqc_send_burst = av7110_diseqc_send_burst; in frontend_init()
2149 av7110->fe->ops.set_tone = av7110_set_tone; in frontend_init()
2150 av7110->recover = dvb_s_recover; in frontend_init()
2155 av7110->fe = dvb_attach(stv0299_attach, &alps_bsru6_config, &av7110->i2c_adap); in frontend_init()
2156 if (av7110->fe) { in frontend_init()
2157 av7110->fe->ops.tuner_ops.set_params = alps_bsru6_tuner_set_params; in frontend_init()
2158 av7110->fe->tuner_priv = &av7110->i2c_adap; in frontend_init()
2160 av7110->fe->ops.diseqc_send_master_cmd = av7110_diseqc_send_master_cmd; in frontend_init()
2161 av7110->fe->ops.diseqc_send_burst = av7110_diseqc_send_burst; in frontend_init()
2162 av7110->fe->ops.set_tone = av7110_set_tone; in frontend_init()
2163 av7110->recover = dvb_s_recover; in frontend_init()
2168 av7110->fe = dvb_attach(tda8083_attach, &grundig_29504_451_config, &av7110->i2c_adap); in frontend_init()
2169 if (av7110->fe) { in frontend_init()
2170 av7110->fe->ops.tuner_ops.set_params = grundig_29504_451_tuner_set_params; in frontend_init()
2171 av7110->fe->ops.diseqc_send_master_cmd = av7110_diseqc_send_master_cmd; in frontend_init()
2172 av7110->fe->ops.diseqc_send_burst = av7110_diseqc_send_burst; in frontend_init()
2173 av7110->fe->ops.set_tone = av7110_set_tone; in frontend_init()
2174 av7110->recover = dvb_s_recover; in frontend_init()
2179 switch(av7110->dev->pci->subsystem_device) { in frontend_init()
2182 av7110->fe = dvb_attach(ves1820_attach, &philips_cd1516_config, &av7110->i2c_adap, in frontend_init()
2183 read_pwm(av7110)); in frontend_init()
2184 if (av7110->fe) { in frontend_init()
2185 av7110->fe->ops.tuner_ops.set_params = philips_cd1516_tuner_set_params; in frontend_init()
2190 av7110->fe = dvb_attach(ves1820_attach, &alps_tdbe2_config, &av7110->i2c_adap, in frontend_init()
2191 read_pwm(av7110)); in frontend_init()
2192 if (av7110->fe) { in frontend_init()
2193 av7110->fe->ops.tuner_ops.set_params = alps_tdbe2_tuner_set_params; in frontend_init()
2201 av7110->fe = dvb_attach(sp8870_attach, &alps_tdlb7_config, &av7110->i2c_adap); in frontend_init()
2202 if (av7110->fe) { in frontend_init()
2203 av7110->fe->ops.tuner_ops.set_params = alps_tdlb7_tuner_set_params; in frontend_init()
2210 av7110->fe = dvb_attach(l64781_attach, &grundig_29504_401_config, &av7110->i2c_adap); in frontend_init()
2211 if (av7110->fe) in frontend_init()
2212 av7110->fe->ops.tuner_ops.set_params = grundig_29504_401_tuner_set_params; in frontend_init()
2217 av7110->fe = dvb_attach(ves1820_attach, &alps_tdbe2_config, &av7110->i2c_adap, read_pwm(av7110)); in frontend_init()
2218 if (av7110->fe) { in frontend_init()
2219 av7110->fe->ops.tuner_ops.set_params = alps_tdbe2_tuner_set_params; in frontend_init()
2225 av7110->fe = dvb_attach(ves1x93_attach, &alps_bsrv2_config, &av7110->i2c_adap); in frontend_init()
2226 if (av7110->fe) { in frontend_init()
2227 av7110->fe->ops.tuner_ops.set_params = alps_bsrv2_tuner_set_params; in frontend_init()
2228 av7110->fe->ops.diseqc_send_master_cmd = av7110_diseqc_send_master_cmd; in frontend_init()
2229 av7110->fe->ops.diseqc_send_burst = av7110_diseqc_send_burst; in frontend_init()
2230 av7110->fe->ops.set_tone = av7110_set_tone; in frontend_init()
2231 av7110->recover = dvb_s_recover; in frontend_init()
2237 av7110->fe = dvb_attach(tda8083_attach, &grundig_29504_451_config, &av7110->i2c_adap); in frontend_init()
2238 if (av7110->fe) { in frontend_init()
2239 av7110->fe->ops.tuner_ops.set_params = grundig_29504_451_tuner_set_params; in frontend_init()
2240 av7110->fe->ops.diseqc_send_master_cmd = av7110_diseqc_send_master_cmd; in frontend_init()
2241 av7110->fe->ops.diseqc_send_burst = av7110_diseqc_send_burst; in frontend_init()
2242 av7110->fe->ops.set_tone = av7110_set_tone; in frontend_init()
2243 av7110->recover = dvb_s_recover; in frontend_init()
2249 av7110->fe = dvb_attach(stv0297_attach, &nexusca_stv0297_config, &av7110->i2c_adap); in frontend_init()
2250 if (av7110->fe) { in frontend_init()
2251 av7110->fe->ops.tuner_ops.set_params = nexusca_stv0297_tuner_set_params; in frontend_init()
2254 saa7146_setgpio(av7110->dev, 1, SAA7146_GPIO_OUTLO); // TDA9819 pin9(STD) in frontend_init()
2255 saa7146_setgpio(av7110->dev, 3, SAA7146_GPIO_OUTLO); // TDA9819 pin30(VIF) in frontend_init()
2258 av7110->dev->i2c_bitrate = SAA7146_I2C_BUS_BIT_RATE_240; in frontend_init()
2265 av7110->fe = dvb_attach(stv0299_attach, &alps_bsbe1_config, &av7110->i2c_adap); in frontend_init()
2266 if (av7110->fe) { in frontend_init()
2267 av7110->fe->ops.tuner_ops.set_params = alps_bsbe1_tuner_set_params; in frontend_init()
2268 av7110->fe->tuner_priv = &av7110->i2c_adap; in frontend_init()
2270 if (dvb_attach(lnbp21_attach, av7110->fe, &av7110->i2c_adap, 0, 0) == NULL) { in frontend_init()
2272 if (av7110->fe->ops.release) in frontend_init()
2273 av7110->fe->ops.release(av7110->fe); in frontend_init()
2274 av7110->fe = NULL; in frontend_init()
2276 av7110->fe->ops.dishnetwork_send_legacy_command = NULL; in frontend_init()
2277 av7110->recover = dvb_s_recover; in frontend_init()
2284 if (!av7110->fe) { in frontend_init()
2288 av7110->dev->pci->vendor, in frontend_init()
2289 av7110->dev->pci->device, in frontend_init()
2290 av7110->dev->pci->subsystem_vendor, in frontend_init()
2291 av7110->dev->pci->subsystem_device); in frontend_init()
2293 FE_FUNC_OVERRIDE(av7110->fe->ops.init, av7110->fe_init, av7110_fe_init); in frontend_init()
2294 FE_FUNC_OVERRIDE(av7110->fe->ops.read_status, av7110->fe_read_status, av7110_fe_read_status); in frontend_init()
2295 …FE_FUNC_OVERRIDE(av7110->fe->ops.diseqc_reset_overload, av7110->fe_diseqc_reset_overload, av7110_f… in frontend_init()
2296 …FE_FUNC_OVERRIDE(av7110->fe->ops.diseqc_send_master_cmd, av7110->fe_diseqc_send_master_cmd, av7110… in frontend_init()
2297 …FE_FUNC_OVERRIDE(av7110->fe->ops.diseqc_send_burst, av7110->fe_diseqc_send_burst, av7110_fe_diseqc… in frontend_init()
2298 FE_FUNC_OVERRIDE(av7110->fe->ops.set_tone, av7110->fe_set_tone, av7110_fe_set_tone); in frontend_init()
2299 FE_FUNC_OVERRIDE(av7110->fe->ops.set_voltage, av7110->fe_set_voltage, av7110_fe_set_voltage); in frontend_init()
2300 …FE_FUNC_OVERRIDE(av7110->fe->ops.dishnetwork_send_legacy_command, av7110->fe_dishnetwork_send_lega… in frontend_init()
2301 FE_FUNC_OVERRIDE(av7110->fe->ops.set_frontend, av7110->fe_set_frontend, av7110_fe_set_frontend); in frontend_init()
2303 ret = dvb_register_frontend(&av7110->dvb_adapter, av7110->fe); in frontend_init()
2306 dvb_frontend_detach(av7110->fe); in frontend_init()
2307 av7110->fe = NULL; in frontend_init()
2378 struct av7110 *av7110; in av7110_attach() local
2474 av7110 = kzalloc(sizeof(struct av7110), GFP_KERNEL); in av7110_attach()
2475 if (!av7110) { in av7110_attach()
2480 av7110->card_name = (char*) pci_ext->ext_priv; in av7110_attach()
2481 av7110->dev = dev; in av7110_attach()
2482 dev->ext_priv = av7110; in av7110_attach()
2484 ret = get_firmware(av7110); in av7110_attach()
2488 ret = dvb_register_adapter(&av7110->dvb_adapter, av7110->card_name, in av7110_attach()
2497 strlcpy(av7110->i2c_adap.name, pci_ext->ext_priv, sizeof(av7110->i2c_adap.name)); in av7110_attach()
2499 saa7146_i2c_adapter_prepare(dev, &av7110->i2c_adap, SAA7146_I2C_BUS_BIT_RATE_120); /* 275 kHz */ in av7110_attach()
2501 ret = i2c_add_adapter(&av7110->i2c_adap); in av7110_attach()
2505 ttpci_eeprom_parse_mac(&av7110->i2c_adap, in av7110_attach()
2506 av7110->dvb_adapter.proposed_mac); in av7110_attach()
2511 av7110->full_ts = true; in av7110_attach()
2514 if (i2c_readreg(av7110, 0xaa, 0) == 0x4f && i2c_readreg(av7110, 0xaa, 1) == 0x45) { in av7110_attach()
2515 u8 flags = i2c_readreg(av7110, 0xaa, 2); in av7110_attach()
2517 av7110->full_ts = true; in av7110_attach()
2520 if (av7110->full_ts) { in av7110_attach()
2522 spin_lock_init(&av7110->feedlock1); in av7110_attach()
2523 av7110->grabbing = saa7146_vmalloc_build_pgtable(pdev, length, in av7110_attach()
2524 &av7110->pt); in av7110_attach()
2525 if (!av7110->grabbing) in av7110_attach()
2543 saa7146_write(dev, BASE_PAGE3, av7110->pt.dma | ME1 | 0x90); in av7110_attach()
2547 tasklet_init(&av7110->vpe_tasklet, vpeirq, (unsigned long) av7110); in av7110_attach()
2550 spin_lock_init(&av7110->feedlock1); in av7110_attach()
2551 av7110->grabbing = saa7146_vmalloc_build_pgtable(pdev, length, in av7110_attach()
2552 &av7110->pt); in av7110_attach()
2553 if (!av7110->grabbing) in av7110_attach()
2566 saa7146_write(dev, BASE_PAGE3, av7110->pt.dma | ME1 | 0x90); in av7110_attach()
2628 tasklet_init (&av7110->vpe_tasklet, vpeirq, (unsigned long) av7110); in av7110_attach()
2643 tasklet_init (&av7110->debi_tasklet, debiirq, (unsigned long) av7110); in av7110_attach()
2644 tasklet_init (&av7110->gpio_tasklet, gpioirq, (unsigned long) av7110); in av7110_attach()
2646 mutex_init(&av7110->pid_mutex); in av7110_attach()
2649 spin_lock_init(&av7110->debilock); in av7110_attach()
2650 mutex_init(&av7110->dcomlock); in av7110_attach()
2651 av7110->debitype = -1; in av7110_attach()
2654 av7110->osdwin = 1; in av7110_attach()
2655 mutex_init(&av7110->osd_mutex); in av7110_attach()
2658 av7110->vidmode = tv_standard == 1 ? AV7110_VIDEO_MODE_NTSC in av7110_attach()
2662 init_waitqueue_head(&av7110->arm_wait); in av7110_attach()
2663 av7110->arm_thread = NULL; in av7110_attach()
2666 av7110->debi_virt = pci_alloc_consistent(pdev, 8192, &av7110->debi_bus); in av7110_attach()
2667 if (!av7110->debi_virt) in av7110_attach()
2671 av7110->iobuf = vmalloc(AVOUTLEN+AOUTLEN+BMPLEN+4*IPACKS); in av7110_attach()
2672 if (!av7110->iobuf) in av7110_attach()
2675 ret = av7110_av_init(av7110); in av7110_attach()
2680 av7110->bmpbuf = av7110->iobuf+AVOUTLEN+AOUTLEN; in av7110_attach()
2681 init_waitqueue_head(&av7110->bmpq); in av7110_attach()
2683 ret = av7110_ca_init(av7110); in av7110_attach()
2688 ret = av7110_bootarm(av7110); in av7110_attach()
2692 ret = av7110_firmversion(av7110); in av7110_attach()
2696 if (FW_VERSION(av7110->arm_app)<0x2501) in av7110_attach()
2698 "System might be unstable!\n", FW_VERSION(av7110->arm_app)); in av7110_attach()
2700 thread = kthread_run(arm_thread, (void *) av7110, "arm_mon"); in av7110_attach()
2705 av7110->arm_thread = thread; in av7110_attach()
2708 av7110->mixer.volume_left = volume; in av7110_attach()
2709 av7110->mixer.volume_right = volume; in av7110_attach()
2711 ret = av7110_register(av7110); in av7110_attach()
2715 init_av7110_av(av7110); in av7110_attach()
2720 ret = av7110_init_v4l(av7110); in av7110_attach()
2724 av7110->dvb_adapter.priv = av7110; in av7110_attach()
2725 ret = frontend_init(av7110); in av7110_attach()
2729 mutex_init(&av7110->ioctl_mutex); in av7110_attach()
2732 av7110_ir_init(av7110); in av7110_attach()
2740 av7110_exit_v4l(av7110); in av7110_attach()
2742 dvb_unregister(av7110); in av7110_attach()
2744 av7110_arm_sync(av7110); in av7110_attach()
2748 av7110_ca_exit(av7110); in av7110_attach()
2750 av7110_av_exit(av7110); in av7110_attach()
2752 vfree(av7110->iobuf); in av7110_attach()
2754 pci_free_consistent(pdev, 8192, av7110->debi_virt, av7110->debi_bus); in av7110_attach()
2756 if (av7110->grabbing) in av7110_attach()
2757 saa7146_vfree_destroy_pgtable(pdev, av7110->grabbing, &av7110->pt); in av7110_attach()
2759 i2c_del_adapter(&av7110->i2c_adap); in av7110_attach()
2761 dvb_unregister_adapter(&av7110->dvb_adapter); in av7110_attach()
2763 put_firmware(av7110); in av7110_attach()
2765 kfree(av7110); in av7110_attach()
2771 struct av7110 *av7110 = saa->ext_priv; in av7110_detach() local
2772 dprintk(4, "%p\n", av7110); in av7110_detach()
2775 av7110_ir_exit(av7110); in av7110_detach()
2777 if (budgetpatch || av7110->full_ts) { in av7110_detach()
2788 tasklet_kill(&av7110->vpe_tasklet); in av7110_detach()
2789 saa7146_vfree_destroy_pgtable(saa->pci, av7110->grabbing, &av7110->pt); in av7110_detach()
2791 av7110_exit_v4l(av7110); in av7110_detach()
2793 av7110_arm_sync(av7110); in av7110_detach()
2795 tasklet_kill(&av7110->debi_tasklet); in av7110_detach()
2796 tasklet_kill(&av7110->gpio_tasklet); in av7110_detach()
2798 dvb_unregister(av7110); in av7110_detach()
2803 av7110_ca_exit(av7110); in av7110_detach()
2804 av7110_av_exit(av7110); in av7110_detach()
2806 vfree(av7110->iobuf); in av7110_detach()
2807 pci_free_consistent(saa->pci, 8192, av7110->debi_virt, in av7110_detach()
2808 av7110->debi_bus); in av7110_detach()
2810 i2c_del_adapter(&av7110->i2c_adap); in av7110_detach()
2812 dvb_unregister_adapter (&av7110->dvb_adapter); in av7110_detach()
2816 put_firmware(av7110); in av7110_detach()
2818 kfree(av7110); in av7110_detach()
2828 struct av7110 *av7110 = dev->ext_priv; in av7110_irq() local
2853 SAA7146_IER_DISABLE(av7110->dev, MASK_19); in av7110_irq()
2854 SAA7146_ISR_CLEAR(av7110->dev, MASK_19); in av7110_irq()
2855 tasklet_schedule(&av7110->debi_tasklet); in av7110_irq()
2860 tasklet_schedule(&av7110->gpio_tasklet); in av7110_irq()
2864 tasklet_schedule(&av7110->vpe_tasklet); in av7110_irq()