| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- --- 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 */
- -
|