[PATCH 00/16] Refactor the architecture parts of mt7628

Stefan Roese
2020-01-09T07:52:35Z

Hi Weijie,

On 08.01.20 03:59, Weijie Gao wrote:
> This patch series are divided into two parts:
>
> The main part is to rewrite the whole architecture code of mt7628:
> 1. Lock parts of the d-cache for initial stack so the rest of the code can
> be reimplemented in C.
> 2. Memory controller & DDR initialization have been fully written to support
> detecting DDR size automatically.
> 3. DDR calibration has also been reimplemented with a clear logic.
> 4. Implemented a new sysreset driver to take advantage of the reset
> controller so we can drop the use of syscon-based sysreset to reduce size.
>
> The second part is to add SPL support for mt7628:
> 1. With SPL enabled we can build the ROM-bootable and RAM-bootable binary
> simultaneously, and we can drop RAM boot related configs and defconfig
> files.
> 2. Generate compressed u-boot.bin image for SPL to reduce size of final
> combined binary.
> 3. Add a demo board (mt7628_rfb) to make use of the compressed image.

Many thanks for working on this. Unfortunately I didn't receive these patches
directly (I remember that you had problems sending patches to me before).

I did a quick test on the LinkIt board and have a few questions before
I start reviewing the patches in more detail:

I don't see any serial output from the SPL. I assume that the muxing
for UART2 is missing here in the SPL image (see board_debug_uart_init)?

Did you compare the boot speed with using SPL + main U-Boot vs U-Boot
only?

In the current combined image the non-compressed U-Boot proper is
included. Why did you not include the LZMA compressed image per default?
Is the decompression too slow?

More comments / questions will follow in a few days.

