OMAP: mailbox: build device using omap_device/omap_hwmod
Remove static platform_device and resource data within omap mailbox driver; use the one defined in the hwmod database along with omap_device framework for device build and registration. Add device latency functions to be used, so clock can be enabled and sysconfig is configured. Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com> Signed-off-by: Omar Ramirez Luna <omar.ramirez@ti.com> Signed-off-by: Tony Lindgren <tony@atomide.com>
This commit is contained in:
committed by
Tony Lindgren
parent
0f9dfdd3d7
commit
69dbf857c8
@@ -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)
|
#if defined(CONFIG_OMAP_MBOX_FWK) || defined(CONFIG_OMAP_MBOX_FWK_MODULE)
|
||||||
|
static struct omap_device_pm_latency mbox_latencies[] = {
|
||||||
#define MBOX_REG_SIZE 0x120
|
[0] = {
|
||||||
|
.activate_func = omap_device_enable_hwmods,
|
||||||
#ifdef CONFIG_ARCH_OMAP2
|
.deactivate_func = omap_device_idle_hwmods,
|
||||||
static struct resource omap2_mbox_resources[] = {
|
.flags = OMAP_DEVICE_LATENCY_AUTO_ADJUST,
|
||||||
{
|
|
||||||
.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 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)
|
static inline void omap_init_mbox(void)
|
||||||
{
|
{
|
||||||
if (cpu_is_omap24xx()) {
|
struct omap_hwmod *oh;
|
||||||
mbox_device.resource = omap2_mbox_resources;
|
struct omap_device *od;
|
||||||
mbox_device.num_resources = omap2_mbox_resources_sz;
|
|
||||||
} else if (cpu_is_omap34xx()) {
|
oh = omap_hwmod_lookup("mailbox");
|
||||||
mbox_device.resource = omap3_mbox_resources;
|
if (!oh) {
|
||||||
mbox_device.num_resources = omap3_mbox_resources_sz;
|
pr_err("%s: unable to find hwmod\n", __func__);
|
||||||
} 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__);
|
|
||||||
return;
|
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
|
#else
|
||||||
static inline void omap_init_mbox(void) { }
|
static inline void omap_init_mbox(void) { }
|
||||||
|
@@ -398,14 +398,14 @@ static int __devinit omap2_mbox_probe(struct platform_device *pdev)
|
|||||||
else if (cpu_is_omap34xx()) {
|
else if (cpu_is_omap34xx()) {
|
||||||
list = omap3_mboxes;
|
list = omap3_mboxes;
|
||||||
|
|
||||||
list[0]->irq = platform_get_irq_byname(pdev, "dsp");
|
list[0]->irq = platform_get_irq(pdev, 0);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#if defined(CONFIG_ARCH_OMAP2)
|
#if defined(CONFIG_ARCH_OMAP2)
|
||||||
else if (cpu_is_omap2430()) {
|
else if (cpu_is_omap2430()) {
|
||||||
list = omap2_mboxes;
|
list = omap2_mboxes;
|
||||||
|
|
||||||
list[0]->irq = platform_get_irq_byname(pdev, "dsp");
|
list[0]->irq = platform_get_irq(pdev, 0);
|
||||||
} else if (cpu_is_omap2420()) {
|
} else if (cpu_is_omap2420()) {
|
||||||
list = omap2_mboxes;
|
list = omap2_mboxes;
|
||||||
|
|
||||||
@@ -417,8 +417,7 @@ static int __devinit omap2_mbox_probe(struct platform_device *pdev)
|
|||||||
else if (cpu_is_omap44xx()) {
|
else if (cpu_is_omap44xx()) {
|
||||||
list = omap4_mboxes;
|
list = omap4_mboxes;
|
||||||
|
|
||||||
list[0]->irq = list[1]->irq =
|
list[0]->irq = list[1]->irq = platform_get_irq(pdev, 0);
|
||||||
platform_get_irq_byname(pdev, "mbox");
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
else {
|
else {
|
||||||
|
Reference in New Issue
Block a user