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

Lukasz Majewski lukma at denx.de
Mon Jul 8 08:15:30 UTC 2019


Hi Peng,

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

Is it better to add a hand made composite clock code instead of
aligning it to Linux mainline just from the outset?

> We also needs clock settings, not just read.

Is the code for "setting clocks" already upstreamed somewhere (e.g.
Linux) or is it only introduced for U-Boot?

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

You will have to add this complexity anyway after people start
demanding new clocks for IPs which they need to enable.

Moreover, the CCF v5 was posted 2 weeks ago - wasn't it enough time for
applying your patches from v4?

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

Maybe the version posted in 2019-01-28 was just not ready for being
pulled?

It happens that the community wants to avoid problems encountered
earlier with other SoCs (like i.MX6, i.MX7), so the discussion takes
time.

(The similar situation is with other projects too - how many release
cycles it takes to add new SoC in Linux? Or new port to glibc?).

> we have many 3rd parties want to use mainline U-Boot, 
> not our vendor tree.

There must be a reason that they want the U-Boot mainline. IMHO the
main reason for it is that people not only from a single company want
to add the code, so they need to discuss (and get the agreement) to
avoid stepping in each other's toes.

And the discussion/tests takes time ...

> I hope
> i.MX8MM/N could land in the coming merge window,

This depends solely on the code quality I think. 

> introducing more to CCF add risk.

Risk for not being accepted?

I do see however other risk - the i.MX8 will gain one-off clock support
code instead of adopting the CCF just from the outset.


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




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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20190708/c524f511/attachment.sig>


More information about the U-Boot mailing list