diff options
Diffstat (limited to 'arch/arm/mach-omap2/devices.c')
| -rw-r--r-- | arch/arm/mach-omap2/devices.c | 98 | 
1 files changed, 16 insertions, 82 deletions
diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c index 31632ac1ca7..2cb720b5b12 100644 --- a/arch/arm/mach-omap2/devices.c +++ b/arch/arm/mach-omap2/devices.c @@ -184,95 +184,29 @@ int __init omap4_keyboard_init(struct omap4_keypad_platform_data  }  #if defined(CONFIG_OMAP_MBOX_FWK) || defined(CONFIG_OMAP_MBOX_FWK_MODULE) - -#define MBOX_REG_SIZE   0x120 - -#ifdef CONFIG_ARCH_OMAP2 -static struct resource omap2_mbox_resources[] = { -	{ -		.start		= OMAP24XX_MAILBOX_BASE, -		.end		= OMAP24XX_MAILBOX_BASE + MBOX_REG_SIZE - 1, -		.flags		= IORESOURCE_MEM, -	}, -	{ -		.start		= INT_24XX_MAIL_U0_MPU, -		.flags		= IORESOURCE_IRQ, -		.name		= "dsp", -	}, -	{ -		.start		= INT_24XX_MAIL_U3_MPU, -		.flags		= IORESOURCE_IRQ, -		.name		= "iva", -	}, -}; -static int omap2_mbox_resources_sz = ARRAY_SIZE(omap2_mbox_resources); -#else -#define omap2_mbox_resources		NULL -#define omap2_mbox_resources_sz		0 -#endif - -#ifdef CONFIG_ARCH_OMAP3 -static struct resource omap3_mbox_resources[] = { -	{ -		.start		= OMAP34XX_MAILBOX_BASE, -		.end		= OMAP34XX_MAILBOX_BASE + MBOX_REG_SIZE - 1, -		.flags		= IORESOURCE_MEM, -	}, -	{ -		.start		= INT_24XX_MAIL_U0_MPU, -		.flags		= IORESOURCE_IRQ, -		.name		= "dsp", -	}, -}; -static int omap3_mbox_resources_sz = ARRAY_SIZE(omap3_mbox_resources); -#else -#define omap3_mbox_resources		NULL -#define omap3_mbox_resources_sz		0 -#endif - -#ifdef CONFIG_ARCH_OMAP4 - -#define OMAP4_MBOX_REG_SIZE	0x130 -static struct resource omap4_mbox_resources[] = { -	{ -		.start          = OMAP44XX_MAILBOX_BASE, -		.end            = OMAP44XX_MAILBOX_BASE + -					OMAP4_MBOX_REG_SIZE - 1, -		.flags          = IORESOURCE_MEM, -	}, -	{ -		.start          = OMAP44XX_IRQ_MAIL_U0, -		.flags          = IORESOURCE_IRQ, -		.name		= "mbox", +static struct omap_device_pm_latency mbox_latencies[] = { +	[0] = { +		.activate_func = omap_device_enable_hwmods, +		.deactivate_func = omap_device_idle_hwmods, +		.flags = OMAP_DEVICE_LATENCY_AUTO_ADJUST,  	},  }; -static int omap4_mbox_resources_sz = ARRAY_SIZE(omap4_mbox_resources); -#else -#define omap4_mbox_resources		NULL -#define omap4_mbox_resources_sz		0 -#endif - -static struct platform_device mbox_device = { -	.name		= "omap-mailbox", -	.id		= -1, -};  static inline void omap_init_mbox(void)  { -	if (cpu_is_omap24xx()) { -		mbox_device.resource = omap2_mbox_resources; -		mbox_device.num_resources = omap2_mbox_resources_sz; -	} else if (cpu_is_omap34xx()) { -		mbox_device.resource = omap3_mbox_resources; -		mbox_device.num_resources = omap3_mbox_resources_sz; -	} else if (cpu_is_omap44xx()) { -		mbox_device.resource = omap4_mbox_resources; -		mbox_device.num_resources = omap4_mbox_resources_sz; -	} else { -		pr_err("%s: platform not supported\n", __func__); +	struct omap_hwmod *oh; +	struct omap_device *od; + +	oh = omap_hwmod_lookup("mailbox"); +	if (!oh) { +		pr_err("%s: unable to find hwmod\n", __func__);  		return;  	} -	platform_device_register(&mbox_device); + +	od = omap_device_build("omap-mailbox", -1, oh, NULL, 0, +				mbox_latencies, ARRAY_SIZE(mbox_latencies), 0); +	WARN(IS_ERR(od), "%s: could not build device, err %ld\n", +						__func__, PTR_ERR(od));  }  #else  static inline void omap_init_mbox(void) { }  |