refactor(nxp-mmc): check multi block transfer
Extract the multiblock check into a dedicated function. This function
returns true for multiblock reads and writes.
Change-Id: I6c4ea62977781a4f43d6a20513147b99b3baa1b2
Co-developed-by: Ciprian Costea <ciprianmarian.costea@nxp.com>
Signed-off-by: Ciprian Costea <ciprianmarian.costea@nxp.com>
Signed-off-by: Ghennadi Procopciuc <ghennadi.procopciuc@nxp.com>
diff --git a/drivers/imx/usdhc/imx_usdhc.c b/drivers/imx/usdhc/imx_usdhc.c
index 0c4f8d0..610c3e6 100644
--- a/drivers/imx/usdhc/imx_usdhc.c
+++ b/drivers/imx/usdhc/imx_usdhc.c
@@ -120,6 +120,13 @@
return (cmd_idx == MMC_CMD(24)) || (cmd_idx == MMC_CMD(25));
}
+static bool is_multiple_block_transfer(const struct mmc_cmd *cmd)
+{
+ unsigned int cmd_idx = cmd->cmd_idx;
+
+ return cmd_idx == MMC_CMD(18) || cmd_idx == MMC_CMD(25);
+}
+
static bool is_data_transfer_cmd(const struct mmc_cmd *cmd)
{
uintptr_t reg_base = imx_usdhc_params.reg_base;
@@ -177,7 +184,7 @@
{
uintptr_t reg_base = imx_usdhc_params.reg_base;
unsigned int state, flags = INTSTATEN_CC | INTSTATEN_CTOE;
- unsigned int mixctl = 0, multiple = 0;
+ unsigned int mixctl = 0;
unsigned int cmd_retries = 0;
uint32_t xfertype;
bool data;
@@ -206,20 +213,7 @@
mmio_write_32(reg_base + INTSIGEN, 0);
udelay(1000);
- switch (cmd->cmd_idx) {
- case MMC_CMD(18):
- multiple = 1;
- break;
- case MMC_CMD(25):
- multiple = 1;
- /* for data op flag */
- /* fallthrough */
- break;
- default:
- break;
- }
-
- if (multiple) {
+ if (is_multiple_block_transfer(cmd)) {
mixctl |= MIXCTRL_MSBSEL;
mixctl |= MIXCTRL_BCEN;
}