[U-Boot] [i.MX8MM+CCF 00/41] i.MX8MM + CCF

Peng Fan
2019-05-06T09:08:46Z

Hi Frieder,

> Subject: Re: [U-Boot] [i.MX8MM+CCF 00/41] i.MX8MM + CCF
>
> On 06.05.19 09:57, Frieder Schrempf wrote:
> > Hi Peng,
> >
> > I'm trying to add support for a board with i.MX8MM. First I applied
> > Lukasz's CCF patches and your patches to U-Boot 2019.04 and tried to
> > build imx8mm_evk config. But I'm getting build errors (see below).

Thanks for trying. There was no build error, might be some new change,
I'll fix that in new version patchset.

>
> The build works if I enable the OTP fuse driver and disable I2C support.
> In clock_imx8mm.c enable_i2c_clk() seems to be missing, or maybe the i2c
> driver needs to use the new clock framework now?

I have the i2c mxc driver adapted to this new framework, clock is ok, but i2c probe
not work as expected, I am still trying to find out what's wrong.

>
> >
> > Are there any other patches needed?
> > What things are still missing to get i.MX8MM running in U-Boot?
>
> It seems like this still needs a bit of work. I also see some CONFIG options
> defined in the headers, that should be moved to defconfig.

I'll clean up those in new version. Since this patchset depends on Lukasz's CCF,
so I expect Lukasz's new version patchset, then I'll post new version.

Lukasz,

There are a few CCF fixes that need you to check, or you could take those into
your patches.

Thanks,
Peng.

