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

Schrempf Frieder
2019-05-06T08:26:37Z

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

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?

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

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