iwmc3200top: simplify imwct_tx
authorTomas Winkler <tomas.winkler@intel.com>
Wed, 16 Dec 2009 04:26:26 +0000 (04:26 +0000)
committerDavid S. Miller <davem@davemloft.net>
Wed, 23 Dec 2009 22:13:32 +0000 (14:13 -0800)
1. remove address argument since we use same address IWMC_SDIO_DATA_ADDR in
    all cases
2. add __iwmct_tx - non locking tx function for already locked contexts

Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/misc/iwmc3200top/fw-download.c
drivers/misc/iwmc3200top/iwmc3200top.h
drivers/misc/iwmc3200top/main.c

index 07055afef858b1ee3c21f1199a3de412939e39f4..9dbaeb574e6380c936381a781617cde8bb8c9412 100644 (file)
@@ -228,7 +228,7 @@ static int iwmct_download_section(struct iwmct_priv *priv, const u8 *p_sec,
                hdr->cmd = cpu_to_le32(cmd);
                /* send it down */
                /* TODO: add more proper sending and error checking */
-               ret = iwmct_tx(priv, 0, parser->buf, trans_size);
+               ret = iwmct_tx(priv, parser->buf, trans_size);
                if (ret != 0) {
                        LOG_INFO(priv, FW_DOWNLOAD,
                                "iwmct_tx returned %d\n", ret);
@@ -280,7 +280,7 @@ static int iwmct_kick_fw(struct iwmct_priv *priv, bool jump)
        LOG_HEXDUMP(FW_DOWNLOAD, parser->buf, sizeof(*hdr));
        /* send it down */
        /* TODO: add more proper sending and error checking */
-       ret = iwmct_tx(priv, 0, parser->buf, IWMC_SDIO_BLK_SIZE);
+       ret = iwmct_tx(priv, parser->buf, IWMC_SDIO_BLK_SIZE);
        if (ret)
                LOG_INFO(priv, FW_DOWNLOAD, "iwmct_tx returned %d", ret);
 
index 43bd510e18720512841451a3620d140c7838ce6d..740ff0738ea8797d809263812b7cea72752281f4 100644 (file)
@@ -196,9 +196,7 @@ struct iwmct_priv {
        struct list_head read_req_list;
 };
 
-extern int iwmct_tx(struct iwmct_priv *priv, unsigned int addr,
-               void *src, int count);
-
+extern int iwmct_tx(struct iwmct_priv *priv, void *src, int count);
 extern int iwmct_fw_load(struct iwmct_priv *priv);
 
 extern void iwmct_dbg_init_params(struct iwmct_priv *drv);
index 38627949ff54b859d9152780455894ffa33ba110..dd0a3913bf6d00cd14dfec797fa89026b4218d87 100644 (file)
@@ -49,6 +49,20 @@ MODULE_LICENSE("GPL");
 MODULE_AUTHOR(DRIVER_COPYRIGHT);
 MODULE_FIRMWARE(FW_NAME(FW_API_VER));
 
+
+static inline int __iwmct_tx(struct iwmct_priv *priv, void *src, int count)
+{
+       return sdio_memcpy_toio(priv->func, IWMC_SDIO_DATA_ADDR, src, count);
+
+}
+int iwmct_tx(struct iwmct_priv *priv, void *src, int count)
+{
+       int ret;
+       sdio_claim_host(priv->func);
+       ret =  __iwmct_tx(priv, src, count);
+       sdio_release_host(priv->func);
+       return ret;
+}
 /*
  * This workers main task is to wait for OP_OPR_ALIVE
  * from TOP FW until ALIVE_MSG_TIMOUT timeout is elapsed.
@@ -158,27 +172,12 @@ int iwmct_send_hcmd(struct iwmct_priv *priv, u8 *cmd, u16 len)
        }
 
        memcpy(buf, cmd, len);
-
-       sdio_claim_host(priv->func);
-       ret = sdio_memcpy_toio(priv->func, IWMC_SDIO_DATA_ADDR, buf,
-                              FW_HCMD_BLOCK_SIZE);
-       sdio_release_host(priv->func);
+       ret = iwmct_tx(priv, buf, FW_HCMD_BLOCK_SIZE);
 
        kfree(buf);
        return ret;
 }
 
-int iwmct_tx(struct iwmct_priv *priv, unsigned int addr,
-       void *src, int count)
-{
-       int ret;
-
-       sdio_claim_host(priv->func);
-       ret = sdio_memcpy_toio(priv->func, addr, src, count);
-       sdio_release_host(priv->func);
-
-       return ret;
-}
 
 static void iwmct_irq_read_worker(struct work_struct *ws)
 {
@@ -273,8 +272,7 @@ static void iwmct_irq_read_worker(struct work_struct *ws)
 
                if (barker & BARKER_DNLOAD_SYNC_MSK) {
                        /* Send the same barker back */
-                       ret = sdio_memcpy_toio(priv->func, IWMC_SDIO_DATA_ADDR,
-                                              buf, iosize);
+                       ret = __iwmct_tx(priv, buf, iosize);
                        if (ret) {
                                LOG_ERROR(priv, IRQ,
                                         "error %d echoing barker\n", ret);