aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/common
diff options
context:
space:
mode:
authorMichael Krufky <mkrufky@kernellabs.com>2009-11-01 02:52:01 -0300
committerMauro Carvalho Chehab <mchehab@redhat.com>2009-12-05 18:41:09 -0200
commit972aacc2989506d9c67f8b710021ff98041363d5 (patch)
treeab00854da847884a1fd0f512b08f6f923267b1e5 /drivers/media/common
parentV4L/DVB (13260): saa7134: add support for Leadtek Winfast DTV-1000S remote control (diff)
downloadlinux-dev-972aacc2989506d9c67f8b710021ff98041363d5.tar.xz
linux-dev-972aacc2989506d9c67f8b710021ff98041363d5.zip
V4L/DVB (13262): tda18271: fix regression preventing std map override from taking effect
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>
Diffstat (limited to 'drivers/media/common')
-rw-r--r--drivers/media/common/tuners/tda18271-fe.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/drivers/media/common/tuners/tda18271-fe.c b/drivers/media/common/tuners/tda18271-fe.c
index 07d6e1c159ca..b2e15456d5f3 100644
--- a/drivers/media/common/tuners/tda18271-fe.c
+++ b/drivers/media/common/tuners/tda18271-fe.c
@@ -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,