Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/upstream-linus
[linux-2.6.git] / arch / mips / include / asm / mips_machine.h
1 /*
2  *  Copyright (C) 2008-2010 Gabor Juhos <juhosg@openwrt.org>
3  *
4  *  This program is free software; you can redistribute it and/or modify it
5  *  under the terms of the GNU General Public License version 2 as published
6  *  by the Free Software Foundation.
7  *
8  */
9
10 #ifndef __ASM_MIPS_MACHINE_H
11 #define __ASM_MIPS_MACHINE_H
12
13 #include <linux/init.h>
14 #include <linux/stddef.h>
15
16 #include <asm/bootinfo.h>
17
18 struct mips_machine {
19         unsigned long           mach_type;
20         const char              *mach_id;
21         const char              *mach_name;
22         void                    (*mach_setup)(void);
23 };
24
25 #define MIPS_MACHINE(_type, _id, _name, _setup)                 \
26 static const char machine_name_##_type[] __initconst            \
27                         __aligned(1) = _name;                   \
28 static const char machine_id_##_type[] __initconst              \
29                         __aligned(1) = _id;                     \
30 static struct mips_machine machine_##_type                      \
31                 __used __section(.mips.machines.init) =         \
32 {                                                               \
33         .mach_type      = _type,                                \
34         .mach_id        = machine_id_##_type,                   \
35         .mach_name      = machine_name_##_type,                 \
36         .mach_setup     = _setup,                               \
37 };
38
39 extern long __mips_machines_start;
40 extern long __mips_machines_end;
41
42 #ifdef CONFIG_MIPS_MACHINE
43 int  mips_machtype_setup(char *id) __init;
44 void mips_machine_setup(void) __init;
45 void mips_set_machine_name(const char *name) __init;
46 char *mips_get_machine_name(void);
47 #else
48 static inline int mips_machtype_setup(char *id) { return 1; }
49 static inline void mips_machine_setup(void) { }
50 static inline void mips_set_machine_name(const char *name) { }
51 static inline char *mips_get_machine_name(void) { return NULL; }
52 #endif /* CONFIG_MIPS_MACHINE */
53
54 #endif /* __ASM_MIPS_MACHINE_H */