• Home
  • Raw
  • Download

Lines Matching refs:output

252 		pbuf = dev->output[i].pbuf;  in ddb_address_table()
253 for (j = 0; j < dev->output[i].dma_buf_num; j++) { in ddb_address_table()
313 if (io_alloc(dev->pdev, port->output->vbuf, in ddb_buffers_alloc()
314 port->output->pbuf, in ddb_buffers_alloc()
315 port->output->dma_buf_size, in ddb_buffers_alloc()
316 port->output->dma_buf_num) < 0) in ddb_buffers_alloc()
342 io_free(dev->pdev, port->output->vbuf, in ddb_buffers_free()
343 port->output->pbuf, in ddb_buffers_free()
344 port->output->dma_buf_size, in ddb_buffers_free()
345 port->output->dma_buf_num); in ddb_buffers_free()
386 static void ddb_output_start(struct ddb_output *output) in ddb_output_start() argument
388 struct ddb *dev = output->port->dev; in ddb_output_start()
390 spin_lock_irq(&output->lock); in ddb_output_start()
391 output->cbuf = 0; in ddb_output_start()
392 output->coff = 0; in ddb_output_start()
393 ddbwritel(0, TS_OUTPUT_CONTROL(output->nr)); in ddb_output_start()
394 ddbwritel(2, TS_OUTPUT_CONTROL(output->nr)); in ddb_output_start()
395 ddbwritel(0, TS_OUTPUT_CONTROL(output->nr)); in ddb_output_start()
396 ddbwritel(0x3c, TS_OUTPUT_CONTROL(output->nr)); in ddb_output_start()
398 (output->dma_buf_num << 11) | in ddb_output_start()
399 (output->dma_buf_size >> 7), in ddb_output_start()
400 DMA_BUFFER_SIZE(output->nr + 8)); in ddb_output_start()
401 ddbwritel(0, DMA_BUFFER_ACK(output->nr + 8)); in ddb_output_start()
404 ddbwritel(3, DMA_BUFFER_CONTROL(output->nr + 8)); in ddb_output_start()
406 ddbwritel(0x1d, TS_OUTPUT_CONTROL(output->nr)); in ddb_output_start()
407 output->running = 1; in ddb_output_start()
408 spin_unlock_irq(&output->lock); in ddb_output_start()
411 static void ddb_output_stop(struct ddb_output *output) in ddb_output_stop() argument
413 struct ddb *dev = output->port->dev; in ddb_output_stop()
415 spin_lock_irq(&output->lock); in ddb_output_stop()
416 ddbwritel(0, TS_OUTPUT_CONTROL(output->nr)); in ddb_output_stop()
417 ddbwritel(0, DMA_BUFFER_CONTROL(output->nr + 8)); in ddb_output_stop()
418 output->running = 0; in ddb_output_stop()
419 spin_unlock_irq(&output->lock); in ddb_output_stop()
422 static u32 ddb_output_free(struct ddb_output *output) in ddb_output_free() argument
424 u32 idx, off, stat = output->stat; in ddb_output_free()
430 if (output->cbuf != idx) { in ddb_output_free()
431 if ((((output->cbuf + 1) % output->dma_buf_num) == idx) && in ddb_output_free()
432 (output->dma_buf_size - output->coff <= 188)) in ddb_output_free()
436 diff = off - output->coff; in ddb_output_free()
442 static ssize_t ddb_output_write(struct ddb_output *output, in ddb_output_write() argument
445 struct ddb *dev = output->port->dev; in ddb_output_write()
446 u32 idx, off, stat = output->stat; in ddb_output_write()
453 len = output->dma_buf_size - output->coff; in ddb_output_write()
454 if ((((output->cbuf + 1) % output->dma_buf_num) == idx) && in ddb_output_write()
460 if (output->cbuf == idx) { in ddb_output_write()
461 if (off > output->coff) { in ddb_output_write()
463 len = off - output->coff; in ddb_output_write()
474 if (copy_from_user(output->vbuf[output->cbuf] + output->coff, in ddb_output_write()
479 output->coff += len; in ddb_output_write()
480 if (output->coff == output->dma_buf_size) { in ddb_output_write()
481 output->coff = 0; in ddb_output_write()
482 output->cbuf = ((output->cbuf + 1) % output->dma_buf_num); in ddb_output_write()
484 ddbwritel((output->cbuf << 11) | (output->coff >> 7), in ddb_output_write()
485 DMA_BUFFER_ACK(output->nr + 8)); in ddb_output_write()
902 struct ddb_output *output = dvbdev->priv; in ts_write() local
907 if (ddb_output_free(output) < 188) { in ts_write()
911 output->wq, ddb_output_free(output) >= 188) < 0) in ts_write()
914 stat = ddb_output_write(output, buf, left); in ts_write()
927 struct ddb_output *output = dvbdev->priv; in ts_read() local
928 struct ddb_input *input = output->port->input[0]; in ts_read()
1025 struct ddb_output *output = (struct ddb_output *) data; in output_tasklet() local
1026 struct ddb *dev = output->port->dev; in output_tasklet()
1028 spin_lock(&output->lock); in output_tasklet()
1029 if (!output->running) { in output_tasklet()
1030 spin_unlock(&output->lock); in output_tasklet()
1033 output->stat = ddbreadl(DMA_BUFFER_CURRENT(output->nr + 8)); in output_tasklet()
1034 wake_up(&output->wq); in output_tasklet()
1035 spin_unlock(&output->lock); in output_tasklet()
1050 ret = dvb_register_adapter(&port->output->adap, in ddb_ci_attach()
1059 dvb_unregister_adapter(&port->output->adap); in ddb_ci_attach()
1063 ddb_output_start(port->output); in ddb_ci_attach()
1064 dvb_ca_en50221_init(&port->output->adap, in ddb_ci_attach()
1066 ret = dvb_register_device(&port->output->adap, &port->output->dev, in ddb_ci_attach()
1067 &dvbdev_ci, (void *) port->output, in ddb_ci_attach()
1121 if (port->output->dev) in ddb_ports_detach()
1122 dvb_unregister_device(port->output->dev); in ddb_ports_detach()
1125 ddb_output_stop(port->output); in ddb_ports_detach()
1129 dvb_unregister_adapter(&port->output->adap); in ddb_ports_detach()
1223 struct ddb_output *output = &dev->output[nr]; in ddb_output_init() local
1224 output->nr = nr; in ddb_output_init()
1225 output->port = port; in ddb_output_init()
1226 output->dma_buf_num = OUTPUT_DMA_BUFS; in ddb_output_init()
1227 output->dma_buf_size = OUTPUT_DMA_SIZE; in ddb_output_init()
1232 tasklet_init(&output->tasklet, output_tasklet, (unsigned long) output); in ddb_output_init()
1233 init_waitqueue_head(&output->wq); in ddb_output_init()
1248 port->output = &dev->output[i]; in ddb_ports_init()
1268 tasklet_kill(&port->output->tasklet); in ddb_ports_release()
1322 tasklet_schedule(&dev->output[0].tasklet); in irq_handler()
1324 tasklet_schedule(&dev->output[1].tasklet); in irq_handler()
1326 tasklet_schedule(&dev->output[2].tasklet); in irq_handler()
1328 tasklet_schedule(&dev->output[3].tasklet); in irq_handler()