[U-Boot] [PATCH v3 5/6] MVEBUMMC : CLEAN code
Pantelis Antoniou
panto at antoniou-consulting.com
Mon Jan 5 19:30:24 CET 2015
Hi Gérald,
> On Dec 13, 2014, at 22:35 , Gérald Kerma <drEagle at doukki.net> wrote:
>
> Clean mvebu_mmc_send_cmd
>
> Signed-off-by: Gérald Kerma <drEagle at doukki.net>
> ---
> drivers/mmc/mvebu_mmc.c | 40 ++++++++++++++++++++--------------------
> 1 file changed, 20 insertions(+), 20 deletions(-)
>
> diff --git a/drivers/mmc/mvebu_mmc.c b/drivers/mmc/mvebu_mmc.c
> index 3e08f40..721ebcc 100644
> --- a/drivers/mmc/mvebu_mmc.c
> +++ b/drivers/mmc/mvebu_mmc.c
> @@ -103,16 +103,9 @@ static int mvebu_mmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd,
> DRIVER_NAME, hw_state, count, (get_timer(0) - (start)));
> }
>
> - /* Set up for a data transfer if we have one */
> - if (data) {
> - int err = mvebu_mmc_setup_data(data);
> -
> - if (err) {
> - debug("%s: command DATA error :%x\n",
> - DRIVER_NAME, err);
> - return err;
> - }
> - }
> + /* Clear status */
> + mvebu_mmc_write(SDIO_NOR_INTR_STATUS, SDIO_POLL_MASK);
> + mvebu_mmc_write(SDIO_ERR_INTR_STATUS, SDIO_POLL_MASK);
>
> resptype = SDIO_CMD_INDEX(cmd->cmdidx);
>
> @@ -138,6 +131,14 @@ static int mvebu_mmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd,
> }
>
> if (data) {
> + int err = mvebu_mmc_setup_data(data);
> +
> + if (err) {
> + debug("%s: command DATA error :%x\n",
> + DRIVER_NAME, err);
> + return err;
> + }
> +
> resptype |= SDIO_CMD_DATA_PRESENT | SDIO_CMD_CHECK_DATACRC16;
> xfertype |= SDIO_XFER_MODE_HW_WR_DATA_EN;
> if (data->flags & MMC_DATA_READ) {
> @@ -157,15 +158,9 @@ static int mvebu_mmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd,
> /* Setting Xfer mode */
> mvebu_mmc_write(SDIO_XFER_MODE, xfertype);
>
> - mvebu_mmc_write(SDIO_NOR_INTR_STATUS, ~SDIO_NOR_CARD_INT);
> - mvebu_mmc_write(SDIO_ERR_INTR_STATUS, SDIO_POLL_MASK);
> -
> /* Sending command */
> mvebu_mmc_write(SDIO_CMD, resptype);
>
> - mvebu_mmc_write(SDIO_NOR_INTR_EN, SDIO_POLL_MASK);
> - mvebu_mmc_write(SDIO_ERR_INTR_EN, SDIO_POLL_MASK);
> -
> start = get_timer(0);
>
> while (!((mvebu_mmc_read(SDIO_NOR_INTR_STATUS)) & waittype)) {
> @@ -189,10 +184,6 @@ static int mvebu_mmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd,
> }
> }
>
> - if (mvebu_mmc_read(SDIO_ERR_INTR_STATUS) &
> - (SDIO_ERR_CMD_TIMEOUT | SDIO_ERR_DATA_TIMEOUT))
> - return TIMEOUT;
> -
> /* Handling response */
> if (cmd->resp_type & MMC_RSP_136) {
> uint response[8];
> @@ -225,6 +216,11 @@ static int mvebu_mmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd,
> cmd->response[1] = ((response[0] & 0xfc00) >> 10);
> cmd->response[2] = 0;
> cmd->response[3] = 0;
> + } else {
> + cmd->response[0] = 0;
> + cmd->response[1] = 0;
> + cmd->response[2] = 0;
> + cmd->response[3] = 0;
> }
>
> debug("%s: resp[0x%x] ", DRIVER_NAME, cmd->resp_type);
> @@ -234,6 +230,10 @@ static int mvebu_mmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd,
> debug("[0x%x] ", cmd->response[3]);
> debug("\n");
>
> + if (mvebu_mmc_read(SDIO_ERR_INTR_STATUS) &
> + (SDIO_ERR_CMD_TIMEOUT | SDIO_ERR_DATA_TIMEOUT))
> + return TIMEOUT;
> +
> return 0;
> }
>
> --
> 2.1.3
Applied, thanks
— Pantelis
More information about the U-Boot
mailing list