mirror of
https://github.com/torvalds/linux.git
synced 2024-10-31 01:01:52 +00:00
mmc: atmel-mci: correct data timeout computation
The HSMCI operates at a rate of up to Master Clock divided by two. Moreover previous calculation can cause overflows and so wrong timeouts. Signed-off-by: Ludovic Desroches <ludovic.desroches@atmel.com> Acked-by: Nicolas Ferre <nicolas.ferre@atmel.com> Cc: <stable@vger.kernel.org> Signed-off-by: Chris Ball <cjb@laptop.org>
This commit is contained in:
parent
9f4e8151db
commit
66292ad92c
@ -482,7 +482,14 @@ err:
|
||||
static inline unsigned int atmci_ns_to_clocks(struct atmel_mci *host,
|
||||
unsigned int ns)
|
||||
{
|
||||
return (ns * (host->bus_hz / 1000000) + 999) / 1000;
|
||||
/*
|
||||
* It is easier here to use us instead of ns for the timeout,
|
||||
* it prevents from overflows during calculation.
|
||||
*/
|
||||
unsigned int us = DIV_ROUND_UP(ns, 1000);
|
||||
|
||||
/* Maximum clock frequency is host->bus_hz/2 */
|
||||
return us * (DIV_ROUND_UP(host->bus_hz, 2000000));
|
||||
}
|
||||
|
||||
static void atmci_set_timeout(struct atmel_mci *host,
|
||||
|
Loading…
Reference in New Issue
Block a user