Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+25 −15
Original line number Diff line number Diff line
@@ -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 |