linux/arch/arm
Russell King fb833b1fbb ARM: fix delays
Commit 215e362daf ("ARM: 8306/1: loop_udelay: remove bogomips value
limitation") tried to increase the bogomips limitation, but in doing
so messed up udelay such that it always gives about a 5% error in the
delay, even if we use a timer.

The calculation is:

	loops = UDELAY_MULT * us_delay * ticks_per_jiffy >> UDELAY_SHIFT

Originally, UDELAY_MULT was ((UL(2199023) * HZ) >> 11) and UDELAY_SHIFT
30.  Assuming HZ=100, us_delay of 1000 and ticks_per_jiffy of 1660000
(eg, 166MHz timer, 1ms delay) this would calculate:

	((UL(2199023) * HZ) >> 11) * 1000 * 1660000 >> 30
		=> 165999

With the new values of 2047 * HZ + 483648 * HZ / 1000000 and 31, we get:

	(2047 * HZ + 483648 * HZ / 1000000) * 1000 * 1660000 >> 31
		=> 158269

which is incorrect.  This is due to a typo - correcting it gives:

	(2147 * HZ + 483648 * HZ / 1000000) * 1000 * 1660000 >> 31
		=> 165999

i.o.w, the original value.

Fixes: 215e362daf ("ARM: 8306/1: loop_udelay: remove bogomips value limitation")
Cc: <stable@vger.kernel.org>
Reviewed-by: Nicolas Pitre <nico@linaro.org>
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
2016-10-06 08:45:40 +01:00
..
boot ARM: 8618/1: decompressor: reset ttbcr fields to use TTBR0 on ARMv7 2016-10-02 20:05:14 +01:00
common ARM: locomo: fix locomo irq handling 2016-09-12 12:12:31 +01:00
configs Revert "ARM: aspeed: adapt defconfigs for new CONFIG_PRINTK_TIME" 2016-08-03 11:07:57 +02:00
crypto
firmware
include ARM: fix delays 2016-10-06 08:45:40 +01:00
kernel ARM: 8616/1: dt: Respect property size when parsing CPUs 2016-09-29 16:57:43 +01:00
kvm KVM/ARM Fixes for v4.8-rc3 2016-08-18 12:19:19 +02:00
lib
mach-alpine
mach-artpec
mach-asm9260
mach-aspeed
mach-at91 ARM: SoC platform updates for v4.8 2016-08-01 18:27:08 -04:00
mach-axxia
mach-bcm ARM: DT updates for v4.8 2016-08-01 18:37:45 -04:00
mach-berlin
mach-clps711x ARM: do away with final ARCH_REQUIRE_GPIOLIB 2016-08-02 12:31:58 -07:00
mach-cns3xxx
mach-davinci ARM: SoC platform updates for v4.8 2016-08-01 18:27:08 -04:00
mach-digicolor
mach-dove
mach-ebsa110
mach-efm32
mach-ep93xx
mach-exynos ARM: SoC driver updates for v4.8 2016-08-01 18:36:01 -04:00
mach-footbridge
mach-gemini
mach-highbank
mach-hisi ARM: hisi: consolidate the hisilicon machine entries 2016-07-07 09:37:59 +01:00
mach-imx i.MX fixes for 4.8, 2nd round: 2016-09-07 21:24:22 -07:00
mach-integrator treewide: replace obsolete _refok by __ref 2016-08-02 17:31:41 -04:00
mach-iop13xx
mach-iop32x
mach-iop33x
mach-ixp4xx
mach-keystone ARM: SoC defconfig updates for v4.8 2016-08-01 18:30:44 -04:00
mach-ks8695
mach-lpc18xx
mach-lpc32xx
mach-mediatek
mach-meson arm: meson: explicitly select clk drivers 2016-07-07 17:54:25 +02:00
mach-mmp
mach-moxart ARM: SoC cleanups for v4.8 2016-08-01 18:21:13 -04:00
mach-mv78xx0 treewide: replace obsolete _refok by __ref 2016-08-02 17:31:41 -04:00
mach-mvebu ARM: don't include removed directories 2016-08-10 22:42:18 +02:00
mach-mxs ARM: SoC cleanups for v4.8 2016-08-01 18:21:13 -04:00
mach-netx
mach-nomadik
mach-nspire DeviceTree update for 4.8: 2016-07-30 11:32:01 -07:00
mach-omap1 ARM: SoC platform updates for v4.8 2016-08-01 18:27:08 -04:00
mach-omap2 Merge branch 'omap-for-v4.8/soc' into omap-for-v4.8/fixes 2016-08-15 08:29:44 -07:00
mach-orion5x RTC for 4.8 2016-08-05 09:48:22 -04:00
mach-oxnas ARM: oxnas: select reset controller framework 2016-08-10 22:42:32 +02:00
mach-picoxcell ARM: SoC cleanups for v4.8 2016-08-01 18:21:13 -04:00
mach-prima2 ARM: SoC cleanups for v4.8 2016-08-01 18:21:13 -04:00
mach-pxa ARM: pxa/lubbock: add pcmcia clock 2016-09-12 12:12:31 +01:00
mach-qcom
mach-realview net: smc91x: fix SMC accesses 2016-08-28 23:44:55 -04:00
mach-rockchip ARM: SoC cleanups for v4.8 2016-08-01 18:21:13 -04:00
mach-rpc
mach-s3c24xx ARM: SoC cleanups for v4.8 2016-08-01 18:21:13 -04:00
mach-s3c64xx ARM: SoC platform updates for v4.8 2016-08-01 18:27:08 -04:00
mach-s5pv210 ARM: don't include removed directories 2016-08-10 22:42:18 +02:00
mach-sa1100 Merge branch 'fixes' of git://git.armlinux.org.uk/~rmk/linux-arm 2016-09-09 08:32:10 -07:00
mach-shmobile ARM: shmobile: don't call platform_can_secondary_boot on UP 2016-08-02 12:34:49 -07:00
mach-socfpga
mach-spear ARM: SoC cleanups for v4.8 2016-08-01 18:21:13 -04:00
mach-sti Highlights: 2016-07-14 15:08:15 +02:00
mach-stm32
mach-sunxi
mach-tango ARM: tango: add Suspend-to-RAM support 2016-07-07 16:09:30 +02:00
mach-tegra ARM: SoC cleanups for v4.8 2016-08-01 18:21:13 -04:00
mach-u300 ARM: SoC cleanups for v4.8 2016-08-01 18:21:13 -04:00
mach-uniphier Merge ARCH_[WANT_OPTIONAL|REQUIRE]_GPIOLIB changes into next/soc 2016-07-06 18:00:32 +02:00
mach-ux500 ARM: SoC driver updates for v4.8 2016-08-01 18:36:01 -04:00
mach-versatile
mach-vexpress ARM: SoC cleanups for v4.8 2016-08-01 18:21:13 -04:00
mach-vt8500 ARM: SoC cleanups for v4.8 2016-08-01 18:21:13 -04:00
mach-w90x900
mach-zx
mach-zynq
mm ARM: 8612/1: LPAE: initialize cache policy correctly 2016-09-12 12:12:30 +01:00
net
nwfpe
oprofile
plat-iop ARM: iop: Fix indentation 2016-07-07 18:06:40 +02:00
plat-omap
plat-orion
plat-pxa
plat-samsung ARM: SoC platform updates for v4.8 2016-08-01 18:27:08 -04:00
plat-versatile
probes
tools
vdso
vfp arm: Convert VFP hotplug notifiers to state machine 2016-07-15 10:40:22 +02:00
xen xen: change the type of xen_vcpu_id to uint32_t 2016-08-24 18:17:27 +01:00
Kconfig Implements HARDENED_USERCOPY verification of copy_to_user/copy_from_user 2016-08-08 14:48:14 -07:00
Kconfig-nommu
Kconfig.debug Merge tag 'arm-soc/for-4.8/soc-part2' of http://github.com/Broadcom/stblinux into next/soc 2016-07-07 16:09:25 +02:00
Makefile ARM: hide mach-*/ include for ARM_SINGLE_ARMV7M 2016-08-10 22:42:26 +02:00