iwmc3200top: revamp fw name handling

1. define macro for handling firmware api version
2. add MODULE_FIRMWARE
3. cleanup iwmct_fw_load style

Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Tomas Winkler 2009-11-18 23:29:57 -08:00 committed by David S. Miller
parent a0607fd3a2
commit 0e4817470b
3 changed files with 14 additions and 14 deletions

View file

@ -291,35 +291,31 @@ static int iwmct_kick_fw(struct iwmct_priv *priv, bool jump)
int iwmct_fw_load(struct iwmct_priv *priv) int iwmct_fw_load(struct iwmct_priv *priv)
{ {
const struct firmware *raw = NULL; const u8 *fw_name = FW_NAME(FW_API_VER);
__le32 addr; const struct firmware *raw;
size_t len;
const u8 *pdata; const u8 *pdata;
const u8 *name = "iwmc3200top.1.fw"; size_t len;
int ret = 0; __le32 addr;
int ret;
/* clear parser struct */ /* clear parser struct */
memset(&priv->parser, 0, sizeof(struct iwmct_parser)); memset(&priv->parser, 0, sizeof(struct iwmct_parser));
if (!name) {
ret = -EINVAL;
goto exit;
}
/* get the firmware */ /* get the firmware */
ret = request_firmware(&raw, name, &priv->func->dev); ret = request_firmware(&raw, fw_name, &priv->func->dev);
if (ret < 0) { if (ret < 0) {
LOG_ERROR(priv, FW_DOWNLOAD, "%s request_firmware failed %d\n", LOG_ERROR(priv, FW_DOWNLOAD, "%s request_firmware failed %d\n",
name, ret); fw_name, ret);
goto exit; goto exit;
} }
if (raw->size < sizeof(struct iwmct_fw_sec_hdr)) { if (raw->size < sizeof(struct iwmct_fw_sec_hdr)) {
LOG_ERROR(priv, FW_DOWNLOAD, "%s smaller then (%zd) (%zd)\n", LOG_ERROR(priv, FW_DOWNLOAD, "%s smaller then (%zd) (%zd)\n",
name, sizeof(struct iwmct_fw_sec_hdr), raw->size); fw_name, sizeof(struct iwmct_fw_sec_hdr), raw->size);
goto exit; goto exit;
} }
LOG_INFO(priv, FW_DOWNLOAD, "Read firmware '%s'\n", name); LOG_INFO(priv, FW_DOWNLOAD, "Read firmware '%s'\n", fw_name);
ret = iwmct_fw_parser_init(priv, raw->data, raw->size, priv->trans_len); ret = iwmct_fw_parser_init(priv, raw->data, raw->size, priv->trans_len);
if (ret < 0) { if (ret < 0) {
@ -339,7 +335,7 @@ int iwmct_fw_load(struct iwmct_priv *priv)
while (iwmct_parse_next_section(priv, &pdata, &len, &addr)) { while (iwmct_parse_next_section(priv, &pdata, &len, &addr)) {
if (iwmct_download_section(priv, pdata, len, addr)) { if (iwmct_download_section(priv, pdata, len, addr)) {
LOG_ERROR(priv, FW_DOWNLOAD, LOG_ERROR(priv, FW_DOWNLOAD,
"%s download section failed\n", name); "%s download section failed\n", fw_name);
ret = -EIO; ret = -EIO;
goto exit; goto exit;
} }

View file

@ -30,6 +30,9 @@
#include <linux/workqueue.h> #include <linux/workqueue.h>
#define DRV_NAME "iwmc3200top" #define DRV_NAME "iwmc3200top"
#define FW_API_VER 1
#define _FW_NAME(api) DRV_NAME "." #api ".fw"
#define FW_NAME(api) _FW_NAME(api)
#define IWMC_SDIO_BLK_SIZE 256 #define IWMC_SDIO_BLK_SIZE 256
#define IWMC_DEFAULT_TR_BLK 64 #define IWMC_DEFAULT_TR_BLK 64

View file

@ -47,6 +47,7 @@ MODULE_DESCRIPTION(DRIVER_DESCRIPTION);
MODULE_VERSION(DRIVER_VERSION); MODULE_VERSION(DRIVER_VERSION);
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
MODULE_AUTHOR(DRIVER_COPYRIGHT); MODULE_AUTHOR(DRIVER_COPYRIGHT);
MODULE_FIRMWARE(FW_NAME(FW_API_VER));
/* /*
* This workers main task is to wait for OP_OPR_ALIVE * This workers main task is to wait for OP_OPR_ALIVE