mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-19 18:24:14 +08:00
V4L/DVB (3337): Drivers/media/dvb/frontends/mt312.c: cleanups
This patch contains the following possible cleanups: - update the Kconfig help to mention the VP310 - merge vp310_attach and mt312_attach into a new vp310_mt312_attach to remove some code duplication Signed-off-by: Adrian Bunk <bunk@stusta.de> Signed-off-by: Michael Krufky <mkrufky@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
This commit is contained in:
parent
2d748ba166
commit
805e660ca3
@ -526,7 +526,7 @@ int flexcop_frontend_init(struct flexcop_device *fc)
|
|||||||
info("found the stv0297 at i2c address: 0x%02x",alps_tdee4_stv0297_config.demod_address);
|
info("found the stv0297 at i2c address: 0x%02x",alps_tdee4_stv0297_config.demod_address);
|
||||||
} else
|
} else
|
||||||
/* try the sky v2.3 (vp310/Samsung tbdu18132(tsa5059)) */
|
/* try the sky v2.3 (vp310/Samsung tbdu18132(tsa5059)) */
|
||||||
if ((fc->fe = vp310_attach(&skystar23_samsung_tbdu18132_config, &fc->i2c_adap)) != NULL) {
|
if ((fc->fe = vp310_mt312_attach(&skystar23_samsung_tbdu18132_config, &fc->i2c_adap)) != NULL) {
|
||||||
ops = fc->fe->ops;
|
ops = fc->fe->ops;
|
||||||
|
|
||||||
ops->diseqc_send_master_cmd = flexcop_diseqc_send_master_cmd;
|
ops->diseqc_send_master_cmd = flexcop_diseqc_send_master_cmd;
|
||||||
|
@ -29,7 +29,7 @@ config DVB_TDA8083
|
|||||||
A DVB-S tuner module. Say Y when you want to support this frontend.
|
A DVB-S tuner module. Say Y when you want to support this frontend.
|
||||||
|
|
||||||
config DVB_MT312
|
config DVB_MT312
|
||||||
tristate "Zarlink MT312 based"
|
tristate "Zarlink VP310/MT312 based"
|
||||||
depends on DVB_CORE
|
depends on DVB_CORE
|
||||||
help
|
help
|
||||||
A DVB-S tuner module. Say Y when you want to support this frontend.
|
A DVB-S tuner module. Say Y when you want to support this frontend.
|
||||||
|
@ -612,76 +612,6 @@ static void mt312_release(struct dvb_frontend* fe)
|
|||||||
kfree(state);
|
kfree(state);
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct dvb_frontend_ops vp310_mt312_ops;
|
|
||||||
|
|
||||||
struct dvb_frontend* vp310_attach(const struct mt312_config* config,
|
|
||||||
struct i2c_adapter* i2c)
|
|
||||||
{
|
|
||||||
struct mt312_state* state = NULL;
|
|
||||||
|
|
||||||
/* allocate memory for the internal state */
|
|
||||||
state = kmalloc(sizeof(struct mt312_state), GFP_KERNEL);
|
|
||||||
if (state == NULL)
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
/* setup the state */
|
|
||||||
state->config = config;
|
|
||||||
state->i2c = i2c;
|
|
||||||
memcpy(&state->ops, &vp310_mt312_ops, sizeof(struct dvb_frontend_ops));
|
|
||||||
strcpy(state->ops.info.name, "Zarlink VP310 DVB-S");
|
|
||||||
|
|
||||||
/* check if the demod is there */
|
|
||||||
if (mt312_readreg(state, ID, &state->id) < 0)
|
|
||||||
goto error;
|
|
||||||
if (state->id != ID_VP310) {
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* create dvb_frontend */
|
|
||||||
state->frequency = 90;
|
|
||||||
state->frontend.ops = &state->ops;
|
|
||||||
state->frontend.demodulator_priv = state;
|
|
||||||
return &state->frontend;
|
|
||||||
|
|
||||||
error:
|
|
||||||
kfree(state);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
struct dvb_frontend* mt312_attach(const struct mt312_config* config,
|
|
||||||
struct i2c_adapter* i2c)
|
|
||||||
{
|
|
||||||
struct mt312_state* state = NULL;
|
|
||||||
|
|
||||||
/* allocate memory for the internal state */
|
|
||||||
state = kmalloc(sizeof(struct mt312_state), GFP_KERNEL);
|
|
||||||
if (state == NULL)
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
/* setup the state */
|
|
||||||
state->config = config;
|
|
||||||
state->i2c = i2c;
|
|
||||||
memcpy(&state->ops, &vp310_mt312_ops, sizeof(struct dvb_frontend_ops));
|
|
||||||
strcpy(state->ops.info.name, "Zarlink MT312 DVB-S");
|
|
||||||
|
|
||||||
/* check if the demod is there */
|
|
||||||
if (mt312_readreg(state, ID, &state->id) < 0)
|
|
||||||
goto error;
|
|
||||||
if (state->id != ID_MT312) {
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* create dvb_frontend */
|
|
||||||
state->frequency = 60;
|
|
||||||
state->frontend.ops = &state->ops;
|
|
||||||
state->frontend.demodulator_priv = state;
|
|
||||||
return &state->frontend;
|
|
||||||
|
|
||||||
error:
|
|
||||||
kfree(state);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static struct dvb_frontend_ops vp310_mt312_ops = {
|
static struct dvb_frontend_ops vp310_mt312_ops = {
|
||||||
|
|
||||||
.info = {
|
.info = {
|
||||||
@ -720,6 +650,49 @@ static struct dvb_frontend_ops vp310_mt312_ops = {
|
|||||||
.set_voltage = mt312_set_voltage,
|
.set_voltage = mt312_set_voltage,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct dvb_frontend* vp310_mt312_attach(const struct mt312_config* config,
|
||||||
|
struct i2c_adapter* i2c)
|
||||||
|
{
|
||||||
|
struct mt312_state* state = NULL;
|
||||||
|
|
||||||
|
/* allocate memory for the internal state */
|
||||||
|
state = kmalloc(sizeof(struct mt312_state), GFP_KERNEL);
|
||||||
|
if (state == NULL)
|
||||||
|
goto error;
|
||||||
|
|
||||||
|
/* setup the state */
|
||||||
|
state->config = config;
|
||||||
|
state->i2c = i2c;
|
||||||
|
memcpy(&state->ops, &vp310_mt312_ops, sizeof(struct dvb_frontend_ops));
|
||||||
|
|
||||||
|
/* check if the demod is there */
|
||||||
|
if (mt312_readreg(state, ID, &state->id) < 0)
|
||||||
|
goto error;
|
||||||
|
|
||||||
|
switch (state->id) {
|
||||||
|
case ID_VP310:
|
||||||
|
strcpy(state->ops.info.name, "Zarlink VP310 DVB-S");
|
||||||
|
state->frequency = 90;
|
||||||
|
break;
|
||||||
|
case ID_MT312:
|
||||||
|
strcpy(state->ops.info.name, "Zarlink MT312 DVB-S");
|
||||||
|
state->frequency = 60;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
printk (KERN_WARNING "Only Zarlink VP310/MT312 are supported chips.\n");
|
||||||
|
goto error;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* create dvb_frontend */
|
||||||
|
state->frontend.ops = &state->ops;
|
||||||
|
state->frontend.demodulator_priv = state;
|
||||||
|
return &state->frontend;
|
||||||
|
|
||||||
|
error:
|
||||||
|
kfree(state);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
module_param(debug, int, 0644);
|
module_param(debug, int, 0644);
|
||||||
MODULE_PARM_DESC(debug, "Turn on/off frontend debugging (default:off).");
|
MODULE_PARM_DESC(debug, "Turn on/off frontend debugging (default:off).");
|
||||||
|
|
||||||
@ -727,5 +700,4 @@ MODULE_DESCRIPTION("Zarlink VP310/MT312 DVB-S Demodulator driver");
|
|||||||
MODULE_AUTHOR("Andreas Oberritter <obi@linuxtv.org>");
|
MODULE_AUTHOR("Andreas Oberritter <obi@linuxtv.org>");
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
|
|
||||||
EXPORT_SYMBOL(mt312_attach);
|
EXPORT_SYMBOL(vp310_mt312_attach);
|
||||||
EXPORT_SYMBOL(vp310_attach);
|
|
||||||
|
@ -38,10 +38,8 @@ struct mt312_config
|
|||||||
int (*pll_set)(struct dvb_frontend* fe, struct dvb_frontend_parameters* params);
|
int (*pll_set)(struct dvb_frontend* fe, struct dvb_frontend_parameters* params);
|
||||||
};
|
};
|
||||||
|
|
||||||
extern struct dvb_frontend* mt312_attach(const struct mt312_config* config,
|
struct dvb_frontend* vp310_mt312_attach(const struct mt312_config* config,
|
||||||
struct i2c_adapter* i2c);
|
struct i2c_adapter* i2c);
|
||||||
|
|
||||||
extern struct dvb_frontend* vp310_attach(const struct mt312_config* config,
|
|
||||||
struct i2c_adapter* i2c);
|
|
||||||
|
|
||||||
#endif // MT312_H
|
#endif // MT312_H
|
||||||
|
Loading…
Reference in New Issue
Block a user