ramips: update mips multi-machine stuff
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@19400 3c298f89-4303-0410-b956-a3cf2f4a3e73master
parent
e201d1990d
commit
9f3818d5e0
|
@ -9,6 +9,8 @@
|
||||||
* by the Free Software Foundation.
|
* by the Free Software Foundation.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <asm/mips_machine.h>
|
||||||
|
|
||||||
enum ramips_mach_type {
|
enum ramips_mach_type {
|
||||||
RAMIPS_MACH_GENERIC,
|
RAMIPS_MACH_GENERIC,
|
||||||
/* RT2880 based machines */
|
/* RT2880 based machines */
|
||||||
|
@ -23,5 +25,3 @@ enum ramips_mach_type {
|
||||||
RAMIPS_MACH_WHR_G300N, /* Buffalo WHR-G300N */
|
RAMIPS_MACH_WHR_G300N, /* Buffalo WHR-G300N */
|
||||||
RAMIPS_MACH_FONERA20N, /* La Fonera 2.0N */
|
RAMIPS_MACH_FONERA20N, /* La Fonera 2.0N */
|
||||||
};
|
};
|
||||||
|
|
||||||
extern enum ramips_mach_type ramips_mach;
|
|
||||||
|
|
|
@ -20,33 +20,6 @@
|
||||||
#include <asm/mach-ralink/machine.h>
|
#include <asm/mach-ralink/machine.h>
|
||||||
#include <ralink_soc.h>
|
#include <ralink_soc.h>
|
||||||
|
|
||||||
struct board_rec {
|
|
||||||
char *name;
|
|
||||||
enum ramips_mach_type mach_type;
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct board_rec boards[] __initdata = {
|
|
||||||
{
|
|
||||||
.name = "RT-N15",
|
|
||||||
.mach_type = RAMIPS_MACH_RT_N15,
|
|
||||||
}, {
|
|
||||||
.name = "WZR-AGL300NH",
|
|
||||||
.mach_type = RAMIPS_MACH_WZR_AGL300NH,
|
|
||||||
}, {
|
|
||||||
.name = "DIR-300-revB",
|
|
||||||
.mach_type = RAMIPS_MACH_DIR_300_REVB,
|
|
||||||
}, {
|
|
||||||
.name = "V22RW-2X2",
|
|
||||||
.mach_type = RAMIPS_MACH_V22RW_2X2,
|
|
||||||
}, {
|
|
||||||
.name = "WHR-G300N",
|
|
||||||
.mach_type = RAMIPS_MACH_WHR_G300N,
|
|
||||||
}, {
|
|
||||||
.name = "FONERA20N",
|
|
||||||
.mach_type = RAMIPS_MACH_FONERA20N,
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
static inline void *to_ram_addr(void *addr)
|
static inline void *to_ram_addr(void *addr)
|
||||||
{
|
{
|
||||||
u32 base;
|
u32 base;
|
||||||
|
@ -164,20 +137,6 @@ static __init char *prom_append_env(char **env, const char *envname)
|
||||||
#undef PROM_MAX_ENVS
|
#undef PROM_MAX_ENVS
|
||||||
}
|
}
|
||||||
|
|
||||||
static __init int ramips_board_setup(char *name)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
for (i = 0; i < ARRAY_SIZE(boards); i++)
|
|
||||||
if (strcmp(name, boards[i].name) == 0) {
|
|
||||||
ramips_mach = boards[i].mach_type;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
__setup("board=", ramips_board_setup);
|
|
||||||
|
|
||||||
void __init prom_init(void)
|
void __init prom_init(void)
|
||||||
{
|
{
|
||||||
int argc;
|
int argc;
|
||||||
|
|
|
@ -16,14 +16,12 @@
|
||||||
|
|
||||||
#include <asm/bootinfo.h>
|
#include <asm/bootinfo.h>
|
||||||
#include <asm/addrspace.h>
|
#include <asm/addrspace.h>
|
||||||
#include <asm/mips_machine.h>
|
|
||||||
|
|
||||||
#include <asm/mach-ralink/common.h>
|
#include <asm/mach-ralink/common.h>
|
||||||
#include <asm/mach-ralink/machine.h>
|
#include <asm/mach-ralink/machine.h>
|
||||||
#include <ralink_soc.h>
|
#include <ralink_soc.h>
|
||||||
|
|
||||||
unsigned char ramips_sys_type[RAMIPS_SYS_TYPE_LEN];
|
unsigned char ramips_sys_type[RAMIPS_SYS_TYPE_LEN];
|
||||||
enum ramips_mach_type ramips_mach = RAMIPS_MACH_GENERIC;
|
|
||||||
|
|
||||||
const char *get_system_type(void)
|
const char *get_system_type(void)
|
||||||
{
|
{
|
||||||
|
@ -76,9 +74,11 @@ void __init plat_mem_setup(void)
|
||||||
ramips_soc_setup();
|
ramips_soc_setup();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
__setup("board=", mips_machtype_setup);
|
||||||
|
|
||||||
static int __init ramips_machine_setup(void)
|
static int __init ramips_machine_setup(void)
|
||||||
{
|
{
|
||||||
mips_machine_setup(ramips_mach);
|
mips_machine_setup();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -88,4 +88,5 @@ static void __init ramips_generic_init(void)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
MIPS_MACHINE(RAMIPS_MACH_GENERIC, "Generic Ralink board", ramips_generic_init);
|
MIPS_MACHINE(RAMIPS_MACH_GENERIC, "Generic", "Generic Ralink board",
|
||||||
|
ramips_generic_init);
|
||||||
|
|
|
@ -15,7 +15,6 @@
|
||||||
#include <linux/mtd/physmap.h>
|
#include <linux/mtd/physmap.h>
|
||||||
#include <linux/leds.h>
|
#include <linux/leds.h>
|
||||||
|
|
||||||
#include <asm/mips_machine.h>
|
|
||||||
#include <asm/mach-ralink/machine.h>
|
#include <asm/mach-ralink/machine.h>
|
||||||
#include <asm/mach-ralink/dev_gpio_leds.h>
|
#include <asm/mach-ralink/dev_gpio_leds.h>
|
||||||
#include <asm/mach-ralink/rt288x.h>
|
#include <asm/mach-ralink/rt288x.h>
|
||||||
|
@ -85,4 +84,4 @@ static void __init rt_n15_init(void)
|
||||||
rt_n15_leds_gpio);
|
rt_n15_leds_gpio);
|
||||||
}
|
}
|
||||||
|
|
||||||
MIPS_MACHINE(RAMIPS_MACH_RT_N15, "Asus RT-N15", rt_n15_init);
|
MIPS_MACHINE(RAMIPS_MACH_RT_N15, "RT-N15", "Asus RT-N15", rt_n15_init);
|
||||||
|
|
|
@ -15,7 +15,6 @@
|
||||||
#include <linux/mtd/physmap.h>
|
#include <linux/mtd/physmap.h>
|
||||||
#include <linux/leds.h>
|
#include <linux/leds.h>
|
||||||
|
|
||||||
#include <asm/mips_machine.h>
|
|
||||||
#include <asm/mach-ralink/machine.h>
|
#include <asm/mach-ralink/machine.h>
|
||||||
#include <asm/mach-ralink/dev_gpio_leds.h>
|
#include <asm/mach-ralink/dev_gpio_leds.h>
|
||||||
#include <asm/mach-ralink/rt288x.h>
|
#include <asm/mach-ralink/rt288x.h>
|
||||||
|
@ -102,4 +101,5 @@ static void __init wzr_agl300nh_init(void)
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
MIPS_MACHINE(RAMIPS_MACH_WZR_AGL300NH, "Buffalo WZR-AGL300NH", wzr_agl300nh_init);
|
MIPS_MACHINE(RAMIPS_MACH_WZR_AGL300NH, "WZR-AGL300NH",
|
||||||
|
"Buffalo WZR-AGL300NH", wzr_agl300nh_init);
|
||||||
|
|
|
@ -15,7 +15,6 @@
|
||||||
#include <linux/mtd/physmap.h>
|
#include <linux/mtd/physmap.h>
|
||||||
#include <linux/leds.h>
|
#include <linux/leds.h>
|
||||||
|
|
||||||
#include <asm/mips_machine.h>
|
|
||||||
#include <asm/mach-ralink/machine.h>
|
#include <asm/mach-ralink/machine.h>
|
||||||
#include <asm/mach-ralink/dev_gpio_leds.h>
|
#include <asm/mach-ralink/dev_gpio_leds.h>
|
||||||
#include <asm/mach-ralink/rt305x.h>
|
#include <asm/mach-ralink/rt305x.h>
|
||||||
|
@ -96,4 +95,5 @@ static void __init dir_300b_init(void)
|
||||||
dir_300b_leds_gpio);
|
dir_300b_leds_gpio);
|
||||||
}
|
}
|
||||||
|
|
||||||
MIPS_MACHINE(RAMIPS_MACH_DIR_300_REVB, "D-Link DIR-300 revB", dir_300b_init);
|
MIPS_MACHINE(RAMIPS_MACH_DIR_300_REVB, "DIR-300-revB", "D-Link DIR-300 revB",
|
||||||
|
dir_300b_init);
|
||||||
|
|
|
@ -15,7 +15,6 @@
|
||||||
#include <linux/mtd/physmap.h>
|
#include <linux/mtd/physmap.h>
|
||||||
#include <linux/leds.h>
|
#include <linux/leds.h>
|
||||||
|
|
||||||
#include <asm/mips_machine.h>
|
|
||||||
#include <asm/mach-ralink/machine.h>
|
#include <asm/mach-ralink/machine.h>
|
||||||
#include <asm/mach-ralink/dev_gpio_leds.h>
|
#include <asm/mach-ralink/dev_gpio_leds.h>
|
||||||
#include <asm/mach-ralink/rt305x.h>
|
#include <asm/mach-ralink/rt305x.h>
|
||||||
|
@ -97,4 +96,5 @@ static void __init fonera20n_init(void)
|
||||||
rt305x_register_ethernet();
|
rt305x_register_ethernet();
|
||||||
}
|
}
|
||||||
|
|
||||||
MIPS_MACHINE(RAMIPS_MACH_FONERA20N, "La Fonera 2.0N", fonera20n_init);
|
MIPS_MACHINE(RAMIPS_MACH_FONERA20N, "FONERA20N", "La Fonera 2.0N",
|
||||||
|
fonera20n_init);
|
||||||
|
|
|
@ -15,7 +15,6 @@
|
||||||
#include <linux/mtd/physmap.h>
|
#include <linux/mtd/physmap.h>
|
||||||
#include <linux/leds.h>
|
#include <linux/leds.h>
|
||||||
|
|
||||||
#include <asm/mips_machine.h>
|
|
||||||
#include <asm/mach-ralink/machine.h>
|
#include <asm/mach-ralink/machine.h>
|
||||||
#include <asm/mach-ralink/dev_gpio_leds.h>
|
#include <asm/mach-ralink/dev_gpio_leds.h>
|
||||||
#include <asm/mach-ralink/rt305x.h>
|
#include <asm/mach-ralink/rt305x.h>
|
||||||
|
@ -90,5 +89,5 @@ static void __init v22rw_2x2_init(void)
|
||||||
v22rw_2x2_leds_gpio);
|
v22rw_2x2_leds_gpio);
|
||||||
}
|
}
|
||||||
|
|
||||||
MIPS_MACHINE(RAMIPS_MACH_V22RW_2X2, "Ralink AP-RT3052-V22RW-2X2",
|
MIPS_MACHINE(RAMIPS_MACH_V22RW_2X2, "V22RW-2X2", "Ralink AP-RT3052-V22RW-2X2",
|
||||||
v22rw_2x2_init);
|
v22rw_2x2_init);
|
||||||
|
|
|
@ -15,7 +15,6 @@
|
||||||
#include <linux/mtd/physmap.h>
|
#include <linux/mtd/physmap.h>
|
||||||
#include <linux/leds.h>
|
#include <linux/leds.h>
|
||||||
|
|
||||||
#include <asm/mips_machine.h>
|
|
||||||
#include <asm/mach-ralink/machine.h>
|
#include <asm/mach-ralink/machine.h>
|
||||||
#include <asm/mach-ralink/dev_gpio_leds.h>
|
#include <asm/mach-ralink/dev_gpio_leds.h>
|
||||||
#include <asm/mach-ralink/rt305x.h>
|
#include <asm/mach-ralink/rt305x.h>
|
||||||
|
@ -97,4 +96,5 @@ static void __init whr_g300n_init(void)
|
||||||
whr_g300n_leds_gpio);
|
whr_g300n_leds_gpio);
|
||||||
}
|
}
|
||||||
|
|
||||||
MIPS_MACHINE(RAMIPS_MACH_WHR_G300N, "Buffalo WHR-G300N", whr_g300n_init);
|
MIPS_MACHINE(RAMIPS_MACH_WHR_G300N, "WHR-G300N", "Buffalo WHR-G300N",
|
||||||
|
whr_g300n_init);
|
||||||
|
|
|
@ -0,0 +1,134 @@
|
||||||
|
--- a/arch/mips/kernel/mips_machine.c
|
||||||
|
+++ b/arch/mips/kernel/mips_machine.c
|
||||||
|
@@ -7,12 +7,13 @@
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#include <linux/mm.h>
|
||||||
|
+#include <linux/string.h>
|
||||||
|
|
||||||
|
#include <asm/mips_machine.h>
|
||||||
|
-#include <asm/bootinfo.h>
|
||||||
|
|
||||||
|
static struct list_head mips_machines __initdata =
|
||||||
|
LIST_HEAD_INIT(mips_machines);
|
||||||
|
+static char *mips_machid __initdata;
|
||||||
|
|
||||||
|
char *mips_machine_name = "Unknown";
|
||||||
|
|
||||||
|
@@ -55,20 +56,65 @@ void __init mips_machine_set_name(char *
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
-void __init mips_machine_setup(unsigned long machtype)
|
||||||
|
+void __init mips_machine_setup(void)
|
||||||
|
{
|
||||||
|
struct mips_machine *mach;
|
||||||
|
|
||||||
|
- mach = mips_machine_find(machtype);
|
||||||
|
+ mach = mips_machine_find(mips_machtype);
|
||||||
|
if (!mach) {
|
||||||
|
- printk(KERN_ALERT "MIPS: no machine registered for "
|
||||||
|
- "machtype %lu\n", machtype);
|
||||||
|
+ printk(KERN_WARNING "MIPS: no machine registered for "
|
||||||
|
+ "machtype %lu\n", mips_machtype);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
mips_machine_set_name(mach->mach_name);
|
||||||
|
- printk(KERN_INFO "MIPS: machine is %s\n", mips_machine_name);
|
||||||
|
+ printk(KERN_NOTICE "MIPS: machine is %s\n", mips_machine_name);
|
||||||
|
|
||||||
|
if (mach->mach_setup)
|
||||||
|
mach->mach_setup();
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+int __init mips_machtype_setup(char *id)
|
||||||
|
+{
|
||||||
|
+ if (mips_machid == NULL)
|
||||||
|
+ mips_machid = id;
|
||||||
|
+
|
||||||
|
+ return 1;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+__setup("machtype=", mips_machtype_setup);
|
||||||
|
+
|
||||||
|
+static int __init mips_machtype_init(void)
|
||||||
|
+{
|
||||||
|
+ struct list_head *this;
|
||||||
|
+ struct mips_machine *mach;
|
||||||
|
+
|
||||||
|
+ if (mips_machid == NULL)
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
+ list_for_each(this, &mips_machines) {
|
||||||
|
+ mach = list_entry(this, struct mips_machine, list);
|
||||||
|
+ if (mach->mach_id == NULL)
|
||||||
|
+ continue;
|
||||||
|
+
|
||||||
|
+ if (strcmp(mach->mach_id, mips_machid) == 0) {
|
||||||
|
+ mips_machtype = mach->mach_type;
|
||||||
|
+ return 0;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ printk(KERN_WARNING
|
||||||
|
+ "MIPS: no machine found for id: '%s', registered machines:\n",
|
||||||
|
+ mips_machid);
|
||||||
|
+ printk(KERN_WARNING "%32s %s\n", "id", "name");
|
||||||
|
+
|
||||||
|
+ list_for_each(this, &mips_machines) {
|
||||||
|
+ mach = list_entry(this, struct mips_machine, list);
|
||||||
|
+ printk(KERN_WARNING "%32s %s\n",
|
||||||
|
+ mach->mach_id ? mach->mach_id : "", mach->mach_name);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+core_initcall(mips_machtype_init);
|
||||||
|
--- a/arch/mips/include/asm/mips_machine.h
|
||||||
|
+++ b/arch/mips/include/asm/mips_machine.h
|
||||||
|
@@ -13,25 +13,33 @@
|
||||||
|
#include <linux/init.h>
|
||||||
|
#include <linux/list.h>
|
||||||
|
|
||||||
|
+#include <asm/bootinfo.h>
|
||||||
|
+
|
||||||
|
struct mips_machine {
|
||||||
|
unsigned long mach_type;
|
||||||
|
- void (*mach_setup)(void);
|
||||||
|
+ char *mach_id;
|
||||||
|
char *mach_name;
|
||||||
|
+ void (*mach_setup)(void);
|
||||||
|
struct list_head list;
|
||||||
|
};
|
||||||
|
|
||||||
|
void mips_machine_register(struct mips_machine *) __init;
|
||||||
|
-void mips_machine_setup(unsigned long machtype) __init;
|
||||||
|
+void mips_machine_setup(void) __init;
|
||||||
|
+int mips_machtype_setup(char *id) __init;
|
||||||
|
void mips_machine_set_name(char *name) __init;
|
||||||
|
|
||||||
|
extern char *mips_machine_name;
|
||||||
|
|
||||||
|
-#define MIPS_MACHINE(_type, _name, _setup) \
|
||||||
|
-static char machine_name_##_type[] __initdata = _name; \
|
||||||
|
+#define MIPS_MACHINE(_type, _id, _name, _setup) \
|
||||||
|
+static const char machine_name_##_type[] __initconst \
|
||||||
|
+ __aligned(1) = _name; \
|
||||||
|
+static const char machine_id_##_type[] __initconst \
|
||||||
|
+ __aligned(1) = _id; \
|
||||||
|
static struct mips_machine machine_##_type __initdata = \
|
||||||
|
{ \
|
||||||
|
.mach_type = _type, \
|
||||||
|
- .mach_name = machine_name_##_type, \
|
||||||
|
+ .mach_id = (char *) machine_id_##_type, \
|
||||||
|
+ .mach_name = (char *) machine_name_##_type, \
|
||||||
|
.mach_setup = _setup, \
|
||||||
|
}; \
|
||||||
|
\
|
||||||
|
@@ -44,4 +52,3 @@ static int __init register_machine_##_ty
|
||||||
|
pure_initcall(register_machine_##_type)
|
||||||
|
|
||||||
|
#endif /* __ASM_MIPS_MACHINE_H */
|
||||||
|
-
|
|
@ -0,0 +1,134 @@
|
||||||
|
--- a/arch/mips/kernel/mips_machine.c
|
||||||
|
+++ b/arch/mips/kernel/mips_machine.c
|
||||||
|
@@ -7,12 +7,13 @@
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#include <linux/mm.h>
|
||||||
|
+#include <linux/string.h>
|
||||||
|
|
||||||
|
#include <asm/mips_machine.h>
|
||||||
|
-#include <asm/bootinfo.h>
|
||||||
|
|
||||||
|
static struct list_head mips_machines __initdata =
|
||||||
|
LIST_HEAD_INIT(mips_machines);
|
||||||
|
+static char *mips_machid __initdata;
|
||||||
|
|
||||||
|
char *mips_machine_name = "Unknown";
|
||||||
|
|
||||||
|
@@ -55,20 +56,65 @@ void __init mips_machine_set_name(char *
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
-void __init mips_machine_setup(unsigned long machtype)
|
||||||
|
+void __init mips_machine_setup(void)
|
||||||
|
{
|
||||||
|
struct mips_machine *mach;
|
||||||
|
|
||||||
|
- mach = mips_machine_find(machtype);
|
||||||
|
+ mach = mips_machine_find(mips_machtype);
|
||||||
|
if (!mach) {
|
||||||
|
- printk(KERN_ALERT "MIPS: no machine registered for "
|
||||||
|
- "machtype %lu\n", machtype);
|
||||||
|
+ printk(KERN_WARNING "MIPS: no machine registered for "
|
||||||
|
+ "machtype %lu\n", mips_machtype);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
mips_machine_set_name(mach->mach_name);
|
||||||
|
- printk(KERN_INFO "MIPS: machine is %s\n", mips_machine_name);
|
||||||
|
+ printk(KERN_NOTICE "MIPS: machine is %s\n", mips_machine_name);
|
||||||
|
|
||||||
|
if (mach->mach_setup)
|
||||||
|
mach->mach_setup();
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+int __init mips_machtype_setup(char *id)
|
||||||
|
+{
|
||||||
|
+ if (mips_machid == NULL)
|
||||||
|
+ mips_machid = id;
|
||||||
|
+
|
||||||
|
+ return 1;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+__setup("machtype=", mips_machtype_setup);
|
||||||
|
+
|
||||||
|
+static int __init mips_machtype_init(void)
|
||||||
|
+{
|
||||||
|
+ struct list_head *this;
|
||||||
|
+ struct mips_machine *mach;
|
||||||
|
+
|
||||||
|
+ if (mips_machid == NULL)
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
+ list_for_each(this, &mips_machines) {
|
||||||
|
+ mach = list_entry(this, struct mips_machine, list);
|
||||||
|
+ if (mach->mach_id == NULL)
|
||||||
|
+ continue;
|
||||||
|
+
|
||||||
|
+ if (strcmp(mach->mach_id, mips_machid) == 0) {
|
||||||
|
+ mips_machtype = mach->mach_type;
|
||||||
|
+ return 0;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ printk(KERN_WARNING
|
||||||
|
+ "MIPS: no machine found for id: '%s', registered machines:\n",
|
||||||
|
+ mips_machid);
|
||||||
|
+ printk(KERN_WARNING "%32s %s\n", "id", "name");
|
||||||
|
+
|
||||||
|
+ list_for_each(this, &mips_machines) {
|
||||||
|
+ mach = list_entry(this, struct mips_machine, list);
|
||||||
|
+ printk(KERN_WARNING "%32s %s\n",
|
||||||
|
+ mach->mach_id ? mach->mach_id : "", mach->mach_name);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+core_initcall(mips_machtype_init);
|
||||||
|
--- a/arch/mips/include/asm/mips_machine.h
|
||||||
|
+++ b/arch/mips/include/asm/mips_machine.h
|
||||||
|
@@ -13,25 +13,33 @@
|
||||||
|
#include <linux/init.h>
|
||||||
|
#include <linux/list.h>
|
||||||
|
|
||||||
|
+#include <asm/bootinfo.h>
|
||||||
|
+
|
||||||
|
struct mips_machine {
|
||||||
|
unsigned long mach_type;
|
||||||
|
- void (*mach_setup)(void);
|
||||||
|
+ char *mach_id;
|
||||||
|
char *mach_name;
|
||||||
|
+ void (*mach_setup)(void);
|
||||||
|
struct list_head list;
|
||||||
|
};
|
||||||
|
|
||||||
|
void mips_machine_register(struct mips_machine *) __init;
|
||||||
|
-void mips_machine_setup(unsigned long machtype) __init;
|
||||||
|
+void mips_machine_setup(void) __init;
|
||||||
|
+int mips_machtype_setup(char *id) __init;
|
||||||
|
void mips_machine_set_name(char *name) __init;
|
||||||
|
|
||||||
|
extern char *mips_machine_name;
|
||||||
|
|
||||||
|
-#define MIPS_MACHINE(_type, _name, _setup) \
|
||||||
|
-static char machine_name_##_type[] __initdata = _name; \
|
||||||
|
+#define MIPS_MACHINE(_type, _id, _name, _setup) \
|
||||||
|
+static const char machine_name_##_type[] __initconst \
|
||||||
|
+ __aligned(1) = _name; \
|
||||||
|
+static const char machine_id_##_type[] __initconst \
|
||||||
|
+ __aligned(1) = _id; \
|
||||||
|
static struct mips_machine machine_##_type __initdata = \
|
||||||
|
{ \
|
||||||
|
.mach_type = _type, \
|
||||||
|
- .mach_name = machine_name_##_type, \
|
||||||
|
+ .mach_id = (char *) machine_id_##_type, \
|
||||||
|
+ .mach_name = (char *) machine_name_##_type, \
|
||||||
|
.mach_setup = _setup, \
|
||||||
|
}; \
|
||||||
|
\
|
||||||
|
@@ -44,4 +52,3 @@ static int __init register_machine_##_ty
|
||||||
|
pure_initcall(register_machine_##_type)
|
||||||
|
|
||||||
|
#endif /* __ASM_MIPS_MACHINE_H */
|
||||||
|
-
|
Loading…
Reference in New Issue