>
> >
> > Thanks,
> > Frieder
> >
> > | aarch64-ktn-linux-ld.bfd: cmd/built-in.o: in function `do_fuse':
> > | /home/frieder/repos/u-boot/cmd/fuse.c:68: undefined reference to
> > `fuse_read'
> > | aarch64-ktn-linux-ld.bfd: /home/frieder/repos/u-boot/cmd/fuse.c:86:
> > undefined reference to `fuse_sense'
> > | aarch64-ktn-linux-ld.bfd: /home/frieder/repos/u-boot/cmd/fuse.c:105:
> > undefined reference to `fuse_prog'
> > | aarch64-ktn-linux-ld.bfd: /home/frieder/repos/u-boot/cmd/fuse.c:119:
> > undefined reference to `fuse_override'
> > | aarch64-ktn-linux-ld.bfd: drivers/i2c/built-in.o: in function
> > `mxc_i2c_probe':
> > | /home/frieder/repos/u-boot/drivers/i2c/mxc_i2c.c:824: undefined
> > reference to `enable_i2c_clk'
> > | aarch64-ktn-linux-ld.bfd:
> > /home/frieder/repos/u-boot/drivers/i2c/mxc_i2c.c:853: undefined
> > reference to `enable_i2c_clk'
> >
> >
> > On 30.04.19 12:17, Peng Fan wrote:
> >> This patch set is based Lukasz V3 CCF patchset, [PATCH v3 00/11] clk:
> >> Port Linux common clock framework [CCF] to U-boot (tag: 5.0-rc3)
> >> https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgit
> >>
> hub.com%2Flmajewski%2Fu-boot-dfu%2Fcommits%2FCCF-v3&amp;data=02
> %7C01%
> >>
> 7Cpeng.fan%40nxp.com%7C92e3d4126a6a485ca3e808d6d1fc8fcb%7C686ea
> 1d3bc2
> >>
> b4c6fa92cd99c5c301635%7C0%7C0%7C636927280011703542&amp;sdata=
> 5hIVJtM6
> >> PZOy2o3NywWIrI7Ogmgjjz%2B92S1tdFTmTso%3D&amp;reserved=0
> >>
> >> Added a few fixes to Lukasz's v3 patchset.
> >> Introduced clk-gate/composite
> >> Added set rate support
> >> Per my understanding, U-Boot CCF will not support mux reparent, and
> >> support rate prograte setting to parent automatically. So new clk
> >> feature added follow this rule.
> >>
> >> There are many warnings when importing linux ccf code, I did not
> >> modify them all.
> >>
> >> The rest patches are for i.MX8MM, part of legacy clk code are still
> >> kept, because we are hard to enable CCF at very early stage, we set
> >> malloc space to DRAM when dram initialized in spl stage, so we have
> >> limited SRAM for uclass dm and dm clk, so keep the DRAM PLL related
> >> setting with legacy clk code which use small ram.
> >>
> >> The u-boot-spl.bin now is about 100KB without ddr firmware,usb stack
> >> and hab, so really large......
> >> I am thinking what we could do to shrink the size, welcome any
> >> suggestions.
> >>
> >> Not expect this patchset could be merged, because of the CCF/clock
> >> code change, but since the clock part blocks i.MX8MM upstream, just
> >> would like to speed up the development with community and move on.
> >>
> >> Peng Fan (40):
> >>    clk: correct get clk_x pointer
> >>    clk: fixed-factor: fix get clk_fixed_factor
> >>    clk: introduce clk_dev_binded
> >>    clk: use clk_dev_binded
> >>    clk-provider: sync more clk flags from Linux Kernel
> >>    cmd: clk: print err value when clk_get_rate failed
> >>    clk: mux: add set parent support
> >>    clk: export mux/divider ops
> >>    clk: add clk-gate support
> >>    divider set rate supporrt
> >>    clk: fixed_rate: export clk_fixed_rate
> >>    clk: fixed_rate: add pre reloc flag
> >>    clk: imx: import clk heplers
> >>    clk: imx: gate2 add set rate
> >>    linux: compat: guard PAGE_SIZE
> >>    drivers: core: use strcmp when find device by name
> >>    ddr: imx8m: fix ddr firmware location when enable SPL OF
> >>    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 pll14xx driver
> >>    clk: add composite clk support
> >>    clk: imx: add i.MX8MM composite clk support
> >>    clk: imx: add i.MX8MM clk driver
> >>    imx: add i.MX8MM EVK board support
> >>
> >> Ye Li (1):
> >>    imx8m: Configure trustzone region 0 for non-secure access
> >>
> >>   arch/arm/dts/Makefile                              |
>    3 +-
> >>   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/include/asm/arch-imx/cpu.h                |
> 6 +
> >>   arch/arm/include/asm/arch-imx8m/clock.h            |  493
> +----
> >>   arch/arm/include/asm/arch-imx8m/clock_imx8mm.h     |  387
> ++++
> >>   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/mach-imx/iomux-v3.h           |    4
> +
> >>   arch/arm/include/asm/mach-imx/sys_proto.h          |    8 +
> >>   arch/arm/mach-imx/cpu.c                            |
>    12 +
> >>   arch/arm/mach-imx/imx8m/Kconfig                    |
> 17 +-
> >>   arch/arm/mach-imx/imx8m/Makefile                   |
>   4 +-
> >>   arch/arm/mach-imx/imx8m/clock_imx8mm.c             |  2
> 92 +++
> >>   .../arm/mach-imx/imx8m/{clock.c => clock_imx8mq.c} |    5 +-
> >>   arch/arm/mach-imx/imx8m/clock_slice.c              |  461
> +++++
> >>   arch/arm/mach-imx/imx8m/soc.c                      |
> 112 +-
> >>   arch/arm/mach-imx/spl.c                            |
>    8 +
> >>   board/freescale/imx8mm_evk/Kconfig                 |   1
> 2 +
> >>   board/freescale/imx8mm_evk/MAINTAINERS             |
> 6 +
> >>   board/freescale/imx8mm_evk/Makefile                |   1
> 2 +
> >>   board/freescale/imx8mm_evk/imx8mm_evk.c            |   9
> 0 +
> >>   board/freescale/imx8mm_evk/lpddr4_timing.c         | 1980
> >> ++++++++++++++++++++
> >>   board/freescale/imx8mm_evk/spl.c                   |  21
> 6 +++
> >>   cmd/clk.c
>   |    2 +
> >>   configs/imx8mm_evk_defconfig                       |
> 52 +
> >>   drivers/clk/Kconfig                                |
> 14 +
> >>   drivers/clk/Makefile                               |
>    3 +-
> >>   drivers/clk/clk-composite.c                        |  165
> ++
> >>   drivers/clk/clk-divider.c                          |   92
> +-
> >>   drivers/clk/clk-fixed-factor.c                     |    2 +-
> >>   drivers/clk/clk-gate.c                             |  1
> 51 ++
> >>   drivers/clk/clk-mux.c                              |
> 76 +-
> >>   drivers/clk/clk.c                                  |
>    8 +
> >>   drivers/clk/clk_fixed_rate.c                       |    9
> +-
> >>   drivers/clk/imx/Kconfig                            |
> 9 +
> >>   drivers/clk/imx/Makefile                           |
>   1 +
> >>   drivers/clk/imx/clk-composite-8m.c                 |  170
> ++
> >>   drivers/clk/imx/clk-gate2.c                        |   15
> +-
> >>   drivers/clk/imx/clk-imx8mm.c                       |  4
> 15 ++++
> >>   drivers/clk/imx/clk-pfd.c                          |
> 2 +-
> >>   drivers/clk/imx/clk-pll14xx.c                      |  377
> ++++
> >>   drivers/clk/imx/clk-pllv3.c                        |    2
> +-
> >>   drivers/clk/imx/clk.h                              |
> 106 ++
> >>   drivers/core/uclass.c                              |
>   2 +-
> >>   drivers/ddr/imx/imx8m/helper.c                     |   1
> 2 +-
> >>   drivers/serial/Kconfig                             |
> 2 +-
> >>   include/clk.h
> |    9 +
> >>   include/configs/imx8mm_evk.h                       |  1
> 99 ++
> >>   include/dt-bindings/clock/imx8mm-clock.h           |  244
> +++
> >>   include/linux/clk-provider.h                       |   74
> +
> >>   include/linux/compat.h                             |
>   2 +
> >>   55 files changed, 8728 insertions(+), 494 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/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/mach-imx/imx8m/clock_imx8mm.c
> >>   rename arch/arm/mach-imx/imx8m/{clock.c => clock_imx8mq.c}
> (99%)
> >>   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 configs/imx8mm_evk_defconfig
> >>   create mode 100644 drivers/clk/clk-composite.c
> >>   create mode 100644 drivers/clk/clk-gate.c
> >>   create mode 100644 drivers/clk/imx/clk-composite-8m.c
> >>   create mode 100644 drivers/clk/imx/clk-imx8mm.c
> >>   create mode 100644 drivers/clk/imx/clk-pll14xx.c
> >>   create mode 100644 include/configs/imx8mm_evk.h
> >>   create mode 100644 include/dt-bindings/clock/imx8mm-clock.h
> >>