Commit | Line | Data |
---|---|---|
bd92aa01 WZ |
1 | /* |
2 | * Copyright (C) 2009 Lemote Inc. & Insititute of Computing Technology | |
3 | * Author: Wu Zhangjin, wuzj@lemote.com | |
4 | * | |
3209e70e WZ |
5 | * Copyright (c) 2009 Zhang Le <r0bertz@gentoo.org> |
6 | * | |
bd92aa01 WZ |
7 | * This program is free software; you can redistribute it and/or modify it |
8 | * under the terms of the GNU General Public License as published by the | |
9 | * Free Software Foundation; either version 2 of the License, or (at your | |
10 | * option) any later version. | |
11 | */ | |
3209e70e WZ |
12 | #include <linux/errno.h> |
13 | #include <asm/bootinfo.h> | |
bd92aa01 | 14 | |
3209e70e | 15 | #include <loongson.h> |
85749d24 WZ |
16 | #include <machine.h> |
17 | ||
04cfb90a WZ |
18 | /* please ensure the length of the machtype string is less than 50 */ |
19 | #define MACHTYPE_LEN 50 | |
20 | ||
3209e70e WZ |
21 | static const char *system_types[] = { |
22 | [MACH_LOONGSON_UNKNOWN] "unknown loongson machine", | |
23 | [MACH_LEMOTE_FL2E] "lemote-fuloong-2e-box", | |
24 | [MACH_LEMOTE_FL2F] "lemote-fuloong-2f-box", | |
25 | [MACH_LEMOTE_ML2F7] "lemote-mengloong-2f-7inches", | |
26 | [MACH_LEMOTE_YL2F89] "lemote-yeeloong-2f-8.9inches", | |
27 | [MACH_DEXXON_GDIUM2F10] "dexxon-gidum-2f-10inches", | |
28 | [MACH_LOONGSON_END] NULL, | |
29 | }; | |
30 | ||
bd92aa01 WZ |
31 | const char *get_system_type(void) |
32 | { | |
3209e70e | 33 | return system_types[mips_machtype]; |
bd92aa01 WZ |
34 | } |
35 | ||
04cfb90a | 36 | void __init prom_init_machtype(void) |
3209e70e | 37 | { |
04cfb90a | 38 | char *p, str[MACHTYPE_LEN]; |
3209e70e WZ |
39 | int machtype = MACH_LEMOTE_FL2E; |
40 | ||
04cfb90a WZ |
41 | mips_machtype = LOONGSON_MACHTYPE; |
42 | ||
43 | p = strstr(arcs_cmdline, "machtype="); | |
44 | if (!p) | |
45 | return; | |
46 | p += strlen("machtype="); | |
47 | strncpy(str, p, MACHTYPE_LEN); | |
48 | p = strstr(str, " "); | |
49 | if (p) | |
50 | *p = '\0'; | |
3209e70e WZ |
51 | |
52 | for (; system_types[machtype]; machtype++) | |
53 | if (strstr(system_types[machtype], str)) { | |
54 | mips_machtype = machtype; | |
55 | break; | |
56 | } | |
3209e70e | 57 | } |