diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/asm-arm/arch-s3c2410/uncompress.h | 22 | ||||
-rw-r--r-- | include/asm-arm/hardirq.h | 1 | ||||
-rw-r--r-- | include/asm-arm/hardware/scoop.h | 10 | ||||
-rw-r--r-- | include/asm-arm/smp.h | 54 |
4 files changed, 83 insertions, 4 deletions
diff --git a/include/asm-arm/arch-s3c2410/uncompress.h b/include/asm-arm/arch-s3c2410/uncompress.h index d7a4a8354fa9..ddd1578a7ee0 100644 --- a/include/asm-arm/arch-s3c2410/uncompress.h +++ b/include/asm-arm/arch-s3c2410/uncompress.h | |||
@@ -116,6 +116,8 @@ putstr(const char *ptr) | |||
116 | } | 116 | } |
117 | } | 117 | } |
118 | 118 | ||
119 | #define __raw_writel(d,ad) do { *((volatile unsigned int *)(ad)) = (d); } while(0) | ||
120 | |||
119 | /* CONFIG_S3C2410_BOOT_WATCHDOG | 121 | /* CONFIG_S3C2410_BOOT_WATCHDOG |
120 | * | 122 | * |
121 | * Simple boot-time watchdog setup, to reboot the system if there is | 123 | * Simple boot-time watchdog setup, to reboot the system if there is |
@@ -126,8 +128,6 @@ putstr(const char *ptr) | |||
126 | 128 | ||
127 | #define WDOG_COUNT (0xff00) | 129 | #define WDOG_COUNT (0xff00) |
128 | 130 | ||
129 | #define __raw_writel(d,ad) do { *((volatile unsigned int *)(ad)) = (d); } while(0) | ||
130 | |||
131 | static inline void arch_decomp_wdog(void) | 131 | static inline void arch_decomp_wdog(void) |
132 | { | 132 | { |
133 | __raw_writel(WDOG_COUNT, S3C2410_WTCNT); | 133 | __raw_writel(WDOG_COUNT, S3C2410_WTCNT); |
@@ -145,6 +145,24 @@ static void arch_decomp_wdog_start(void) | |||
145 | #define arch_decomp_wdog() | 145 | #define arch_decomp_wdog() |
146 | #endif | 146 | #endif |
147 | 147 | ||
148 | #ifdef CONFIG_S3C2410_BOOT_ERROR_RESET | ||
149 | |||
150 | static void arch_decomp_error(const char *x) | ||
151 | { | ||
152 | putstr("\n\n"); | ||
153 | putstr(x); | ||
154 | putstr("\n\n -- System resetting\n"); | ||
155 | |||
156 | __raw_writel(0x4000, S3C2410_WTDAT); | ||
157 | __raw_writel(0x4000, S3C2410_WTCNT); | ||
158 | __raw_writel(S3C2410_WTCON_ENABLE | S3C2410_WTCON_DIV128 | S3C2410_WTCON_RSTEN | S3C2410_WTCON_PRESCALE(0x40), S3C2410_WTCON); | ||
159 | |||
160 | while(1); | ||
161 | } | ||
162 | |||
163 | #define arch_error arch_decomp_error | ||
164 | #endif | ||
165 | |||
148 | static void error(char *err); | 166 | static void error(char *err); |
149 | 167 | ||
150 | static void | 168 | static void |
diff --git a/include/asm-arm/hardirq.h b/include/asm-arm/hardirq.h index e5ccb6b8ff83..1cbb173bf5b1 100644 --- a/include/asm-arm/hardirq.h +++ b/include/asm-arm/hardirq.h | |||
@@ -8,6 +8,7 @@ | |||
8 | 8 | ||
9 | typedef struct { | 9 | typedef struct { |
10 | unsigned int __softirq_pending; | 10 | unsigned int __softirq_pending; |
11 | unsigned int local_timer_irqs; | ||
11 | } ____cacheline_aligned irq_cpustat_t; | 12 | } ____cacheline_aligned irq_cpustat_t; |
12 | 13 | ||
13 | #include <linux/irq_cpustat.h> /* Standard mappings for irq_cpustat_t above */ | 14 | #include <linux/irq_cpustat.h> /* Standard mappings for irq_cpustat_t above */ |
diff --git a/include/asm-arm/hardware/scoop.h b/include/asm-arm/hardware/scoop.h index a8f1013930e3..d37bf7443264 100644 --- a/include/asm-arm/hardware/scoop.h +++ b/include/asm-arm/hardware/scoop.h | |||
@@ -52,8 +52,14 @@ struct scoop_pcmcia_dev { | |||
52 | unsigned char keep_rd; | 52 | unsigned char keep_rd; |
53 | }; | 53 | }; |
54 | 54 | ||
55 | extern int scoop_num; | 55 | struct scoop_pcmcia_config { |
56 | extern struct scoop_pcmcia_dev *scoop_devs; | 56 | struct scoop_pcmcia_dev *devs; |
57 | int num_devs; | ||
58 | void (*pcmcia_init)(void); | ||
59 | void (*power_ctrl)(struct device *scoop, unsigned short cpr, int nr); | ||
60 | }; | ||
61 | |||
62 | extern struct scoop_pcmcia_config *platform_scoop_config; | ||
57 | 63 | ||
58 | void reset_scoop(struct device *dev); | 64 | void reset_scoop(struct device *dev); |
59 | unsigned short set_scoop_gpio(struct device *dev, unsigned short bit); | 65 | unsigned short set_scoop_gpio(struct device *dev, unsigned short bit); |
diff --git a/include/asm-arm/smp.h b/include/asm-arm/smp.h index 551cd3c3093c..5a72e50ca9fc 100644 --- a/include/asm-arm/smp.h +++ b/include/asm-arm/smp.h | |||
@@ -37,6 +37,11 @@ struct seq_file; | |||
37 | extern void show_ipi_list(struct seq_file *p); | 37 | extern void show_ipi_list(struct seq_file *p); |
38 | 38 | ||
39 | /* | 39 | /* |
40 | * Called from assembly code, this handles an IPI. | ||
41 | */ | ||
42 | asmlinkage void do_IPI(struct pt_regs *regs); | ||
43 | |||
44 | /* | ||
40 | * Move global data into per-processor storage. | 45 | * Move global data into per-processor storage. |
41 | */ | 46 | */ |
42 | extern void smp_store_cpu_info(unsigned int cpuid); | 47 | extern void smp_store_cpu_info(unsigned int cpuid); |
@@ -47,12 +52,23 @@ extern void smp_store_cpu_info(unsigned int cpuid); | |||
47 | extern void smp_cross_call(cpumask_t callmap); | 52 | extern void smp_cross_call(cpumask_t callmap); |
48 | 53 | ||
49 | /* | 54 | /* |
55 | * Broadcast a timer interrupt to the other CPUs. | ||
56 | */ | ||
57 | extern void smp_send_timer(void); | ||
58 | |||
59 | /* | ||
50 | * Boot a secondary CPU, and assign it the specified idle task. | 60 | * Boot a secondary CPU, and assign it the specified idle task. |
51 | * This also gives us the initial stack to use for this CPU. | 61 | * This also gives us the initial stack to use for this CPU. |
52 | */ | 62 | */ |
53 | extern int boot_secondary(unsigned int cpu, struct task_struct *); | 63 | extern int boot_secondary(unsigned int cpu, struct task_struct *); |
54 | 64 | ||
55 | /* | 65 | /* |
66 | * Called from platform specific assembly code, this is the | ||
67 | * secondary CPU entry point. | ||
68 | */ | ||
69 | asmlinkage void secondary_start_kernel(void); | ||
70 | |||
71 | /* | ||
56 | * Perform platform specific initialisation of the specified CPU. | 72 | * Perform platform specific initialisation of the specified CPU. |
57 | */ | 73 | */ |
58 | extern void platform_secondary_init(unsigned int cpu); | 74 | extern void platform_secondary_init(unsigned int cpu); |
@@ -76,4 +92,42 @@ extern void platform_cpu_die(unsigned int cpu); | |||
76 | extern int platform_cpu_kill(unsigned int cpu); | 92 | extern int platform_cpu_kill(unsigned int cpu); |
77 | extern void platform_cpu_enable(unsigned int cpu); | 93 | extern void platform_cpu_enable(unsigned int cpu); |
78 | 94 | ||
95 | #ifdef CONFIG_LOCAL_TIMERS | ||
96 | /* | ||
97 | * Setup a local timer interrupt for a CPU. | ||
98 | */ | ||
99 | extern void local_timer_setup(unsigned int cpu); | ||
100 | |||
101 | /* | ||
102 | * Stop a local timer interrupt. | ||
103 | */ | ||
104 | extern void local_timer_stop(unsigned int cpu); | ||
105 | |||
106 | /* | ||
107 | * Platform provides this to acknowledge a local timer IRQ | ||
108 | */ | ||
109 | extern int local_timer_ack(void); | ||
110 | |||
111 | #else | ||
112 | |||
113 | static inline void local_timer_setup(unsigned int cpu) | ||
114 | { | ||
115 | } | ||
116 | |||
117 | static inline void local_timer_stop(unsigned int cpu) | ||
118 | { | ||
119 | } | ||
120 | |||
121 | #endif | ||
122 | |||
123 | /* | ||
124 | * show local interrupt info | ||
125 | */ | ||
126 | extern void show_local_irqs(struct seq_file *); | ||
127 | |||
128 | /* | ||
129 | * Called from assembly, this is the local timer IRQ handler | ||
130 | */ | ||
131 | asmlinkage void do_local_timer(struct pt_regs *); | ||
132 | |||
79 | #endif /* ifndef __ASM_ARM_SMP_H */ | 133 | #endif /* ifndef __ASM_ARM_SMP_H */ |