ARM: tegra12: set CPU rate to 2.2GHz for sku 0x87
[linux-3.10.git] / arch / arm / mach-tegra / delay.S
1 /*
2  * arch/arm/mach-tegra/delay.S
3  *
4  * Copyright (C) 2010 Google, Inc.
5  * Copyright (c) 2013, NVIDIA CORPORATION.  All rights reserved.
6  *
7  * Author:
8  *  Colin Cross <ccross@google.com>
9  *
10  * This software is licensed under the terms of the GNU General Public
11  * License version 2, as published by the Free Software Foundation, and
12  * may be copied, distributed, and modified under those terms.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  * GNU General Public License for more details.
18  *
19  */
20
21 #include <linux/linkage.h>
22 #include <asm/assembler.h>
23
24 #include "iomap.h"
25 #include "sleep.h"
26
27     .text
28
29 ENTRY(__tegra_udelay)
30 ENTRY(__tegra_const_udelay)
31     mov32 r3, (IO_PPSB_VIRT + TEGRA_TMRUS_BASE - IO_PPSB_PHYS)
32     ldr r1, [r3]
33
34 /* r0 - usecs to wait
35  * r1 - initial value of the counter
36  */
37 loop:
38     ldr r2, [r3]
39     sub r2, r2, r1
40     cmp r2, r0
41     bls loop
42     mov pc, lr
43 ENDPROC(__tegra_const_udelay)
44 ENDPROC(__tegra_udelay)
45
46
47 /* Natural-Align this 2-instruction loop.
48 */
49 .align 3
50 @ Delay routine
51 ENTRY(__tegra_delay)
52     subs  r0, r0, #1
53     bhi __tegra_delay
54     mov pc, lr
55 ENDPROC(__tegra_delay)