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

Commit 6cb393c8 authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab
Browse files

[media] drxk_hard: fix locking issues when changing the delsys

parent fa4b2a17
Loading
Loading
Loading
Loading
+24 −21
Original line number Diff line number Diff line
@@ -6188,7 +6188,6 @@ static int drxk_sleep(struct dvb_frontend *fe)

	dprintk(1, "\n");
	ShutDown(state);
	mutex_unlock(&state->ctlock);
	return 0;
}

@@ -6203,7 +6202,7 @@ static int drxk_gate_ctrl(struct dvb_frontend *fe, int enable)
static int drxk_set_parameters(struct dvb_frontend *fe)
{
	struct dtv_frontend_properties *p = &fe->dtv_property_cache;
	u32 delsys  = p->delivery_system;
	u32 delsys  = p->delivery_system, old_delsys;
	struct drxk_state *state = fe->demodulator_priv;
	u32 IF;

@@ -6221,8 +6220,12 @@ static int drxk_set_parameters(struct dvb_frontend *fe)
		fe->ops.tuner_ops.set_params(fe);
	if (fe->ops.i2c_gate_ctrl)
		fe->ops.i2c_gate_ctrl(fe, 0);

	old_delsys = state->props.delivery_system;
	state->props = *p;

	if (old_delsys != delsys) {
		ShutDown(state);
		switch (delsys) {
		case SYS_DVBC_ANNEX_A:
		case SYS_DVBC_ANNEX_C:
@@ -6244,6 +6247,7 @@ static int drxk_set_parameters(struct dvb_frontend *fe)
		default:
			return -EINVAL;
		}
	}

	fe->ops.tuner_ops.get_if_frequency(fe, &IF);
	Start(state, 0, IF);
@@ -6405,7 +6409,6 @@ struct dvb_frontend *drxk_attach(const struct drxk_config *config,
		state->m_GPIO &= ~state->antenna_gpio;

	mutex_init(&state->mutex);
	mutex_init(&state->ctlock);

	memcpy(&state->frontend.ops, &drxk_ops, sizeof(drxk_ops));
	state->frontend.demodulator_priv = state;
+0 −1
Original line number Diff line number Diff line
@@ -204,7 +204,6 @@ struct drxk_state {
	void  *priv;

	struct mutex mutex;
	struct mutex ctlock;

	u32    m_Instance;           /**< Channel 1,2,3 or 4 */