Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 04cfb90a authored by Wu Zhangjin's avatar Wu Zhangjin Committed by Ralf Baechle
Browse files

MIPS: Loongson: Cleanup machtype support



To choose code for different machines by the value of machtype it needs to
be initialized as early as possible.  So move initialization of
mips_machtype to prom_init().

Signed-off-by: default avatarWu Zhangjin <wuzhangjin@gmail.com>
Cc: linux-mips@linux-mips.org
Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
parent b6ee75ed
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@ extern unsigned long memsize, highmemsize;
/* loongson-specific command line, env and memory initialization */
extern void __init prom_init_memory(void);
extern void __init prom_init_cmdline(void);
extern void __init prom_init_machtype(void);
extern void __init prom_init_env(void);

/* irq operation functions */
+3 −1
Original line number Diff line number Diff line
@@ -9,7 +9,7 @@
 * Copyright (C) 2007 Lemote Inc. & Insititute of Computing Technology
 * Author: Fuxin Zhang, zhangfx@lemote.com
 *
 * Copyright (C) 2009 Lemote Inc. & Insititute of Computing Technology
 * Copyright (C) 2009 Lemote Inc.
 * Author: Wu Zhangjin, wuzj@lemote.com
 *
 * This program is free software; you can redistribute  it and/or modify it
@@ -49,4 +49,6 @@ void __init prom_init_cmdline(void)
		strcat(arcs_cmdline, " console=ttyS0,115200");
	if ((strstr(arcs_cmdline, "root=")) == NULL)
		strcat(arcs_cmdline, " root=/dev/hda1");

	prom_init_machtype();
}
+15 −8
Original line number Diff line number Diff line
@@ -15,6 +15,9 @@
#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",
@@ -27,24 +30,28 @@ static const char *system_types[] = {

const char *get_system_type(void)
{
	if (mips_machtype == MACH_UNKNOWN)
		mips_machtype = LOONGSON_MACHTYPE;

	return system_types[mips_machtype];
}

static __init int machtype_setup(char *str)
void __init prom_init_machtype(void)
{
	char *p, str[MACHTYPE_LEN];
	int machtype = MACH_LEMOTE_FL2E;

	if (!str)
		return -EINVAL;
	mips_machtype = LOONGSON_MACHTYPE;

	p = strstr(arcs_cmdline, "machtype=");
	if (!p)
		return;
	p += strlen("machtype=");
	strncpy(str, p, MACHTYPE_LEN);
	p = strstr(str, " ");
	if (p)
		*p = '\0';

	for (; system_types[machtype]; machtype++)
		if (strstr(system_types[machtype], str)) {
			mips_machtype = machtype;
			break;
		}
	return 0;
}
__setup("machtype=", machtype_setup);