Commit 6a08e1e6 authored by Tony Lindgren's avatar Tony Lindgren
Browse files

ARM: OMAP2+: Add quirk support for legacy platform data init



We want to drop the board-*.c files but keep things working.
Let's make it a bit easier to support legacy platform data
init with quirks. This also keeps board-generic.c clean from
board specific hacks.

For now, the quirks table is empty, that is populated
in the later patches.

Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
parent f2acae69
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -233,7 +233,7 @@ obj-y += drm.o
endif

# Specific board support
obj-$(CONFIG_MACH_OMAP_GENERIC)		+= board-generic.o
obj-$(CONFIG_MACH_OMAP_GENERIC)		+= board-generic.o pdata-quirks.o
obj-$(CONFIG_MACH_OMAP_H4)		+= board-h4.o
obj-$(CONFIG_MACH_OMAP_2430SDP)		+= board-2430sdp.o
obj-$(CONFIG_MACH_OMAP3_BEAGLE)		+= board-omap3beagle.o
+1 −0
Original line number Diff line number Diff line
@@ -56,6 +56,7 @@ static void __init omap_generic_init(void)
	omap_sdrc_init(NULL, NULL);

	of_platform_populate(NULL, omap_dt_match_table, NULL, NULL);
	pdata_quirks_init();

	/*
	 * HACK: call display setup code for selected boards to enable omapdss.
+2 −0
Original line number Diff line number Diff line
@@ -288,6 +288,8 @@ static inline void omap4_cpu_resume(void)

#endif

void pdata_quirks_init(void);

struct omap_sdrc_params;
extern void omap_sdrc_init(struct omap_sdrc_params *sdrc_cs0,
				      struct omap_sdrc_params *sdrc_cs1);
+39 −0
Original line number Diff line number Diff line
/*
 * Legacy platform_data quirks
 *
 * Copyright (C) 2013 Texas Instruments
 *
 * 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/clk.h>
#include <linux/init.h>
#include <linux/kernel.h>

#include "common.h"
#include "common-board-devices.h"
#include "dss-common.h"

struct pdata_init {
	const char *compatible;
	void (*fn)(void);
};

static struct pdata_init pdata_quirks[] __initdata = {
	{ /* sentinel */ },
};

void __init pdata_quirks_init(void)
{
	struct pdata_init *quirks = pdata_quirks;

	while (quirks->compatible) {
		if (of_machine_is_compatible(quirks->compatible)) {
			if (quirks->fn)
				quirks->fn();
			break;
		}
		quirks++;
	}
}