diff options
Diffstat (limited to 'arch/arm')
-rw-r--r-- | arch/arm/Kconfig | 4 | ||||
-rw-r--r-- | arch/arm/Kconfig.instrumentation | 52 | ||||
-rw-r--r-- | arch/arm/mach-at91/board-ek.c | 9 | ||||
-rw-r--r-- | arch/arm/mach-omap1/board-fsample.c | 14 | ||||
-rw-r--r-- | arch/arm/mach-omap1/board-nokia770.c | 4 | ||||
-rw-r--r-- | arch/arm/mach-omap1/board-perseus2.c | 14 | ||||
-rw-r--r-- | arch/arm/mach-pxa/pxa25x.c | 13 | ||||
-rw-r--r-- | arch/arm/mach-pxa/sleep.S | 6 | ||||
-rw-r--r-- | arch/arm/vfp/vfp.h | 2 | ||||
-rw-r--r-- | arch/arm/vfp/vfpdouble.c | 14 |
10 files changed, 105 insertions, 27 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index c4de2d4664d7..a04f507e7f2c 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig | |||
@@ -1072,11 +1072,13 @@ source "drivers/rtc/Kconfig" | |||
1072 | 1072 | ||
1073 | source "drivers/dma/Kconfig" | 1073 | source "drivers/dma/Kconfig" |
1074 | 1074 | ||
1075 | source "drivers/dca/Kconfig" | ||
1076 | |||
1075 | endmenu | 1077 | endmenu |
1076 | 1078 | ||
1077 | source "fs/Kconfig" | 1079 | source "fs/Kconfig" |
1078 | 1080 | ||
1079 | source "kernel/Kconfig.instrumentation" | 1081 | source "arch/arm/Kconfig.instrumentation" |
1080 | 1082 | ||
1081 | source "arch/arm/Kconfig.debug" | 1083 | source "arch/arm/Kconfig.debug" |
1082 | 1084 | ||
diff --git a/arch/arm/Kconfig.instrumentation b/arch/arm/Kconfig.instrumentation new file mode 100644 index 000000000000..63b8c6d5606a --- /dev/null +++ b/arch/arm/Kconfig.instrumentation | |||
@@ -0,0 +1,52 @@ | |||
1 | menuconfig INSTRUMENTATION | ||
2 | bool "Instrumentation Support" | ||
3 | default y | ||
4 | ---help--- | ||
5 | Say Y here to get to see options related to performance measurement, | ||
6 | system-wide debugging, and testing. This option alone does not add any | ||
7 | kernel code. | ||
8 | |||
9 | If you say N, all options in this submenu will be skipped and | ||
10 | disabled. If you're trying to debug the kernel itself, go see the | ||
11 | Kernel Hacking menu. | ||
12 | |||
13 | if INSTRUMENTATION | ||
14 | |||
15 | config PROFILING | ||
16 | bool "Profiling support (EXPERIMENTAL)" | ||
17 | help | ||
18 | Say Y here to enable the extended profiling support mechanisms used | ||
19 | by profilers such as OProfile. | ||
20 | |||
21 | config OPROFILE | ||
22 | tristate "OProfile system profiling (EXPERIMENTAL)" | ||
23 | depends on PROFILING && !UML | ||
24 | help | ||
25 | OProfile is a profiling system capable of profiling the | ||
26 | whole system, include the kernel, kernel modules, libraries, | ||
27 | and applications. | ||
28 | |||
29 | If unsure, say N. | ||
30 | |||
31 | config OPROFILE_ARMV6 | ||
32 | bool | ||
33 | depends on OPROFILE && CPU_V6 && !SMP | ||
34 | default y | ||
35 | select OPROFILE_ARM11_CORE | ||
36 | |||
37 | config OPROFILE_MPCORE | ||
38 | bool | ||
39 | depends on OPROFILE && CPU_V6 && SMP | ||
40 | default y | ||
41 | select OPROFILE_ARM11_CORE | ||
42 | |||
43 | config OPROFILE_ARM11_CORE | ||
44 | bool | ||
45 | |||
46 | config MARKERS | ||
47 | bool "Activate markers" | ||
48 | help | ||
49 | Place an empty function call at each marker site. Can be | ||
50 | dynamically changed for a probe function. | ||
51 | |||
52 | endif # INSTRUMENTATION | ||
diff --git a/arch/arm/mach-at91/board-ek.c b/arch/arm/mach-at91/board-ek.c index d05b1b2be9fb..53a5ef9e72ee 100644 --- a/arch/arm/mach-at91/board-ek.c +++ b/arch/arm/mach-at91/board-ek.c | |||
@@ -109,6 +109,15 @@ static struct spi_board_info ek_spi_devices[] = { | |||
109 | #endif | 109 | #endif |
110 | }; | 110 | }; |
111 | 111 | ||
112 | static struct i2c_board_info __initdata ek_i2c_devices[] = { | ||
113 | { | ||
114 | I2C_BOARD_INFO("ics1523", 0x26), | ||
115 | }, | ||
116 | { | ||
117 | I2C_BOARD_INFO("dac3550", 0x4d), | ||
118 | } | ||
119 | }; | ||
120 | |||
112 | #define EK_FLASH_BASE AT91_CHIPSELECT_0 | 121 | #define EK_FLASH_BASE AT91_CHIPSELECT_0 |
113 | #define EK_FLASH_SIZE 0x200000 | 122 | #define EK_FLASH_SIZE 0x200000 |
114 | 123 | ||
diff --git a/arch/arm/mach-omap1/board-fsample.c b/arch/arm/mach-omap1/board-fsample.c index f65baa95986e..d5f6ea14fc7b 100644 --- a/arch/arm/mach-omap1/board-fsample.c +++ b/arch/arm/mach-omap1/board-fsample.c | |||
@@ -40,31 +40,29 @@ static int fsample_keymap[] = { | |||
40 | KEY(0,1,KEY_RIGHT), | 40 | KEY(0,1,KEY_RIGHT), |
41 | KEY(0,2,KEY_LEFT), | 41 | KEY(0,2,KEY_LEFT), |
42 | KEY(0,3,KEY_DOWN), | 42 | KEY(0,3,KEY_DOWN), |
43 | KEY(0,4,KEY_CENTER), | 43 | KEY(0,4,KEY_ENTER), |
44 | KEY(0,5,KEY_0_5), | 44 | KEY(1,0,KEY_F10), |
45 | KEY(1,0,KEY_SOFT2), | ||
46 | KEY(1,1,KEY_SEND), | 45 | KEY(1,1,KEY_SEND), |
47 | KEY(1,2,KEY_END), | 46 | KEY(1,2,KEY_END), |
48 | KEY(1,3,KEY_VOLUMEDOWN), | 47 | KEY(1,3,KEY_VOLUMEDOWN), |
49 | KEY(1,4,KEY_VOLUMEUP), | 48 | KEY(1,4,KEY_VOLUMEUP), |
50 | KEY(1,5,KEY_RECORD), | 49 | KEY(1,5,KEY_RECORD), |
51 | KEY(2,0,KEY_SOFT1), | 50 | KEY(2,0,KEY_F9), |
52 | KEY(2,1,KEY_3), | 51 | KEY(2,1,KEY_3), |
53 | KEY(2,2,KEY_6), | 52 | KEY(2,2,KEY_6), |
54 | KEY(2,3,KEY_9), | 53 | KEY(2,3,KEY_9), |
55 | KEY(2,4,KEY_SHARP), | 54 | KEY(2,4,KEY_KPDOT), |
56 | KEY(2,5,KEY_2_5), | ||
57 | KEY(3,0,KEY_BACK), | 55 | KEY(3,0,KEY_BACK), |
58 | KEY(3,1,KEY_2), | 56 | KEY(3,1,KEY_2), |
59 | KEY(3,2,KEY_5), | 57 | KEY(3,2,KEY_5), |
60 | KEY(3,3,KEY_8), | 58 | KEY(3,3,KEY_8), |
61 | KEY(3,4,KEY_0), | 59 | KEY(3,4,KEY_0), |
62 | KEY(3,5,KEY_HEADSETHOOK), | 60 | KEY(3,5,KEY_KPSLASH), |
63 | KEY(4,0,KEY_HOME), | 61 | KEY(4,0,KEY_HOME), |
64 | KEY(4,1,KEY_1), | 62 | KEY(4,1,KEY_1), |
65 | KEY(4,2,KEY_4), | 63 | KEY(4,2,KEY_4), |
66 | KEY(4,3,KEY_7), | 64 | KEY(4,3,KEY_7), |
67 | KEY(4,4,KEY_STAR), | 65 | KEY(4,4,KEY_KPASTERISK), |
68 | KEY(4,5,KEY_POWER), | 66 | KEY(4,5,KEY_POWER), |
69 | 0 | 67 | 0 |
70 | }; | 68 | }; |
diff --git a/arch/arm/mach-omap1/board-nokia770.c b/arch/arm/mach-omap1/board-nokia770.c index 22db19a53647..182a98a9df4c 100644 --- a/arch/arm/mach-omap1/board-nokia770.c +++ b/arch/arm/mach-omap1/board-nokia770.c | |||
@@ -36,8 +36,6 @@ | |||
36 | #include <asm/arch/omapfb.h> | 36 | #include <asm/arch/omapfb.h> |
37 | #include <asm/arch/lcd_mipid.h> | 37 | #include <asm/arch/lcd_mipid.h> |
38 | 38 | ||
39 | #include "../plat-omap/dsp/dsp_common.h" | ||
40 | |||
41 | #define ADS7846_PENDOWN_GPIO 15 | 39 | #define ADS7846_PENDOWN_GPIO 15 |
42 | 40 | ||
43 | static void __init omap_nokia770_init_irq(void) | 41 | static void __init omap_nokia770_init_irq(void) |
@@ -318,6 +316,8 @@ static __init int omap_dsp_init(void) | |||
318 | out: | 316 | out: |
319 | return ret; | 317 | return ret; |
320 | } | 318 | } |
319 | #else | ||
320 | #define omap_dsp_init() do {} while (0) | ||
321 | #endif /* CONFIG_OMAP_DSP */ | 321 | #endif /* CONFIG_OMAP_DSP */ |
322 | 322 | ||
323 | static void __init omap_nokia770_init(void) | 323 | static void __init omap_nokia770_init(void) |
diff --git a/arch/arm/mach-omap1/board-perseus2.c b/arch/arm/mach-omap1/board-perseus2.c index 1d5c8d509722..e44437e10eef 100644 --- a/arch/arm/mach-omap1/board-perseus2.c +++ b/arch/arm/mach-omap1/board-perseus2.c | |||
@@ -39,31 +39,29 @@ static int p2_keymap[] = { | |||
39 | KEY(0,1,KEY_RIGHT), | 39 | KEY(0,1,KEY_RIGHT), |
40 | KEY(0,2,KEY_LEFT), | 40 | KEY(0,2,KEY_LEFT), |
41 | KEY(0,3,KEY_DOWN), | 41 | KEY(0,3,KEY_DOWN), |
42 | KEY(0,4,KEY_CENTER), | 42 | KEY(0,4,KEY_ENTER), |
43 | KEY(0,5,KEY_0_5), | 43 | KEY(1,0,KEY_F10), |
44 | KEY(1,0,KEY_SOFT2), | ||
45 | KEY(1,1,KEY_SEND), | 44 | KEY(1,1,KEY_SEND), |
46 | KEY(1,2,KEY_END), | 45 | KEY(1,2,KEY_END), |
47 | KEY(1,3,KEY_VOLUMEDOWN), | 46 | KEY(1,3,KEY_VOLUMEDOWN), |
48 | KEY(1,4,KEY_VOLUMEUP), | 47 | KEY(1,4,KEY_VOLUMEUP), |
49 | KEY(1,5,KEY_RECORD), | 48 | KEY(1,5,KEY_RECORD), |
50 | KEY(2,0,KEY_SOFT1), | 49 | KEY(2,0,KEY_F9), |
51 | KEY(2,1,KEY_3), | 50 | KEY(2,1,KEY_3), |
52 | KEY(2,2,KEY_6), | 51 | KEY(2,2,KEY_6), |
53 | KEY(2,3,KEY_9), | 52 | KEY(2,3,KEY_9), |
54 | KEY(2,4,KEY_SHARP), | 53 | KEY(2,4,KEY_KPDOT), |
55 | KEY(2,5,KEY_2_5), | ||
56 | KEY(3,0,KEY_BACK), | 54 | KEY(3,0,KEY_BACK), |
57 | KEY(3,1,KEY_2), | 55 | KEY(3,1,KEY_2), |
58 | KEY(3,2,KEY_5), | 56 | KEY(3,2,KEY_5), |
59 | KEY(3,3,KEY_8), | 57 | KEY(3,3,KEY_8), |
60 | KEY(3,4,KEY_0), | 58 | KEY(3,4,KEY_0), |
61 | KEY(3,5,KEY_HEADSETHOOK), | 59 | KEY(3,5,KEY_KPSLASH), |
62 | KEY(4,0,KEY_HOME), | 60 | KEY(4,0,KEY_HOME), |
63 | KEY(4,1,KEY_1), | 61 | KEY(4,1,KEY_1), |
64 | KEY(4,2,KEY_4), | 62 | KEY(4,2,KEY_4), |
65 | KEY(4,3,KEY_7), | 63 | KEY(4,3,KEY_7), |
66 | KEY(4,4,KEY_STAR), | 64 | KEY(4,4,KEY_KPASTERISK), |
67 | KEY(4,5,KEY_POWER), | 65 | KEY(4,5,KEY_POWER), |
68 | 0 | 66 | 0 |
69 | }; | 67 | }; |
diff --git a/arch/arm/mach-pxa/pxa25x.c b/arch/arm/mach-pxa/pxa25x.c index dcd81f8d0833..9732d5d9466b 100644 --- a/arch/arm/mach-pxa/pxa25x.c +++ b/arch/arm/mach-pxa/pxa25x.c | |||
@@ -178,13 +178,19 @@ static void pxa25x_cpu_pm_save(unsigned long *sleep_save) | |||
178 | SAVE(GAFR1_L); SAVE(GAFR1_U); | 178 | SAVE(GAFR1_L); SAVE(GAFR1_U); |
179 | SAVE(GAFR2_L); SAVE(GAFR2_U); | 179 | SAVE(GAFR2_L); SAVE(GAFR2_U); |
180 | 180 | ||
181 | SAVE(ICMR); | 181 | SAVE(ICMR); ICMR = 0; |
182 | SAVE(CKEN); | 182 | SAVE(CKEN); |
183 | SAVE(PSTR); | 183 | SAVE(PSTR); |
184 | |||
185 | /* Clear GPIO transition detect bits */ | ||
186 | GEDR0 = GEDR0; GEDR1 = GEDR1; GEDR2 = GEDR2; | ||
184 | } | 187 | } |
185 | 188 | ||
186 | static void pxa25x_cpu_pm_restore(unsigned long *sleep_save) | 189 | static void pxa25x_cpu_pm_restore(unsigned long *sleep_save) |
187 | { | 190 | { |
191 | /* ensure not to come back here if it wasn't intended */ | ||
192 | PSPR = 0; | ||
193 | |||
188 | /* restore registers */ | 194 | /* restore registers */ |
189 | RESTORE_GPLEVEL(0); RESTORE_GPLEVEL(1); RESTORE_GPLEVEL(2); | 195 | RESTORE_GPLEVEL(0); RESTORE_GPLEVEL(1); RESTORE_GPLEVEL(2); |
190 | RESTORE(GPDR0); RESTORE(GPDR1); RESTORE(GPDR2); | 196 | RESTORE(GPDR0); RESTORE(GPDR1); RESTORE(GPDR2); |
@@ -195,7 +201,12 @@ static void pxa25x_cpu_pm_restore(unsigned long *sleep_save) | |||
195 | RESTORE(GFER0); RESTORE(GFER1); RESTORE(GFER2); | 201 | RESTORE(GFER0); RESTORE(GFER1); RESTORE(GFER2); |
196 | RESTORE(PGSR0); RESTORE(PGSR1); RESTORE(PGSR2); | 202 | RESTORE(PGSR0); RESTORE(PGSR1); RESTORE(PGSR2); |
197 | 203 | ||
204 | PSSR = PSSR_RDH | PSSR_PH; | ||
205 | |||
198 | RESTORE(CKEN); | 206 | RESTORE(CKEN); |
207 | |||
208 | ICLR = 0; | ||
209 | ICCR = 1; | ||
199 | RESTORE(ICMR); | 210 | RESTORE(ICMR); |
200 | RESTORE(PSTR); | 211 | RESTORE(PSTR); |
201 | } | 212 | } |
diff --git a/arch/arm/mach-pxa/sleep.S b/arch/arm/mach-pxa/sleep.S index aff71fec618a..d0447723b73a 100644 --- a/arch/arm/mach-pxa/sleep.S +++ b/arch/arm/mach-pxa/sleep.S | |||
@@ -43,11 +43,11 @@ pxa_cpu_save_cp: | |||
43 | pxa_cpu_save_sp: | 43 | pxa_cpu_save_sp: |
44 | @ preserve phys address of stack | 44 | @ preserve phys address of stack |
45 | mov r0, sp | 45 | mov r0, sp |
46 | mov r2, lr | 46 | str lr, [sp, #-4]! |
47 | bl sleep_phys_sp | 47 | bl sleep_phys_sp |
48 | ldr r1, =sleep_save_sp | 48 | ldr r1, =sleep_save_sp |
49 | str r0, [r1] | 49 | str r0, [r1] |
50 | mov pc, r2 | 50 | ldr pc, [sp], #4 |
51 | 51 | ||
52 | /* | 52 | /* |
53 | * pxa27x_cpu_suspend() | 53 | * pxa27x_cpu_suspend() |
@@ -270,5 +270,3 @@ resume_after_mmu: | |||
270 | mar acc0, r2, r3 | 270 | mar acc0, r2, r3 |
271 | #endif | 271 | #endif |
272 | ldmfd sp!, {r4 - r12, pc} @ return to caller | 272 | ldmfd sp!, {r4 - r12, pc} @ return to caller |
273 | |||
274 | |||
diff --git a/arch/arm/vfp/vfp.h b/arch/arm/vfp/vfp.h index 54a2ad6d9ca2..791d0238c68f 100644 --- a/arch/arm/vfp/vfp.h +++ b/arch/arm/vfp/vfp.h | |||
@@ -361,10 +361,12 @@ u32 vfp_estimate_sqrt_significand(u32 exponent, u32 significand); | |||
361 | * OP_SCALAR - this operation always operates in scalar mode | 361 | * OP_SCALAR - this operation always operates in scalar mode |
362 | * OP_SD - the instruction exceptionally writes to a single precision result. | 362 | * OP_SD - the instruction exceptionally writes to a single precision result. |
363 | * OP_DD - the instruction exceptionally writes to a double precision result. | 363 | * OP_DD - the instruction exceptionally writes to a double precision result. |
364 | * OP_SM - the instruction exceptionally reads from a single precision operand. | ||
364 | */ | 365 | */ |
365 | #define OP_SCALAR (1 << 0) | 366 | #define OP_SCALAR (1 << 0) |
366 | #define OP_SD (1 << 1) | 367 | #define OP_SD (1 << 1) |
367 | #define OP_DD (1 << 1) | 368 | #define OP_DD (1 << 1) |
369 | #define OP_SM (1 << 2) | ||
368 | 370 | ||
369 | struct op { | 371 | struct op { |
370 | u32 (* const fn)(int dd, int dn, int dm, u32 fpscr); | 372 | u32 (* const fn)(int dd, int dn, int dm, u32 fpscr); |
diff --git a/arch/arm/vfp/vfpdouble.c b/arch/arm/vfp/vfpdouble.c index 190a09ad18eb..6cac43bd1d86 100644 --- a/arch/arm/vfp/vfpdouble.c +++ b/arch/arm/vfp/vfpdouble.c | |||
@@ -668,8 +668,8 @@ static struct op fops_ext[32] = { | |||
668 | [FEXT_TO_IDX(FEXT_FCMPZ)] = { vfp_double_fcmpz, OP_SCALAR }, | 668 | [FEXT_TO_IDX(FEXT_FCMPZ)] = { vfp_double_fcmpz, OP_SCALAR }, |
669 | [FEXT_TO_IDX(FEXT_FCMPEZ)] = { vfp_double_fcmpez, OP_SCALAR }, | 669 | [FEXT_TO_IDX(FEXT_FCMPEZ)] = { vfp_double_fcmpez, OP_SCALAR }, |
670 | [FEXT_TO_IDX(FEXT_FCVT)] = { vfp_double_fcvts, OP_SCALAR|OP_SD }, | 670 | [FEXT_TO_IDX(FEXT_FCVT)] = { vfp_double_fcvts, OP_SCALAR|OP_SD }, |
671 | [FEXT_TO_IDX(FEXT_FUITO)] = { vfp_double_fuito, OP_SCALAR }, | 671 | [FEXT_TO_IDX(FEXT_FUITO)] = { vfp_double_fuito, OP_SCALAR|OP_SM }, |
672 | [FEXT_TO_IDX(FEXT_FSITO)] = { vfp_double_fsito, OP_SCALAR }, | 672 | [FEXT_TO_IDX(FEXT_FSITO)] = { vfp_double_fsito, OP_SCALAR|OP_SM }, |
673 | [FEXT_TO_IDX(FEXT_FTOUI)] = { vfp_double_ftoui, OP_SCALAR|OP_SD }, | 673 | [FEXT_TO_IDX(FEXT_FTOUI)] = { vfp_double_ftoui, OP_SCALAR|OP_SD }, |
674 | [FEXT_TO_IDX(FEXT_FTOUIZ)] = { vfp_double_ftouiz, OP_SCALAR|OP_SD }, | 674 | [FEXT_TO_IDX(FEXT_FTOUIZ)] = { vfp_double_ftouiz, OP_SCALAR|OP_SD }, |
675 | [FEXT_TO_IDX(FEXT_FTOSI)] = { vfp_double_ftosi, OP_SCALAR|OP_SD }, | 675 | [FEXT_TO_IDX(FEXT_FTOSI)] = { vfp_double_ftosi, OP_SCALAR|OP_SD }, |
@@ -1128,7 +1128,7 @@ u32 vfp_double_cpdo(u32 inst, u32 fpscr) | |||
1128 | u32 exceptions = 0; | 1128 | u32 exceptions = 0; |
1129 | unsigned int dest; | 1129 | unsigned int dest; |
1130 | unsigned int dn = vfp_get_dn(inst); | 1130 | unsigned int dn = vfp_get_dn(inst); |
1131 | unsigned int dm = vfp_get_dm(inst); | 1131 | unsigned int dm; |
1132 | unsigned int vecitr, veclen, vecstride; | 1132 | unsigned int vecitr, veclen, vecstride; |
1133 | struct op *fop; | 1133 | struct op *fop; |
1134 | 1134 | ||
@@ -1146,6 +1146,14 @@ u32 vfp_double_cpdo(u32 inst, u32 fpscr) | |||
1146 | dest = vfp_get_dd(inst); | 1146 | dest = vfp_get_dd(inst); |
1147 | 1147 | ||
1148 | /* | 1148 | /* |
1149 | * f[us]ito takes a sN operand, not a dN operand. | ||
1150 | */ | ||
1151 | if (fop->flags & OP_SM) | ||
1152 | dm = vfp_get_sm(inst); | ||
1153 | else | ||
1154 | dm = vfp_get_dm(inst); | ||
1155 | |||
1156 | /* | ||
1149 | * If destination bank is zero, vector length is always '1'. | 1157 | * If destination bank is zero, vector length is always '1'. |
1150 | * ARM DDI0100F C5.1.3, C5.3.2. | 1158 | * ARM DDI0100F C5.1.3, C5.3.2. |
1151 | */ | 1159 | */ |