Commit de70d0e9 authored by A.s. Dong's avatar A.s. Dong Committed by Shawn Guo
Browse files

ARM: imx: add initial support for imx7ulp



The i.MX 7ULP family of processors features NXP's advanced implementation
of the Arm Cortex-A7 core, the Arm Cortex-M4 core, as well as a 3D and 2D
Graphics Processing Units (GPUs).

This patch aims to add an initial support for imx7ulp. Note that we need
configure power mode to Partial Stop mode 3 with system/bus clock enabled
first as the default enabled STOP mode will gate off system/bus clock when
execute WFI in MX7ULP SoC.

And there's still no MXC_CPU_IMX7ULP IDs read from register as ULP has no
anatop as before. So we encode one with 0xff in reverse order in case new
ones will be in the future.

Cc: Shawn Guo <shawnguo@kernel.org>
Signed-off-by: default avatarDong Aisheng <aisheng.dong@nxp.com>
Reviewed-by: default avatarFabio Estevam <festevam@gmail.com>
Signed-off-by: default avatarShawn Guo <shawnguo@kernel.org>
parent 7c41ea57
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -558,6 +558,15 @@ config SOC_IMX7D
	help
		This enables support for Freescale i.MX7 Dual processor.

config SOC_IMX7ULP
	bool "i.MX7ULP support"
	select ARM_GIC
	select CLKSRC_IMX_TPM
	select HAVE_ARM_ARCH_TIMER
	select PINCTRL_IMX7ULP
	help
	  This enables support for Freescale i.MX7 Ultra Low Power processor.

config SOC_VF610
	bool "Vybrid Family VF610 support"
	select ARM_GIC if ARCH_MULTI_V7
+1 −0
Original line number Diff line number Diff line
@@ -83,6 +83,7 @@ obj-$(CONFIG_SOC_IMX6SX) += mach-imx6sx.o
obj-$(CONFIG_SOC_IMX6UL) += mach-imx6ul.o
obj-$(CONFIG_SOC_IMX7D_CA7) += mach-imx7d.o
obj-$(CONFIG_SOC_IMX7D_CM4) += mach-imx7d-cm4.o
obj-$(CONFIG_SOC_IMX7ULP) += mach-imx7ulp.o pm-imx7ulp.o

ifeq ($(CONFIG_SUSPEND),y)
AFLAGS_suspend-imx6.o :=-Wa,-march=armv7-a
+1 −0
Original line number Diff line number Diff line
@@ -120,6 +120,7 @@ void imx6dl_pm_init(void);
void imx6sl_pm_init(void);
void imx6sx_pm_init(void);
void imx6ul_pm_init(void);
void imx7ulp_pm_init(void);

#ifdef CONFIG_PM
void imx51_pm_init(void);
+3 −0
Original line number Diff line number Diff line
@@ -145,6 +145,9 @@ struct device * __init imx_soc_device_init(void)
	case MXC_CPU_IMX7D:
		soc_id = "i.MX7D";
		break;
	case MXC_CPU_IMX7ULP:
		soc_id = "i.MX7ULP";
		break;
	default:
		soc_id = "Unknown";
	}
+31 −0
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0+
/*
 * Copyright (C) 2016 Freescale Semiconductor, Inc.
 * Copyright 2017-2018 NXP
 *   Author: Dong Aisheng <aisheng.dong@nxp.com>
 */

#include <linux/irqchip.h>
#include <linux/of_platform.h>
#include <asm/mach/arch.h>

#include "common.h"
#include "hardware.h"

static void __init imx7ulp_init_machine(void)
{
	imx7ulp_pm_init();

	mxc_set_cpu_type(MXC_CPU_IMX7ULP);
	of_platform_default_populate(NULL, NULL, imx_soc_device_init());
}

static const char *const imx7ulp_dt_compat[] __initconst = {
	"fsl,imx7ulp",
	NULL,
};

DT_MACHINE_START(IMX7ulp, "Freescale i.MX7ULP (Device Tree)")
	.init_machine	= imx7ulp_init_machine,
	.dt_compat	= imx7ulp_dt_compat,
MACHINE_END
Loading