All of lore.kernel.org
 help / color / mirror / Atom feed
From: o.rempel@pengutronix.de (Oleksij Rempel)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v1] ARM: imx: add imx7d-m4
Date: Mon, 11 Jun 2018 13:53:11 +0200	[thread overview]
Message-ID: <a4657c84-a807-d194-950c-38f5f8e4a53c@pengutronix.de> (raw)
In-Reply-To: <3fa291a7da6978545cd21fdcf78c483e@agner.ch>



On 11.06.2018 13:48, Stefan Agner wrote:
> On 11.06.2018 10:35, Lucas Stach wrote:
>> Hi Shawn,
>>
>> Am Montag, den 11.06.2018, 16:20 +0800 schrieb Shawn Guo:
>>> On Mon, Jun 11, 2018 at 10:02:53AM +0200, Oleksij Rempel wrote:
>>>> Hi all,
>>>>
>>>> this patch was send 05.04.2018. Any comments?
>>>>
>>>> @Shawn, can you please take it?
>>>
>>> Honestly I'm not sure how useful it will be.??If we can have some i.MX
>>> developers ACK on it, I will be more comfortable to take it.
>>
>> This is all highly experimental and in PoC stage, but we see some value
>> in running a second Linux system on the M4 coprocessor. There are lots
>> of things that still need to be figured out, but we are working on this
>> from time to time when there are some hours to spare.
>>
>> This patch seems like a good step in the right direction and IMHO the
>> amount of code and changes is small enough to carry it upstream without
>> impacting anything else. I would be happy if this could be pulled in.
> 
> I agree with Lucas here, this is rather minimal and not invasive.
> 
> 
> Out of interest, on what memory region do you run Linux? Do you use
> caches? In some experiments a while ago I noticed that only 2MiB/(or
> 4MiB) of DDR memory can use caches, which is somewhat tight to run Linux
> on.
> 
> https://blog.printk.io/2017/05/i-mx-7-cortex-m4-memory-locations-and-performance/

here is DT part for master system on Cortex A7 to run Linux on Cortex M4:

        memory {
                device_type = "memory";
                reg = <0x80000000 0x40000000>;
        };

        reserved-memory {
                #address-cells = <1>;
                #size-cells = <1>;
                ranges;

                m4_reserved_sysmem1: rproc at 88000000 {
                        reg = <0x88000000 0x4000000>;
                        no-map;
                };

                /* not really needed node. used as example */
                m4_reserved_sysmem2: rproc at 88080000 {
                        reg = <0x8c000000 0x80000>;
                        no-map;
                };
        };

        mailbox_test {
                compatible      = "mailbox-test";
                reg             = <0x00900000 0x00020000>, <0x00920000
0x00020000>;
                mboxes          = <&mu0a 0>, <&mu0a 0>;
                mbox-names      = "tx", "rx";
        };
};

/* node reserved for rproc */
&uart1 {
        assigned-clock-rates = <240000000>;
        status = "disabled";
};

&gpt2 {
        assigned-clock-rates = <24000000>;
        status = "disabled";
};

&mu0a {
        status = "okay";
        #mbox-cells = <1>;
};

&imx_rproc {
        status = "okay";
        memory-region = <&m4_reserved_sysmem1>,
                        <&m4_reserved_sysmem2>;

        remote-nodes = <&gpt2>, <&uart1>;
};



> --
> Stefan
> 
> 
>>>>
>>>> On 05.04.2018 13:51, Oleksij Rempel wrote:
>>>>> Provide basic support for Cortex-M4 located on NXP iMX7D.
>>>>> This code was tested in combination with imx-rproc driver
>>>>> which will upload with specially formatted ELF image containing
>>>>> kernel, device and CPIO rootfs.
>>>>>
>>>>>>>> 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 852452515bea..d49bb9a58aee 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_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 782699e67600..101c8599d952 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_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 8ff71058207d..68640f100ef3 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_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
>>>>>
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> linux-arm-kernel mailing list
>>> linux-arm-kernel at lists.infradead.org
>>> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
>>
>> _______________________________________________
>> linux-arm-kernel mailing list
>> linux-arm-kernel at lists.infradead.org
>> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
> 
> 

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20180611/f252f40a/attachment.sig>

  reply	other threads:[~2018-06-11 11:53 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-04-05 11:51 [PATCH v1] ARM: imx: add imx7d-m4 Oleksij Rempel
2018-06-11  8:02 ` Oleksij Rempel
2018-06-11  8:20   ` Shawn Guo
2018-06-11  8:35     ` Lucas Stach
2018-06-11 11:48       ` Stefan Agner
2018-06-11 11:53         ` Oleksij Rempel [this message]
2018-06-11 12:41           ` Stefan Agner
2018-06-11 18:03             ` Oleksij Rempel
2018-06-11 12:01         ` Fabio Estevam
2018-06-17  6:44 ` Shawn Guo
2018-07-02  6:01   ` Oleksij Rempel
2018-06-17  6:46 ` Shawn Guo
2018-07-02  6:02   ` Oleksij Rempel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=a4657c84-a807-d194-950c-38f5f8e4a53c@pengutronix.de \
    --to=o.rempel@pengutronix.de \
    --cc=linux-arm-kernel@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.