mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-20 10:44:23 +08:00
ARM: OMAP2+: Add support for board specific auxdata quirks
Looks like some boards need to fill in the auxdata before we call of_platform_populate(). Let's add support for auxdata quirks like we already have for pdata quirks for legacy drivers. Signed-off-by: Tony Lindgren <tony@atomide.com>
This commit is contained in:
parent
282ce32e62
commit
036582f76a
@ -125,7 +125,18 @@ void omap_pcs_legacy_init(int irq, void (*rearm)(void))
|
||||
pcs_pdata.rearm = rearm;
|
||||
}
|
||||
|
||||
/*
|
||||
* Few boards still need auxdata populated before we populate
|
||||
* the dev entries in of_platform_populate().
|
||||
*/
|
||||
static struct pdata_init auxdata_quirks[] __initdata = {
|
||||
{ /* sentinel */ },
|
||||
};
|
||||
|
||||
struct of_dev_auxdata omap_auxdata_lookup[] __initdata = {
|
||||
#ifdef CONFIG_MACH_NOKIA_N8X0
|
||||
OF_DEV_AUXDATA("ti,omap2420-mmc", 0x4809c000, "mmci-omap.0", NULL),
|
||||
#endif
|
||||
#ifdef CONFIG_ARCH_OMAP3
|
||||
OF_DEV_AUXDATA("ti,omap3-padconf", 0x48002030, "48002030.pinmux", &pcs_pdata),
|
||||
OF_DEV_AUXDATA("ti,omap3-padconf", 0x48002a00, "48002a00.pinmux", &pcs_pdata),
|
||||
@ -137,6 +148,10 @@ struct of_dev_auxdata omap_auxdata_lookup[] __initdata = {
|
||||
{ /* sentinel */ },
|
||||
};
|
||||
|
||||
/*
|
||||
* Few boards still need to initialize some legacy devices with
|
||||
* platform data until the drivers support device tree.
|
||||
*/
|
||||
static struct pdata_init pdata_quirks[] __initdata = {
|
||||
#ifdef CONFIG_ARCH_OMAP3
|
||||
{ "nokia,omap3-n900", hsmmc2_internal_input_clk, },
|
||||
@ -156,14 +171,8 @@ static struct pdata_init pdata_quirks[] __initdata = {
|
||||
{ /* sentinel */ },
|
||||
};
|
||||
|
||||
void __init pdata_quirks_init(struct of_device_id *omap_dt_match_table)
|
||||
static void pdata_quirks_check(struct pdata_init *quirks)
|
||||
{
|
||||
struct pdata_init *quirks = pdata_quirks;
|
||||
|
||||
omap_sdrc_init(NULL, NULL);
|
||||
of_platform_populate(NULL, omap_dt_match_table,
|
||||
omap_auxdata_lookup, NULL);
|
||||
|
||||
while (quirks->compatible) {
|
||||
if (of_machine_is_compatible(quirks->compatible)) {
|
||||
if (quirks->fn)
|
||||
@ -173,3 +182,12 @@ void __init pdata_quirks_init(struct of_device_id *omap_dt_match_table)
|
||||
quirks++;
|
||||
}
|
||||
}
|
||||
|
||||
void __init pdata_quirks_init(struct of_device_id *omap_dt_match_table)
|
||||
{
|
||||
omap_sdrc_init(NULL, NULL);
|
||||
pdata_quirks_check(auxdata_quirks);
|
||||
of_platform_populate(NULL, omap_dt_match_table,
|
||||
omap_auxdata_lookup, NULL);
|
||||
pdata_quirks_check(pdata_quirks);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user