Skip to content

Commit

Permalink
MIPS: Loongson: Add a machtype kernel command line argument
Browse files Browse the repository at this point in the history
The difference between some loongson-based machines is very small, so, if
there is no necessary to add new kernel config options to cope with this
difference, it will be better to share the same kernel image file between
them, benefit from this, the linux distribution developers only have a need
to compile the kernel one time.

This machtype kernel command line argument will be used later to share the
same kernel image file between two different machines(menglong & yeeloong)
made by lemote.

Thanks very much to Zhang Le for cleaning up the machtype implementation.

Signed-off-by: Wu Zhangjin <wuzhangjin@gmail.com>
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
  • Loading branch information
Wu Zhangjin authored and Ralf Baechle committed Sep 17, 2009
1 parent 85749d2 commit 3209e70
Show file tree
Hide file tree
Showing 6 changed files with 53 additions and 4 deletions.
4 changes: 4 additions & 0 deletions Documentation/kernel-parameters.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1286,6 +1286,10 @@ and is between 256 and 4096 characters. It is defined in the file
(machvec) in a generic kernel.
Example: machvec=hpzx1_swiotlb

machtype= [Loongson] Share the same kernel image file between different
yeeloong laptop.
Example: machtype=lemote-yeeloong-2f-7inch

max_addr=nn[KMG] [KNL,BOOT,ia64] All physical memory greater
than or equal to this physical address is ignored.

Expand Down
12 changes: 12 additions & 0 deletions arch/mips/include/asm/bootinfo.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
* Copyright (C) 1995, 1996 Andreas Busse
* Copyright (C) 1995, 1996 Stoned Elipot
* Copyright (C) 1995, 1996 Paul M. Antoine.
* Copyright (C) 2009 Zhang Le
*/
#ifndef _ASM_BOOTINFO_H
#define _ASM_BOOTINFO_H
Expand Down Expand Up @@ -57,6 +58,17 @@
#define MACH_MIKROTIK_RB532 0 /* Mikrotik RouterBoard 532 */
#define MACH_MIKROTIK_RB532A 1 /* Mikrotik RouterBoard 532A */

/*
* Valid machtype for Loongson family
*/
#define MACH_LOONGSON_UNKNOWN 0
#define MACH_LEMOTE_FL2E 1
#define MACH_LEMOTE_FL2F 2
#define MACH_LEMOTE_ML2F7 3
#define MACH_LEMOTE_YL2F89 4
#define MACH_DEXXON_GDIUM2F10 5
#define MACH_LOONGSON_END 6

#define CL_SIZE COMMAND_LINE_SIZE

extern char *system_type;
Expand Down
2 changes: 1 addition & 1 deletion arch/mips/include/asm/mach-loongson/machine.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@

#define LOONGSON_UART_BASE (BONITO_PCIIO_BASE + 0x3f8)

#define LOONGSON_MACHNAME "lemote-fuloong-2e-box"
#define LOONGSON_MACHTYPE MACH_LEMOTE_FL2E

#endif

Expand Down
2 changes: 1 addition & 1 deletion arch/mips/loongson/common/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
#

obj-y += setup.o init.o cmdline.o env.o time.o reset.o irq.o \
pci.o bonito-irq.o mem.o
pci.o bonito-irq.o mem.o machtype.o

#
# Early printk support
Expand Down
35 changes: 34 additions & 1 deletion arch/mips/loongson/common/machtype.c
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,49 @@
* Copyright (C) 2009 Lemote Inc. & Insititute of Computing Technology
* Author: Wu Zhangjin, wuzj@lemote.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>

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-gidum-2f-10inches",
[MACH_LOONGSON_END] NULL,
};

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

return system_types[mips_machtype];
}

static __init int machtype_setup(char *str)
{
int machtype = MACH_LEMOTE_FL2E;

if (!str)
return -EINVAL;

for (; system_types[machtype]; machtype++)
if (strstr(system_types[machtype], str)) {
mips_machtype = machtype;
break;
}
return 0;
}
__setup("machtype=", machtype_setup);
2 changes: 1 addition & 1 deletion arch/mips/loongson/fuloong-2e/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@
# Makefile for Lemote Fuloong2e mini-PC board.
#

obj-y += irq.o reset.o machtype.o
obj-y += irq.o reset.o

EXTRA_CFLAGS += -Werror

0 comments on commit 3209e70

Please sign in to comment.