[U-Boot] [PATCH 00/52] Support i.MX8MM/N

Peng Fan peng.fan at nxp.com
Mon Jul 8 08:53:56 UTC 2019


> Subject: Re: [U-Boot] [PATCH 00/52] Support i.MX8MM/N
> 
> On 08.07.19 09:47, Peng Fan wrote:
> > Hi Lukasz,
> >
> >> Subject: Re: [U-Boot] [PATCH 00/52] Support i.MX8MM/N
> >>
> >> Hi Peng,
> >>
> >>>> Subject: Re: [U-Boot] [PATCH 00/52] Support i.MX8MM/N
> >>>>
> >>>> Hi Peng,
> >>>>
> >>>>> From: Peng Fan <peng.fan at nxp.com>
> >>>>>
> >>>>> This patchset is to support i.MX8MM/8MN with some update in ddr
> >>>>> settings and ddr driver update.
> >>>>>
> >>>>> The initial patchset to support i.MX8MM is
> >>>>> https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2F
> >>>>>
> patchwork.ozlabs.org%2Fcover%2F1093140%2F&data=02%7C01%7Cpe
> ng.
> >>>>>
> fan%40nxp.com%7C22bf1d278ff84b83992808d703801185%7C686ea1d3bc2
> b4c6
> >>>>>
> fa92cd99c5c301635%7C0%7C0%7C636981720896878860&sdata=sT41
> oDo7v
> >>>>> 9D2b1reCpqJJ055SGQcGkrQWOkmB8Vcc%2F4%3D&reserved=0
> >>>>> But in this patchset I dropped CCF, and use original CLK uclass,
> >>>>> so not use V2 in patchset.
> >>>>
> >>>> I'm a bit confused here regarding the CCF adoption.
> >>>>
> >>>>  From this patch set I do see that in one place you enable
> >>>> CONFIG_CLK_CCF and CONFIG_SPL_CLK_CCF and then it is removed in
> >> the
> >>>> other patch. For example the patch 48/52 extends the
> >>>> drivers/clk/imx/clk-imx8mm.c, which looks like the old approach for
> >>>> the clocking.
> >>>
> >>> The v2 patchset has cleanup
> >>> https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgi
> >>>
> thub.com%2FMrVan%2Fu-boot%2Ftree%2F8m-7-5&data=02%7C01%7C
> peng.fa
> >>>
> n%40nxp.com%7C22bf1d278ff84b83992808d703801185%7C686ea1d3bc2b4
> c6fa92
> >>>
> cd99c5c301635%7C0%7C0%7C636981720896878860&sdata=TXp4PTd8l
> rO1DVY
> >>> L2Mzhzgz%2Fr084yIX0t4zlta%2BGjpY%3D&reserved=0
> >>>
> >>>>
> >>>> Am I correct that the v2 of this patch set will use the CCF v5,
> >>>> which I've sent some time ago (CCF v4 was used on some i.MX8 SoC
> >>>> though)?
> >>>
> >>> No. I tried CCF on i.MX8MM in previous patchset, but I dropped it
> >>> for now.
> >>
> >> If I may ask - why have you dropped it?
> >
> > To support i.MX8M, lots of code needs to be added, one is composite.
> > We also needs clock settings, not just read.
> >
> >>
> >> The v5 of CCF has been posted ~2 weeks ago (with you on CC) with a
> >> high chance to be pulled by Stefano after the merge window opens.
> >>
> >> When we accept the "legacy" clock approach we will stuck with it for
> >> a long time.
> >>
> >> What approach is took by the Linux kernel? CCF or any other one?
> >
> > I am not against CCF. I tried CCF and enabled on i.MX8MM in my last
> > patchset. But I have to add lots of code based on your version, that
> > introduces complexity for now.
> >
> >>
> >>> We might try to switch to CCF again in future,
> >>
> >> I'm a bit skeptical about such statements. It never works like that -
> >> after it is accepted it would become a "legacy code which we do need to
> preserve".
> >>
> >>> but we hope
> >>> i.MX8MM/N support could land in upstream soon. It has been pending
> >>> for months.
> >>
> >> Was the CCF the reason for the i.MX8 not being pulled for so long?
> >
> > I am not saying so.
> >
> > The first version to support i.MX8MM is in 2019-01-28. Then I switch
> > to CCF and posted out new version in 2019-4-30. we have many 3rd
> > parties want to use mainline U-Boot, not our vendor tree.I hope
> > i.MX8MM/N could land in the coming merge window, introducing more to
> > CCF add risk.
> 
> Offtopic: Just my 2 cents, but people have good reasons for using mainline
> instead of the NXP vendor tree. And as you (NXP) realize this, I'm still
> wondering, why you don't just develop the SoC-support against mainline
> instead of your downstream tree in the first place.
> 
> It seems like you still put lots of resources in developing downstream and
> promoting the downstream tree and only very little in bringing the changes to
> upstream. So far there have been almost no responses to the i.MX8MM
> patches except for the CCF-related discussions with Lukasz.

