Commit ee18a715 authored by Shawn Guo's avatar Shawn Guo

ARM: imx5: retrieve iim base from device tree

Instead of using static define and mapping, the patch changes imx5 code
that reads chip revision from IIM to retrieve base address from device
tree and use dynamic mapping.
Signed-off-by: default avatarShawn Guo <shawn.guo@freescale.com>
parent 1f84e906
...@@ -16,6 +16,8 @@ ...@@ -16,6 +16,8 @@
#include <linux/init.h> #include <linux/init.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/io.h> #include <linux/io.h>
#include <linux/of.h>
#include <linux/of_address.h>
#include "hardware.h" #include "hardware.h"
#include "common.h" #include "common.h"
...@@ -24,10 +26,26 @@ static int mx5_cpu_rev = -1; ...@@ -24,10 +26,26 @@ static int mx5_cpu_rev = -1;
#define IIM_SREV 0x24 #define IIM_SREV 0x24
static u32 imx5_read_srev_reg(const char *compat)
{
void __iomem *iim_base;
struct device_node *np;
u32 srev;
np = of_find_compatible_node(NULL, NULL, compat);
iim_base = of_iomap(np, 0);
WARN_ON(!iim_base);
srev = readl(iim_base + IIM_SREV) & 0xff;
iounmap(iim_base);
return srev;
}
static int get_mx51_srev(void) static int get_mx51_srev(void)
{ {
void __iomem *iim_base = MX51_IO_ADDRESS(MX51_IIM_BASE_ADDR); u32 rev = imx5_read_srev_reg("fsl,imx51-iim");
u32 rev = readl(iim_base + IIM_SREV) & 0xff;
switch (rev) { switch (rev) {
case 0x0: case 0x0:
...@@ -77,8 +95,7 @@ int __init mx51_neon_fixup(void) ...@@ -77,8 +95,7 @@ int __init mx51_neon_fixup(void)
static int get_mx53_srev(void) static int get_mx53_srev(void)
{ {
void __iomem *iim_base = MX51_IO_ADDRESS(MX53_IIM_BASE_ADDR); u32 rev = imx5_read_srev_reg("fsl,imx53-iim");
u32 rev = readl(iim_base + IIM_SREV) & 0xff;
switch (rev) { switch (rev) {
case 0x0: case 0x0:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment