staging: mt7621-mmc: Factor out from msdc_command_start()
authorChristian Lütke-Stetzkamp <christian@lkamp.de>
Sat, 16 Jun 2018 14:15:06 +0000 (16:15 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 28 Jun 2018 12:48:05 +0000 (21:48 +0900)
Currently msdc_command_start does multiple things and is hard to read,
so factor out the finding of the response type.

Signed-off-by: Christian Lütke-Stetzkamp <christian@lkamp.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/mt7621-mmc/sd.c

index 93f14c9694b94b7745d1c34ae432b25605645386..f7df3221a302f7c389d565ca7c4dde3255a4dfd0 100644 (file)
@@ -705,25 +705,11 @@ static void msdc_pm(pm_message_t state, void *data)
 }
 #endif
 
-/*--------------------------------------------------------------------------*/
-/* mmc_host_ops members                                                      */
-/*--------------------------------------------------------------------------*/
-static unsigned int msdc_command_start(struct msdc_host   *host,
-                                      struct mmc_command *cmd,
-                                      unsigned long       timeout)
+static inline u32 msdc_cmd_find_resp(struct mmc_command *cmd)
 {
        u32 opcode = cmd->opcode;
-       u32 rawcmd;
-       u32 wints = MSDC_INT_CMDRDY  | MSDC_INT_RSPCRCERR  | MSDC_INT_CMDTMO  |
-                   MSDC_INT_ACMDRDY | MSDC_INT_ACMDCRCERR | MSDC_INT_ACMDTMO |
-                   MSDC_INT_ACMD19_DONE;
-
        u32 resp;
-       unsigned long tmo;
 
-       /* Protocol layer does not provide response type, but our hardware needs
-        * to know exact type, not just size!
-        */
        if (opcode == MMC_SEND_OP_COND || opcode == SD_APP_OP_COND) {
                resp = RESP_R3;
        } else if (opcode == MMC_SET_RELATIVE_ADDR) {
@@ -759,6 +745,30 @@ static unsigned int msdc_command_start(struct msdc_host   *host,
                }
        }
 
+       return resp;
+}
+
+/*--------------------------------------------------------------------------*/
+/* mmc_host_ops members                                                      */
+/*--------------------------------------------------------------------------*/
+static unsigned int msdc_command_start(struct msdc_host   *host,
+                                      struct mmc_command *cmd,
+                                      unsigned long       timeout)
+{
+       u32 opcode = cmd->opcode;
+       u32 rawcmd;
+       u32 wints = MSDC_INT_CMDRDY  | MSDC_INT_RSPCRCERR  | MSDC_INT_CMDTMO  |
+                   MSDC_INT_ACMDRDY | MSDC_INT_ACMDCRCERR | MSDC_INT_ACMDTMO |
+                   MSDC_INT_ACMD19_DONE;
+
+       u32 resp;
+       unsigned long tmo;
+
+       /* Protocol layer does not provide response type, but our hardware needs
+        * to know exact type, not just size!
+        */
+       resp = msdc_cmd_find_resp(cmd);
+
        cmd->error = 0;
        /* rawcmd :
         * vol_swt << 30 | auto_cmd << 28 | blklen << 16 | go_irq << 15 |