> Weijie Gao (16):
> configs: mtmips: add missing board selection for
> gardena-smart-gateway-mt7688
> mips: add support to restore exception vector base before booting
> linux
> mips: mtmips: add predefined i-cache/d-cache size and linesize
> mips: add an option to support customized get_tbclk()
> mips: add an option to support initialize SRAM for initial stack
> mips: start.S: avoid overwriting outside gd when clearing global data
> in stack
> sysreset: add reset controller based reboot driver
> mips: mtmips: rewrite lowlevel codes of mt7628
> mips: dts: rename mt7628a.dtsi to mt7628.dtsi
> mips: unconditionally enable u_boot_list section in u-boot-spl.lds
> lib: enable lzma decompression support for SPL build
> Makefile: add support to generate LZMA compressed u-boot image
> tools: binman: add etype file for u-boot-lzma-img
> mips: mtmips: add SPL support
> mips: mtmips: enable SPL for all boards
> mips: mtmips: add support for mt7628-rfb
>
> Makefile | 22 ++
> arch/mips/Kconfig | 32 ++
> arch/mips/cpu/start.S | 10 +-
> arch/mips/cpu/time.c | 2 +
> arch/mips/cpu/u-boot-spl.lds | 2 -
> arch/mips/dts/Makefile | 1 +
> .../mips/dts/gardena-smart-gateway-mt7688.dts | 2 +-
> arch/mips/dts/linkit-smart-7688.dts | 2 +-
> arch/mips/dts/mediatek,mt7628-rfb-u-boot.dtsi | 24 ++
> arch/mips/dts/mediatek,mt7628-rfb.dts | 67 ++++
> arch/mips/dts/mt7628-u-boot.dtsi | 25 ++
> arch/mips/dts/{mt7628a.dtsi => mt7628.dtsi} | 78 +----
> arch/mips/include/asm/global_data.h | 3 +
> arch/mips/lib/bootm.c | 9 +
> arch/mips/mach-mtmips/Kconfig | 122 ++-----
> arch/mips/mach-mtmips/Makefile | 8 +-
> arch/mips/mach-mtmips/cpu.c | 58 +---
> arch/mips/mach-mtmips/ddr_cal.c | 211 +++++++++++
> arch/mips/mach-mtmips/ddr_calibrate.c | 309 -----------------
> arch/mips/mach-mtmips/ddr_init.c | 194 +++++++++++
> arch/mips/mach-mtmips/include/mach/ddr.h | 52 +++
> arch/mips/mach-mtmips/include/mach/mc.h | 180 ++++++++++
> arch/mips/mach-mtmips/lowlevel_init.S | 328 ------------------
> arch/mips/mach-mtmips/mt7628/Makefile | 5 +
> arch/mips/mach-mtmips/mt7628/ddr.c | 173 +++++++++
> arch/mips/mach-mtmips/mt7628/init.c | 109 ++++++
> arch/mips/mach-mtmips/mt7628/lowlevel_init.S | 155 +++++++++
> arch/mips/mach-mtmips/mt7628/mt7628.h | 90 +++++
> arch/mips/mach-mtmips/mt76xx.h | 32 --
> arch/mips/mach-mtmips/spl.c | 23 ++
> board/gardena/smart-gateway-mt7688/board.c | 2 +
> board/mediatek/mt7628/Kconfig | 12 +
> board/mediatek/mt7628/MAINTAINERS | 8 +
> board/mediatek/mt7628/Makefile | 4 +
> board/mediatek/mt7628/board.c | 25 ++
> board/mediatek/mt7628/spl_load.c | 102 ++++++
> ...gardena-smart-gateway-mt7688-ram_defconfig | 74 ----
> .../gardena-smart-gateway-mt7688_defconfig | 12 +-
> configs/linkit-smart-7688-ram_defconfig | 65 ----
> configs/linkit-smart-7688_defconfig | 11 +-
> configs/mt7628_rfb_defconfig | 47 +++
> drivers/sysreset/Kconfig | 6 +
> drivers/sysreset/Makefile | 1 +
> drivers/sysreset/sysreset_resetctl.c | 48 +++
> .../configs/gardena-smart-gateway-mt7688.h | 18 +-
> include/configs/linkit-smart-7688.h | 18 +-
> include/configs/mt7628.h | 57 +++
> lib/Kconfig | 5 +
> lib/Makefile | 1 +
> tools/binman/etype/u_boot_lzma_img.py | 27 ++
> 50 files changed, 1826 insertions(+), 1045 deletions(-)
> create mode 100644 arch/mips/dts/mediatek,mt7628-rfb-u-boot.dtsi
> create mode 100644 arch/mips/dts/mediatek,mt7628-rfb.dts
> create mode 100644 arch/mips/dts/mt7628-u-boot.dtsi
> rename arch/mips/dts/{mt7628a.dtsi => mt7628.dtsi} (81%)
> create mode 100644 arch/mips/mach-mtmips/ddr_cal.c
> delete mode 100644 arch/mips/mach-mtmips/ddr_calibrate.c
> create mode 100644 arch/mips/mach-mtmips/ddr_init.c
> create mode 100644 arch/mips/mach-mtmips/include/mach/ddr.h
> create mode 100644 arch/mips/mach-mtmips/include/mach/mc.h
> delete mode 100644 arch/mips/mach-mtmips/lowlevel_init.S
> create mode 100644 arch/mips/mach-mtmips/mt7628/Makefile
> create mode 100644 arch/mips/mach-mtmips/mt7628/ddr.c
> create mode 100644 arch/mips/mach-mtmips/mt7628/init.c
> create mode 100644 arch/mips/mach-mtmips/mt7628/lowlevel_init.S
> create mode 100644 arch/mips/mach-mtmips/mt7628/mt7628.h
> delete mode 100644 arch/mips/mach-mtmips/mt76xx.h
> create mode 100644 arch/mips/mach-mtmips/spl.c
> create mode 100644 board/mediatek/mt7628/Kconfig
> create mode 100644 board/mediatek/mt7628/MAINTAINERS
> create mode 100644 board/mediatek/mt7628/Makefile
> create mode 100644 board/mediatek/mt7628/board.c
> create mode 100644 board/mediatek/mt7628/spl_load.c
> delete mode 100644 configs/gardena-smart-gateway-mt7688-ram_defconfig
> delete mode 100644 configs/linkit-smart-7688-ram_defconfig
> create mode 100644 configs/mt7628_rfb_defconfig
> create mode 100644 drivers/sysreset/sysreset_resetctl.c
> create mode 100644 include/configs/mt7628.h
> create mode 100644 tools/binman/etype/u_boot_lzma_img.py
>

Viele Grüße,
Stefan

--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr at denx.de