source: trunk/target/linux/ifxmips/patches-2.6.33/030-mips-multi-machine-update.patch @ 20789

Last change on this file since 20789 was 20789, checked in by blogic, 6 years ago

[ifxmips] adss 2.6.33 kernel patches, not defult yet as linux-atm breaks on 2.6.33

File size: 3.4 KB
  • arch/mips/kernel/mips_machine.c

    a b  
    77 * 
    88 */ 
    99#include <linux/mm.h> 
     10#include <linux/string.h> 
    1011 
    1112#include <asm/mips_machine.h> 
    12 #include <asm/bootinfo.h> 
    1313 
    1414static struct list_head mips_machines __initdata = 
    1515                LIST_HEAD_INIT(mips_machines); 
     16static char *mips_machid __initdata; 
    1617 
    1718char *mips_machine_name = "Unknown"; 
    1819 
    void __init mips_machine_set_name(char * 
    5556        } 
    5657} 
    5758 
    58 void __init mips_machine_setup(unsigned long machtype) 
     59void __init mips_machine_setup(void) 
    5960{ 
    6061        struct mips_machine *mach; 
    6162 
    62         mach = mips_machine_find(machtype); 
     63        mach = mips_machine_find(mips_machtype); 
    6364        if (!mach) { 
    64                 printk(KERN_ALERT "MIPS: no machine registered for " 
    65                         "machtype %lu\n", machtype); 
     65                printk(KERN_WARNING "MIPS: no machine registered for " 
     66                        "machtype %lu\n", mips_machtype); 
    6667                return; 
    6768        } 
    6869 
    6970        mips_machine_set_name(mach->mach_name); 
    70         printk(KERN_INFO "MIPS: machine is %s\n", mips_machine_name); 
     71        printk(KERN_NOTICE "MIPS: machine is %s\n", mips_machine_name); 
    7172 
    7273        if (mach->mach_setup) 
    7374                mach->mach_setup(); 
    7475} 
     76 
     77int __init mips_machtype_setup(char *id) 
     78{ 
     79        if (mips_machid == NULL) 
     80                mips_machid = id; 
     81 
     82        return 1; 
     83} 
     84 
     85__setup("machtype=", mips_machtype_setup); 
     86 
     87static int __init mips_machtype_init(void) 
     88{ 
     89        struct list_head *this; 
     90        struct mips_machine *mach; 
     91 
     92        if (mips_machid == NULL) 
     93                return 0; 
     94 
     95        list_for_each(this, &mips_machines) { 
     96                mach = list_entry(this, struct mips_machine, list); 
     97                if (mach->mach_id == NULL) 
     98                        continue; 
     99 
     100                if (strcmp(mach->mach_id, mips_machid) == 0) { 
     101                        mips_machtype = mach->mach_type; 
     102                        return 0; 
     103                } 
     104        } 
     105 
     106        printk(KERN_WARNING 
     107               "MIPS: no machine found for id: '%s', registered machines:\n", 
     108               mips_machid); 
     109        printk(KERN_WARNING "%32s %s\n", "id", "name"); 
     110 
     111        list_for_each(this, &mips_machines) { 
     112                mach = list_entry(this, struct mips_machine, list); 
     113                printk(KERN_WARNING "%32s %s\n", 
     114                       mach->mach_id ? mach->mach_id : "", mach->mach_name); 
     115        } 
     116 
     117        return 0; 
     118} 
     119 
     120core_initcall(mips_machtype_init); 
  • arch/mips/include/asm/mips_machine.h

    a b  
    1313#include <linux/init.h> 
    1414#include <linux/list.h> 
    1515 
     16#include <asm/bootinfo.h> 
     17 
    1618struct mips_machine { 
    1719        unsigned long           mach_type; 
    18         void                    (*mach_setup)(void); 
     20        char                    *mach_id; 
    1921        char                    *mach_name; 
     22        void                    (*mach_setup)(void); 
    2023        struct list_head        list; 
    2124}; 
    2225 
    2326void mips_machine_register(struct mips_machine *) __init; 
    24 void mips_machine_setup(unsigned long machtype) __init; 
     27void mips_machine_setup(void) __init; 
     28int  mips_machtype_setup(char *id) __init; 
    2529void mips_machine_set_name(char *name) __init; 
    2630 
    2731extern char *mips_machine_name; 
    2832 
    29 #define MIPS_MACHINE(_type, _name, _setup)                      \ 
    30 static char machine_name_##_type[] __initdata = _name;          \ 
     33#define MIPS_MACHINE(_type, _id, _name, _setup)                 \ 
     34static const char machine_name_##_type[] __initconst            \ 
     35                        __aligned(1) = _name;                   \ 
     36static const char machine_id_##_type[] __initconst              \ 
     37                        __aligned(1) = _id;                     \ 
    3138static struct mips_machine machine_##_type __initdata =         \ 
    3239{                                                               \ 
    3340        .mach_type      = _type,                                \ 
    34         .mach_name      = machine_name_##_type,                 \ 
     41        .mach_id        = (char *) machine_id_##_type,          \ 
     42        .mach_name      = (char *) machine_name_##_type,        \ 
    3543        .mach_setup     = _setup,                               \ 
    3644};                                                              \ 
    3745                                                                \ 
    static int __init register_machine_##_ty 
    4452pure_initcall(register_machine_##_type) 
    4553 
    4654#endif /* __ASM_MIPS_MACHINE_H */ 
    47  
Note: See TracBrowser for help on using the repository browser.