OSDN Git Service

OMAP: mailbox: build device using omap_device/omap_hwmod
authorFelipe Contreras <felipe.contreras@gmail.com>
Thu, 24 Feb 2011 20:51:33 +0000 (12:51 -0800)
committerTony Lindgren <tony@atomide.com>
Thu, 24 Feb 2011 20:51:33 +0000 (12:51 -0800)
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>
arch/arm/mach-omap2/devices.c
arch/arm/mach-omap2/mailbox.c

index 9ee876f..d216976 100644 (file)
@@ -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) { }
index 29b9dc3..de352bd 100644 (file)
@@ -398,14 +398,14 @@ static int __devinit omap2_mbox_probe(struct platform_device *pdev)
        else if (cpu_is_omap34xx()) {
                list = omap3_mboxes;
 
-               list[0]->irq = platform_get_irq_byname(pdev, "dsp");
+               list[0]->irq = platform_get_irq(pdev, 0);
        }
 #endif
 #if defined(CONFIG_ARCH_OMAP2)
        else if (cpu_is_omap2430()) {
                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()) {
                list = omap2_mboxes;
 
@@ -417,8 +417,7 @@ static int __devinit omap2_mbox_probe(struct platform_device *pdev)
        else if (cpu_is_omap44xx()) {
                list = omap4_mboxes;
 
-               list[0]->irq = list[1]->irq =
-                       platform_get_irq_byname(pdev, "mbox");
+               list[0]->irq = list[1]->irq = platform_get_irq(pdev, 0);
        }
 #endif
        else {