Skip to content

Commit

Permalink
MIPS: move mips_{set,get}_machine_name() to a more generic place
Browse files Browse the repository at this point in the history
Previously this functionality was only available to users of the mips_machine
api. Moving the code to prom.c allows us to also add a OF wrapper.

Signed-off-by: John Crispin <blogic@openwrt.org>
Patchwork: http://patchwork.linux-mips.org/patch/5164/
  • Loading branch information
John Crispin authored and Ralf Baechle committed May 7, 2013
1 parent d41d547 commit 9169a5d
Show file tree
Hide file tree
Showing 6 changed files with 39 additions and 29 deletions.
4 changes: 0 additions & 4 deletions arch/mips/include/asm/mips_machine.h
Original file line number Diff line number Diff line change
Expand Up @@ -42,13 +42,9 @@ 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 */
3 changes: 3 additions & 0 deletions arch/mips/include/asm/prom.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,4 +48,7 @@ extern void __dt_setup_arch(struct boot_param_header *bph);
static inline void device_tree_init(void) { }
#endif /* CONFIG_OF */

extern char *mips_get_machine_name(void);
extern void mips_set_machine_name(const char *name);

#endif /* __ASM_PROM_H */
4 changes: 1 addition & 3 deletions arch/mips/kernel/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
extra-y := head.o vmlinux.lds

obj-y += cpu-probe.o branch.o entry.o genex.o irq.o process.o \
ptrace.o reset.o setup.o signal.o syscall.o \
prom.o ptrace.o reset.o setup.o signal.o syscall.o \
time.o topology.o traps.o unaligned.o watch.o vdso.o

ifdef CONFIG_FUNCTION_TRACER
Expand Down Expand Up @@ -86,8 +86,6 @@ obj-$(CONFIG_EARLY_PRINTK) += early_printk.o
obj-$(CONFIG_SPINLOCK_TEST) += spinlock_test.o
obj-$(CONFIG_MIPS_MACHINE) += mips_machine.o

obj-$(CONFIG_OF) += prom.o

CFLAGS_cpu-bugs64.o = $(shell if $(CC) $(KBUILD_CFLAGS) -Wa,-mdaddi -c -o /dev/null -x c /dev/null >/dev/null 2>&1; then echo "-DHAVE_AS_SET_DADDI"; fi)

obj-$(CONFIG_HAVE_STD_PC_SERIAL_PORT) += 8250-platform.o
Expand Down
22 changes: 1 addition & 21 deletions arch/mips/kernel/mips_machine.c
Original file line number Diff line number Diff line change
Expand Up @@ -11,35 +11,16 @@
#include <linux/slab.h>

#include <asm/mips_machine.h>
#include <asm/prom.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;
Expand Down Expand Up @@ -79,7 +60,6 @@ __init void mips_machine_setup(void)
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();
Expand Down
2 changes: 1 addition & 1 deletion arch/mips/kernel/proc.c
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
#include <asm/cpu-features.h>
#include <asm/mipsregs.h>
#include <asm/processor.h>
#include <asm/mips_machine.h>
#include <asm/prom.h>

unsigned int vced_count, vcei_count;

Expand Down
33 changes: 33 additions & 0 deletions arch/mips/kernel/prom.c
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,23 @@
#include <asm/page.h>
#include <asm/prom.h>

static char mips_machine_name[64] = "Unknown";

__init void mips_set_machine_name(const char *name)
{
if (name == NULL)
return;

strncpy(mips_machine_name, name, sizeof(mips_machine_name));
pr_info("MIPS: machine is %s\n", mips_get_machine_name());
}

char *mips_get_machine_name(void)
{
return mips_machine_name;
}

#ifdef CONFIG_OF
int __init early_init_dt_scan_memory_arch(unsigned long node,
const char *uname, int depth,
void *data)
Expand Down Expand Up @@ -50,6 +67,18 @@ void __init early_init_dt_setup_initrd_arch(unsigned long start,
}
#endif

int __init early_init_dt_scan_model(unsigned long node, const char *uname,
int depth, void *data)
{
if (!depth) {
char *model = of_get_flat_dt_prop(node, "model", NULL);

if (model)
mips_set_machine_name(model);
}
return 0;
}

void __init early_init_devtree(void *params)
{
/* Setup flat device-tree pointer */
Expand All @@ -65,6 +94,9 @@ void __init early_init_devtree(void *params)
/* Scan memory nodes */
of_scan_flat_dt(early_init_dt_scan_root, NULL);
of_scan_flat_dt(early_init_dt_scan_memory_arch, NULL);

/* try to load the mips machine name */
of_scan_flat_dt(early_init_dt_scan_model, NULL);
}

void __init __dt_setup_arch(struct boot_param_header *bph)
Expand All @@ -79,3 +111,4 @@ void __init __dt_setup_arch(struct boot_param_header *bph)

early_init_devtree(initial_boot_params);
}
#endif

0 comments on commit 9169a5d

Please sign in to comment.