summaryrefslogtreecommitdiff
path: root/arch/arm/mach-imx/mach-imx7ulp.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/mach-imx/mach-imx7ulp.c')
-rw-r--r--arch/arm/mach-imx/mach-imx7ulp.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/arch/arm/mach-imx/mach-imx7ulp.c b/arch/arm/mach-imx/mach-imx7ulp.c
index 11ac71aaf965..410f0d745c9d 100644
--- a/arch/arm/mach-imx/mach-imx7ulp.c
+++ b/arch/arm/mach-imx/mach-imx7ulp.c
@@ -10,6 +10,7 @@
#include <linux/of_platform.h>
#include <linux/regmap.h>
#include <asm/mach/arch.h>
+#include <asm/mach/map.h>
#include "common.h"
#include "cpuidle.h"
@@ -17,6 +18,15 @@
#define SIM_JTAG_ID_REG 0x8c
+/* static IO mapping, and ioremap() could always share the same mapping. */
+static struct map_desc mx7ulp_io_desc[] __initdata = {
+ mx7ulp_aips_map_entry(1, MT_DEVICE),
+ mx7ulp_aips_map_entry(2, MT_DEVICE),
+ mx7ulp_aips_map_entry(3, MT_DEVICE),
+ mx7ulp_aips_map_entry(4, MT_DEVICE),
+ mx7ulp_aips_map_entry(5, MT_DEVICE),
+};
+
static void __init imx7ulp_set_revision(void)
{
struct regmap *sim;
@@ -45,6 +55,9 @@ static void __init imx7ulp_set_revision(void)
case 2:
imx_set_soc_revision(IMX_CHIP_REVISION_2_1);
break;
+ case 3:
+ imx_set_soc_revision(IMX_CHIP_REVISION_2_2);
+ break;
default:
imx_set_soc_revision(IMX_CHIP_REVISION_1_0);
break;
@@ -65,12 +78,23 @@ static const char *const imx7ulp_dt_compat[] __initconst = {
NULL,
};
+static void __init imx7ulp_map_io(void)
+{
+ iotable_init(mx7ulp_io_desc, ARRAY_SIZE(mx7ulp_io_desc));
+ imx7ulp_pm_map_io();
+}
+
static void __init imx7ulp_init_late(void)
{
+ if (IS_ENABLED(CONFIG_ARM_IMX7ULP_CPUFREQ))
+ platform_device_register_simple("imx7ulp-cpufreq", -1, NULL, 0);
+
imx7ulp_cpuidle_init();
+ imx7ulp_enable_nmi();
}
DT_MACHINE_START(IMX7ulp, "Freescale i.MX7ULP (Device Tree)")
+ .map_io = imx7ulp_map_io,
.init_machine = imx7ulp_init_machine,
.dt_compat = imx7ulp_dt_compat,
.init_late = imx7ulp_init_late,