i.MX SoC changes for 4.21:
- An improvement on i.MX debugging options that only defines DEBUG_IMX_UART_PORT if needed, so that the option will not be present in the kernel config when DEBUG_LL is disabled. - Adds the necessary platform support for i.MX7ULP SoC and configures power mode to Partial Stop mode 3 with system/bus clock enabled. Otherwise the default STOP mode will gate off system/bus clock when WFI gets executed on i.MX7ULP. - A fix from Arnd on SOC_IMX7ULP option dependency. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQEcBAABAgAGBQJcDyTRAAoJEFBXWFqHsHzO87EH/jpMN5pDQG1z/lskwx7I8LJe S6s1jP06NKpyupb9SfmA+HpuJOv4+77QkSBNpM3F3qDCjwx/10A0P0vnzP+csboz oIj7/oIPGvKni6jsmJuNAGTkLQ+Vg+2f1ac/Cp0HF/lJg4r2TM+IX52wZmGmDyC6 4tPGM1IzZ5qj5nddzd1ox9df8Qq31wBSxEmy4YPwMtc3CfFRvy26BHdOqEl9swUs wyOdjzhCYuaJ/sPUdr6oO/VWnXVvEV5Wmk5jmDOcPDeUCAJpH8Uz6oFoO/pW/qFn 1BloikV2Y4/NzU6Prfdl85bk8aHM2p6lqGiS5u9oHVFjQaoBq7MYD/nZDCFJeZY= =POyl -----END PGP SIGNATURE----- Merge tag 'imx-soc-4.21' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux into next/soc i.MX SoC changes for 4.21: - An improvement on i.MX debugging options that only defines DEBUG_IMX_UART_PORT if needed, so that the option will not be present in the kernel config when DEBUG_LL is disabled. - Adds the necessary platform support for i.MX7ULP SoC and configures power mode to Partial Stop mode 3 with system/bus clock enabled. Otherwise the default STOP mode will gate off system/bus clock when WFI gets executed on i.MX7ULP. - A fix from Arnd on SOC_IMX7ULP option dependency. * tag 'imx-soc-4.21' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux: ARM: imx: fix dependencies on imx7ulp ARM: imx: add initial support for imx7ulp ARM: debug-imx: only define DEBUG_IMX_UART_PORT if needed Signed-off-by: Olof Johansson <olof@lixom.net>
This commit is contained in:
Коммит
c8730395ea
|
@ -1469,21 +1469,21 @@ config DEBUG_OMAP2PLUS_UART
|
|||
depends on ARCH_OMAP2PLUS
|
||||
|
||||
config DEBUG_IMX_UART_PORT
|
||||
int "i.MX Debug UART Port Selection" if DEBUG_IMX1_UART || \
|
||||
DEBUG_IMX25_UART || \
|
||||
DEBUG_IMX21_IMX27_UART || \
|
||||
DEBUG_IMX31_UART || \
|
||||
DEBUG_IMX35_UART || \
|
||||
DEBUG_IMX50_UART || \
|
||||
DEBUG_IMX51_UART || \
|
||||
DEBUG_IMX53_UART || \
|
||||
DEBUG_IMX6Q_UART || \
|
||||
DEBUG_IMX6SL_UART || \
|
||||
DEBUG_IMX6SX_UART || \
|
||||
DEBUG_IMX6UL_UART || \
|
||||
DEBUG_IMX7D_UART
|
||||
int "i.MX Debug UART Port Selection"
|
||||
depends on DEBUG_IMX1_UART || \
|
||||
DEBUG_IMX25_UART || \
|
||||
DEBUG_IMX21_IMX27_UART || \
|
||||
DEBUG_IMX31_UART || \
|
||||
DEBUG_IMX35_UART || \
|
||||
DEBUG_IMX50_UART || \
|
||||
DEBUG_IMX51_UART || \
|
||||
DEBUG_IMX53_UART || \
|
||||
DEBUG_IMX6Q_UART || \
|
||||
DEBUG_IMX6SL_UART || \
|
||||
DEBUG_IMX6SX_UART || \
|
||||
DEBUG_IMX6UL_UART || \
|
||||
DEBUG_IMX7D_UART
|
||||
default 1
|
||||
depends on ARCH_MXC
|
||||
help
|
||||
Choose UART port on which kernel low-level debug messages
|
||||
should be output.
|
||||
|
|
|
@ -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 CLKSRC_IMX_TPM
|
||||
select PINCTRL_IMX7ULP
|
||||
select SOC_IMX7D_CA7 if ARCH_MULTI_V7
|
||||
select SOC_IMX7D_CM4 if ARM_SINGLE_ARMV7M
|
||||
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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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";
|
||||
}
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
// 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
|
|
@ -44,6 +44,7 @@
|
|||
#define MXC_CPU_IMX6ULZ 0x6b
|
||||
#define MXC_CPU_IMX6SLL 0x67
|
||||
#define MXC_CPU_IMX7D 0x72
|
||||
#define MXC_CPU_IMX7ULP 0xff
|
||||
|
||||
#define IMX_DDR_TYPE_LPDDR2 1
|
||||
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
// 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/io.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/of_address.h>
|
||||
|
||||
#define SMC_PMCTRL 0x10
|
||||
#define BP_PMCTRL_PSTOPO 16
|
||||
#define PSTOPO_PSTOP3 0x3
|
||||
|
||||
void __init imx7ulp_pm_init(void)
|
||||
{
|
||||
struct device_node *np;
|
||||
void __iomem *smc1_base;
|
||||
|
||||
np = of_find_compatible_node(NULL, NULL, "fsl,imx7ulp-smc1");
|
||||
smc1_base = of_iomap(np, 0);
|
||||
WARN_ON(!smc1_base);
|
||||
|
||||
/* Partial Stop mode 3 with system/bus clock enabled */
|
||||
writel_relaxed(PSTOPO_PSTOP3 << BP_PMCTRL_PSTOPO,
|
||||
smc1_base + SMC_PMCTRL);
|
||||
iounmap(smc1_base);
|
||||
}
|
Загрузка…
Ссылка в новой задаче