-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
yaml --- r: 231860 b: refs/heads/master c: 487d70d h: refs/heads/master v: v3
- Loading branch information
Gabor Juhos
authored and
Ralf Baechle
committed
Jan 18, 2011
1 parent
51867fb
commit 1e896dd
Showing
7 changed files
with
158 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,2 @@ | ||
--- | ||
refs/heads/master: 0bec405e8ee390067e63265b3002aaac49d4eea8 | ||
refs/heads/master: 487d70d0b8bd1c70d099a7526077ffefee412050 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
/* | ||
* Copyright (C) 2008-2010 Gabor Juhos <juhosg@openwrt.org> | ||
* | ||
* This program is free software; you can redistribute it and/or modify it | ||
* under the terms of the GNU General Public License version 2 as published | ||
* by the Free Software Foundation. | ||
* | ||
*/ | ||
|
||
#ifndef __ASM_MIPS_MACHINE_H | ||
#define __ASM_MIPS_MACHINE_H | ||
|
||
#include <linux/init.h> | ||
#include <linux/stddef.h> | ||
|
||
#include <asm/bootinfo.h> | ||
|
||
struct mips_machine { | ||
unsigned long mach_type; | ||
const char *mach_id; | ||
const char *mach_name; | ||
void (*mach_setup)(void); | ||
}; | ||
|
||
#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 \ | ||
__used __section(.mips.machines.init) = \ | ||
{ \ | ||
.mach_type = _type, \ | ||
.mach_id = machine_id_##_type, \ | ||
.mach_name = machine_name_##_type, \ | ||
.mach_setup = _setup, \ | ||
}; | ||
|
||
extern long __mips_machines_start; | ||
extern long __mips_machines_end; | ||
|
||
#ifdef CONFIG_MIPS_MACHINE | ||
int mips_machtype_setup(char *id) __init; | ||
void mips_machine_setup(void) __init; | ||
void mips_set_machine_name(const char *name) __init; | ||
char *mips_get_machine_name(void); | ||
#else | ||
static inline int mips_machtype_setup(char *id) { return 1; } | ||
static inline void mips_machine_setup(void) { } | ||
static inline void mips_set_machine_name(const char *name) { } | ||
static inline char *mips_get_machine_name(void) { return NULL; } | ||
#endif /* CONFIG_MIPS_MACHINE */ | ||
|
||
#endif /* __ASM_MIPS_MACHINE_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,86 @@ | ||
/* | ||
* Copyright (C) 2008-2010 Gabor Juhos <juhosg@openwrt.org> | ||
* | ||
* This program is free software; you can redistribute it and/or modify it | ||
* under the terms of the GNU General Public License version 2 as published | ||
* by the Free Software Foundation. | ||
* | ||
*/ | ||
#include <linux/mm.h> | ||
#include <linux/string.h> | ||
#include <linux/slab.h> | ||
|
||
#include <asm/mips_machine.h> | ||
|
||
static struct mips_machine *mips_machine __initdata; | ||
static char *mips_machine_name = "Unknown"; | ||
|
||
#define for_each_machine(mach) \ | ||
for ((mach) = (struct mips_machine *)&__mips_machines_start; \ | ||
(mach) && \ | ||
(unsigned long)(mach) < (unsigned long)&__mips_machines_end; \ | ||
(mach)++) | ||
|
||
__init void mips_set_machine_name(const char *name) | ||
{ | ||
char *p; | ||
|
||
if (name == NULL) | ||
return; | ||
|
||
p = kstrdup(name, GFP_KERNEL); | ||
if (!p) | ||
pr_err("MIPS: no memory for machine_name\n"); | ||
|
||
mips_machine_name = p; | ||
} | ||
|
||
char *mips_get_machine_name(void) | ||
{ | ||
return mips_machine_name; | ||
} | ||
|
||
__init int mips_machtype_setup(char *id) | ||
{ | ||
struct mips_machine *mach; | ||
|
||
for_each_machine(mach) { | ||
if (mach->mach_id == NULL) | ||
continue; | ||
|
||
if (strcmp(mach->mach_id, id) == 0) { | ||
mips_machtype = mach->mach_type; | ||
return 0; | ||
} | ||
} | ||
|
||
pr_err("MIPS: no machine found for id '%s', supported machines:\n", id); | ||
pr_err("%-24s %s\n", "id", "name"); | ||
for_each_machine(mach) | ||
pr_err("%-24s %s\n", mach->mach_id, mach->mach_name); | ||
|
||
return 1; | ||
} | ||
|
||
__setup("machtype=", mips_machtype_setup); | ||
|
||
__init void mips_machine_setup(void) | ||
{ | ||
struct mips_machine *mach; | ||
|
||
for_each_machine(mach) { | ||
if (mips_machtype == mach->mach_type) { | ||
mips_machine = mach; | ||
break; | ||
} | ||
} | ||
|
||
if (!mips_machine) | ||
return; | ||
|
||
mips_set_machine_name(mips_machine->mach_name); | ||
pr_info("MIPS: machine is %s\n", mips_machine_name); | ||
|
||
if (mips_machine->mach_setup) | ||
mips_machine->mach_setup(); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters