[U-Boot] [PATCH V5 31/31] imx: add i.MX8MQ EVK support
Paul Kocialkowski
contact at paulk.fr
Wed Jun 20 12:08:50 UTC 2018
On Wed, 2018-06-20 at 13:54 +0200, Paul Kocialkowski wrote:
> Hi,
>
> On Wed, 2018-06-20 at 12:37 +0100, Andre Przywara wrote:
> > (resending trimmed version to pass the U-Boot size limit filter ...)
> >
> > Hi,
> >
> > On 20/06/18 09:57, Paul Kocialkowski wrote:
> > > Hi there,
> > >
> > > On Wed, 2018-01-10 at 13:20 +0800, Peng Fan wrote:
> > > > Add i.MX8MQ EVK support. SPL will initialize ddr and load ddr phy
> > > > firmware. Then loading FIT image, ATF to OCRAM, U-Boot and DTB to
> > > > DRAM.
> > >
> > > First off, I'd like to express my gratitude for this port: the i.MX8
> > > looks like a great platform and it's really nice to see support for it
> > > land in U-Boot!
> > >
> > > Regarding the integration of i.MX8 with upstream software in general:
> > > are there plans to upstream the ARM Trusted Firmware port for i.MX8?
> > > It would be great to have both U-Boot and ATF upstream support to
> > > achieve a boot chain with (mostly-)free and upstream software.
> >
> > The support for i.MX8QX and i.MX8QM has been merged into the official
> > ATF repo yesterday:
> > https://github.com/ARM-software/arm-trusted-firmware/pull/1410
> >
> > I am bit lost in the naming here (i.MX8QM vs i.MX8MQ), but I think that
> > should answer your question.
>
> Great to hear and great work! I must admit, I did not even check ATF
> sources when writing the email from this morning, as it seemed too early
> anyway.
>
> I'm definitely glad I was wrong :)
>
> > > On that note, are there proprietary components involved in the boot
> > > process, other than the already-identified DDR training firmware for the
> > > DDR PHY?
> > >
> > > About that DDR PHY firmware: to what extent is it necessary? It is
> > > common that DDR link training is required for socketed DRAM chips, but
> > > properly-tuned static per-board configuration is usually enough for
> > > soldered DRAM chips. Is the i.MX8 and exception to that? If not, would
> > > it be possible to provide such a static configuration mode, that does
> > > not involved any firmware for link training?
> >
> > I agree on not wanting a blob for that, although that depends a bit on
> > what it does: If it's an not-signed binary, that just does the training
> > and then goes out of the way, and shipping the binary is reasonably
> > licensed, then it might be beneficial to have it, at least for now.
>
> Well, that covers some use cases, but definitely does not help with
> software freedom issues, that can only be solved by either avoiding or
> liberating that blob. Even following the RYF approach that Purism is
> considering[0] (moving DDR calibration to a coprocessor) does not help
> at all with freedom issues and is merely an "exception" that the FSF's
> RYF certification allows.
>
> I did not mention it, but perhaps NXP is in a positon to ask Designware
> to free that blob altogether (which would definitely solve the issue at
> hand here)?
I meant Synopsys (the company), not Designware (the line of products)
here.
> > AFAIK actual DRAM training for a wide range of chips is not trivial, so
> > there is probably some value in that blob.
> > For specific boards with soldered chips: can't we dump the results of
> > the training and use that for a static configuration? It is my
> > understanding that the DRAM controller parameters depend on actual
> > voltage and also temperature, but we might get some good enough values
> > for a reasonable range of both? This would make this blob optional then,
> > and people could decide for their own.
>
> This is also my understanding and I would totally be satisfied with this
> approach, as I mentioned earlier.
>
> Thanks for the reply!
>
> Paul
>
> [0]: https://puri.sm/posts/librem5-solving-the-first-fsf-ryf-hurdle/
>
> > Cheers,
> > Andre.
> >
> > > Perhaps the PHY link training code (with the firmware) could be kept
> > > around as a fallback, disabled by default. Also, I see lots of
> > > undocumented registers in the process. Does it seem feasable to document
> > > these? This currently does not really like the source form of the
> > > software.
> > >
> > > Having a firmware in the boot process is a fatal flaw when it comes to
> > > software freedom, as it prevents having a fully free boot chain. Since
> > > some projects (e.g. the Purism Librem 5) are aiming at using the i.MX8
> > > for this precise reason, this is a serious (if not fatal) drawback.
> > >
> > > Moreover, it is really not convenient to have a non-free firmware that
> > > must be carried around with U-Boot and prevents user from just cloning
> > > u-boot, building and running (by adding an extra step that complicates
> > > the process and makes it different from other platforms that do not
> > > require such a blob).
> > >
> > > Thanks in advance for your time and consideration of these questions!
> > >
> > > Cheers,
> > >
> > > Paul
> > >
> > > > The boot log with Arm trusted firmware console enabled:
> > > > "
> > > > U-Boot SPL 2018.01-00038-gbd426c08ea (Jan 10 2018 - 13:14:56)
> > > > PMIC: PFUZE100 ID=0x10
> > > > Normal Boot
> > > > Trying to boot from MMC2
> > > > NOTICE: Configureing TZASC380
> > > > NOTICE: BL31: v1.4(release):o8.0.0_1.3.0_8m-prc-20171211-6-g54fb0797-dirty
> > > > NOTICE: BL31: Built : 07:17:16, Jan 8 2018
> > > > NOTICE: sip svc init
> > > >
> > > > U-Boot 2018.01-00038-gbd426c08ea (Jan 10 2018 - 13:14:56 +0800)
> > > >
> > > > CPU: Freescale i.MX8MQ rev2.0 at 1000 MHz
> > > > Reset cause: POR
> > > > Model: Freescale i.MX8MQ EVK
> > > > DRAM: 3 GiB
> > > > MMC: FSL_SDHC: 0, FSL_SDHC: 1
> > > > Using default environment
> > > >
> > > > In: serial
> > > > Out: serial
> > > > Err: serial
> > > > Net: No ethernet found.
> > > > Hit any key to stop autoboot: 0
> > > > u-boot=>
> > > > "
> > > >
> > > > Signed-off-by: Peng Fan <peng.fan at nxp.com>
> > > > Cc: Fabio Estevam <fabio.estevam at nxp.com>
> > > > Cc: Stefano Babic <sbabic at denx.de>
> > > > ---
> > > > arch/arm/dts/Makefile | 2 +
> > > > arch/arm/dts/fsl-imx8mq-evk.dts | 424 +++++++++
> > > > arch/arm/include/asm/arch-mx8m/ddr.h | 9 +
> > > > arch/arm/mach-imx/mx8m/Kconfig | 12 +
> > > > board/freescale/mx8mq_evk/Kconfig | 12 +
> > > > board/freescale/mx8mq_evk/Makefile | 12 +
> > > > board/freescale/mx8mq_evk/README | 47 +
> > > > board/freescale/mx8mq_evk/ddr/ddr_init.c | 246 +++++
> > > > board/freescale/mx8mq_evk/ddr/ddrphy_train.c | 1272 ++++++++++++++++++++++++++
> > > > board/freescale/mx8mq_evk/ddr/helper.c | 101 ++
> > > > board/freescale/mx8mq_evk/mx8mq_evk.c | 156 ++++
> > > > board/freescale/mx8mq_evk/spl.c | 230 +++++
> > > > configs/mx8mq_evk_defconfig | 27 +
> > > > include/configs/mx8mq_evk.h | 269 ++++++
> > > > 14 files changed, 2819 insertions(+)
> > > > create mode 100644 arch/arm/dts/fsl-imx8mq-evk.dts
> > > > create mode 100644 board/freescale/mx8mq_evk/Kconfig
> > > > create mode 100644 board/freescale/mx8mq_evk/Makefile
> > > > create mode 100644 board/freescale/mx8mq_evk/README
> > > > create mode 100644 board/freescale/mx8mq_evk/ddr/ddr_init.c
> > > > create mode 100644 board/freescale/mx8mq_evk/ddr/ddrphy_train.c
> > > > create mode 100644 board/freescale/mx8mq_evk/ddr/helper.c
> > > > create mode 100644 board/freescale/mx8mq_evk/mx8mq_evk.c
> > > > create mode 100644 board/freescale/mx8mq_evk/spl.c
> > > > create mode 100644 configs/mx8mq_evk_defconfig
> > > > create mode 100644 include/configs/mx8mq_evk.h
> > > >
--
Developer of free digital technology and hardware support.
Website: https://www.paulk.fr/
Coding blog: https://code.paulk.fr/
Git repositories: https://git.paulk.fr/ https://git.code.paulk.fr/
More information about the U-Boot
mailing list