summaryrefslogtreecommitdiffstats
path: root/patches/linux-4.16/0003-ARM-imx-add-imx7d-m4.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/linux-4.16/0003-ARM-imx-add-imx7d-m4.patch')
-rw-r--r--patches/linux-4.16/0003-ARM-imx-add-imx7d-m4.patch150
1 files changed, 150 insertions, 0 deletions
diff --git a/patches/linux-4.16/0003-ARM-imx-add-imx7d-m4.patch b/patches/linux-4.16/0003-ARM-imx-add-imx7d-m4.patch
new file mode 100644
index 0000000..a912a8c
--- /dev/null
+++ b/patches/linux-4.16/0003-ARM-imx-add-imx7d-m4.patch
@@ -0,0 +1,150 @@
+From: Oleksij Rempel <linux@rempel-privat.de>
+Date: Thu, 31 Aug 2017 12:45:43 +0200
+Subject: [PATCH] ARM: imx: add imx7d-m4
+
+Signed-off-by: Oleksij Rempel <linux@rempel-privat.de>
+---
+ arch/arm/Kconfig-nommu | 2 ++
+ arch/arm/boot/dts/Makefile | 2 +-
+ arch/arm/include/debug/imx-uart.h | 2 ++
+ arch/arm/mach-imx/Kconfig | 33 +++++++++++++++++++++------------
+ arch/arm/mach-imx/Makefile | 3 ++-
+ arch/arm/mach-imx/mach-imx7d-m4.c | 21 +++++++++++++++++++++
+ 6 files changed, 49 insertions(+), 14 deletions(-)
+ create mode 100644 arch/arm/mach-imx/mach-imx7d-m4.c
+
+diff --git a/arch/arm/Kconfig-nommu b/arch/arm/Kconfig-nommu
+index 1168a03c8525..aced2bf585e8 100644
+--- a/arch/arm/Kconfig-nommu
++++ b/arch/arm/Kconfig-nommu
+@@ -12,10 +12,12 @@ config SET_MEM_PARAM
+
+ config DRAM_BASE
+ hex '(S)DRAM Base Address' if SET_MEM_PARAM
++ default 0x18000000 if SOC_IMX7D_M4
+ default 0x00800000
+
+ config DRAM_SIZE
+ hex '(S)DRAM SIZE' if SET_MEM_PARAM
++ default 0x04000000 if SOC_IMX7D_M4
+ default 0x00800000
+
+ config FLASH_MEM_BASE
+diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
+index 721327ad7400..d8f9d38c8059 100644
+--- a/arch/arm/boot/dts/Makefile
++++ b/arch/arm/boot/dts/Makefile
+@@ -527,7 +527,7 @@ dtb-$(CONFIG_SOC_IMX6UL) += \
+ imx6ul-tx6ul-0011.dtb \
+ imx6ul-tx6ul-mainboard.dtb \
+ imx6ull-14x14-evk.dtb
+-dtb-$(CONFIG_SOC_IMX7D) += \
++dtb-$(CONFIG_SOC_IMX7D_A7) += \
+ imx7d-cl-som-imx7.dtb \
+ imx7d-colibri-emmc-eval-v3.dtb \
+ imx7d-colibri-eval-v3.dtb \
+diff --git a/arch/arm/include/debug/imx-uart.h b/arch/arm/include/debug/imx-uart.h
+index bce58e975ad1..efe0acdf5c5a 100644
+--- a/arch/arm/include/debug/imx-uart.h
++++ b/arch/arm/include/debug/imx-uart.h
+@@ -111,6 +111,8 @@
+ #define IMX7D_UART_BASE_ADDR(n) IMX7D_UART##n##_BASE_ADDR
+ #define IMX7D_UART_BASE(n) IMX7D_UART_BASE_ADDR(n)
+
++#define IMX7D_M4_UART_BASE(n) IMX7D_A7_UART_BASE_ADDR(n)
++
+ #define IMX_DEBUG_UART_BASE(soc) soc##_UART_BASE(CONFIG_DEBUG_IMX_UART_PORT)
+
+ #ifdef CONFIG_DEBUG_IMX1_UART
+diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig
+index 782699e67600..c63065672d1c 100644
+--- a/arch/arm/mach-imx/Kconfig
++++ b/arch/arm/mach-imx/Kconfig
+@@ -528,18 +528,6 @@ config SOC_IMX6UL
+ help
+ This enables support for Freescale i.MX6 UltraLite processor.
+
+-config SOC_IMX7D
+- bool "i.MX7 Dual support"
+- select PINCTRL_IMX7D
+- select ARM_GIC
+- select HAVE_ARM_ARCH_TIMER
+- select HAVE_IMX_ANATOP
+- select HAVE_IMX_MMDC
+- select HAVE_IMX_SRC
+- select IMX_GPCV2
+- help
+- This enables support for Freescale i.MX7 Dual processor.
+-
+ config SOC_LS1021A
+ bool "Freescale LS1021A support"
+ select ARM_GIC
+@@ -554,6 +542,27 @@ comment "Cortex-A/Cortex-M asymmetric multiprocessing platforms"
+
+ if ARCH_MULTI_V7 || ARM_SINGLE_ARMV7M
+
++config SOC_IMX7D_A7
++ bool
++ select ARM_GIC
++ select HAVE_ARM_ARCH_TIMER
++ select HAVE_IMX_ANATOP
++ select HAVE_IMX_MMDC
++ select HAVE_IMX_SRC
++ select IMX_GPCV2
++
++config SOC_IMX7D_M4
++ bool
++ select ARMV7M_SYSTICK
++
++config SOC_IMX7D
++ bool "i.MX7 Dual support"
++ select PINCTRL_IMX7D
++ select SOC_IMX7D_A7 if ARCH_MULTI_V7
++ select SOC_IMX7D_M4 if ARM_SINGLE_ARMV7M
++ help
++ This enables support for Freescale i.MX7 Dual processor.
++
+ config SOC_VF610
+ bool "Vybrid Family VF610 support"
+ select ARM_GIC if ARCH_MULTI_V7
+diff --git a/arch/arm/mach-imx/Makefile b/arch/arm/mach-imx/Makefile
+index 8ff71058207d..baef499c3274 100644
+--- a/arch/arm/mach-imx/Makefile
++++ b/arch/arm/mach-imx/Makefile
+@@ -80,7 +80,8 @@ obj-$(CONFIG_SOC_IMX6Q) += mach-imx6q.o
+ obj-$(CONFIG_SOC_IMX6SL) += mach-imx6sl.o
+ obj-$(CONFIG_SOC_IMX6SX) += mach-imx6sx.o
+ obj-$(CONFIG_SOC_IMX6UL) += mach-imx6ul.o
+-obj-$(CONFIG_SOC_IMX7D) += mach-imx7d.o
++obj-$(CONFIG_SOC_IMX7D_A7) += mach-imx7d.o
++obj-$(CONFIG_SOC_IMX7D_M4) += mach-imx7d-m4.o
+
+ ifeq ($(CONFIG_SUSPEND),y)
+ AFLAGS_suspend-imx6.o :=-Wa,-march=armv7-a
+diff --git a/arch/arm/mach-imx/mach-imx7d-m4.c b/arch/arm/mach-imx/mach-imx7d-m4.c
+new file mode 100644
+index 000000000000..f9520a37db1a
+--- /dev/null
++++ b/arch/arm/mach-imx/mach-imx7d-m4.c
+@@ -0,0 +1,21 @@
++/*
++ * Copyright 2017 Pengutronix
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ */
++
++#include <linux/kernel.h>
++#include <asm/v7m.h>
++#include <asm/mach/arch.h>
++
++static const char * const imx7d_m4_dt_compat[] __initconst = {
++ "fsl,imx7d-m4",
++ NULL,
++};
++
++DT_MACHINE_START(IMX7D, "Freescale i.MX7 Dual Cortex-M4 (Device Tree)")
++ .dt_compat = imx7d_m4_dt_compat,
++ .restart = armv7m_restart,
++MACHINE_END