|
@@ -82,7 +82,7 @@ static struct s5h1411_config hauppauge_s5h1411_config = {
|
|
|
.mpeg_timing = S5H1411_MPEGTIMING_CONTINOUS_NONINVERTING_CLOCK,
|
|
|
};
|
|
|
|
|
|
-static int saa7164_dvb_stop_tsport(struct saa7164_tsport *port)
|
|
|
+static int saa7164_dvb_stop_port(struct saa7164_port *port)
|
|
|
{
|
|
|
struct saa7164_dev *dev = port->dev;
|
|
|
int ret;
|
|
@@ -100,7 +100,7 @@ static int saa7164_dvb_stop_tsport(struct saa7164_tsport *port)
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
-static int saa7164_dvb_acquire_tsport(struct saa7164_tsport *port)
|
|
|
+static int saa7164_dvb_acquire_port(struct saa7164_port *port)
|
|
|
{
|
|
|
struct saa7164_dev *dev = port->dev;
|
|
|
int ret;
|
|
@@ -118,7 +118,7 @@ static int saa7164_dvb_acquire_tsport(struct saa7164_tsport *port)
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
-static int saa7164_dvb_pause_tsport(struct saa7164_tsport *port)
|
|
|
+static int saa7164_dvb_pause_port(struct saa7164_port *port)
|
|
|
{
|
|
|
struct saa7164_dev *dev = port->dev;
|
|
|
int ret;
|
|
@@ -140,90 +140,28 @@ static int saa7164_dvb_pause_tsport(struct saa7164_tsport *port)
|
|
|
* the part through AVStream / KS Windows stages, forwards or backwards.
|
|
|
* States are: stopped, acquired (h/w), paused, started.
|
|
|
*/
|
|
|
-static int saa7164_dvb_stop_streaming(struct saa7164_tsport *port)
|
|
|
+static int saa7164_dvb_stop_streaming(struct saa7164_port *port)
|
|
|
{
|
|
|
struct saa7164_dev *dev = port->dev;
|
|
|
int ret;
|
|
|
|
|
|
dprintk(DBGLVL_DVB, "%s(port=%d)\n", __func__, port->nr);
|
|
|
|
|
|
- ret = saa7164_dvb_pause_tsport(port);
|
|
|
- ret = saa7164_dvb_acquire_tsport(port);
|
|
|
- ret = saa7164_dvb_stop_tsport(port);
|
|
|
+ ret = saa7164_dvb_pause_port(port);
|
|
|
+ ret = saa7164_dvb_acquire_port(port);
|
|
|
+ ret = saa7164_dvb_stop_port(port);
|
|
|
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
-static int saa7164_dvb_cfg_tsport(struct saa7164_tsport *port)
|
|
|
-{
|
|
|
- tmHWStreamParameters_t *params = &port->hw_streamingparams;
|
|
|
- struct saa7164_dev *dev = port->dev;
|
|
|
- struct saa7164_buffer *buf;
|
|
|
- struct list_head *c, *n;
|
|
|
- int i = 0;
|
|
|
-
|
|
|
- dprintk(DBGLVL_DVB, "%s(port=%d)\n", __func__, port->nr);
|
|
|
-
|
|
|
- saa7164_writel(port->pitch, params->pitch);
|
|
|
- saa7164_writel(port->bufsize, params->pitch * params->numberoflines);
|
|
|
-
|
|
|
- dprintk(DBGLVL_DVB, " configured:\n");
|
|
|
- dprintk(DBGLVL_DVB, " lmmio 0x%p\n", dev->lmmio);
|
|
|
- dprintk(DBGLVL_DVB, " bufcounter 0x%x = 0x%x\n", port->bufcounter,
|
|
|
- saa7164_readl(port->bufcounter));
|
|
|
-
|
|
|
- dprintk(DBGLVL_DVB, " pitch 0x%x = %d\n", port->pitch,
|
|
|
- saa7164_readl(port->pitch));
|
|
|
-
|
|
|
- dprintk(DBGLVL_DVB, " bufsize 0x%x = %d\n", port->bufsize,
|
|
|
- saa7164_readl(port->bufsize));
|
|
|
-
|
|
|
- dprintk(DBGLVL_DVB, " buffercount = %d\n", port->hwcfg.buffercount);
|
|
|
- dprintk(DBGLVL_DVB, " bufoffset = 0x%x\n", port->bufoffset);
|
|
|
- dprintk(DBGLVL_DVB, " bufptr32h = 0x%x\n", port->bufptr32h);
|
|
|
- dprintk(DBGLVL_DVB, " bufptr32l = 0x%x\n", port->bufptr32l);
|
|
|
-
|
|
|
- /* Poke the buffers and offsets into PCI space */
|
|
|
- mutex_lock(&port->dmaqueue_lock);
|
|
|
- list_for_each_safe(c, n, &port->dmaqueue.list) {
|
|
|
- buf = list_entry(c, struct saa7164_buffer, list);
|
|
|
-
|
|
|
- /* TODO: Review this in light of 32v64 assignments */
|
|
|
- saa7164_writel(port->bufoffset + (sizeof(u32) * i), 0);
|
|
|
- saa7164_writel(port->bufptr32h + ((sizeof(u32) * 2) * i),
|
|
|
- buf->pt_dma);
|
|
|
- saa7164_writel(port->bufptr32l + ((sizeof(u32) * 2) * i), 0);
|
|
|
-
|
|
|
- dprintk(DBGLVL_DVB,
|
|
|
- " buf[%d] offset 0x%llx (0x%x) "
|
|
|
- "buf 0x%llx/%llx (0x%x/%x)\n",
|
|
|
- i,
|
|
|
- (u64)port->bufoffset + (i * sizeof(u32)),
|
|
|
- saa7164_readl(port->bufoffset + (sizeof(u32) * i)),
|
|
|
- (u64)port->bufptr32h + ((sizeof(u32) * 2) * i),
|
|
|
- (u64)port->bufptr32l + ((sizeof(u32) * 2) * i),
|
|
|
- saa7164_readl(port->bufptr32h + ((sizeof(u32) * i)
|
|
|
- * 2)),
|
|
|
- saa7164_readl(port->bufptr32l + ((sizeof(u32) * i)
|
|
|
- * 2)));
|
|
|
-
|
|
|
- if (i++ > port->hwcfg.buffercount)
|
|
|
- BUG();
|
|
|
-
|
|
|
- }
|
|
|
- mutex_unlock(&port->dmaqueue_lock);
|
|
|
-
|
|
|
- return 0;
|
|
|
-}
|
|
|
-
|
|
|
-static int saa7164_dvb_start_tsport(struct saa7164_tsport *port)
|
|
|
+static int saa7164_dvb_start_port(struct saa7164_port *port)
|
|
|
{
|
|
|
struct saa7164_dev *dev = port->dev;
|
|
|
int ret = 0, result;
|
|
|
|
|
|
dprintk(DBGLVL_DVB, "%s(port=%d)\n", __func__, port->nr);
|
|
|
|
|
|
- saa7164_dvb_cfg_tsport(port);
|
|
|
+ saa7164_buffer_cfg_port(port);
|
|
|
|
|
|
/* Acquire the hardware */
|
|
|
result = saa7164_api_transition_port(port, SAA_DMASTATE_ACQUIRE);
|
|
@@ -284,7 +222,7 @@ out:
|
|
|
static int saa7164_dvb_start_feed(struct dvb_demux_feed *feed)
|
|
|
{
|
|
|
struct dvb_demux *demux = feed->demux;
|
|
|
- struct saa7164_tsport *port = (struct saa7164_tsport *) demux->priv;
|
|
|
+ struct saa7164_port *port = (struct saa7164_port *) demux->priv;
|
|
|
struct saa7164_dvb *dvb = &port->dvb;
|
|
|
struct saa7164_dev *dev = port->dev;
|
|
|
int ret = 0;
|
|
@@ -298,7 +236,7 @@ static int saa7164_dvb_start_feed(struct dvb_demux_feed *feed)
|
|
|
mutex_lock(&dvb->lock);
|
|
|
if (dvb->feeding++ == 0) {
|
|
|
/* Start transport */
|
|
|
- ret = saa7164_dvb_start_tsport(port);
|
|
|
+ ret = saa7164_dvb_start_port(port);
|
|
|
}
|
|
|
mutex_unlock(&dvb->lock);
|
|
|
dprintk(DBGLVL_DVB, "%s(port=%d) now feeding = %d\n",
|
|
@@ -311,7 +249,7 @@ static int saa7164_dvb_start_feed(struct dvb_demux_feed *feed)
|
|
|
static int saa7164_dvb_stop_feed(struct dvb_demux_feed *feed)
|
|
|
{
|
|
|
struct dvb_demux *demux = feed->demux;
|
|
|
- struct saa7164_tsport *port = (struct saa7164_tsport *) demux->priv;
|
|
|
+ struct saa7164_port *port = (struct saa7164_port *) demux->priv;
|
|
|
struct saa7164_dvb *dvb = &port->dvb;
|
|
|
struct saa7164_dev *dev = port->dev;
|
|
|
int ret = 0;
|
|
@@ -332,7 +270,7 @@ static int saa7164_dvb_stop_feed(struct dvb_demux_feed *feed)
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
-static int dvb_register(struct saa7164_tsport *port)
|
|
|
+static int dvb_register(struct saa7164_port *port)
|
|
|
{
|
|
|
struct saa7164_dvb *dvb = &port->dvb;
|
|
|
struct saa7164_dev *dev = port->dev;
|
|
@@ -341,6 +279,9 @@ static int dvb_register(struct saa7164_tsport *port)
|
|
|
|
|
|
dprintk(DBGLVL_DVB, "%s(port=%d)\n", __func__, port->nr);
|
|
|
|
|
|
+ if (port->type != SAA7164_MPEG_DVB)
|
|
|
+ BUG();
|
|
|
+
|
|
|
/* Sanity check that the PCI configuration space is active */
|
|
|
if (port->hwcfg.BARLocation == 0) {
|
|
|
result = -ENOMEM;
|
|
@@ -378,7 +319,6 @@ static int dvb_register(struct saa7164_tsport *port)
|
|
|
DRIVER_NAME, result);
|
|
|
goto fail_adapter;
|
|
|
}
|
|
|
- buf->nr = i;
|
|
|
|
|
|
mutex_lock(&port->dmaqueue_lock);
|
|
|
list_add_tail(&buf->list, &port->dmaqueue.list);
|
|
@@ -473,7 +413,7 @@ fail_adapter:
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
-int saa7164_dvb_unregister(struct saa7164_tsport *port)
|
|
|
+int saa7164_dvb_unregister(struct saa7164_port *port)
|
|
|
{
|
|
|
struct saa7164_dvb *dvb = &port->dvb;
|
|
|
struct saa7164_dev *dev = port->dev;
|
|
@@ -482,12 +422,15 @@ int saa7164_dvb_unregister(struct saa7164_tsport *port)
|
|
|
|
|
|
dprintk(DBGLVL_DVB, "%s()\n", __func__);
|
|
|
|
|
|
+ if (port->type != SAA7164_MPEG_DVB)
|
|
|
+ BUG();
|
|
|
+
|
|
|
/* Remove any allocated buffers */
|
|
|
mutex_lock(&port->dmaqueue_lock);
|
|
|
list_for_each_safe(c, n, &port->dmaqueue.list) {
|
|
|
b = list_entry(c, struct saa7164_buffer, list);
|
|
|
list_del(c);
|
|
|
- saa7164_buffer_dealloc(port, b);
|
|
|
+ saa7164_buffer_dealloc(b);
|
|
|
}
|
|
|
mutex_unlock(&port->dmaqueue_lock);
|
|
|
|
|
@@ -508,7 +451,7 @@ int saa7164_dvb_unregister(struct saa7164_tsport *port)
|
|
|
/* All the DVB attach calls go here, this function get's modified
|
|
|
* for each new card.
|
|
|
*/
|
|
|
-int saa7164_dvb_register(struct saa7164_tsport *port)
|
|
|
+int saa7164_dvb_register(struct saa7164_port *port)
|
|
|
{
|
|
|
struct saa7164_dev *dev = port->dev;
|
|
|
struct saa7164_dvb *dvb = &port->dvb;
|