]> git.dujemihanovic.xyz Git - u-boot.git/commit
arm: timer: sunxi: add Allwinner timer erratum workaround
authorAndre Przywara <andre.przywara@arm.com>
Wed, 27 Jun 2018 00:42:53 +0000 (01:42 +0100)
committerJagan Teki <jagan@amarulasolutions.com>
Tue, 3 Jul 2018 16:30:00 +0000 (22:00 +0530)
commitbe0d217952222b2bd3ed071de9bb0c66d8cc80d9
tree54129545162b45102f9c1a80bee4f96e51248667
parent38651588d3d9a977ca457049d6357408ddad4a8b
arm: timer: sunxi: add Allwinner timer erratum workaround

The Allwinner A64 SoCs suffers from an arch timer implementation erratum,
where sometimes the lower 11 bits of the counter value erroneously
become all 0's or all 1's [1]. This leads to sudden jumps, both forwards and
backwards, with the latter one often showing weird behaviour.
Port the workaround proposed for Linux to U-Boot and activate it for all
A64 boards.
This fixes crashes when accessing MMC devices (SD cards), caused by a
recent change to actually use the counter value for timeout checks.

Fixes: 5ff8e54888e4d26a352453564f7f599d29696dc9 ("sunxi: improve throughput
in the sunxi_mmc driver")

[1] http://lists.infradead.org/pipermail/linux-arm-kernel/2018-May/576886.html

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Reviewed-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
Tested-by: Jagan Teki <jagan@amarulasolutions.com>
Tested-by: Andreas Färber <afaerber@suse.de>
Tested-by: Guillaume Gardet <guillaume.gardet@free.fr>
arch/arm/cpu/armv8/generic_timer.c
arch/arm/mach-sunxi/Kconfig