summaryrefslogtreecommitdiffstats
path: root/drivers/media
diff options
context:
space:
mode:
authorMichael Krufky <mkrufky@kernellabs.com>2009-10-24 18:37:22 -0300
committerMauro Carvalho Chehab <mchehab@redhat.com>2009-12-05 18:40:57 -0200
commit5881ecfca058d731758c76018205b5b3dff9291f (patch)
tree6962f9676a5917596c19d09268b3d74f035ad44f /drivers/media
parent188ea058ff2e671270273a1f5d13f46ca75b8a35 (diff)
downloadlinux-5881ecfca058d731758c76018205b5b3dff9291f.tar.gz
linux-5881ecfca058d731758c76018205b5b3dff9291f.tar.bz2
linux-5881ecfca058d731758c76018205b5b3dff9291f.zip
V4L/DVB (13218): tda18271: consolidate common code for calibration on startup determination
consolidate common code used to determine if calibration on startup is needed Signed-off-by: Michael Krufky <mkrufky@kernellabs.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media')
-rw-r--r--drivers/media/common/tuners/tda18271-fe.c51
1 files changed, 15 insertions, 36 deletions
diff --git a/drivers/media/common/tuners/tda18271-fe.c b/drivers/media/common/tuners/tda18271-fe.c
index 8b934f48b6f3..cae0df1748f1 100644
--- a/drivers/media/common/tuners/tda18271-fe.c
+++ b/drivers/media/common/tuners/tda18271-fe.c
@@ -1205,23 +1205,23 @@ static int tda18271_setup_configuration(struct dvb_frontend *fe,
return 0;
}
+static inline int tda18271_need_cal_on_startup(struct tda18271_config *cfg)
+{
+ /* tda18271_cal_on_startup == -1 when cal module option is unset */
+ return ((tda18271_cal_on_startup == -1) ?
+ /* honor configuration setting */
+ ((cfg) && (cfg->rf_cal_on_startup)) :
+ /* module option overrides configuration setting */
+ (tda18271_cal_on_startup)) ? 1 : 0;
+}
+
static int tda18271_set_config(struct dvb_frontend *fe, void *priv_cfg)
{
struct tda18271_config *cfg = (struct tda18271_config *) priv_cfg;
- int rf_cal_on_startup;
tda18271_setup_configuration(fe, cfg);
- /* tda18271_cal_on_startup == -1 when cal module option is unset */
- if (tda18271_cal_on_startup == -1) {
- /* honor configuration setting */
- rf_cal_on_startup =
- ((cfg) && (cfg->rf_cal_on_startup)) ? 1 : 0;
- } else {
- /* module option overrides configuration setting */
- rf_cal_on_startup = tda18271_cal_on_startup;
- }
- if (rf_cal_on_startup)
+ if (tda18271_need_cal_on_startup(cfg))
tda18271_init(fe);
return 0;
@@ -1249,7 +1249,7 @@ struct dvb_frontend *tda18271_attach(struct dvb_frontend *fe, u8 addr,
struct tda18271_config *cfg)
{
struct tda18271_priv *priv = NULL;
- int instance, rf_cal_on_startup = 0;
+ int instance;
mutex_lock(&tda18271_list_mutex);
@@ -1266,17 +1266,6 @@ struct dvb_frontend *tda18271_attach(struct dvb_frontend *fe, u8 addr,
tda18271_setup_configuration(fe, cfg);
- /* 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);
@@ -1289,7 +1278,8 @@ struct dvb_frontend *tda18271_attach(struct dvb_frontend *fe, u8 addr,
mutex_lock(&priv->lock);
tda18271_init_regs(fe);
- if ((rf_cal_on_startup) && (priv->id == TDA18271HDC2))
+ if ((tda18271_need_cal_on_startup(cfg)) &&
+ (priv->id == TDA18271HDC2))
tda18271c2_rf_cal_init(fe);
mutex_unlock(&priv->lock);
@@ -1313,19 +1303,8 @@ struct dvb_frontend *tda18271_attach(struct dvb_frontend *fe, u8 addr,
priv->output_opt = cfg->output_opt;
if (cfg->std_map)
tda18271_update_std_map(fe, cfg->std_map);
-
- /* 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->rf_cal_on_startup) ? 1 : 0;
- } else {
- /* module option overrides attach config */
- rf_cal_on_startup = tda18271_cal_on_startup;
- }
}
- if (rf_cal_on_startup)
+ if (tda18271_need_cal_on_startup(cfg))
tda18271_init(fe);
break;
}