Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4592b3a0 authored by Adrian Bunk's avatar Adrian Bunk Committed by Mauro Carvalho Chehab
Browse files

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: default avatarAdrian Bunk <bunk@stusta.de>
Signed-off-by: default avatarMichael Krufky <mkrufky@linuxtv.org>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@infradead.org>
parent dccd7c70
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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);
	} else
	/* 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->diseqc_send_master_cmd = flexcop_diseqc_send_master_cmd;
+1 −1
Original line number Diff line number Diff line
@@ -29,7 +29,7 @@ config DVB_TDA8083
	  A DVB-S tuner module. Say Y when you want to support this frontend.

config DVB_MT312
	tristate "Zarlink MT312 based"
	tristate "Zarlink VP310/MT312 based"
	depends on DVB_CORE
	help
	  A DVB-S tuner module. Say Y when you want to support this frontend.
+44 −72
Original line number Diff line number Diff line
@@ -612,76 +612,6 @@ static void mt312_release(struct dvb_frontend* fe)
	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 = {

	.info = {
@@ -720,6 +650,49 @@ static struct dvb_frontend_ops vp310_mt312_ops = {
	.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_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_LICENSE("GPL");

EXPORT_SYMBOL(mt312_attach);
EXPORT_SYMBOL(vp310_attach);
EXPORT_SYMBOL(vp310_mt312_attach);
+2 −4
Original line number Diff line number Diff line
@@ -38,10 +38,8 @@ struct mt312_config
	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);

extern struct dvb_frontend* vp310_attach(const struct mt312_config* config,
					 struct i2c_adapter* i2c);

#endif // MT312_H