[v2] ARM: imx: Provide support for NXP i.MX7D Cortex-M4

Message ID 20180702062755.17263-1-o.rempel@pengutronix.de
State New
Headers show
Series
  • [v2] ARM: imx: Provide support for NXP i.MX7D Cortex-M4
Related show

Commit Message

Oleksij Rempel July 2, 2018, 6:27 a.m.
Cortex M4 part can be started from a boot loader or over
Linux remoteproc framework.

Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
---
 arch/arm/boot/dts/Makefile         |  2 +-
 arch/arm/mach-imx/Kconfig          | 33 +++++++++++++++++++-----------
 arch/arm/mach-imx/Makefile         |  3 ++-
 arch/arm/mach-imx/mach-imx7d-cm4.c | 21 +++++++++++++++++++
 4 files changed, 45 insertions(+), 14 deletions(-)
 create mode 100644 arch/arm/mach-imx/mach-imx7d-cm4.c

Comments

Shawn Guo July 3, 2018, 6:57 a.m. | #1
On Mon, Jul 02, 2018 at 08:27:55AM +0200, Oleksij Rempel wrote:
> Cortex M4 part can be started from a boot loader or over
> Linux remoteproc framework.
> 
> Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
> ---
>  arch/arm/boot/dts/Makefile         |  2 +-
>  arch/arm/mach-imx/Kconfig          | 33 +++++++++++++++++++-----------
>  arch/arm/mach-imx/Makefile         |  3 ++-
>  arch/arm/mach-imx/mach-imx7d-cm4.c | 21 +++++++++++++++++++
>  4 files changed, 45 insertions(+), 14 deletions(-)
>  create mode 100644 arch/arm/mach-imx/mach-imx7d-cm4.c
> 
> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> index 7e2424957809..e3fe1bfbc404 100644
> --- a/arch/arm/boot/dts/Makefile
> +++ b/arch/arm/boot/dts/Makefile
> @@ -539,7 +539,7 @@ dtb-$(CONFIG_SOC_IMX6UL) += \
>  	imx6ull-14x14-evk.dtb \
>  	imx6ull-colibri-eval-v3.dtb \
>  	imx6ull-colibri-wifi-eval-v3.dtb
> -dtb-$(CONFIG_SOC_IMX7D) += \
> +dtb-$(CONFIG_SOC_IMX7D_CA7) += \

We agreed to keep this unchanged, no?

>  	imx7d-cl-som-imx7.dtb \
>  	imx7d-colibri-emmc-eval-v3.dtb \
>  	imx7d-colibri-eval-v3.dtb \
> diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig
> index e47fa13f4b0c..5ad58b1cb4bc 100644
> --- a/arch/arm/mach-imx/Kconfig
> +++ b/arch/arm/mach-imx/Kconfig
> @@ -522,18 +522,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
> @@ -548,6 +536,27 @@ comment "Cortex-A/Cortex-M asymmetric multiprocessing platforms"
>  
>  if ARCH_MULTI_V7 || ARM_SINGLE_ARMV7M
>  
> +config SOC_IMX7D_CA7
> +	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_CM4
> +	bool
> +	select ARMV7M_SYSTICK
> +
> +config SOC_IMX7D
> +	bool "i.MX7 Dual support"
> +	select PINCTRL_IMX7D
> +	select SOC_IMX7D_CA7 if ARCH_MULTI_V7
> +	select SOC_IMX7D_CM4 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 2327e3e876d8..64ebeb6a4f30 100644
> --- a/arch/arm/mach-imx/Makefile
> +++ b/arch/arm/mach-imx/Makefile
> @@ -81,7 +81,8 @@ obj-$(CONFIG_SOC_IMX6SL) += mach-imx6sl.o
>  obj-$(CONFIG_SOC_IMX6SLL) += 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_CA7) += mach-imx7d.o
> +obj-$(CONFIG_SOC_IMX7D_CM4) += mach-imx7d-cm4.o
>  
>  ifeq ($(CONFIG_SUSPEND),y)
>  AFLAGS_suspend-imx6.o :=-Wa,-march=armv7-a
> diff --git a/arch/arm/mach-imx/mach-imx7d-cm4.c b/arch/arm/mach-imx/mach-imx7d-cm4.c
> new file mode 100644
> index 000000000000..c36dea79aeb8
> --- /dev/null
> +++ b/arch/arm/mach-imx/mach-imx7d-cm4.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.
> + */

