diff options
-rw-r--r-- | arch/mips/loongson/common/machtype.c | 10 | ||||
-rw-r--r-- | arch/mips/loongson/lemote-2f/Makefile | 2 | ||||
-rw-r--r-- | arch/mips/loongson/lemote-2f/machtype.c | 45 |
3 files changed, 54 insertions, 3 deletions
diff --git a/arch/mips/loongson/common/machtype.c b/arch/mips/loongson/common/machtype.c index 0ed52b3f5314..3799098e1e95 100644 --- a/arch/mips/loongson/common/machtype.c +++ b/arch/mips/loongson/common/machtype.c | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (C) 2009 Lemote Inc. & Insititute of Computing Technology | 2 | * Copyright (C) 2009 Lemote Inc. |
3 | * Author: Wu Zhangjin, wuzj@lemote.com | 3 | * Author: Wu Zhangjin, wuzj@lemote.com |
4 | * | 4 | * |
5 | * Copyright (c) 2009 Zhang Le <r0bertz@gentoo.org> | 5 | * Copyright (c) 2009 Zhang Le <r0bertz@gentoo.org> |
@@ -35,6 +35,10 @@ const char *get_system_type(void) | |||
35 | return system_types[mips_machtype]; | 35 | return system_types[mips_machtype]; |
36 | } | 36 | } |
37 | 37 | ||
38 | void __weak __init mach_prom_init_machtype(void) | ||
39 | { | ||
40 | } | ||
41 | |||
38 | void __init prom_init_machtype(void) | 42 | void __init prom_init_machtype(void) |
39 | { | 43 | { |
40 | char *p, str[MACHTYPE_LEN]; | 44 | char *p, str[MACHTYPE_LEN]; |
@@ -43,8 +47,10 @@ void __init prom_init_machtype(void) | |||
43 | mips_machtype = LOONGSON_MACHTYPE; | 47 | mips_machtype = LOONGSON_MACHTYPE; |
44 | 48 | ||
45 | p = strstr(arcs_cmdline, "machtype="); | 49 | p = strstr(arcs_cmdline, "machtype="); |
46 | if (!p) | 50 | if (!p) { |
51 | mach_prom_init_machtype(); | ||
47 | return; | 52 | return; |
53 | } | ||
48 | p += strlen("machtype="); | 54 | p += strlen("machtype="); |
49 | strncpy(str, p, MACHTYPE_LEN); | 55 | strncpy(str, p, MACHTYPE_LEN); |
50 | p = strstr(str, " "); | 56 | p = strstr(str, " "); |
diff --git a/arch/mips/loongson/lemote-2f/Makefile b/arch/mips/loongson/lemote-2f/Makefile index 4d84b27dc41b..8699a53f0477 100644 --- a/arch/mips/loongson/lemote-2f/Makefile +++ b/arch/mips/loongson/lemote-2f/Makefile | |||
@@ -2,7 +2,7 @@ | |||
2 | # Makefile for lemote loongson2f family machines | 2 | # Makefile for lemote loongson2f family machines |
3 | # | 3 | # |
4 | 4 | ||
5 | obj-y += irq.o reset.o ec_kb3310b.o | 5 | obj-y += machtype.o irq.o reset.o ec_kb3310b.o |
6 | 6 | ||
7 | # | 7 | # |
8 | # Suspend Support | 8 | # Suspend Support |
diff --git a/arch/mips/loongson/lemote-2f/machtype.c b/arch/mips/loongson/lemote-2f/machtype.c new file mode 100644 index 000000000000..610f43173148 --- /dev/null +++ b/arch/mips/loongson/lemote-2f/machtype.c | |||
@@ -0,0 +1,45 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2009 Lemote Inc. | ||
3 | * Author: Wu Zhangjin, wuzj@lemote.com | ||
4 | * | ||
5 | * This program is free software; you can redistribute it and/or modify it | ||
6 | * under the terms of the GNU General Public License as published by the | ||
7 | * Free Software Foundation; either version 2 of the License, or (at your | ||
8 | * option) any later version. | ||
9 | */ | ||
10 | #include <asm/bootinfo.h> | ||
11 | |||
12 | #include <loongson.h> | ||
13 | |||
14 | void __init mach_prom_init_machtype(void) | ||
15 | { | ||
16 | /* We share the same kernel image file among Lemote 2F family | ||
17 | * of machines, and provide the machtype= kernel command line | ||
18 | * to users to indicate their machine, this command line will | ||
19 | * be passed by the latest PMON automatically. and fortunately, | ||
20 | * up to now, we can get the machine type from the PMON_VER= | ||
21 | * commandline directly except the NAS machine, In the old | ||
22 | * machines, this will help the users a lot. | ||
23 | * | ||
24 | * If no "machtype=" passed, get machine type from "PMON_VER=". | ||
25 | * PMON_VER=LM8089 Lemote 8.9'' netbook | ||
26 | * LM8101 Lemote 10.1'' netbook | ||
27 | * (The above two netbooks have the same kernel support) | ||
28 | * LM6XXX Lemote FuLoong(2F) box series | ||
29 | * LM9XXX Lemote LynLoong PC series | ||
30 | */ | ||
31 | if (strstr(arcs_cmdline, "PMON_VER=LM")) { | ||
32 | if (strstr(arcs_cmdline, "PMON_VER=LM8")) | ||
33 | mips_machtype = MACH_LEMOTE_YL2F89; | ||
34 | else if (strstr(arcs_cmdline, "PMON_VER=LM6")) | ||
35 | mips_machtype = MACH_LEMOTE_FL2F; | ||
36 | else if (strstr(arcs_cmdline, "PMON_VER=LM9")) | ||
37 | mips_machtype = MACH_LEMOTE_LL2F; | ||
38 | else | ||
39 | mips_machtype = MACH_LEMOTE_NAS; | ||
40 | |||
41 | strcat(arcs_cmdline, " machtype="); | ||
42 | strcat(arcs_cmdline, get_system_type()); | ||
43 | strcat(arcs_cmdline, " "); | ||
44 | } | ||
45 | } | ||