From ddea427fb3e64d817d4432e5efd2abbfc4ddb02e Mon Sep 17 00:00:00 2001 From: Michael Krufky Date: Tue, 7 Feb 2012 02:39:36 -0300 Subject: [PATCH] [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 Signed-off-by: Mauro Carvalho Chehab --- drivers/media/common/tuners/xc5000.c | 24 +++++++++++++++++++++--- 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 */ -- 2.7.4