Am 15.02.2017 um 18:04 schrieb Kevin Hilman: > Heiner Kallweit <hkallweit1@xxxxxxxxx> writes: > >> Remove use of unneeded members cmd_arg and cmd_resp. >> Setting SD_EMMC_CMD_RSP is only needed if CMD_CFG_RESP_NUM is set, >> so don't write this register in all other cases. >> >> Signed-off-by: Heiner Kallweit <hkallweit1@xxxxxxxxx> > > I'm not sure I like this change. This works now because there is only > one descriptor used, but one of the next things to work on in this > driver is taking advantage of the internal DMA capabilities, which means > having a chain of descriptorsall filled out in memory. > I implemented the descriptor chain mode and tests (together with CMD23 mode) resulted in 140 MB/s read performance (from a 128GB eMMC card). So I will submit this extension together with the CMD23 mode extension. Heiner > Kevin > >> --- >> drivers/mmc/host/meson-gx-mmc.c | 6 ++---- >> 1 file changed, 2 insertions(+), 4 deletions(-) >> >> diff --git a/drivers/mmc/host/meson-gx-mmc.c b/drivers/mmc/host/meson-gx-mmc.c >> index ece38b44..630e0590 100644 >> --- a/drivers/mmc/host/meson-gx-mmc.c >> +++ b/drivers/mmc/host/meson-gx-mmc.c >> @@ -456,7 +456,6 @@ static void meson_mmc_start_cmd(struct mmc_host *mmc, struct mmc_command *cmd) >> desc->cmd_cfg |= (cmd->opcode & CMD_CFG_CMD_INDEX_MASK) << >> CMD_CFG_CMD_INDEX_SHIFT; >> desc->cmd_cfg |= CMD_CFG_OWNER; /* owned by CPU */ >> - desc->cmd_arg = cmd->arg; >> >> /* Response */ >> if (cmd->flags & MMC_RSP_PRESENT) { >> @@ -464,7 +463,7 @@ static void meson_mmc_start_cmd(struct mmc_host *mmc, struct mmc_command *cmd) >> if (cmd->flags & MMC_RSP_136) >> desc->cmd_cfg |= CMD_CFG_RESP_128; >> desc->cmd_cfg |= CMD_CFG_RESP_NUM; >> - desc->cmd_resp = 0; >> + writel(0, host->regs + SD_EMMC_CMD_RSP); >> >> if (!(cmd->flags & MMC_RSP_CRC)) >> desc->cmd_cfg |= CMD_CFG_RESP_NOCRC; >> @@ -540,9 +539,8 @@ static void meson_mmc_start_cmd(struct mmc_host *mmc, struct mmc_command *cmd) >> desc->cmd_cfg |= CMD_CFG_END_OF_CHAIN; >> writel(desc->cmd_cfg, host->regs + SD_EMMC_CMD_CFG); >> writel(desc->cmd_data, host->regs + SD_EMMC_CMD_DAT); >> - writel(desc->cmd_resp, host->regs + SD_EMMC_CMD_RSP); >> wmb(); /* ensure descriptor is written before kicked */ >> - writel(desc->cmd_arg, host->regs + SD_EMMC_CMD_ARG); >> + writel(cmd->arg, host->regs + SD_EMMC_CMD_ARG); >> } >> >> static void meson_mmc_request(struct mmc_host *mmc, struct mmc_request *mrq) > -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html