|
@@ -16,6 +16,7 @@
|
|
|
#include <linux/mfd/syscon.h>
|
|
|
#include <linux/regmap.h>
|
|
|
#include "common.h"
|
|
|
+#include "hardware.h"
|
|
|
|
|
|
#define REG_SET 0x4
|
|
|
#define REG_CLR 0x8
|
|
@@ -76,21 +77,35 @@ static void imx_anatop_usb_chrg_detect_disable(void)
|
|
|
BM_ANADIG_USB_CHRG_DETECT_CHK_CHRG_B);
|
|
|
}
|
|
|
|
|
|
-u32 imx_anatop_get_digprog(void)
|
|
|
+void __init imx_init_revision_from_anatop(void)
|
|
|
{
|
|
|
struct device_node *np;
|
|
|
void __iomem *anatop_base;
|
|
|
- static u32 digprog;
|
|
|
-
|
|
|
- if (digprog)
|
|
|
- return digprog;
|
|
|
+ unsigned int revision;
|
|
|
+ u32 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);
|
|
|
+ iounmap(anatop_base);
|
|
|
+
|
|
|
+ switch (digprog & 0xff) {
|
|
|
+ case 0:
|
|
|
+ revision = IMX_CHIP_REVISION_1_0;
|
|
|
+ break;
|
|
|
+ case 1:
|
|
|
+ revision = IMX_CHIP_REVISION_1_1;
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ revision = IMX_CHIP_REVISION_1_2;
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ revision = IMX_CHIP_REVISION_UNKNOWN;
|
|
|
+ }
|
|
|
|
|
|
- return digprog;
|
|
|
+ mxc_set_cpu_type(digprog >> 16 & 0xff);
|
|
|
+ imx_set_soc_revision(revision);
|
|
|
}
|
|
|
|
|
|
void __init imx_anatop_init(void)
|