]>
Commit | Line | Data |
---|---|---|
bd92aa01 | 1 | /* |
1b39a0ba | 2 | * Copyright (C) 2009 Lemote Inc. |
f7a904df | 3 | * Author: Wu Zhangjin, wuzhangjin@gmail.com |
bd92aa01 | 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", | |
1c6d541c | 27 | [MACH_DEXXON_GDIUM2F10] "dexxon-gdium-2f", |
e13fb776 | 28 | [MACH_LEMOTE_NAS] "lemote-nas-2f", |
6e552c9b | 29 | [MACH_LEMOTE_LL2F] "lemote-lynloong-2f", |
3209e70e WZ |
30 | [MACH_LOONGSON_END] NULL, |
31 | }; | |
32 | ||
bd92aa01 WZ |
33 | const char *get_system_type(void) |
34 | { | |
3209e70e | 35 | return system_types[mips_machtype]; |
bd92aa01 WZ |
36 | } |
37 | ||
1b39a0ba WZ |
38 | void __weak __init mach_prom_init_machtype(void) |
39 | { | |
40 | } | |
41 | ||
04cfb90a | 42 | void __init prom_init_machtype(void) |
3209e70e | 43 | { |
04cfb90a | 44 | char *p, str[MACHTYPE_LEN]; |
3209e70e WZ |
45 | int machtype = MACH_LEMOTE_FL2E; |
46 | ||
04cfb90a WZ |
47 | mips_machtype = LOONGSON_MACHTYPE; |
48 | ||
49 | p = strstr(arcs_cmdline, "machtype="); | |
1b39a0ba WZ |
50 | if (!p) { |
51 | mach_prom_init_machtype(); | |
04cfb90a | 52 | return; |
1b39a0ba | 53 | } |
04cfb90a WZ |
54 | p += strlen("machtype="); |
55 | strncpy(str, p, MACHTYPE_LEN); | |
56 | p = strstr(str, " "); | |
57 | if (p) | |
58 | *p = '\0'; | |
3209e70e WZ |
59 | |
60 | for (; system_types[machtype]; machtype++) | |
61 | if (strstr(system_types[machtype], str)) { | |
62 | mips_machtype = machtype; | |
63 | break; | |
64 | } | |
3209e70e | 65 | } |