V4L/DVB (13262): tda18271: fix regression preventing std map override from taking...
authorMichael Krufky <mkrufky@kernellabs.com>
Sun, 1 Nov 2009 05:52:01 +0000 (02:52 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Sat, 5 Dec 2009 20:41:09 +0000 (18:41 -0200)
In the changeset entitled, "tda18271: add support for the set_config method",
the initialization order was changed such that the standard map overrides
were being applied before loading the default standard map, based on the
stepping of the silicon.  This changeset restores the proper order by
processing the standard map overrides both within the tda18271_set_config()
and the tda18271_attach() functions, after we read the id register of the
tuner.

Thanks to Michael Obst for his testing, helping me to identify the regression.

Signed-off-by: Michael Krufky <mkrufky@kernellabs.com>
Signed-off-by: Michael Obst <mike.obst@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/common/tuners/tda18271-fe.c

index 07d6e1c159ca60544a10694988e615feac51299b..b2e15456d5f36600c32c78542c42d7188634071a 100644 (file)
@@ -1198,10 +1198,6 @@ static int tda18271_setup_configuration(struct dvb_frontend *fe,
        priv->output_opt = (cfg) ?
                cfg->output_opt : TDA18271_OUTPUT_LT_XT_ON;
 
-       /* override default std map with values in config struct */
-       if ((cfg) && (cfg->std_map))
-               tda18271_update_std_map(fe, cfg->std_map);
-
        return 0;
 }
 
@@ -1224,6 +1220,10 @@ static int tda18271_set_config(struct dvb_frontend *fe, void *priv_cfg)
        if (tda18271_need_cal_on_startup(cfg))
                tda18271_init(fe);
 
+       /* override default std map with values in config struct */
+       if ((cfg) && (cfg->std_map))
+               tda18271_update_std_map(fe, cfg->std_map);
+
        return 0;
 }
 
@@ -1307,6 +1307,10 @@ struct dvb_frontend *tda18271_attach(struct dvb_frontend *fe, u8 addr,
                break;
        }
 
+       /* override default std map with values in config struct */
+       if ((cfg) && (cfg->std_map))
+               tda18271_update_std_map(fe, cfg->std_map);
+
        mutex_unlock(&tda18271_list_mutex);
 
        memcpy(&fe->ops.tuner_ops, &tda18271_tuner_ops,