Quality is very important in a release cycle, that is to support mass production
for customers. For releases not dedicated for a single SoC, we need to cover
lots of SoCs, not just a single SoC, in NXP release cycle, i.MX6/7/8 will all go
through test cycle. Following upstream release cycle for i.MX family will
require huge efforts. Anyway we are trying to upstream our latest code
as early as possible.

> 
> This probably means that nobody else is working on upstreaming, not even
> some other NXP developers, that could test and review your patches. So you
> can't expect to make any progress like this, no matter if CCF is used or not.

We do have distro partners only use upstream code.

> 
> We (Kontron Electronics) are interested in good mainline support for
> i.MX8MM and as I already announced I will try to use some of the time I have
> to work on i.MX8MM to provide feedback to your patches.

Thanks.

> 
> But in my opinion it would be a good idea for NXP to finally improve their
> upstreaming efforts. You could learn a lesson from other vendors like for
> example ST. They only started contributing their "first"
> microprocessor platform (STM32MP1) not too long ago, but figured out that
> mainlining their changes is very important from the beginning.
> To me it seems that Freescale/NXP has failed to realize this for many years.

Things are changing, we are putting more resources to community.

> 
> Sorry for the rant. This has nothing to do with you personally, Peng.

Understand.

Thanks,
Peng.

