MOXA linux-2.6.x / linux-2.6.19-uc1 from UC-7110-LX-BOOTLOADER-1.9_VERSION-4.2.tgz
[linux-2.6.19-moxart.git] / arch / arm / mach-s3c44b0x / arch.c
blob3cf28b600c62ccbb53d314529b5402855ac6390b
1 /*
2 * linux/arch/arm/mach-s3c44b0x/arch.c
3 * nickmit_zheng@eastday.com
4 * based on
5 * Hyok S. Choi (hyok.choi@samsung.com)
6 * linux 2.6 armnommu porting
7 */
8 #include <linux/types.h>
9 #include <linux/sched.h>
10 #include <linux/interrupt.h>
11 #include <linux/types.h>
12 #include <linux/kernel.h>
13 #include <linux/init.h>
14 #include <linux/list.h>
15 #include <linux/device.h>
16 #include <linux/slab.h>
17 #include <linux/string.h>
18 #include <linux/sysdev.h>
20 #include <asm/hardware.h>
21 #include <asm/io.h>
22 #include <asm/irq.h>
23 #include <asm/setup.h>
24 #include <asm/mach-types.h>
26 #include <asm/mach/arch.h>
27 #include <asm/mach/irq.h>
28 #include <asm/mach/map.h>
30 #include <linux/tty.h>
31 #include <asm/elf.h>
32 #include <linux/root_dev.h>
33 #include <linux/initrd.h>
35 // used by sysctl
36 //#define DEFAULT_MAX_MAP_COUNT 65536
37 //int sysctl_max_map_count = DEFAULT_MAX_MAP_COUNT;
39 int s3c44b0x_fMHZ = CONFIG_ARM_CLK / 1000000;
40 int s3c44b0x_finMHZ = CONFIG_ARM_CLK_FIN / 1000000;
42 extern void __init s3c44b0x_init_irq(void);
43 extern void s3c44b0x_time_init(void);
45 void __init s3c44b0x_init_machine(void)
49 #if CONFIG_DEBUG_NICKMIT
50 // char my_cmdline[] = "root=/dev/ram rw initrd=0x0c700000,512K";
51 char my_cmdline[1024] = "root=/dev/nfs "
52 "nfsroot=192.168.1.24:/armboot "
53 "ip=192.168.1.8:192.168.1.24:192.168.1.1:255.255.255.0:arm:eth0:off";
55 void __init change_cmdline(char **cmdline)
57 int magic_addr[] = {0xcf00000, 0xce000000, 0x1e0000};
58 char magic_head[] = "Kernel cmdline:";
59 int i;
60 int cnt = sizeof (magic_addr) / sizeof (int);
61 char *p, *d;
62 for(i=0;i<cnt;i++) {
63 p = (char *) magic_addr[i];
64 if (strncmp(p, magic_head, (sizeof magic_head) - 1) != 0)
65 continue;
66 p += sizeof magic_head - 1;
67 d = my_cmdline;
68 while (*p != '\r' && *p != '\n' && (d - my_cmdline - sizeof my_cmdline))
69 *d++ = *p++;
71 *d = 0;
72 *cmdline = my_cmdline;
73 return;
75 *cmdline = my_cmdline;
78 void __init load_initrd(void *src, void *dst, size_t count)
80 int verify = 1;
81 printk("Load initrd image from flash(%08x) to SDRAM(%08x), Length = %d ...", src, dst, count);
82 memmove(dst, src, count);
83 if (verify) {
84 printk("Verify ...");
85 printk("%s\n", memcmp(src, dst, count) == 0 ? "Done" : "Failed");
86 } else {
87 printk("Done\n");
90 #endif
92 void __init s3c44b0x_fixup(struct machine_desc *desc, struct param_struct *params, char **cmdline, struct meminfo *mi)
94 #if CONFIG_NICKMIT_DEBUG
95 change_cmdline(cmdline);
96 // load_initrd(0x1000, 0x0c700000, 0x100000);
97 #endif
100 MACHINE_START(S3C44B0, "S3C44B0X Development Board")
101 MAINTAINER("nickmit <nickmit_zheng@eastday.com>")
102 FIXUP(s3c44b0x_fixup)
103 INITIRQ(s3c44b0x_init_irq)
104 INIT_MACHINE(s3c44b0x_init_machine)
105 INITTIME(s3c44b0x_time_init)
106 MACHINE_END