Can we use SPDX tag for new file?

Shawn

> +
> +#include <linux/kernel.h>
> +#include <asm/v7m.h>
> +#include <asm/mach/arch.h>
> +
> +static const char * const imx7d_cm4_dt_compat[] __initconst = {
> +	"fsl,imx7d-cm4",
> +	NULL,
> +};
> +
> +DT_MACHINE_START(IMX7D, "Freescale i.MX7 Dual Cortex-M4 (Device Tree)")
> +	.dt_compat = imx7d_cm4_dt_compat,
> +	.restart = armv7m_restart,
> +MACHINE_END
> -- 
> 2.17.1
>
Oleksij Rempel July 3, 2018, 7:06 a.m. | #2
On 03.07.2018 08:57, Shawn Guo wrote:
> On Mon, Jul 02, 2018 at 08:27:55AM +0200, Oleksij Rempel wrote:
>> Cortex M4 part can be started from a boot loader or over
>> Linux remoteproc framework.
>>
>> Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
>> ---
>>  arch/arm/boot/dts/Makefile         |  2 +-
>>  arch/arm/mach-imx/Kconfig          | 33 +++++++++++++++++++-----------
>>  arch/arm/mach-imx/Makefile         |  3 ++-
>>  arch/arm/mach-imx/mach-imx7d-cm4.c | 21 +++++++++++++++++++
>>  4 files changed, 45 insertions(+), 14 deletions(-)
>>  create mode 100644 arch/arm/mach-imx/mach-imx7d-cm4.c
>>
>> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
>> index 7e2424957809..e3fe1bfbc404 100644
>> --- a/arch/arm/boot/dts/Makefile
>> +++ b/arch/arm/boot/dts/Makefile
>> @@ -539,7 +539,7 @@ dtb-$(CONFIG_SOC_IMX6UL) += \
>>  	imx6ull-14x14-evk.dtb \
>>  	imx6ull-colibri-eval-v3.dtb \
>>  	imx6ull-colibri-wifi-eval-v3.dtb
>> -dtb-$(CONFIG_SOC_IMX7D) += \
>> +dtb-$(CONFIG_SOC_IMX7D_CA7) += \
> 
> We agreed to keep this unchanged, no?

yes. sorry.

>>  	imx7d-cl-som-imx7.dtb \
>>  	imx7d-colibri-emmc-eval-v3.dtb \
>>  	imx7d-colibri-eval-v3.dtb \
>> diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig
>> index e47fa13f4b0c..5ad58b1cb4bc 100644
>> --- a/arch/arm/mach-imx/Kconfig
>> +++ b/arch/arm/mach-imx/Kconfig
>> @@ -522,18 +522,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
>> @@ -548,6 +536,27 @@ comment "Cortex-A/Cortex-M asymmetric multiprocessing platforms"
>>  
>>  if ARCH_MULTI_V7 || ARM_SINGLE_ARMV7M
>>  
>> +config SOC_IMX7D_CA7
>> +	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_CM4
>> +	bool
>> +	select ARMV7M_SYSTICK
>> +
>> +config SOC_IMX7D
>> +	bool "i.MX7 Dual support"
>> +	select PINCTRL_IMX7D
>> +	select SOC_IMX7D_CA7 if ARCH_MULTI_V7
>> +	select SOC_IMX7D_CM4 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 2327e3e876d8..64ebeb6a4f30 100644
>> --- a/arch/arm/mach-imx/Makefile
>> +++ b/arch/arm/mach-imx/Makefile
>> @@ -81,7 +81,8 @@ obj-$(CONFIG_SOC_IMX6SL) += mach-imx6sl.o
>>  obj-$(CONFIG_SOC_IMX6SLL) += 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_CA7) += mach-imx7d.o
>> +obj-$(CONFIG_SOC_IMX7D_CM4) += mach-imx7d-cm4.o
>>  
>>  ifeq ($(CONFIG_SUSPEND),y)
>>  AFLAGS_suspend-imx6.o :=-Wa,-march=armv7-a
>> diff --git a/arch/arm/mach-imx/mach-imx7d-cm4.c b/arch/arm/mach-imx/mach-imx7d-cm4.c
>> new file mode 100644
>> index 000000000000..c36dea79aeb8
>> --- /dev/null
>> +++ b/arch/arm/mach-imx/mach-imx7d-cm4.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.
>> + */
> 
> Can we use SPDX tag for new file?

