spi: spi-mtk-nor: fix timeout calculation overflow
authorChuanhong Guo <gch981213@gmail.com>
Tue, 22 Sep 2020 11:49:02 +0000 (19:49 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 5 Nov 2020 10:51:32 +0000 (11:51 +0100)
commitf3a8fc35eef9b15c17c3f22272488c5445d328ee
tree955a5c80da55028893f7a60ea8e2d1c1220ff84f
parentefecc0e9e2a1d23985b16b6f533bcf2e45e544b0
spi: spi-mtk-nor: fix timeout calculation overflow

commit 4cafaddedb5fbef9531202ee547784409fd0de33 upstream.

CLK_TO_US macro is used to calculate potential transfer time for various
timeout handling. However it overflows on transfer bigger than 512 bytes
because it first did (len * 8 * 1000000).
This controller typically operates at 45MHz. This patch did 2 things:
1. calculate clock / 1000000 first
2. add a 4M transfer size cap so that the final timeout in DMA reading
   doesn't overflow

Fixes: 881d1ee9fe81f ("spi: add support for mediatek spi-nor controller")
Cc: <stable@vger.kernel.org>
Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
Link: https://lore.kernel.org/r/20200922114905.2942859-1-gch981213@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/spi/spi-mtk-nor.c