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