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

Schrempf Frieder frieder.schrempf at kontron.de
Mon Jul 8 08:41:26 UTC 2019


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://patchwork.ozlabs.org/cover/1093140/
>>>>> 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://github.com/MrVan/u-boot/tree/8m-7-5
>>>
>>>>
>>>> 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.

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 (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.

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.

Sorry for the rant. This has nothing to do with you personally, 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://lists.denx.de/listinfo/u-boot
> 


More information about the U-Boot mailing list