so we can use it on vexpress to detect the hardware mapping

Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <[email protected]>
---
 drivers/amba/bus.c       |   10 +++-------
 include/linux/amba/bus.h |   28 ++++++++++++++++++++++++++++
 2 files changed, 31 insertions(+), 7 deletions(-)

diff --git a/drivers/amba/bus.c b/drivers/amba/bus.c
index d1ab53c..65385be 100644
--- a/drivers/amba/bus.c
+++ b/drivers/amba/bus.c
@@ -104,7 +104,7 @@ int amba_device_add(struct amba_device *dev)
 {
        u32 size;
        void __iomem *tmp;
-       int i, ret;
+       int ret;
        struct resource *res = NULL;
 
        dev->dev.bus = &amba_bustype;
@@ -135,12 +135,8 @@ int amba_device_add(struct amba_device *dev)
                 * Read pid and cid based on size of resource
                 * they are located at end of region
                 */
-               for (pid = 0, i = 0; i < 4; i++)
-                       pid |= (readl(tmp + size - 0x20 + 4 * i) & 255) <<
-                               (i * 8);
-               for (cid = 0, i = 0; i < 4; i++)
-                       cid |= (readl(tmp + size - 0x10 + 4 * i) & 255) <<
-                               (i * 8);
+               pid = amba_device_get_pid(tmp, size);
+               cid = amba_device_get_cid(tmp, size);
 
                if (cid == AMBA_CID)
                        dev->periphid = pid;
diff --git a/include/linux/amba/bus.h b/include/linux/amba/bus.h
index cb3e3bd..a7bbae0 100644
--- a/include/linux/amba/bus.h
+++ b/include/linux/amba/bus.h
@@ -150,4 +150,32 @@ struct amba_device name##_device = {                       
        \
        .periphid = id,                                         \
 }
 
+#include <io.h>
+/*
+ * Read pid and cid based on size of resource
+ * they are located at end of region
+ */
+static inline u32 amba_device_get_pid(void *base, u32 size)
+{
+       int i;
+       u32 pid;
+
+       for (pid = 0, i = 0; i < 4; i++)
+               pid |= (readl(base + size - 0x20 + 4 * i) & 255) <<
+                       (i * 8);
+
+       return pid;
+}
+
+static inline u32 amba_device_get_cid(void *base, u32 size)
+{
+       int i;
+       u32 cid;
+
+       for (cid = 0, i = 0; i < 4; i++)
+               cid |= (readl(base + size - 0x10 + 4 * i) & 255) <<
+                       (i * 8);
+
+       return cid;
+}
 #endif
-- 
1.7.10.4


_______________________________________________
barebox mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/barebox

Reply via email to