ARM: imx: do not use regmap_read for ANADIG_DIGPROG

Function imx_anatop_get_digprog() that reads register ANADIG_DIGPROG is
called to identify silicon version.  Users might query silicon version
earlier than regmap subsystem is ready.  For example, imx6q clock driver
query revision in mx6q_clocks_init(), where regmap is not initialized
yet.

Change imx_anatop_get_digprog() to map anatop block and read
ANADIG_DIGPROG in the native way, so that the function can work at very
early stage.

While at it, let's move imx_print_silicon_rev() back to
imx6q_timer_init() to have the message show up a little earlier.

Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
This commit is contained in:
Shawn Guo
2013-03-31 22:39:22 +08:00
parent 32f3b8da22
commit 7006ba24c2
2 changed files with 13 additions and 4 deletions

View File

@@ -78,10 +78,19 @@ void imx_anatop_usb_chrg_detect_disable(void)
u32 imx_anatop_get_digprog(void)
{
u32 val;
struct device_node *np;
void __iomem *anatop_base;
static u32 digprog;
regmap_read(anatop, ANADIG_DIGPROG, &val);
return val;
if (digprog)
return digprog;
np = of_find_compatible_node(NULL, NULL, "fsl,imx6q-anatop");
anatop_base = of_iomap(np, 0);
WARN_ON(!anatop_base);
digprog = readl_relaxed(anatop_base + ANADIG_DIGPROG);
return digprog;
}
void __init imx_anatop_init(void)