Commit 256e0866 authored by Christian Lütke-Stetzkamp's avatar Christian Lütke-Stetzkamp Committed by Greg Kroah-Hartman

staging: mt7621-mmc: Factor out from msdc_command_start()

Currently msdc_command_start does multiple things and is hard to read,
so factor out the finding of the response type.
Signed-off-by: default avatarChristian Lütke-Stetzkamp <christian@lkamp.de>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 38ee87ea
...@@ -705,25 +705,11 @@ static void msdc_pm(pm_message_t state, void *data) ...@@ -705,25 +705,11 @@ static void msdc_pm(pm_message_t state, void *data)
} }
#endif #endif
/*--------------------------------------------------------------------------*/ static inline u32 msdc_cmd_find_resp(struct mmc_command *cmd)
/* 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 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; 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) { if (opcode == MMC_SEND_OP_COND || opcode == SD_APP_OP_COND) {
resp = RESP_R3; resp = RESP_R3;
} else if (opcode == MMC_SET_RELATIVE_ADDR) { } else if (opcode == MMC_SET_RELATIVE_ADDR) {
...@@ -759,6 +745,30 @@ static unsigned int msdc_command_start(struct msdc_host *host, ...@@ -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; cmd->error = 0;
/* rawcmd : /* rawcmd :
* vol_swt << 30 | auto_cmd << 28 | blklen << 16 | go_irq << 15 | * vol_swt << 30 | auto_cmd << 28 | blklen << 16 | go_irq << 15 |
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment