[PATH,1/2] mxl5007 move reset to attach
Commit Message
This patch move the soft reset to the attach function because with dual
tuners, when one tuner do reset, the other one is perturbed, and the
stream has errors.
Signed-off-by: Jose Alberto Reguero <jareguero@telefonica.net>
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Comments
On 02/04/2013 12:30 AM, Jose Alberto Reguero wrote:
> This patch move the soft reset to the attach function because with dual
> tuners, when one tuner do reset, the other one is perturbed, and the
> stream has errors.
>
> Signed-off-by: Jose Alberto Reguero <jareguero@telefonica.net>
Looks good for my eyes!
Reviewed-by: Antti Palosaari <crope@iki.fi>
>
> diff -upr linux/drivers/media/tuners/mxl5007t.c linux.new/drivers/media/tuners/mxl5007t.c
> --- linux/drivers/media/tuners/mxl5007t.c 2012-08-14 05:45:22.000000000 +0200
> +++ linux.new/drivers/media/tuners/mxl5007t.c 2013-02-03 23:03:03.784525410 +0100
> @@ -531,10 +531,6 @@ static int mxl5007t_tuner_init(struct mx
> struct reg_pair_t *init_regs;
> int ret;
>
> - ret = mxl5007t_soft_reset(state);
> - if (mxl_fail(ret))
> - goto fail;
> -
> /* calculate initialization reg array */
> init_regs = mxl5007t_calc_init_regs(state, mode);
>
> @@ -900,7 +896,20 @@ struct dvb_frontend *mxl5007t_attach(str
> /* existing tuner instance */
> break;
> }
> +
> + if (fe->ops.i2c_gate_ctrl)
> + fe->ops.i2c_gate_ctrl(fe, 1);
> +
> + ret = mxl5007t_soft_reset(state);
> +
> + if (fe->ops.i2c_gate_ctrl)
> + fe->ops.i2c_gate_ctrl(fe, 0);
> +
> + if (mxl_fail(ret))
> + goto fail;
> +
> fe->tuner_priv = state;
> +
> mutex_unlock(&mxl5007t_list_mutex);
>
> memcpy(&fe->ops.tuner_ops, &mxl5007t_tuner_ops,
>
@@ -531,10 +531,6 @@ static int mxl5007t_tuner_init(struct mx
struct reg_pair_t *init_regs;
int ret;
- ret = mxl5007t_soft_reset(state);
- if (mxl_fail(ret))
- goto fail;
-
/* calculate initialization reg array */
init_regs = mxl5007t_calc_init_regs(state, mode);
@@ -900,7 +896,20 @@ struct dvb_frontend *mxl5007t_attach(str
/* existing tuner instance */
break;
}
+
+ if (fe->ops.i2c_gate_ctrl)
+ fe->ops.i2c_gate_ctrl(fe, 1);
+
+ ret = mxl5007t_soft_reset(state);
+
+ if (fe->ops.i2c_gate_ctrl)
+ fe->ops.i2c_gate_ctrl(fe, 0);
+
+ if (mxl_fail(ret))
+ goto fail;
+
fe->tuner_priv = state;
+
mutex_unlock(&mxl5007t_list_mutex);
memcpy(&fe->ops.tuner_ops, &mxl5007t_tuner_ops,