Skip to content

Commit

Permalink
V4L/DVB: ngene: Added module parameter "one_adapter"
Browse files Browse the repository at this point in the history
If parameter "one_adapter" is set, only one adapter per device will be attached.
Otherwise an adapter for every frontend will be attached.

Signed-off-by: Matthias Benesch <twoof7@freenet.de>
Signed-off-by: Oliver Endriss <o.endriss@gmx.de>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
  • Loading branch information
Matthias Benesch authored and Mauro Carvalho Chehab committed Feb 26, 2010
1 parent 126cd4b commit cf1b12f
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 32 deletions.
45 changes: 21 additions & 24 deletions drivers/media/dvb/ngene/ngene-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,10 @@
#include "ngene-ioctls.h"
#endif

static int one_adapter = 1;
module_param(one_adapter, int, 0444);
MODULE_PARM_DESC(one_adapter, "Use only one adapter.");

static int copy_eeprom;
module_param(copy_eeprom, int, 0444);
MODULE_PARM_DESC(copy_eeprom, "Copy eeprom.");
Expand Down Expand Up @@ -2444,9 +2448,9 @@ static void release_channel(struct ngene_channel *chan)
&chan->mem_frontend);
dvb_dmxdev_release(&chan->dmxdev);
dvb_dmx_release(&chan->demux);
#ifndef ONE_ADAPTER
dvb_unregister_adapter(&chan->dvb_adapter);
#endif

if (chan->number == 0 || !one_adapter)
dvb_unregister_adapter(&dev->adapter[chan->number]);
}

}
Expand All @@ -2472,17 +2476,18 @@ static int init_channel(struct ngene_channel *chan)
if (io & NGENE_IO_TSOUT)
dec_fw_boot(dev);

#ifdef ONE_ADAPTER
adapter = &chan->dev->dvb_adapter;
#else
ret = dvb_register_adapter(&chan->dvb_adapter, "nGene",
THIS_MODULE,
&chan->dev->pci_dev->dev,
adapter_nr);
if (ret < 0)
return ret;
adapter = &chan->dvb_adapter;
#endif
if (nr == 0 || !one_adapter) {
adapter = &dev->adapter[nr];
ret = dvb_register_adapter(adapter, "nGene",
THIS_MODULE,
&chan->dev->pci_dev->dev,
adapter_nr);
if (ret < 0)
return ret;
} else {
adapter = &dev->adapter[0];
}

ret = my_dvb_dmx_ts_card_init(dvbdemux, "SW demux",
ngene_start_feed,
ngene_stop_feed, chan);
Expand Down Expand Up @@ -2527,7 +2532,7 @@ static int init_channels(struct ngene *dev)

for (i = 0; i < MAX_STREAM; i++) {
if (init_channel(&dev->channel[i]) < 0) {
for (j = 0; j < i; j++)
for (j = i - 1; j >= 0; j--)
release_channel(&dev->channel[j]);
return -1;
}
Expand All @@ -2545,11 +2550,8 @@ static void __devexit ngene_remove(struct pci_dev *pdev)
int i;

tasklet_kill(&dev->event_tasklet);
for (i = 0; i < MAX_STREAM; i++)
for (i = MAX_STREAM - 1; i >= 0; i--)
release_channel(&dev->channel[i]);
#ifdef ONE_ADAPTER
dvb_unregister_adapter(&dev->dvb_adapter);
#endif
ngene_stop(dev);
ngene_release_buffers(dev);
pci_set_drvdata(pdev, 0);
Expand Down Expand Up @@ -2595,11 +2597,6 @@ static int __devinit ngene_probe(struct pci_dev *pci_dev,
/*i2c_check_eeprom(&dev->i2c_adapter);*/

/* Register DVB adapters and devices for both channels */
#ifdef ONE_ADAPTER
if (dvb_register_adapter(&dev->dvb_adapter, "nGene", THIS_MODULE,
&dev->pci_dev->dev, adapter_nr) < 0)
goto fail2;
#endif
if (init_channels(dev) < 0)
goto fail2;

Expand Down
9 changes: 1 addition & 8 deletions drivers/media/dvb/ngene/ngene.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,6 @@
#ifndef _NGENE_H_
#define _NGENE_H_

/*#define ONE_ADAPTER*/

#include <linux/types.h>
#include <linux/sched.h>
#include <linux/interrupt.h>
Expand Down Expand Up @@ -649,9 +647,6 @@ struct ngene_channel {
struct dmx_frontend mem_frontend;
int users;
struct video_device *v4l_dev;
#ifndef ONE_ADAPTER
struct dvb_adapter dvb_adapter;
#endif
struct tasklet_struct demux_tasklet;

struct SBufferHeader *nextBuffer;
Expand Down Expand Up @@ -728,9 +723,6 @@ struct ngene {
struct pci_dev *pci_dev;
unsigned char *iomem;

#ifdef ONE_ADAPTER
struct dvb_adapter dvb_adapter;
#endif
/*struct i2c_adapter i2c_adapter;*/

u32 device_version;
Expand Down Expand Up @@ -764,6 +756,7 @@ struct ngene {
int i2c_current_bus;
spinlock_t cmd_lock;

struct dvb_adapter adapter[MAX_STREAM];
struct ngene_channel channel[MAX_STREAM];

struct ngene_info *card_info;
Expand Down

0 comments on commit cf1b12f

Please sign in to comment.