summaryrefslogtreecommitdiff
path: root/drivers/media/common/tuners
diff options
context:
space:
mode:
authorMichael Krufky <mkrufky@kernellabs.com>2012-02-07 09:39:36 +0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2012-02-14 23:21:53 +0400
commitddea427fb3e64d817d4432e5efd2abbfc4ddb02e (patch)
tree66ca26c1a802fdc8f6dc9fe8800980cd75164f16 /drivers/media/common/tuners
parent00f92ed6c8b7b755e3c150bb115843f77f33d995 (diff)
downloadlinux-ddea427fb3e64d817d4432e5efd2abbfc4ddb02e.tar.xz
[media] xc5000: remove static dependencies on xc5000 created by previous changesets
convert the firmware configuration attach-time parameter from a pointer to an integer so as to remove the static dependency created by the previous changesets. Signed-off-by: Michael Krufky <mkrufky@kernellabs.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/common/tuners')
-rw-r--r--drivers/media/common/tuners/xc5000.c24
-rw-r--r--drivers/media/common/tuners/xc5000.h15
2 files changed, 26 insertions, 13 deletions
diff --git a/drivers/media/common/tuners/xc5000.c b/drivers/media/common/tuners/xc5000.c
index 5af309cddd5e..2c71ee7dcb1e 100644
--- a/drivers/media/common/tuners/xc5000.c
+++ b/drivers/media/common/tuners/xc5000.c
@@ -203,16 +203,33 @@ static struct XC_TV_STANDARD XC5000_Standard[MAX_TV_STANDARD] = {
{"FM Radio-INPUT1_MONO", 0x0278, 0x9002}
};
-struct xc5000_fw_cfg xc5000a_1_6_114 = {
+
+struct xc5000_fw_cfg {
+ char *name;
+ u16 size;
+};
+
+static struct xc5000_fw_cfg xc5000a_1_6_114 = {
.name = "dvb-fe-xc5000-1.6.114.fw",
.size = 12401,
};
-struct xc5000_fw_cfg xc5000c_41_024_5_31875 = {
+static struct xc5000_fw_cfg xc5000c_41_024_5_31875 = {
.name = "dvb-fe-xc5000c-41.024.5-31875.fw",
.size = 16503,
};
+static inline struct xc5000_fw_cfg *xc5000_assign_firmware(int fw)
+{
+ switch (fw) {
+ default:
+ case XC5000_FW_A_1_6_114:
+ return &xc5000a_1_6_114;
+ case XC5000_FW_C_41_024_5_31875:
+ return &xc5000c_41_024_5_31875;
+ }
+}
+
static int xc_load_fw_and_init_tuner(struct dvb_frontend *fe);
static int xc5000_is_firmware_loaded(struct dvb_frontend *fe);
static int xc5000_readreg(struct xc5000_priv *priv, u16 reg, u16 *val);
@@ -1152,7 +1169,8 @@ struct dvb_frontend *xc5000_attach(struct dvb_frontend *fe,
unless explicitly specified */
if ((priv->fw == NULL) || (cfg->fw))
/* use default firmware if none specified */
- priv->fw = (cfg->fw) ? cfg->fw : XC5000_DEFAULT_FIRMWARE;
+ priv->fw = xc5000_assign_firmware((cfg->fw) ?
+ cfg->fw : XC5000_DEFAULT_FIRMWARE);
/* Check if firmware has been loaded. It is possible that another
instance of the driver has loaded the firmware.
diff --git a/drivers/media/common/tuners/xc5000.h b/drivers/media/common/tuners/xc5000.h
index 91036757e898..c003af5322a0 100644
--- a/drivers/media/common/tuners/xc5000.h
+++ b/drivers/media/common/tuners/xc5000.h
@@ -27,23 +27,18 @@
struct dvb_frontend;
struct i2c_adapter;
-struct xc5000_fw_cfg {
- char *name;
- u16 size;
-};
-
-extern struct xc5000_fw_cfg xc5000a_1_6_114;
-extern struct xc5000_fw_cfg xc5000c_41_024_5_31875;
+#define XC5000_FW_A_1_6_114 1
+#define XC5000_FW_C_41_024_5_31875 2
-#define XC5000_DEFAULT_FIRMWARE &xc5000a_1_6_114
-#define XC5000C_DEFAULT_FIRMWARE &xc5000c_41_024_5_31875
+#define XC5000_DEFAULT_FIRMWARE XC5000_FW_A_1_6_114
+#define XC5000C_DEFAULT_FIRMWARE XC5000_FW_C_41_024_5_31875
struct xc5000_config {
u8 i2c_address;
u32 if_khz;
u8 radio_input;
- struct xc5000_fw_cfg *fw;
+ int fw;
};
/* xc5000 callback command */