Commit a4aec0f3 authored by Paul Cercueil's avatar Paul Cercueil Committed by Thomas Bogendoerfer
Browse files

MIPS: Remove legacy MIPS_MACHINE option



The CONFIG_MIPS_MACHINE option is dead code that hasn't been used in
years. The Kconfig option is not selected anywhere, and the
<asm/mips_machine.h> is not included anywhere either.

To make things worse, for years it co-existed with a separate MIPS
machine implementation as <asm/machine.h>. The two defined the
'mips_machine' structure with different fields, and the 'MIPS_MACHINE'
macro with different parameters. The two used the same memory area
(defined by the linker script) to store data, and you could totally use
the two at the same time for all kinds of funny results.

Signed-off-by: default avatarPaul Cercueil <paul@crapouillou.net>
Signed-off-by: default avatarThomas Bogendoerfer <tsbogend@alpha.franken.de>
parent 64aa9fd0
Loading
Loading
Loading
Loading
+0 −3
Original line number Diff line number Diff line
@@ -1150,9 +1150,6 @@ config MIPS_MSC
config SYNC_R4K
	bool

config MIPS_MACHINE
	def_bool n

config NO_IOPORT_MAP
	def_bool n

+0 −46
Original line number Diff line number Diff line
/* SPDX-License-Identifier: GPL-2.0-only */
/*
 *  Copyright (C) 2008-2010 Gabor Juhos <juhosg@openwrt.org>
 */

#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;
#else
static inline int mips_machtype_setup(char *id) { return 1; }
static inline void mips_machine_setup(void) { }
#endif /* CONFIG_MIPS_MACHINE */

#endif /* __ASM_MIPS_MACHINE_H */
+0 −1
Original line number Diff line number Diff line
@@ -93,7 +93,6 @@ obj-$(CONFIG_CRASH_DUMP) += crash_dump.o
obj-$(CONFIG_EARLY_PRINTK)	+= early_printk.o
obj-$(CONFIG_EARLY_PRINTK_8250)	+= early_printk_8250.o
obj-$(CONFIG_SPINLOCK_TEST)	+= spinlock_test.o
obj-$(CONFIG_MIPS_MACHINE)	+= mips_machine.o
obj-$(CONFIG_MIPSR2_TO_R6_EMULATOR)	+= mips-r2-to-r6-emul.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)

arch/mips/kernel/mips_machine.c

deleted100644 → 0
+0 −62
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0-only
/*
 *  Copyright (C) 2008-2010 Gabor Juhos <juhosg@openwrt.org>
 */
#include <linux/mm.h>
#include <linux/string.h>
#include <linux/slab.h>

#include <asm/mips_machine.h>
#include <asm/prom.h>

static struct mips_machine *mips_machine __initdata;

#define for_each_machine(mach) \
	for ((mach) = (struct mips_machine *)&__mips_machines_start; \
	     (mach) && \
	     (unsigned long)(mach) < (unsigned long)&__mips_machines_end; \
	     (mach)++)

__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);

	if (mips_machine->mach_setup)
		mips_machine->mach_setup();
}