ARM: 7370/2: mxs: factor out dynamic amba device allocator
authorLinus Walleij <linus.walleij@linaro.org>
Tue, 3 Apr 2012 11:11:50 +0000 (12:11 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Thu, 19 Apr 2012 18:31:33 +0000 (19:31 +0100)
Replace the local amba device allocator with the core code from
the bus driver.

Acked-by: Shawn Guo <shawn.guo@linaro.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/mach-mxs/devices-mx23.h
arch/arm/mach-mxs/devices-mx28.h
arch/arm/mach-mxs/devices.c
arch/arm/mach-mxs/devices/Makefile
arch/arm/mach-mxs/devices/amba-duart.c [deleted file]
arch/arm/mach-mxs/include/mach/devices-common.h

index 4d1329d..9acdd63 100644 (file)
 #include <mach/mx23.h>
 #include <mach/devices-common.h>
 #include <mach/mxsfb.h>
+#include <linux/amba/bus.h>
 
-extern const struct amba_device mx23_duart_device __initconst;
-#define mx23_add_duart() \
-       mxs_add_duart(&mx23_duart_device)
+static inline int mx23_add_duart(void)
+{
+       struct amba_device *d;
+
+       d = amba_ahb_device_add(NULL, "duart", MX23_DUART_BASE_ADDR, SZ_8K,
+                               MX23_INT_DUART, 0, 0, 0);
+       return IS_ERR(d) ? PTR_ERR(d) : 0;
+}
 
 extern const struct mxs_auart_data mx23_auart_data[] __initconst;
 #define mx23_add_auart(id)     mxs_add_auart(&mx23_auart_data[id])
index 9dbeae1..84b2960 100644 (file)
 #include <mach/mx28.h>
 #include <mach/devices-common.h>
 #include <mach/mxsfb.h>
+#include <linux/amba/bus.h>
 
-extern const struct amba_device mx28_duart_device __initconst;
-#define mx28_add_duart() \
-       mxs_add_duart(&mx28_duart_device)
+static inline int mx28_add_duart(void)
+{
+       struct amba_device *d;
+
+       d = amba_ahb_device_add(NULL, "duart", MX28_DUART_BASE_ADDR, SZ_8K,
+                               MX28_INT_DUART, 0, 0, 0);
+       return IS_ERR(d) ? PTR_ERR(d) : 0;
+}
 
 extern const struct mxs_auart_data mx28_auart_data[] __initconst;
 #define mx28_add_auart(id)     mxs_add_auart(&mx28_auart_data[id])
index 01faffe..cf50b5a 100644 (file)
@@ -75,22 +75,6 @@ err:
        return pdev;
 }
 
-int __init mxs_add_amba_device(const struct amba_device *dev)
-{
-       struct amba_device *adev = amba_device_alloc(dev->dev.init_name,
-               dev->res.start, resource_size(&dev->res));
-
-       if (!adev) {
-               pr_err("%s: failed to allocate memory", __func__);
-               return -ENOMEM;
-       }
-
-       adev->irq[0] = dev->irq[0];
-       adev->irq[1] = dev->irq[1];
-
-       return amba_device_add(adev, &iomem_resource);
-}
-
 struct device mxs_apbh_bus = {
        .init_name      = "mxs_apbh",
        .parent         = &platform_bus,
index c8f5c95..5f72d97 100644 (file)
@@ -1,4 +1,3 @@
-obj-$(CONFIG_MXS_HAVE_AMBA_DUART) += amba-duart.o
 obj-$(CONFIG_MXS_HAVE_PLATFORM_AUART) += platform-auart.o
 obj-y += platform-dma.o
 obj-$(CONFIG_MXS_HAVE_PLATFORM_FEC) += platform-fec.o
diff --git a/arch/arm/mach-mxs/devices/amba-duart.c b/arch/arm/mach-mxs/devices/amba-duart.c
deleted file mode 100644 (file)
index a5479f7..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2009-2010 Pengutronix
- * Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de>
- *
- * Copyright 2010 Freescale Semiconductor, Inc. All Rights Reserved.
- *
- * This program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License version 2 as published by the
- * Free Software Foundation.
- */
-#include <asm/irq.h>
-#include <mach/mx23.h>
-#include <mach/mx28.h>
-#include <mach/devices-common.h>
-
-#define MXS_AMBA_DUART_DEVICE(name, soc)                       \
-const struct amba_device name##_device __initconst = {         \
-       .dev = {                                                \
-               .init_name = "duart",                           \
-       },                                                      \
-       .res = {                                                \
-               .start = soc ## _DUART_BASE_ADDR,               \
-               .end = (soc ## _DUART_BASE_ADDR) + SZ_8K - 1,   \
-               .flags = IORESOURCE_MEM,                        \
-       },                                                      \
-       .irq = {soc ## _INT_DUART},                             \
-}
-
-#ifdef CONFIG_SOC_IMX23
-MXS_AMBA_DUART_DEVICE(mx23_duart, MX23);
-#endif
-
-#ifdef CONFIG_SOC_IMX28
-MXS_AMBA_DUART_DEVICE(mx28_duart, MX28);
-#endif
-
-int __init mxs_add_duart(const struct amba_device *dev)
-{
-       return mxs_add_amba_device(dev);
-}
index f2e3839..21e45a7 100644 (file)
@@ -27,11 +27,6 @@ static inline struct platform_device *mxs_add_platform_device(
                        name, id, res, num_resources, data, size_data, 0);
 }
 
-int __init mxs_add_amba_device(const struct amba_device *dev);
-
-/* duart */
-int __init mxs_add_duart(const struct amba_device *dev);
-
 /* auart */
 struct mxs_auart_data {
        int id;