Commit fa590c92 authored by Tony Lindgren's avatar Tony Lindgren

ARM: OMAP2+: Add quirks support for n8x0

This allows us to keep things working when booted with
device tree. Note that we still need to initialize most
things with platform data as the drivers are lacking
support for device tree.
Tested-by: default avatarAaro Koskinen <aaro.koskinen@iki.fi>
Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
parent 810ac2a1
...@@ -529,7 +529,7 @@ static void n8x0_mmc_cleanup(struct device *dev) ...@@ -529,7 +529,7 @@ static void n8x0_mmc_cleanup(struct device *dev)
* MMC controller2 is not in use. * MMC controller2 is not in use.
*/ */
static struct omap_mmc_platform_data mmc1_data = { static struct omap_mmc_platform_data mmc1_data = {
.nr_slots = 2, .nr_slots = 0,
.switch_slot = n8x0_mmc_switch_slot, .switch_slot = n8x0_mmc_switch_slot,
.init = n8x0_mmc_late_init, .init = n8x0_mmc_late_init,
.cleanup = n8x0_mmc_cleanup, .cleanup = n8x0_mmc_cleanup,
...@@ -596,12 +596,13 @@ static void __init n8x0_mmc_init(void) ...@@ -596,12 +596,13 @@ static void __init n8x0_mmc_init(void)
} }
} }
mmc1_data.nr_slots = 2;
mmc_data[0] = &mmc1_data; mmc_data[0] = &mmc1_data;
if (!of_have_populated_dt()) if (!of_have_populated_dt())
omap242x_init_mmc(mmc_data); omap242x_init_mmc(mmc_data);
} }
#else #else
static struct omap_mmc_platform_data mmc1_data;
void __init n8x0_mmc_init(void) void __init n8x0_mmc_init(void)
{ {
} }
...@@ -746,6 +747,24 @@ static int __init n8x0_late_initcall(void) ...@@ -746,6 +747,24 @@ static int __init n8x0_late_initcall(void)
} }
omap_late_initcall(n8x0_late_initcall); omap_late_initcall(n8x0_late_initcall);
/*
* Legacy init pdata init for n8x0. Note that we want to follow the
* I2C bus numbering starting at 0 for device tree like other omaps.
*/
void * __init n8x0_legacy_init(void)
{
board_check_revision();
spi_register_board_info(n800_spi_board_info,
ARRAY_SIZE(n800_spi_board_info));
i2c_register_board_info(0, n8x0_i2c_board_info_1,
ARRAY_SIZE(n8x0_i2c_board_info_1));
if (board_is_n810())
i2c_register_board_info(1, n810_i2c_board_info_2,
ARRAY_SIZE(n810_i2c_board_info_2));
return &mmc1_data;
}
static void __init n8x0_init_machine(void) static void __init n8x0_init_machine(void)
{ {
board_check_revision(); board_check_revision();
......
...@@ -10,5 +10,6 @@ struct ads7846_platform_data; ...@@ -10,5 +10,6 @@ struct ads7846_platform_data;
void omap_ads7846_init(int bus_num, int gpio_pendown, int gpio_debounce, void omap_ads7846_init(int bus_num, int gpio_pendown, int gpio_debounce,
struct ads7846_platform_data *board_pdata); struct ads7846_platform_data *board_pdata);
void *n8x0_legacy_init(void);
#endif /* __OMAP_COMMON_BOARD_DEVICES__ */ #endif /* __OMAP_COMMON_BOARD_DEVICES__ */
...@@ -26,6 +26,8 @@ struct pdata_init { ...@@ -26,6 +26,8 @@ struct pdata_init {
void (*fn)(void); void (*fn)(void);
}; };
struct of_dev_auxdata omap_auxdata_lookup[];
/* /*
* Create alias for USB host PHY clock. * Create alias for USB host PHY clock.
* Remove this when clock phandle can be provided via DT * Remove this when clock phandle can be provided via DT
...@@ -68,6 +70,15 @@ static inline void legacy_init_wl12xx(unsigned ref_clock, ...@@ -68,6 +70,15 @@ static inline void legacy_init_wl12xx(unsigned ref_clock,
} }
#endif #endif
#ifdef CONFIG_MACH_NOKIA_N8X0
static void __init omap2420_n8x0_legacy_init(void)
{
omap_auxdata_lookup[0].platform_data = n8x0_legacy_init();
}
#else
#define omap2420_n8x0_legacy_init NULL
#endif
#ifdef CONFIG_ARCH_OMAP3 #ifdef CONFIG_ARCH_OMAP3
static void __init hsmmc2_internal_input_clk(void) static void __init hsmmc2_internal_input_clk(void)
{ {
...@@ -130,6 +141,11 @@ void omap_pcs_legacy_init(int irq, void (*rearm)(void)) ...@@ -130,6 +141,11 @@ void omap_pcs_legacy_init(int irq, void (*rearm)(void))
* the dev entries in of_platform_populate(). * the dev entries in of_platform_populate().
*/ */
static struct pdata_init auxdata_quirks[] __initdata = { static struct pdata_init auxdata_quirks[] __initdata = {
#ifdef CONFIG_SOC_OMAP2420
{ "nokia,n800", omap2420_n8x0_legacy_init, },
{ "nokia,n810", omap2420_n8x0_legacy_init, },
{ "nokia,n810-wimax", omap2420_n8x0_legacy_init, },
#endif
{ /* sentinel */ }, { /* sentinel */ },
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment