|
@@ -27,7 +27,7 @@ module_param_named(debug, tda18271_debug, int, 0644);
|
|
|
MODULE_PARM_DESC(debug, "set debug level "
|
|
|
"(info=1, map=2, reg=4, adv=8, cal=16 (or-able))");
|
|
|
|
|
|
-static int tda18271_cal_on_startup;
|
|
|
+static int tda18271_cal_on_startup = -1;
|
|
|
module_param_named(cal, tda18271_cal_on_startup, int, 0644);
|
|
|
MODULE_PARM_DESC(cal, "perform RF tracking filter calibration on startup");
|
|
|
|
|
@@ -1192,10 +1192,25 @@ struct dvb_frontend *tda18271_attach(struct dvb_frontend *fe, u8 addr,
|
|
|
case 0:
|
|
|
goto fail;
|
|
|
case 1:
|
|
|
+ {
|
|
|
/* new tuner instance */
|
|
|
+ int rf_cal_on_startup;
|
|
|
+
|
|
|
priv->gate = (cfg) ? cfg->gate : TDA18271_GATE_AUTO;
|
|
|
priv->role = (cfg) ? cfg->role : TDA18271_MASTER;
|
|
|
priv->config = (cfg) ? cfg->config : 0;
|
|
|
+
|
|
|
+ /* tda18271_cal_on_startup == -1 when cal
|
|
|
+ * module option is unset */
|
|
|
+ if (tda18271_cal_on_startup == -1) {
|
|
|
+ /* honor attach-time configuration */
|
|
|
+ rf_cal_on_startup =
|
|
|
+ ((cfg) && (cfg->rf_cal_on_startup)) ? 1 : 0;
|
|
|
+ } else {
|
|
|
+ /* module option overrides attach configuration */
|
|
|
+ rf_cal_on_startup = tda18271_cal_on_startup;
|
|
|
+ }
|
|
|
+
|
|
|
priv->cal_initialized = false;
|
|
|
mutex_init(&priv->lock);
|
|
|
|
|
@@ -1213,11 +1228,12 @@ struct dvb_frontend *tda18271_attach(struct dvb_frontend *fe, u8 addr,
|
|
|
mutex_lock(&priv->lock);
|
|
|
tda18271_init_regs(fe);
|
|
|
|
|
|
- if ((tda18271_cal_on_startup) && (priv->id == TDA18271HDC2))
|
|
|
+ if ((rf_cal_on_startup) && (priv->id == TDA18271HDC2))
|
|
|
tda18271c2_rf_cal_init(fe);
|
|
|
|
|
|
mutex_unlock(&priv->lock);
|
|
|
break;
|
|
|
+ }
|
|
|
default:
|
|
|
/* existing tuner instance */
|
|
|
fe->tuner_priv = priv;
|