diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-12-09 22:09:42 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-12-09 22:09:42 -0500 |
| commit | 701791cc3c8fc6dd83f6ec8af7e2541b4a316606 (patch) | |
| tree | 3a8fce994dc9ca0fb5401f0d3aeb0ff8b9a2a821 | |
| parent | 4ba152596de23038e5bca413d23c3fe6fa92ff45 (diff) | |
| parent | 96c612427edab65dddd88ad61d732501cc5f128d (diff) | |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gerg/m68knommu
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gerg/m68knommu:
m68knommu: export clk_* symbols in clk.c
m68knommu: Split the .init section into INIT_TEXT_SECTION and INIT_DATA_SECTION.
m68knommu: Move __init_end out of the .init section.
m68knommu: Move __init_begin out of the .init section.
m68knommu: Use more macros inside the .init section.
m68knommu: Use INIT_TASK_DATA and CACHELINE_ALIGNED_DATA.
m68knommu: Make THREAD_SIZE available to assembly files.
m68knommu: Don't hardcode the value of PAGE_SIZE in the linker script.
m68knommu: rename BSS define in linker script
m68knommu: add a task_pt_regs() macro
m68knommu: define arch_has_single_step() and friends
m68knommu: add uboot commandline argument passing support
m68knommu: Coldfire GPIO corrections
m68knommu: move mcf_remove to .devexit.text
Fixed up (?) conflict in arch/m68k/include/asm/ptrace.h
| -rw-r--r-- | arch/m68k/include/asm/processor.h | 2 | ||||
| -rw-r--r-- | arch/m68k/include/asm/ptrace.h | 2 | ||||
| -rw-r--r-- | arch/m68k/include/asm/thread_info_no.h | 4 | ||||
| -rw-r--r-- | arch/m68knommu/Kconfig | 7 | ||||
| -rw-r--r-- | arch/m68knommu/kernel/setup.c | 92 | ||||
| -rw-r--r-- | arch/m68knommu/kernel/vmlinux.lds.S | 47 | ||||
| -rw-r--r-- | arch/m68knommu/platform/523x/gpio.c | 5 | ||||
| -rw-r--r-- | arch/m68knommu/platform/527x/gpio.c | 6 | ||||
| -rw-r--r-- | arch/m68knommu/platform/528x/gpio.c | 2 | ||||
| -rw-r--r-- | arch/m68knommu/platform/coldfire/clk.c | 7 | ||||
| -rw-r--r-- | arch/m68knommu/platform/coldfire/head.S | 10 | ||||
| -rw-r--r-- | drivers/serial/mcf.c | 2 |
12 files changed, 141 insertions, 45 deletions
diff --git a/arch/m68k/include/asm/processor.h b/arch/m68k/include/asm/processor.h index 74fd674b15ad..cbd3d4751dd2 100644 --- a/arch/m68k/include/asm/processor.h +++ b/arch/m68k/include/asm/processor.h | |||
| @@ -165,6 +165,8 @@ unsigned long get_wchan(struct task_struct *p); | |||
| 165 | eip; }) | 165 | eip; }) |
| 166 | #define KSTK_ESP(tsk) ((tsk) == current ? rdusp() : (tsk)->thread.usp) | 166 | #define KSTK_ESP(tsk) ((tsk) == current ? rdusp() : (tsk)->thread.usp) |
| 167 | 167 | ||
| 168 | #define task_pt_regs(tsk) ((struct pt_regs *) ((tsk)->thread.esp0)) | ||
| 169 | |||
| 168 | #define cpu_relax() barrier() | 170 | #define cpu_relax() barrier() |
| 169 | 171 | ||
| 170 | #endif | 172 | #endif |
diff --git a/arch/m68k/include/asm/ptrace.h b/arch/m68k/include/asm/ptrace.h index a6ab663bcc2e..ee4011c23281 100644 --- a/arch/m68k/include/asm/ptrace.h +++ b/arch/m68k/include/asm/ptrace.h | |||
| @@ -86,7 +86,7 @@ struct switch_stack { | |||
| 86 | extern void show_regs(struct pt_regs *); | 86 | extern void show_regs(struct pt_regs *); |
| 87 | 87 | ||
| 88 | /* | 88 | /* |
| 89 | * These are defined as per linux/ptrace.h, which see. | 89 | * These are defined as per linux/ptrace.h. |
| 90 | */ | 90 | */ |
| 91 | struct task_struct; | 91 | struct task_struct; |
| 92 | 92 | ||
diff --git a/arch/m68k/include/asm/thread_info_no.h b/arch/m68k/include/asm/thread_info_no.h index c2bde5e24b0b..a6512bfdd01d 100644 --- a/arch/m68k/include/asm/thread_info_no.h +++ b/arch/m68k/include/asm/thread_info_no.h | |||
| @@ -12,8 +12,6 @@ | |||
| 12 | 12 | ||
| 13 | #ifdef __KERNEL__ | 13 | #ifdef __KERNEL__ |
| 14 | 14 | ||
| 15 | #ifndef __ASSEMBLY__ | ||
| 16 | |||
| 17 | /* | 15 | /* |
| 18 | * Size of kernel stack for each process. This must be a power of 2... | 16 | * Size of kernel stack for each process. This must be a power of 2... |
| 19 | */ | 17 | */ |
| @@ -28,6 +26,8 @@ | |||
| 28 | */ | 26 | */ |
| 29 | #define THREAD_SIZE (PAGE_SIZE<<THREAD_SIZE_ORDER) | 27 | #define THREAD_SIZE (PAGE_SIZE<<THREAD_SIZE_ORDER) |
| 30 | 28 | ||
| 29 | #ifndef __ASSEMBLY__ | ||
| 30 | |||
| 31 | /* | 31 | /* |
| 32 | * low level task data. | 32 | * low level task data. |
| 33 | */ | 33 | */ |
diff --git a/arch/m68knommu/Kconfig b/arch/m68knommu/Kconfig index e2201b90aa22..064f5913db1a 100644 --- a/arch/m68knommu/Kconfig +++ b/arch/m68knommu/Kconfig | |||
| @@ -533,6 +533,13 @@ config AVNET | |||
| 533 | default y | 533 | default y |
| 534 | depends on (AVNET5282) | 534 | depends on (AVNET5282) |
| 535 | 535 | ||
| 536 | config UBOOT | ||
| 537 | bool "Support for U-Boot command line parameters" | ||
| 538 | help | ||
| 539 | If you say Y here kernel will try to collect command | ||
| 540 | line parameters from the initial u-boot stack. | ||
| 541 | default n | ||
| 542 | |||
| 536 | config 4KSTACKS | 543 | config 4KSTACKS |
| 537 | bool "Use 4Kb for kernel stacks instead of 8Kb" | 544 | bool "Use 4Kb for kernel stacks instead of 8Kb" |
| 538 | default y | 545 | default y |
diff --git a/arch/m68knommu/kernel/setup.c b/arch/m68knommu/kernel/setup.c index 5c2bb3eeaaa2..ba92b90d5fbc 100644 --- a/arch/m68knommu/kernel/setup.c +++ b/arch/m68knommu/kernel/setup.c | |||
| @@ -29,6 +29,8 @@ | |||
| 29 | #include <linux/bootmem.h> | 29 | #include <linux/bootmem.h> |
| 30 | #include <linux/seq_file.h> | 30 | #include <linux/seq_file.h> |
| 31 | #include <linux/init.h> | 31 | #include <linux/init.h> |
| 32 | #include <linux/initrd.h> | ||
| 33 | #include <linux/root_dev.h> | ||
| 32 | 34 | ||
| 33 | #include <asm/setup.h> | 35 | #include <asm/setup.h> |
| 34 | #include <asm/irq.h> | 36 | #include <asm/irq.h> |
| @@ -52,7 +54,6 @@ void (*mach_reset)(void); | |||
| 52 | void (*mach_halt)(void); | 54 | void (*mach_halt)(void); |
| 53 | void (*mach_power_off)(void); | 55 | void (*mach_power_off)(void); |
| 54 | 56 | ||
| 55 | |||
| 56 | #ifdef CONFIG_M68000 | 57 | #ifdef CONFIG_M68000 |
| 57 | #define CPU "MC68000" | 58 | #define CPU "MC68000" |
| 58 | #endif | 59 | #endif |
| @@ -111,6 +112,69 @@ void (*mach_power_off)(void); | |||
| 111 | extern int _stext, _etext, _sdata, _edata, _sbss, _ebss, _end; | 112 | extern int _stext, _etext, _sdata, _edata, _sbss, _ebss, _end; |
| 112 | extern int _ramstart, _ramend; | 113 | extern int _ramstart, _ramend; |
| 113 | 114 | ||
| 115 | #if defined(CONFIG_UBOOT) | ||
| 116 | /* | ||
| 117 | * parse_uboot_commandline | ||
| 118 | * | ||
| 119 | * Copies u-boot commandline arguments and store them in the proper linux | ||
| 120 | * variables. | ||
| 121 | * | ||
| 122 | * Assumes: | ||
| 123 | * _init_sp global contains the address in the stack pointer when the | ||
| 124 | * kernel starts (see head.S::_start) | ||
| 125 | * | ||
| 126 | * U-Boot calling convention: | ||
| 127 | * (*kernel) (kbd, initrd_start, initrd_end, cmd_start, cmd_end); | ||
| 128 | * | ||
| 129 | * _init_sp can be parsed as such | ||
| 130 | * | ||
| 131 | * _init_sp+00 = u-boot cmd after jsr into kernel (skip) | ||
| 132 | * _init_sp+04 = &kernel board_info (residual data) | ||
| 133 | * _init_sp+08 = &initrd_start | ||
| 134 | * _init_sp+12 = &initrd_end | ||
| 135 | * _init_sp+16 = &cmd_start | ||
| 136 | * _init_sp+20 = &cmd_end | ||
| 137 | * | ||
| 138 | * This also assumes that the memory locations pointed to are still | ||
| 139 | * unmodified. U-boot places them near the end of external SDRAM. | ||
| 140 | * | ||
| 141 | * Argument(s): | ||
| 142 | * commandp = the linux commandline arg container to fill. | ||
| 143 | * size = the sizeof commandp. | ||
| 144 | * | ||
| 145 | * Returns: | ||
| 146 | */ | ||
| 147 | void parse_uboot_commandline(char *commandp, int size) | ||
| 148 | { | ||
| 149 | extern unsigned long _init_sp; | ||
| 150 | unsigned long *sp; | ||
| 151 | unsigned long uboot_kbd; | ||
| 152 | unsigned long uboot_initrd_start, uboot_initrd_end; | ||
| 153 | unsigned long uboot_cmd_start, uboot_cmd_end; | ||
| 154 | |||
| 155 | |||
| 156 | sp = (unsigned long *)_init_sp; | ||
| 157 | uboot_kbd = sp[1]; | ||
| 158 | uboot_initrd_start = sp[2]; | ||
| 159 | uboot_initrd_end = sp[3]; | ||
| 160 | uboot_cmd_start = sp[4]; | ||
| 161 | uboot_cmd_end = sp[5]; | ||
| 162 | |||
| 163 | if (uboot_cmd_start && uboot_cmd_end) | ||
| 164 | strncpy(commandp, (const char *)uboot_cmd_start, size); | ||
| 165 | #if defined(CONFIG_BLK_DEV_INITRD) | ||
| 166 | if (uboot_initrd_start && uboot_initrd_end && | ||
| 167 | (uboot_initrd_end > uboot_initrd_start)) { | ||
| 168 | initrd_start = uboot_initrd_start; | ||
| 169 | initrd_end = uboot_initrd_end; | ||
| 170 | ROOT_DEV = Root_RAM0; | ||
| 171 | printk(KERN_INFO "initrd at 0x%lx:0x%lx\n", | ||
| 172 | initrd_start, initrd_end); | ||
| 173 | } | ||
| 174 | #endif /* if defined(CONFIG_BLK_DEV_INITRD) */ | ||
| 175 | } | ||
| 176 | #endif /* #if defined(CONFIG_UBOOT) */ | ||
| 177 | |||
| 114 | void __init setup_arch(char **cmdline_p) | 178 | void __init setup_arch(char **cmdline_p) |
| 115 | { | 179 | { |
| 116 | int bootmap_size; | 180 | int bootmap_size; |
| @@ -128,7 +192,24 @@ void __init setup_arch(char **cmdline_p) | |||
| 128 | #if defined(CONFIG_BOOTPARAM) | 192 | #if defined(CONFIG_BOOTPARAM) |
| 129 | strncpy(&command_line[0], CONFIG_BOOTPARAM_STRING, sizeof(command_line)); | 193 | strncpy(&command_line[0], CONFIG_BOOTPARAM_STRING, sizeof(command_line)); |
| 130 | command_line[sizeof(command_line) - 1] = 0; | 194 | command_line[sizeof(command_line) - 1] = 0; |
| 131 | #endif | 195 | #endif /* CONFIG_BOOTPARAM */ |
| 196 | |||
| 197 | #if defined(CONFIG_UBOOT) | ||
| 198 | /* CONFIG_UBOOT and CONFIG_BOOTPARAM defined, concatenate cmdline */ | ||
| 199 | #if defined(CONFIG_BOOTPARAM) | ||
| 200 | /* Add the whitespace separator */ | ||
| 201 | command_line[strlen(CONFIG_BOOTPARAM_STRING)] = ' '; | ||
| 202 | /* Parse uboot command line into the rest of the buffer */ | ||
| 203 | parse_uboot_commandline( | ||
| 204 | &command_line[(strlen(CONFIG_BOOTPARAM_STRING)+1)], | ||
| 205 | (sizeof(command_line) - | ||
| 206 | (strlen(CONFIG_BOOTPARAM_STRING)+1))); | ||
| 207 | /* Only CONFIG_UBOOT defined, create cmdline */ | ||
| 208 | #else | ||
| 209 | parse_uboot_commandline(&command_line[0], sizeof(command_line)); | ||
| 210 | #endif /* CONFIG_BOOTPARAM */ | ||
| 211 | command_line[sizeof(command_line) - 1] = 0; | ||
| 212 | #endif /* CONFIG_UBOOT */ | ||
| 132 | 213 | ||
| 133 | printk(KERN_INFO "\x0F\r\n\nuClinux/" CPU "\n"); | 214 | printk(KERN_INFO "\x0F\r\n\nuClinux/" CPU "\n"); |
| 134 | 215 | ||
| @@ -204,6 +285,13 @@ void __init setup_arch(char **cmdline_p) | |||
| 204 | free_bootmem(memory_start, memory_end - memory_start); | 285 | free_bootmem(memory_start, memory_end - memory_start); |
| 205 | reserve_bootmem(memory_start, bootmap_size, BOOTMEM_DEFAULT); | 286 | reserve_bootmem(memory_start, bootmap_size, BOOTMEM_DEFAULT); |
| 206 | 287 | ||
| 288 | #if defined(CONFIG_UBOOT) && defined(CONFIG_BLK_DEV_INITRD) | ||
| 289 | if ((initrd_start > 0) && (initrd_start < initrd_end) && | ||
| 290 | (initrd_end < memory_end)) | ||
| 291 | reserve_bootmem(initrd_start, initrd_end - initrd_start, | ||
| 292 | BOOTMEM_DEFAULT); | ||
| 293 | #endif /* if defined(CONFIG_BLK_DEV_INITRD) */ | ||
| 294 | |||
| 207 | /* | 295 | /* |
| 208 | * Get kmalloc into gear. | 296 | * Get kmalloc into gear. |
| 209 | */ | 297 | */ |
diff --git a/arch/m68knommu/kernel/vmlinux.lds.S b/arch/m68knommu/kernel/vmlinux.lds.S index 2736a5e309c0..9f1784f586b9 100644 --- a/arch/m68knommu/kernel/vmlinux.lds.S +++ b/arch/m68knommu/kernel/vmlinux.lds.S | |||
| @@ -8,6 +8,8 @@ | |||
| 8 | */ | 8 | */ |
| 9 | 9 | ||
| 10 | #include <asm-generic/vmlinux.lds.h> | 10 | #include <asm-generic/vmlinux.lds.h> |
| 11 | #include <asm/page.h> | ||
| 12 | #include <asm/thread_info.h> | ||
| 11 | 13 | ||
| 12 | #if defined(CONFIG_RAMKERNEL) | 14 | #if defined(CONFIG_RAMKERNEL) |
| 13 | #define RAM_START CONFIG_KERNELBASE | 15 | #define RAM_START CONFIG_KERNELBASE |
| @@ -15,7 +17,7 @@ | |||
| 15 | #define TEXT ram | 17 | #define TEXT ram |
| 16 | #define DATA ram | 18 | #define DATA ram |
| 17 | #define INIT ram | 19 | #define INIT ram |
| 18 | #define BSS ram | 20 | #define BSSS ram |
| 19 | #endif | 21 | #endif |
| 20 | #if defined(CONFIG_ROMKERNEL) || defined(CONFIG_HIMEMKERNEL) | 22 | #if defined(CONFIG_ROMKERNEL) || defined(CONFIG_HIMEMKERNEL) |
| 21 | #define RAM_START CONFIG_RAMBASE | 23 | #define RAM_START CONFIG_RAMBASE |
| @@ -27,7 +29,7 @@ | |||
| 27 | #define TEXT rom | 29 | #define TEXT rom |
| 28 | #define DATA ram | 30 | #define DATA ram |
| 29 | #define INIT ram | 31 | #define INIT ram |
| 30 | #define BSS ram | 32 | #define BSSS ram |
| 31 | #endif | 33 | #endif |
| 32 | 34 | ||
| 33 | #ifndef DATA_ADDR | 35 | #ifndef DATA_ADDR |
| @@ -147,40 +149,19 @@ SECTIONS { | |||
| 147 | . = ALIGN(4); | 149 | . = ALIGN(4); |
| 148 | _sdata = . ; | 150 | _sdata = . ; |
| 149 | DATA_DATA | 151 | DATA_DATA |
| 150 | . = ALIGN(32); | 152 | CACHELINE_ALIGNED_DATA(32) |
| 151 | *(.data.cacheline_aligned) | 153 | INIT_TASK_DATA(THREAD_SIZE) |
| 152 | . = ALIGN(8192) ; | ||
| 153 | *(.data.init_task) | ||
| 154 | _edata = . ; | 154 | _edata = . ; |
| 155 | } > DATA | 155 | } > DATA |
| 156 | 156 | ||
| 157 | .init : { | 157 | .init.text : { |
| 158 | . = ALIGN(4096); | 158 | . = ALIGN(PAGE_SIZE); |
| 159 | __init_begin = .; | 159 | __init_begin = .; |
| 160 | _sinittext = .; | 160 | } > INIT |
| 161 | INIT_TEXT | 161 | INIT_TEXT_SECTION(PAGE_SIZE) > INIT |
| 162 | _einittext = .; | 162 | INIT_DATA_SECTION(16) > INIT |
| 163 | INIT_DATA | 163 | .init.data : { |
| 164 | . = ALIGN(16); | 164 | . = ALIGN(PAGE_SIZE); |
| 165 | __setup_start = .; | ||
| 166 | *(.init.setup) | ||
| 167 | __setup_end = .; | ||
| 168 | __initcall_start = .; | ||
| 169 | INITCALLS | ||
| 170 | __initcall_end = .; | ||
| 171 | __con_initcall_start = .; | ||
| 172 | *(.con_initcall.init) | ||
| 173 | __con_initcall_end = .; | ||
| 174 | __security_initcall_start = .; | ||
| 175 | *(.security_initcall.init) | ||
| 176 | __security_initcall_end = .; | ||
| 177 | #ifdef CONFIG_BLK_DEV_INITRD | ||
| 178 | . = ALIGN(4); | ||
| 179 | __initramfs_start = .; | ||
| 180 | *(.init.ramfs) | ||
| 181 | __initramfs_end = .; | ||
| 182 | #endif | ||
| 183 | . = ALIGN(4096); | ||
| 184 | __init_end = .; | 165 | __init_end = .; |
| 185 | } > INIT | 166 | } > INIT |
| 186 | 167 | ||
| @@ -192,7 +173,7 @@ SECTIONS { | |||
| 192 | . = ALIGN(4) ; | 173 | . = ALIGN(4) ; |
| 193 | _ebss = . ; | 174 | _ebss = . ; |
| 194 | _end = . ; | 175 | _end = . ; |
| 195 | } > BSS | 176 | } > BSSS |
| 196 | 177 | ||
| 197 | DISCARDS | 178 | DISCARDS |
| 198 | } | 179 | } |
diff --git a/arch/m68knommu/platform/523x/gpio.c b/arch/m68knommu/platform/523x/gpio.c index f02840d54d3c..a8842dc27839 100644 --- a/arch/m68knommu/platform/523x/gpio.c +++ b/arch/m68knommu/platform/523x/gpio.c | |||
| @@ -30,7 +30,8 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = { | |||
| 30 | .direction_output = mcf_gpio_direction_output, | 30 | .direction_output = mcf_gpio_direction_output, |
| 31 | .get = mcf_gpio_get_value, | 31 | .get = mcf_gpio_get_value, |
| 32 | .set = mcf_gpio_set_value, | 32 | .set = mcf_gpio_set_value, |
| 33 | .ngpio = 8, | 33 | .base = 1, |
| 34 | .ngpio = 7, | ||
| 34 | }, | 35 | }, |
| 35 | .pddr = MCFEPORT_EPDDR, | 36 | .pddr = MCFEPORT_EPDDR, |
| 36 | .podr = MCFEPORT_EPDR, | 37 | .podr = MCFEPORT_EPDR, |
| @@ -244,7 +245,7 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = { | |||
| 244 | .get = mcf_gpio_get_value, | 245 | .get = mcf_gpio_get_value, |
| 245 | .set = mcf_gpio_set_value_fast, | 246 | .set = mcf_gpio_set_value_fast, |
| 246 | .base = 96, | 247 | .base = 96, |
| 247 | .ngpio = 4, | 248 | .ngpio = 8, |
| 248 | }, | 249 | }, |
| 249 | .pddr = MCFGPIO_PDDR_TIMER, | 250 | .pddr = MCFGPIO_PDDR_TIMER, |
| 250 | .podr = MCFGPIO_PODR_TIMER, | 251 | .podr = MCFGPIO_PODR_TIMER, |
diff --git a/arch/m68knommu/platform/527x/gpio.c b/arch/m68knommu/platform/527x/gpio.c index 1028142851ac..0b56e19db0f8 100644 --- a/arch/m68knommu/platform/527x/gpio.c +++ b/arch/m68knommu/platform/527x/gpio.c | |||
| @@ -31,7 +31,8 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = { | |||
| 31 | .direction_output = mcf_gpio_direction_output, | 31 | .direction_output = mcf_gpio_direction_output, |
| 32 | .get = mcf_gpio_get_value, | 32 | .get = mcf_gpio_get_value, |
| 33 | .set = mcf_gpio_set_value, | 33 | .set = mcf_gpio_set_value, |
| 34 | .ngpio = 8, | 34 | .base = 1, |
| 35 | .ngpio = 7, | ||
| 35 | }, | 36 | }, |
| 36 | .pddr = MCFEPORT_EPDDR, | 37 | .pddr = MCFEPORT_EPDDR, |
| 37 | .podr = MCFEPORT_EPDR, | 38 | .podr = MCFEPORT_EPDR, |
| @@ -263,7 +264,8 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = { | |||
| 263 | .direction_output = mcf_gpio_direction_output, | 264 | .direction_output = mcf_gpio_direction_output, |
| 264 | .get = mcf_gpio_get_value, | 265 | .get = mcf_gpio_get_value, |
| 265 | .set = mcf_gpio_set_value, | 266 | .set = mcf_gpio_set_value, |
| 266 | .ngpio = 8, | 267 | .base = 1, |
| 268 | .ngpio = 7, | ||
| 267 | }, | 269 | }, |
| 268 | .pddr = MCFEPORT_EPDDR, | 270 | .pddr = MCFEPORT_EPDDR, |
| 269 | .podr = MCFEPORT_EPDR, | 271 | .podr = MCFEPORT_EPDR, |
diff --git a/arch/m68knommu/platform/528x/gpio.c b/arch/m68knommu/platform/528x/gpio.c index ec593950696a..eedaf0adbcd7 100644 --- a/arch/m68knommu/platform/528x/gpio.c +++ b/arch/m68knommu/platform/528x/gpio.c | |||
| @@ -31,7 +31,7 @@ static struct mcf_gpio_chip mcf_gpio_chips[] = { | |||
| 31 | .get = mcf_gpio_get_value, | 31 | .get = mcf_gpio_get_value, |
| 32 | .set = mcf_gpio_set_value, | 32 | .set = mcf_gpio_set_value, |
| 33 | .base = 1, | 33 | .base = 1, |
| 34 | .ngpio = 8, | 34 | .ngpio = 7, |
| 35 | }, | 35 | }, |
| 36 | .pddr = MCFEPORT_EPDDR, | 36 | .pddr = MCFEPORT_EPDDR, |
| 37 | .podr = MCFEPORT_EPDR, | 37 | .podr = MCFEPORT_EPDR, |
diff --git a/arch/m68knommu/platform/coldfire/clk.c b/arch/m68knommu/platform/coldfire/clk.c index 7cdbf445b28f..9f1260c5e2ad 100644 --- a/arch/m68knommu/platform/coldfire/clk.c +++ b/arch/m68knommu/platform/coldfire/clk.c | |||
| @@ -9,6 +9,7 @@ | |||
| 9 | /***************************************************************************/ | 9 | /***************************************************************************/ |
| 10 | 10 | ||
| 11 | #include <linux/kernel.h> | 11 | #include <linux/kernel.h> |
| 12 | #include <linux/module.h> | ||
| 12 | #include <linux/clk.h> | 13 | #include <linux/clk.h> |
| 13 | #include <asm/coldfire.h> | 14 | #include <asm/coldfire.h> |
| 14 | 15 | ||
| @@ -18,23 +19,27 @@ struct clk *clk_get(struct device *dev, const char *id) | |||
| 18 | { | 19 | { |
| 19 | return NULL; | 20 | return NULL; |
| 20 | } | 21 | } |
| 22 | EXPORT_SYMBOL(clk_get); | ||
| 21 | 23 | ||
| 22 | int clk_enable(struct clk *clk) | 24 | int clk_enable(struct clk *clk) |
| 23 | { | 25 | { |
| 24 | return 0; | 26 | return 0; |
| 25 | } | 27 | } |
| 28 | EXPORT_SYMBOL(clk_enable); | ||
| 26 | 29 | ||
| 27 | void clk_disable(struct clk *clk) | 30 | void clk_disable(struct clk *clk) |
| 28 | { | 31 | { |
| 29 | } | 32 | } |
| 33 | EXPORT_SYMBOL(clk_disable); | ||
| 30 | 34 | ||
| 31 | void clk_put(struct clk *clk) | 35 | void clk_put(struct clk *clk) |
| 32 | { | 36 | { |
| 33 | } | 37 | } |
| 38 | EXPORT_SYMBOL(clk_put); | ||
| 34 | 39 | ||
| 35 | unsigned long clk_get_rate(struct clk *clk) | 40 | unsigned long clk_get_rate(struct clk *clk) |
| 36 | { | 41 | { |
| 37 | return MCF_CLK; | 42 | return MCF_CLK; |
| 38 | } | 43 | } |
| 39 | 44 | EXPORT_SYMBOL(clk_get_rate); | |
| 40 | /***************************************************************************/ | 45 | /***************************************************************************/ |
diff --git a/arch/m68knommu/platform/coldfire/head.S b/arch/m68knommu/platform/coldfire/head.S index 2b0d73c0cc32..4b91aa24eb00 100644 --- a/arch/m68knommu/platform/coldfire/head.S +++ b/arch/m68knommu/platform/coldfire/head.S | |||
| @@ -106,6 +106,9 @@ | |||
| 106 | .global _ramvec | 106 | .global _ramvec |
| 107 | .global _ramstart | 107 | .global _ramstart |
| 108 | .global _ramend | 108 | .global _ramend |
| 109 | #if defined(CONFIG_UBOOT) | ||
| 110 | .global _init_sp | ||
| 111 | #endif | ||
| 109 | 112 | ||
| 110 | /*****************************************************************************/ | 113 | /*****************************************************************************/ |
| 111 | 114 | ||
| @@ -124,6 +127,10 @@ _ramstart: | |||
| 124 | .long 0 | 127 | .long 0 |
| 125 | _ramend: | 128 | _ramend: |
| 126 | .long 0 | 129 | .long 0 |
| 130 | #if defined(CONFIG_UBOOT) | ||
| 131 | _init_sp: | ||
| 132 | .long 0 | ||
| 133 | #endif | ||
| 127 | 134 | ||
| 128 | /*****************************************************************************/ | 135 | /*****************************************************************************/ |
| 129 | 136 | ||
| @@ -137,6 +144,9 @@ __HEAD | |||
| 137 | _start: | 144 | _start: |
| 138 | nop /* filler */ | 145 | nop /* filler */ |
| 139 | movew #0x2700, %sr /* no interrupts */ | 146 | movew #0x2700, %sr /* no interrupts */ |
| 147 | #if defined(CONFIG_UBOOT) | ||
| 148 | movel %sp,_init_sp /* save initial stack pointer */ | ||
| 149 | #endif | ||
| 140 | 150 | ||
| 141 | /* | 151 | /* |
| 142 | * Do any platform or board specific setup now. Most boards | 152 | * Do any platform or board specific setup now. Most boards |
diff --git a/drivers/serial/mcf.c b/drivers/serial/mcf.c index b44382442bf1..7bb5fee639e3 100644 --- a/drivers/serial/mcf.c +++ b/drivers/serial/mcf.c | |||
| @@ -602,7 +602,7 @@ static int __devinit mcf_probe(struct platform_device *pdev) | |||
| 602 | 602 | ||
| 603 | /****************************************************************************/ | 603 | /****************************************************************************/ |
| 604 | 604 | ||
| 605 | static int mcf_remove(struct platform_device *pdev) | 605 | static int __devexit mcf_remove(struct platform_device *pdev) |
| 606 | { | 606 | { |
| 607 | struct uart_port *port; | 607 | struct uart_port *port; |
| 608 | int i; | 608 | int i; |
