• Home
  • Raw
  • Download

Lines Matching refs:input

243 		pbuf = dev->input[i].pbuf;  in ddb_address_table()
244 for (j = 0; j < dev->input[i].dma_buf_num; j++) { in ddb_address_table()
296 if (io_alloc(dev->pdev, port->input[0]->vbuf, in ddb_buffers_alloc()
297 port->input[0]->pbuf, in ddb_buffers_alloc()
298 port->input[0]->dma_buf_size, in ddb_buffers_alloc()
299 port->input[0]->dma_buf_num) < 0) in ddb_buffers_alloc()
301 if (io_alloc(dev->pdev, port->input[1]->vbuf, in ddb_buffers_alloc()
302 port->input[1]->pbuf, in ddb_buffers_alloc()
303 port->input[1]->dma_buf_size, in ddb_buffers_alloc()
304 port->input[1]->dma_buf_num) < 0) in ddb_buffers_alloc()
308 if (io_alloc(dev->pdev, port->input[0]->vbuf, in ddb_buffers_alloc()
309 port->input[0]->pbuf, in ddb_buffers_alloc()
310 port->input[0]->dma_buf_size, in ddb_buffers_alloc()
311 port->input[0]->dma_buf_num) < 0) in ddb_buffers_alloc()
334 io_free(dev->pdev, port->input[0]->vbuf, in ddb_buffers_free()
335 port->input[0]->pbuf, in ddb_buffers_free()
336 port->input[0]->dma_buf_size, in ddb_buffers_free()
337 port->input[0]->dma_buf_num); in ddb_buffers_free()
338 io_free(dev->pdev, port->input[1]->vbuf, in ddb_buffers_free()
339 port->input[1]->pbuf, in ddb_buffers_free()
340 port->input[1]->dma_buf_size, in ddb_buffers_free()
341 port->input[1]->dma_buf_num); in ddb_buffers_free()
349 static void ddb_input_start(struct ddb_input *input) in ddb_input_start() argument
351 struct ddb *dev = input->port->dev; in ddb_input_start()
353 spin_lock_irq(&input->lock); in ddb_input_start()
354 input->cbuf = 0; in ddb_input_start()
355 input->coff = 0; in ddb_input_start()
358 ddbwritel(0, TS_INPUT_CONTROL(input->nr)); in ddb_input_start()
359 ddbwritel(2, TS_INPUT_CONTROL(input->nr)); in ddb_input_start()
360 ddbwritel(0, TS_INPUT_CONTROL(input->nr)); in ddb_input_start()
363 (input->dma_buf_num << 11) | in ddb_input_start()
364 (input->dma_buf_size >> 7), in ddb_input_start()
365 DMA_BUFFER_SIZE(input->nr)); in ddb_input_start()
366 ddbwritel(0, DMA_BUFFER_ACK(input->nr)); in ddb_input_start()
369 ddbwritel(3, DMA_BUFFER_CONTROL(input->nr)); in ddb_input_start()
370 ddbwritel(9, TS_INPUT_CONTROL(input->nr)); in ddb_input_start()
371 input->running = 1; in ddb_input_start()
372 spin_unlock_irq(&input->lock); in ddb_input_start()
375 static void ddb_input_stop(struct ddb_input *input) in ddb_input_stop() argument
377 struct ddb *dev = input->port->dev; in ddb_input_stop()
379 spin_lock_irq(&input->lock); in ddb_input_stop()
380 ddbwritel(0, TS_INPUT_CONTROL(input->nr)); in ddb_input_stop()
381 ddbwritel(0, DMA_BUFFER_CONTROL(input->nr)); in ddb_input_stop()
382 input->running = 0; in ddb_input_stop()
383 spin_unlock_irq(&input->lock); in ddb_input_stop()
490 static u32 ddb_input_avail(struct ddb_input *input) in ddb_input_avail() argument
492 struct ddb *dev = input->port->dev; in ddb_input_avail()
493 u32 idx, off, stat = input->stat; in ddb_input_avail()
494 u32 ctrl = ddbreadl(DMA_BUFFER_CONTROL(input->nr)); in ddb_input_avail()
501 ddbwritel(input->stat, DMA_BUFFER_ACK(input->nr)); in ddb_input_avail()
504 if (input->cbuf != idx) in ddb_input_avail()
509 static ssize_t ddb_input_read(struct ddb_input *input, __user u8 *buf, size_t count) in ddb_input_read() argument
511 struct ddb *dev = input->port->dev; in ddb_input_read()
513 u32 idx, free, stat = input->stat; in ddb_input_read()
519 if (input->cbuf == idx) in ddb_input_read()
521 free = input->dma_buf_size - input->coff; in ddb_input_read()
524 ret = copy_to_user(buf, input->vbuf[input->cbuf] + in ddb_input_read()
525 input->coff, free); in ddb_input_read()
528 input->coff += free; in ddb_input_read()
529 if (input->coff == input->dma_buf_size) { in ddb_input_read()
530 input->coff = 0; in ddb_input_read()
531 input->cbuf = (input->cbuf+1) % input->dma_buf_num; in ddb_input_read()
534 ddbwritel((input->cbuf << 11) | (input->coff >> 7), in ddb_input_read()
535 DMA_BUFFER_ACK(input->nr)); in ddb_input_read()
550 if (dev->input[i].fe == fe)
551 return &dev->input[i];
559 struct ddb_input *input = fe->sec_priv; in drxk_gate_ctrl() local
560 struct ddb_port *port = input->port; in drxk_gate_ctrl()
565 status = input->gate_ctrl(fe, 1); in drxk_gate_ctrl()
567 status = input->gate_ctrl(fe, 0); in drxk_gate_ctrl()
573 static int demod_attach_drxk(struct ddb_input *input) in demod_attach_drxk() argument
575 struct i2c_adapter *i2c = &input->port->i2c->adap; in demod_attach_drxk()
582 config.adr = 0x29 + (input->nr & 1); in demod_attach_drxk()
584 fe = input->fe = dvb_attach(drxk_attach, &config, i2c); in demod_attach_drxk()
585 if (!input->fe) { in demod_attach_drxk()
589 fe->sec_priv = input; in demod_attach_drxk()
590 input->gate_ctrl = fe->ops.i2c_gate_ctrl; in demod_attach_drxk()
595 static int tuner_attach_tda18271(struct ddb_input *input) in tuner_attach_tda18271() argument
597 struct i2c_adapter *i2c = &input->port->i2c->adap; in tuner_attach_tda18271()
600 if (input->fe->ops.i2c_gate_ctrl) in tuner_attach_tda18271()
601 input->fe->ops.i2c_gate_ctrl(input->fe, 1); in tuner_attach_tda18271()
602 fe = dvb_attach(tda18271c2dd_attach, input->fe, i2c, 0x60); in tuner_attach_tda18271()
607 if (input->fe->ops.i2c_gate_ctrl) in tuner_attach_tda18271()
608 input->fe->ops.i2c_gate_ctrl(input->fe, 0); in tuner_attach_tda18271()
666 static int demod_attach_stv0900(struct ddb_input *input, int type) in demod_attach_stv0900() argument
668 struct i2c_adapter *i2c = &input->port->i2c->adap; in demod_attach_stv0900()
671 input->fe = dvb_attach(stv090x_attach, feconf, i2c, in demod_attach_stv0900()
672 (input->nr & 1) ? STV090x_DEMODULATOR_1 in demod_attach_stv0900()
674 if (!input->fe) { in demod_attach_stv0900()
678 if (!dvb_attach(lnbh24_attach, input->fe, i2c, 0, in demod_attach_stv0900()
679 0, (input->nr & 1) ? in demod_attach_stv0900()
687 static int tuner_attach_stv6110(struct ddb_input *input, int type) in tuner_attach_stv6110() argument
689 struct i2c_adapter *i2c = &input->port->i2c->adap; in tuner_attach_stv6110()
691 struct stv6110x_config *tunerconf = (input->nr & 1) ? in tuner_attach_stv6110()
695 ctl = dvb_attach(stv6110x_attach, input->fe, tunerconf, i2c); in tuner_attach_stv6110()
701 input->nr, tunerconf->addr); in tuner_attach_stv6110()
761 struct ddb_input *input = dvbdmx->priv; in start_feed() local
763 if (!input->users) in start_feed()
764 ddb_input_start(input); in start_feed()
766 return ++input->users; in start_feed()
772 struct ddb_input *input = dvbdmx->priv; in stop_feed() local
774 if (--input->users) in stop_feed()
775 return input->users; in stop_feed()
777 ddb_input_stop(input); in stop_feed()
782 static void dvb_input_detach(struct ddb_input *input) in dvb_input_detach() argument
784 struct dvb_adapter *adap = &input->adap; in dvb_input_detach()
785 struct dvb_demux *dvbdemux = &input->demux; in dvb_input_detach()
787 switch (input->attached) { in dvb_input_detach()
789 if (input->fe2) in dvb_input_detach()
790 dvb_unregister_frontend(input->fe2); in dvb_input_detach()
791 if (input->fe) { in dvb_input_detach()
792 dvb_unregister_frontend(input->fe); in dvb_input_detach()
793 dvb_frontend_detach(input->fe); in dvb_input_detach()
794 input->fe = NULL; in dvb_input_detach()
797 dvb_net_release(&input->dvbnet); in dvb_input_detach()
802 &input->hw_frontend); in dvb_input_detach()
804 &input->mem_frontend); in dvb_input_detach()
805 dvb_dmxdev_release(&input->dmxdev); in dvb_input_detach()
808 dvb_dmx_release(&input->demux); in dvb_input_detach()
813 input->attached = 0; in dvb_input_detach()
816 static int dvb_input_attach(struct ddb_input *input) in dvb_input_attach() argument
819 struct ddb_port *port = input->port; in dvb_input_attach()
820 struct dvb_adapter *adap = &input->adap; in dvb_input_attach()
821 struct dvb_demux *dvbdemux = &input->demux; in dvb_input_attach()
824 &input->port->dev->pdev->dev, in dvb_input_attach()
831 input->attached = 1; in dvb_input_attach()
835 stop_feed, input); in dvb_input_attach()
838 input->attached = 2; in dvb_input_attach()
840 ret = my_dvb_dmxdev_ts_card_init(&input->dmxdev, &input->demux, in dvb_input_attach()
841 &input->hw_frontend, in dvb_input_attach()
842 &input->mem_frontend, adap); in dvb_input_attach()
845 input->attached = 3; in dvb_input_attach()
847 ret = dvb_net_init(adap, &input->dvbnet, input->dmxdev.demux); in dvb_input_attach()
850 input->attached = 4; in dvb_input_attach()
852 input->fe = NULL; in dvb_input_attach()
855 if (demod_attach_stv0900(input, 0) < 0) in dvb_input_attach()
857 if (tuner_attach_stv6110(input, 0) < 0) in dvb_input_attach()
859 if (input->fe) { in dvb_input_attach()
860 if (dvb_register_frontend(adap, input->fe) < 0) in dvb_input_attach()
865 if (demod_attach_stv0900(input, 1) < 0) in dvb_input_attach()
867 if (tuner_attach_stv6110(input, 1) < 0) in dvb_input_attach()
869 if (input->fe) { in dvb_input_attach()
870 if (dvb_register_frontend(adap, input->fe) < 0) in dvb_input_attach()
875 if (demod_attach_drxk(input) < 0) in dvb_input_attach()
877 if (tuner_attach_tda18271(input) < 0) in dvb_input_attach()
879 if (dvb_register_frontend(adap, input->fe) < 0) in dvb_input_attach()
881 if (input->fe2) { in dvb_input_attach()
882 if (dvb_register_frontend(adap, input->fe2) < 0) in dvb_input_attach()
884 input->fe2->tuner_priv = input->fe->tuner_priv; in dvb_input_attach()
885 memcpy(&input->fe2->ops.tuner_ops, in dvb_input_attach()
886 &input->fe->ops.tuner_ops, in dvb_input_attach()
891 input->attached = 5; in dvb_input_attach()
928 struct ddb_input *input = output->port->input[0]; in ts_read() local
934 if (ddb_input_avail(input) < 188) { in ts_read()
938 input->wq, ddb_input_avail(input) >= 188) < 0) in ts_read()
941 read = ddb_input_read(input, buf, left); in ts_read()
993 struct ddb_input *input = (struct ddb_input *) data; in input_tasklet() local
994 struct ddb *dev = input->port->dev; in input_tasklet()
996 spin_lock(&input->lock); in input_tasklet()
997 if (!input->running) { in input_tasklet()
998 spin_unlock(&input->lock); in input_tasklet()
1001 input->stat = ddbreadl(DMA_BUFFER_CURRENT(input->nr)); in input_tasklet()
1003 if (input->port->class == DDB_PORT_TUNER) { in input_tasklet()
1004 if (4&ddbreadl(DMA_BUFFER_CONTROL(input->nr))) in input_tasklet()
1005 printk(KERN_ERR "Overflow input %d\n", input->nr); in input_tasklet()
1006 while (input->cbuf != ((input->stat >> 11) & 0x1f) in input_tasklet()
1007 || (4&ddbreadl(DMA_BUFFER_CONTROL(input->nr)))) { in input_tasklet()
1008 dvb_dmx_swfilter_packets(&input->demux, in input_tasklet()
1009 input->vbuf[input->cbuf], in input_tasklet()
1010 input->dma_buf_size / 188); in input_tasklet()
1012 input->cbuf = (input->cbuf + 1) % input->dma_buf_num; in input_tasklet()
1013 ddbwritel((input->cbuf << 11), in input_tasklet()
1014 DMA_BUFFER_ACK(input->nr)); in input_tasklet()
1015 input->stat = ddbreadl(DMA_BUFFER_CURRENT(input->nr)); in input_tasklet()
1018 if (input->port->class == DDB_PORT_CI) in input_tasklet()
1019 wake_up(&input->wq); in input_tasklet()
1020 spin_unlock(&input->lock); in input_tasklet()
1062 ddb_input_start(port->input[0]); in ddb_ci_attach()
1078 ret = dvb_input_attach(port->input[0]); in ddb_port_attach()
1081 ret = dvb_input_attach(port->input[1]); in ddb_port_attach()
1117 dvb_input_detach(port->input[0]); in ddb_ports_detach()
1118 dvb_input_detach(port->input[1]); in ddb_ports_detach()
1123 ddb_input_stop(port->input[0]); in ddb_ports_detach()
1204 struct ddb_input *input = &dev->input[nr]; in ddb_input_init() local
1206 input->nr = nr; in ddb_input_init()
1207 input->port = port; in ddb_input_init()
1208 input->dma_buf_num = INPUT_DMA_BUFS; in ddb_input_init()
1209 input->dma_buf_size = INPUT_DMA_SIZE; in ddb_input_init()
1214 tasklet_init(&input->tasklet, input_tasklet, (unsigned long) input); in ddb_input_init()
1215 spin_lock_init(&input->lock); in ddb_input_init()
1216 init_waitqueue_head(&input->wq); in ddb_input_init()
1245 port->input[0] = &dev->input[2 * i]; in ddb_ports_init()
1246 port->input[1] = &dev->input[2 * i + 1]; in ddb_ports_init()
1265 tasklet_kill(&port->input[0]->tasklet); in ddb_ports_release()
1266 tasklet_kill(&port->input[1]->tasklet); in ddb_ports_release()
1304 tasklet_schedule(&dev->input[0].tasklet); in irq_handler()
1306 tasklet_schedule(&dev->input[1].tasklet); in irq_handler()
1308 tasklet_schedule(&dev->input[2].tasklet); in irq_handler()
1310 tasklet_schedule(&dev->input[3].tasklet); in irq_handler()
1312 tasklet_schedule(&dev->input[4].tasklet); in irq_handler()
1314 tasklet_schedule(&dev->input[5].tasklet); in irq_handler()
1316 tasklet_schedule(&dev->input[6].tasklet); in irq_handler()
1318 tasklet_schedule(&dev->input[7].tasklet); in irq_handler()