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

Schrempf Frieder
2019-05-06T07:57:03Z

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

Are there any other patches needed?
What things are still missing to get i.MX8MM running in U-Boot?

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://github.com/lmajewski/u-boot-dfu/commits/CCF-v3
>
> 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 | 292 +++
> .../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 | 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 +++
> 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 | 151 ++
> 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 | 415 ++++
> 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 | 12 +-
> drivers/serial/Kconfig | 2 +-
> include/clk.h | 9 +
> include/configs/imx8mm_evk.h | 199 ++
> 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
>