diff options
author | Michael Krufky <mkrufky@kernellabs.com> | 2012-02-07 02:39:36 -0300 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2012-02-14 17:21:53 -0200 |
commit | ddea427fb3e64d817d4432e5efd2abbfc4ddb02e (patch) | |
tree | 66ca26c1a802fdc8f6dc9fe8800980cd75164f16 /drivers/media/common | |
parent | 00f92ed6c8b7b755e3c150bb115843f77f33d995 (diff) | |
download | op-kernel-dev-ddea427fb3e64d817d4432e5efd2abbfc4ddb02e.zip op-kernel-dev-ddea427fb3e64d817d4432e5efd2abbfc4ddb02e.tar.gz |
[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')
-rw-r--r-- | drivers/media/common/tuners/xc5000.c | 24 | ||||
-rw-r--r-- | drivers/media/common/tuners/xc5000.h | 15 |
2 files changed, 26 insertions, 13 deletions
diff --git a/drivers/media/common/tuners/xc5000.c b/drivers/media/common/tuners/xc5000.c index 5af309c..2c71ee7 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 9103675..c003af5 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 */ |