> 
> Regards,
> Frieder
> 
> >
> > Thanks,
> > Peng.
> >
> >>
> >>>
> >>> Regards,
> >>> Peng.
> >>>
> >>>>
> >>>>>
> >>>>> Bai Ping (1):
> >>>>>    imx8mq: Update the ddrc QoS setting for B1 chip
> >>>>>
> >>>>> Jacky Bai (2):
> >>>>>    driver: ddr: Refine the ddr init driver on imx8m
> >>>>>    ddr: imx8m: Fix the ddr init hang on imx8mq
> >>>>>
> >>>>> Peng Fan (47):
> >>>>>    linux: compat: guard PAGE_SIZE
> >>>>>    dm: clk: ignore default settings when node not valid
> >>>>>    pinctrl: imx: use devfdt_get_addr_size_index
> >>>>>    i2c: mxc: add CONFIG_CLK support
> >>>>>    tools: imx8m_image: align spl bin image size
> >>>>>    ddr: imx8m: fix ddr firmware location when enable SPL OF
> >>>>>    tools: imx8mimage: fix HDMI/FIT parsing
> >>>>>    imx8m: add image cfg for i.MX8MM lpddr4
> >>>>>    imx: add IMX8MQ kconfig entry
> >>>>>    imx: add IMX8MM kconfig entry
> >>>>>    imx: imx8mm: add clock bindings header
> >>>>>    imx: add i.MX8MM cpu type
> >>>>>    imx: spl: add spl_board_boot_device for i.MX8MM
> >>>>>    imx8m: update imx-regs for i.MX8MM
> >>>>>    imx: add get_cpu_rev support for i.MX8MM
> >>>>>    imx8m: rename clock to clock_imx8mq
> >>>>>    imx8m: restructure clock.h
> >>>>>    imx8m: add clk support for i.MX8MM
> >>>>>    imx8m: soc: probe clk before relocation
> >>>>>    imx8m: add pin header for i.MX8MM
> >>>>>    imx: add i.MX8MM PE property
> >>>>>    imx8m: Fix MMU table issue for OPTEE memory
> >>>>>    imx8m: set BYPASS ID SWAP to avoid AXI bus errors
> >>>>>    imx8m: soc: enable SCTR clock before timer init
> >>>>>    serial: Kconfig: make MXC_UART usable for MX7 and IMX8M
> >>>>>    clk: imx: add Kconfig entry for i.MX8MM
> >>>>>    clk: imx: add i.MX8MM clk driver
> >>>>>    imx: add i.MX8MM EVK board support
> >>>>>    imx: add i.MX8MN kconfig entry
> >>>>>    imx8mn: support get_cpu_rev
> >>>>>    imx8m: add clk support for i.MX8MN
> >>>>>    imx8mn: set BYPASS ID SWAP to avoid AXI bus errors
> >>>>>    imx: add i.MX8MN PE property
> >>>>>    imx8mn: add pin header
> >>>>>    imx: spl: use spl_board_boot_device for i.MX8MN
> >>>>>    spl: pass args to board_return_to_bootrom
> >>>>>    imx: add rom api support
> >>>>>    imx: cpu: restrict get_boot_device
> >>>>>    imx8mn: add get_boot_device
> >>>>>    power: pmic: add SPL_DM_PMIC
> >>>>>    tools: imx8mimage: add ROM VERSION
> >>>>>    pinctrl: imx8m: support i.MX8MN
> >>>>>    tools: imx8m_image: support ddr4 firmware
> >>>>>    clk: imx: add i.MX8MN clk support
> >>>>>    imx8m: add i.MX8MN ddr4 image cfg file
> >>>>>    imx: add dtsi for i.MX8MN
> >>>>>    imx: add i.MX8MN DDR4 board support
> >>>>>
> >>>>> Ye Li (2):
> >>>>>    imx8m: Configure trustzone region 0 for non-secure access
> >>>>>    ddr: imx8m: Fix ddr4 driver build issue
> >>>>>
> >>>>>   arch/arm/dts/Makefile                              |
> 4
> >> +-
> >>>>>   arch/arm/dts/imx8mm-evk-u-boot.dtsi                |   92
> +
> >>>>>   arch/arm/dts/imx8mm-evk.dts                        |
> 235
> >> +++
> >>>>>   arch/arm/dts/imx8mm-pinfunc.h                      |
> 629
> >>>> +++++++
> >>>>>   arch/arm/dts/imx8mm.dtsi                           |
> 733
> >>>> ++++++++
> >>>>>   arch/arm/dts/imx8mn-ddr4-evk-u-boot.dtsi           |   92 +
> >>>>>   arch/arm/dts/imx8mn-ddr4-evk.dts                   |  221
> >> +++
> >>>>>   arch/arm/dts/imx8mn-pinfunc.h                      |  646
> >>>> +++++++
> >>>>>   arch/arm/dts/imx8mn.dtsi                           |  712
> >>>> +++++++
> >>>>>   arch/arm/include/asm/arch-imx/cpu.h                |    7
> +
> >>>>>   arch/arm/include/asm/arch-imx8m/clock.h            |  494
> >> +----
> >>>>>   arch/arm/include/asm/arch-imx8m/clock_imx8mm.h     |  465
> >>>> +++++
> >>>>>   arch/arm/include/asm/arch-imx8m/clock_imx8mq.h     |  424
> >> +++++
> >>>>>   arch/arm/include/asm/arch-imx8m/imx-regs.h         |   75
> +-
> >>>>>   arch/arm/include/asm/arch-imx8m/imx8mm_pins.h      |  691
> >>>> +++++++
> >>>>>   arch/arm/include/asm/arch-imx8m/imx8mn_pins.h      |  763
> >>>> ++++++++
> >>>>>   arch/arm/include/asm/mach-imx/iomux-v3.h           |    4
> +
> >>>>>   arch/arm/include/asm/mach-imx/mxc_i2c.h            |    2
> +
> >>>>>   arch/arm/include/asm/mach-imx/sys_proto.h          |   42
> +
> >>>>>   arch/arm/mach-imx/Kconfig                          |
> 4 +
> >>>>>   arch/arm/mach-imx/Makefile                         |
> 2 +
> >>>>>   arch/arm/mach-imx/cpu.c                            |
> 16
> >> +-
> >>>>>   arch/arm/mach-imx/imx8m/Kconfig                    |
> 28
> >> +-
> >>>>>   arch/arm/mach-imx/imx8m/Makefile                   |
> 4
> >> +-
> >>>>>   arch/arm/mach-imx/imx8m/clock_imx8mm.c             |
> 707
> >>>> +++++++
> >>>>>   .../arm/mach-imx/imx8m/{clock.c => clock_imx8mq.c} |    7 +-
> >>>>>   arch/arm/mach-imx/imx8m/clock_slice.c              |  815
> >>>> ++++++++
> >>>>>   arch/arm/mach-imx/imx8m/imximage-8mm-lpddr4.cfg    |
> 16 +
> >>>>>   arch/arm/mach-imx/imx8m/imximage-8mn-ddr4.cfg      |
> 17 +
> >>>>>   arch/arm/mach-imx/imx8m/soc.c                      |
> 162
> >> +-
> >>>>>   arch/arm/mach-imx/spl.c                            |
> 8 +
> >>>>>   arch/arm/mach-imx/spl_imx_romapi.c                 |  292
> >> +++
> >>>>>   arch/arm/mach-rockchip/rk3288-board-tpl.c          |    5 +-
> >>>>>   arch/arm/mach-rockchip/rk3368-board-tpl.c          |    5 +-
> >>>>>   arch/arm/mach-rockchip/rk3399-board-spl.c          |    5 +-
> >>>>>   arch/arm/mach-rockchip/rk3399-board-tpl.c          |    5 +-
> >>>>>   board/freescale/imx8mm_evk/Kconfig                 |   12
> +
> >>>>>   board/freescale/imx8mm_evk/MAINTAINERS             |
> 6
> >> +
> >>>>>   board/freescale/imx8mm_evk/Makefile                |   12
> +
> >>>>>   board/freescale/imx8mm_evk/imx8mm_evk.c            |
> 90
> >> +
> >>>>>   board/freescale/imx8mm_evk/lpddr4_timing.c         | 1980
> >>>>> ++++++++++++++++++++
> >>>>> board/freescale/imx8mm_evk/spl.c                   |  216
> +++
> >>>>> board/freescale/imx8mn_evk/Kconfig                 |   14 +
> >>>>> board/freescale/imx8mn_evk/MAINTAINERS             |    6 +
> >>>>> board/freescale/imx8mn_evk/Makefile                |   12 +
> >>>>> board/freescale/imx8mn_evk/ddr4_timing.c           | 1214
> >>>>> ++++++++++++ board/freescale/imx8mn_evk/imx8mn_evk.c
> >>>> |
> >>>>> 85 + board/freescale/imx8mn_evk/spl.c                   |   91
> >> +
> >>>>> board/freescale/imx8mq_evk/lpddr4_timing.c         |   16 +-
> >>>>> common/spl/spl_bootrom.c                           |    7
> +-
> >>>>> configs/imx8mm_evk_defconfig                       |   51 +
> >>>>> configs/imx8mn_ddr4_evk_defconfig                  |   55 +
> >>>>> drivers/clk/clk-uclass.c                           |    3 +
> >>>>> drivers/clk/imx/Kconfig                            |   14 +
> >>>>> drivers/clk/imx/Makefile                           |    1 +
> >>>>> drivers/clk/imx/clk-imx8mm.c                       |  121 ++
> >>>>> drivers/ddr/imx/imx8m/Kconfig                      |    6 +
> >>>>> drivers/ddr/imx/imx8m/Makefile                     |    4 +-
> >>>>> drivers/ddr/imx/imx8m/ddr4_init.c                  |  113 --
> >>>>> drivers/ddr/imx/imx8m/ddr_init.c                   |  168 ++
> >>>>> drivers/ddr/imx/imx8m/ddrphy_utils.c               |    4 +
> >>>>> drivers/ddr/imx/imx8m/helper.c                     |   22 +-
> >>>>> drivers/ddr/imx/imx8m/lpddr4_init.c                |  188 --
> >>>>> drivers/i2c/mxc_i2c.c                              |   24 +-
> >>>>> drivers/pinctrl/nxp/pinctrl-imx.c                  |    4 +-
> >>>>> drivers/pinctrl/nxp/pinctrl-imx8m.c                |    1 +
> >>>>> drivers/power/pmic/Kconfig                         |   12 +
> >>>>> drivers/power/pmic/Makefile                        |    2 +-
> >>>>> drivers/serial/Kconfig                             |    2 +-
> >>>>> include/configs/imx8mm_evk.h                       |  200 ++
> >>>>> include/configs/imx8mn_evk.h                       |  198 ++
> >>>>> include/dt-bindings/clock/imx8mm-clock.h           |  244 +++
> >>>>> include/dt-bindings/clock/imx8mn-clock.h           |  215 +++
> >>>>> include/imximage.h                                 |    1 +
> >>>>> include/linux/compat.h                             |    2 +
> >>>>> include/power/pmic.h                               |    2 +-
> >>>>> include/spl.h                                      |    3 +-
> >>>>> tools/imx8m_image.sh                               |   15
> +-
> >>>>> tools/imx8mimage.c                                 |   31
> +-
> >> 79
> >>>> files
> >>>>> changed, 13082 insertions(+), 814 deletions(-) create mode 100644
> >>>>> arch/arm/dts/imx8mm-evk-u-boot.dtsi create mode 100644
> >>>>> arch/arm/dts/imx8mm-evk.dts create mode 100644
> >>>>> arch/arm/dts/imx8mm-pinfunc.h create mode 100644
> >>>>> arch/arm/dts/imx8mm.dtsi create mode 100644
> >>>>> arch/arm/dts/imx8mn-ddr4-evk-u-boot.dtsi create mode 100644
> >>>>> arch/arm/dts/imx8mn-ddr4-evk.dts create mode 100644
> >>>>> arch/arm/dts/imx8mn-pinfunc.h create mode 100644
> >>>>> arch/arm/dts/imx8mn.dtsi create mode 100644
> >>>>> arch/arm/include/asm/arch-imx8m/clock_imx8mm.h create mode
> >> 100644
> >>>>> arch/arm/include/asm/arch-imx8m/clock_imx8mq.h create mode
> >> 100644
> >>>>> arch/arm/include/asm/arch-imx8m/imx8mm_pins.h create mode
> >> 100644
> >>>>> arch/arm/include/asm/arch-imx8m/imx8mn_pins.h create mode
> >> 100644
> >>>>> arch/arm/mach-imx/imx8m/clock_imx8mm.c rename
> >>>>> arch/arm/mach-imx/imx8m/{clock.c => clock_imx8mq.c} (99%) create
> >>>> mode
> >>>>> 100644 arch/arm/mach-imx/imx8m/imximage-8mm-lpddr4.cfg create
> >>>> mode
> >>>>> 100644 arch/arm/mach-imx/imx8m/imximage-8mn-ddr4.cfg create
> >> mode
> >>>>> 100644 arch/arm/mach-imx/spl_imx_romapi.c create mode 100644
> >>>>> board/freescale/imx8mm_evk/Kconfig create mode 100644
> >>>>> board/freescale/imx8mm_evk/MAINTAINERS create mode 100644
> >>>>> board/freescale/imx8mm_evk/Makefile create mode 100644
> >>>>> board/freescale/imx8mm_evk/imx8mm_evk.c create mode 100644
> >>>>> board/freescale/imx8mm_evk/lpddr4_timing.c create mode 100644
> >>>>> board/freescale/imx8mm_evk/spl.c create mode 100644
> >>>>> board/freescale/imx8mn_evk/Kconfig create mode 100644
> >>>>> board/freescale/imx8mn_evk/MAINTAINERS create mode 100644
> >>>>> board/freescale/imx8mn_evk/Makefile create mode 100644
> >>>>> board/freescale/imx8mn_evk/ddr4_timing.c create mode 100644
> >>>>> board/freescale/imx8mn_evk/imx8mn_evk.c create mode 100644
> >>>>> board/freescale/imx8mn_evk/spl.c create mode 100644
> >>>>> configs/imx8mm_evk_defconfig create mode 100644
> >>>>> configs/imx8mn_ddr4_evk_defconfig create mode 100644
> >>>>> drivers/clk/imx/clk-imx8mm.c delete mode 100644
> >>>>> drivers/ddr/imx/imx8m/ddr4_init.c create mode 100644
> >>>>> drivers/ddr/imx/imx8m/ddr_init.c delete mode 100644
> >>>>> drivers/ddr/imx/imx8m/lpddr4_init.c create mode 100644
> >>>>> include/configs/imx8mm_evk.h create mode 100644
> >>>>> include/configs/imx8mn_evk.h create mode 100644
> >>>>> include/dt-bindings/clock/imx8mm-clock.h create mode 100644
> >>>>> include/dt-bindings/clock/imx8mn-clock.h
> >>>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>> Best regards,
> >>>>
> >>>> Lukasz Majewski
> >>>>
> >>>> --
> >>>>
> >>>> DENX Software Engineering GmbH,      Managing Director: Wolfgang
> >>>> Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell,
> >>>> Germany Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email:
> >>>> lukma at denx.de
> >>
> >>
> >>
> >>
> >> Best regards,
> >>
> >> Lukasz Majewski
> >>
> >> --
> >>
> >> DENX Software Engineering GmbH,      Managing Director: Wolfgang
> Denk
> >> HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
> >> Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email:
> >> lukma at denx.de
> > _______________________________________________
> > U-Boot mailing list
> > U-Boot at lists.denx.de
> > https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flist
> >
> s.denx.de%2Flistinfo%2Fu-boot&data=02%7C01%7Cpeng.fan%40nxp.co
> m%7C22bf1d278ff84b83992808d703801185%7C686ea1d3bc2b4c6fa92cd99
> c5c301635%7C0%7C0%7C636981720896878860&sdata=jPqn%2BnYKN
> pYmr9p1JyMtk9FsthzaQ7yumcQlILXVM%2Bo%3D&reserved=0
> >


More information about the U-Boot mailing list