• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // SPDX-License-Identifier: GPL-2.0-or-later
2 /*
3  * Copyright (C) 2009 Lemote Inc.
4  * Author: Wu Zhangjin, wuzhangjin@gmail.com
5  *
6  * Copyright (c) 2009 Zhang Le <r0bertz@gentoo.org>
7  */
8 #include <linux/errno.h>
9 #include <asm/bootinfo.h>
10 
11 #include <loongson.h>
12 #include <machine.h>
13 
14 /* please ensure the length of the machtype string is less than 50 */
15 #define MACHTYPE_LEN 50
16 
17 static const char *system_types[] = {
18 	[MACH_LOONGSON_UNKNOWN]	= "unknown loongson machine",
19 	[MACH_LEMOTE_FL2E]	= "lemote-fuloong-2e-box",
20 	[MACH_LEMOTE_FL2F]	= "lemote-fuloong-2f-box",
21 	[MACH_LEMOTE_ML2F7]	= "lemote-mengloong-2f-7inches",
22 	[MACH_LEMOTE_YL2F89]	= "lemote-yeeloong-2f-8.9inches",
23 	[MACH_DEXXON_GDIUM2F10]	= "dexxon-gdium-2f",
24 	[MACH_LEMOTE_NAS]	= "lemote-nas-2f",
25 	[MACH_LEMOTE_LL2F]	= "lemote-lynloong-2f",
26 	[MACH_LOONGSON_GENERIC]	= "generic-loongson-machine",
27 	[MACH_LOONGSON_END]	= NULL,
28 };
29 
get_system_type(void)30 const char *get_system_type(void)
31 {
32 	return system_types[mips_machtype];
33 }
34 
mach_prom_init_machtype(void)35 void __weak __init mach_prom_init_machtype(void)
36 {
37 }
38 
prom_init_machtype(void)39 void __init prom_init_machtype(void)
40 {
41 	char *p, str[MACHTYPE_LEN + 1];
42 	int machtype = MACH_LEMOTE_FL2E;
43 
44 	mips_machtype = LOONGSON_MACHTYPE;
45 
46 	p = strstr(arcs_cmdline, "machtype=");
47 	if (!p) {
48 		mach_prom_init_machtype();
49 		return;
50 	}
51 	p += strlen("machtype=");
52 	strncpy(str, p, MACHTYPE_LEN);
53 	str[MACHTYPE_LEN] = '\0';
54 	p = strstr(str, " ");
55 	if (p)
56 		*p = '\0';
57 
58 	for (; system_types[machtype]; machtype++)
59 		if (strstr(system_types[machtype], str)) {
60 			mips_machtype = machtype;
61 			break;
62 		}
63 }
64