ok.

> Shawn
> 
>> +
>> +#include <linux/kernel.h>
>> +#include <asm/v7m.h>
>> +#include <asm/mach/arch.h>
>> +
>> +static const char * const imx7d_cm4_dt_compat[] __initconst = {
>> +	"fsl,imx7d-cm4",
>> +	NULL,
>> +};
>> +
>> +DT_MACHINE_START(IMX7D, "Freescale i.MX7 Dual Cortex-M4 (Device Tree)")
>> +	.dt_compat = imx7d_cm4_dt_compat,
>> +	.restart = armv7m_restart,
>> +MACHINE_END
>> -- 
>> 2.17.1
>>
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
>

Patch

diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index 7e2424957809..e3fe1bfbc404 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -539,7 +539,7 @@  dtb-$(CONFIG_SOC_IMX6UL) += \
 	imx6ull-14x14-evk.dtb \
 	imx6ull-colibri-eval-v3.dtb \
 	imx6ull-colibri-wifi-eval-v3.dtb
-dtb-$(CONFIG_SOC_IMX7D) += \
+dtb-$(CONFIG_SOC_IMX7D_CA7) += \
 	imx7d-cl-som-imx7.dtb \
 	imx7d-colibri-emmc-eval-v3.dtb \
 	imx7d-colibri-eval-v3.dtb \
diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig
index e47fa13f4b0c..5ad58b1cb4bc 100644
--- a/arch/arm/mach-imx/Kconfig
+++ b/arch/arm/mach-imx/Kconfig
@@ -522,18 +522,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
@@ -548,6 +536,27 @@  comment "Cortex-A/Cortex-M asymmetric multiprocessing platforms"
 
 if ARCH_MULTI_V7 || ARM_SINGLE_ARMV7M
 
+config SOC_IMX7D_CA7
+	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_CM4
+	bool
+	select ARMV7M_SYSTICK
+
+config SOC_IMX7D
+	bool "i.MX7 Dual support"
+	select PINCTRL_IMX7D
+	select SOC_IMX7D_CA7 if ARCH_MULTI_V7
+	select SOC_IMX7D_CM4 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 2327e3e876d8..64ebeb6a4f30 100644
--- a/arch/arm/mach-imx/Makefile
+++ b/arch/arm/mach-imx/Makefile
@@ -81,7 +81,8 @@  obj-$(CONFIG_SOC_IMX6SL) += mach-imx6sl.o
 obj-$(CONFIG_SOC_IMX6SLL) += 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_CA7) += mach-imx7d.o
+obj-$(CONFIG_SOC_IMX7D_CM4) += mach-imx7d-cm4.o
 
 ifeq ($(CONFIG_SUSPEND),y)
 AFLAGS_suspend-imx6.o :=-Wa,-march=armv7-a
diff --git a/arch/arm/mach-imx/mach-imx7d-cm4.c b/arch/arm/mach-imx/mach-imx7d-cm4.c
new file mode 100644
index 000000000000..c36dea79aeb8
--- /dev/null
+++ b/arch/arm/mach-imx/mach-imx7d-cm4.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_cm4_dt_compat[] __initconst = {
+	"fsl,imx7d-cm4",
+	NULL,
+};
+
+DT_MACHINE_START(IMX7D, "Freescale i.MX7 Dual Cortex-M4 (Device Tree)")
+	.dt_compat = imx7d_cm4_dt_compat,
+	.restart = armv7m_restart,
+MACHINE_END