> 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....@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: > >>>> lu...@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: > >> lu...@denx.de > > _______________________________________________ > > U-Boot mailing list > > U-Boot@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 > > _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot