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: Christian Lütke-Stetzkamp <christian@lkamp.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Christian Lütke-Stetzkamp 2018-06-16 16:15:06 +02:00 committed by Greg Kroah-Hartman
parent 38ee87eaad
commit 256e086636

View file

@ -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,
} }
} }
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 |