mirror of https://gitee.com/openkylin/linux.git
mmc: atmel-mci: Keep timer enabled when queuing a next request
When atmci_request_end() is about to finish a request for one slot, there is a possibility that there is new request queued for another slot. If this turns out to be the case, the new request is started and the timer is re-programmed for it. Although, a few lines below in atmci_request_end(), this timer becomes deleted, likely corresponding to the other recently completed request. This looks wrong, so let's fix it. Cc: Ludovic Desroches <ludovic.desroches@microchip.com> Cc: Nicolas Ferre <nicolas.ferre@microchip.com> Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org> Acked-by: Ludovic Desroches <ludovic.desroches@microchip.com> Link: https://lore.kernel.org/r/20200414161413.3036-2-ulf.hansson@linaro.org Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
This commit is contained in:
parent
946932d91d
commit
740e649932
|
@ -1557,6 +1557,8 @@ static void atmci_request_end(struct atmel_mci *host, struct mmc_request *mrq)
|
|||
|
||||
WARN_ON(host->cmd || host->data);
|
||||
|
||||
del_timer(&host->timer);
|
||||
|
||||
/*
|
||||
* Update the MMC clock rate if necessary. This may be
|
||||
* necessary if set_ios() is called when a different slot is
|
||||
|
@ -1583,8 +1585,6 @@ static void atmci_request_end(struct atmel_mci *host, struct mmc_request *mrq)
|
|||
host->state = STATE_IDLE;
|
||||
}
|
||||
|
||||
del_timer(&host->timer);
|
||||
|
||||
spin_unlock(&host->lock);
|
||||
mmc_request_done(prev_mmc, mrq);
|
||||
spin_lock(&host->lock);
|
||||
|
|
Loading…
Reference in New Issue