Skip to content

Commit

Permalink
[media] drxk: Move I2C address into a config structure
Browse files Browse the repository at this point in the history
Currently, the only parameter to be configured is the I2C
address. However, Terratec H5 logs shows that it needs a different
setting for some things, and it has its own firmware.

So, move the addr into a config structure, in order to allow adding
the required configuration bits.

Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
  • Loading branch information
Mauro Carvalho Chehab committed Jul 27, 2011
1 parent 5e66b87 commit 0fc55e8
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 9 deletions.
8 changes: 5 additions & 3 deletions drivers/media/dvb/ddbridge/ddbridge-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -574,10 +574,12 @@ static int demod_attach_drxk(struct ddb_input *input)
{
struct i2c_adapter *i2c = &input->port->i2c->adap;
struct dvb_frontend *fe;
struct drxk_config config;

fe = input->fe = dvb_attach(drxk_attach,
i2c, 0x29 + (input->nr&1),
&input->fe2);
memset(&config, 0, sizeof(config));
config.adr = 0x29 + (input->nr & 1);

fe = input->fe = dvb_attach(drxk_attach, &config, i2c, &input->fe2);
if (!input->fe) {
printk(KERN_ERR "No DRXK found!\n");
return -ENODEV;
Expand Down
8 changes: 6 additions & 2 deletions drivers/media/dvb/frontends/drxk.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,11 @@
#include <linux/types.h>
#include <linux/i2c.h>

extern struct dvb_frontend *drxk_attach(struct i2c_adapter *i2c,
u8 adr,
struct drxk_config {
u8 adr;
};

extern struct dvb_frontend *drxk_attach(const struct drxk_config *config,
struct i2c_adapter *i2c,
struct dvb_frontend **fe_t);
#endif
4 changes: 3 additions & 1 deletion drivers/media/dvb/frontends/drxk_hard.c
Original file line number Diff line number Diff line change
Expand Up @@ -6341,10 +6341,12 @@ static struct dvb_frontend_ops drxk_t_ops = {
.read_ucblocks = drxk_read_ucblocks,
};

struct dvb_frontend *drxk_attach(struct i2c_adapter *i2c, u8 adr,
struct dvb_frontend *drxk_attach(const struct drxk_config *config,
struct i2c_adapter *i2c,
struct dvb_frontend **fe_t)
{
struct drxk_state *state = NULL;
u8 adr = config->adr;

dprintk(1, "\n");
state = kzalloc(sizeof(struct drxk_state), GFP_KERNEL);
Expand Down
9 changes: 6 additions & 3 deletions drivers/media/dvb/ngene/ngene-cards.c
Original file line number Diff line number Diff line change
Expand Up @@ -213,9 +213,12 @@ static int port_has_drxk(struct i2c_adapter *i2c, int port)
static int demod_attach_drxk(struct ngene_channel *chan,
struct i2c_adapter *i2c)
{
chan->fe = dvb_attach(drxk_attach,
i2c, 0x29 + (chan->number^2),
&chan->fe2);
struct drxk_config config;

memset(&config, 0, sizeof(config));
config.adr = 0x29 + (chan->number ^ 2);

chan->fe = dvb_attach(drxk_attach, &config, i2c, &chan->fe2);
if (!chan->fe) {
printk(KERN_ERR "No DRXK found!\n");
return -ENODEV;
Expand Down

0 comments on commit 0fc55e8

Please sign in to comment.