[PATCH v2 00/21] Refactor the architecture parts of mt7628

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. Enable DM support for SPL for a more flexible device probing. 4. Add a demo board (mt7628_rfb) aims at router application.
Changes since v1: 1. Split 'mips: mtmips: rewrite lowlevel codes of mt7628' into multiple patches. 2. Dropped a patch which tried to use customized get_tbclk(). 3. Dropped a patch which tried to rename mt7628a.dtsi to mt7628.dtsi 4. Refactor the patch which restores exception vector base before booting linux. 5. Define a new option to enable u_boot_list in SPL. 6. Enable compressed spl payload for all boards. 7. Enable DM and DT support for linkit and gardena-smart-gateway. 8. Complete pinmux for all three UARTs for SPL. 9. Rewrite u_boot_lzma_img.py.
Weijie Gao (21): 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 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: make use of sysreset-resetctrl for mt7628 soc configs: enable CONFIG_RESTORE_EXCEPTION_VECTOR_BASE for all mtmips boards mips: add a mtmips-specific field to architecture-specific global data mips: add a option to support not reserving malloc space on initial stack mips: mtmips: rewrite lowlevel codes of mt7628 dts: mtmips: remove all unusable nodes and properties from mt7628s.dtsi dts: mtmips: add u-boot,dm-pre-reloc for some nodes in mt7628a.dtsi dts: mtmips: add alternative pinmux node for uart2 mips: enable support for appending dtb to spl binary mips: add an option to enable u_boot_list section for SPL loaders 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 | 60 ++++ arch/mips/cpu/start.S | 16 +- arch/mips/cpu/u-boot-spl.lds | 4 +- arch/mips/dts/Makefile | 1 + arch/mips/dts/mediatek,mt7628-rfb.dts | 67 ++++ arch/mips/dts/mt7628-u-boot.dtsi | 24 ++ arch/mips/dts/mt7628a.dtsi | 93 ++--- arch/mips/include/asm/global_data.h | 3 + arch/mips/include/asm/u-boot-mips.h | 2 + arch/mips/lib/bootm.c | 3 + arch/mips/lib/traps.c | 19 + arch/mips/mach-mtmips/Kconfig | 133 +++---- 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/include/mach/serial.h | 13 + arch/mips/mach-mtmips/include/mach/spl.h | 14 + arch/mips/mach-mtmips/lowlevel_init.S | 328 ------------------ arch/mips/mach-mtmips/mt7628/Makefile | 6 + arch/mips/mach-mtmips/mt7628/ddr.c | 173 +++++++++ arch/mips/mach-mtmips/mt7628/init.c | 109 ++++++ arch/mips/mach-mtmips/mt7628/lowlevel_init.S | 161 +++++++++ arch/mips/mach-mtmips/mt7628/mt7628.h | 104 ++++++ arch/mips/mach-mtmips/mt7628/serial.c | 34 ++ arch/mips/mach-mtmips/mt76xx.h | 32 -- arch/mips/mach-mtmips/spl.c | 35 ++ arch/mips/mach-mtmips/spl_load.c | 121 +++++++ board/gardena/smart-gateway-mt7688/board.c | 2 + board/mediatek/mt7628/Kconfig | 12 + board/mediatek/mt7628/MAINTAINERS | 7 + board/mediatek/mt7628/Makefile | 3 + board/mediatek/mt7628/board.c | 8 + ...gardena-smart-gateway-mt7688-ram_defconfig | 74 ---- .../gardena-smart-gateway-mt7688_defconfig | 15 +- configs/linkit-smart-7688-ram_defconfig | 65 ---- configs/linkit-smart-7688_defconfig | 15 +- configs/mt7628_rfb_defconfig | 45 +++ 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 | 19 +- include/configs/mt7628.h | 52 +++ lib/Kconfig | 5 + lib/Makefile | 1 + tools/binman/README.entries | 15 + tools/binman/etype/u_boot_lzma_img.py | 28 ++ 52 files changed, 1987 insertions(+), 1041 deletions(-) create mode 100644 arch/mips/dts/mediatek,mt7628-rfb.dts create mode 100644 arch/mips/dts/mt7628-u-boot.dtsi 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 create mode 100644 arch/mips/mach-mtmips/include/mach/serial.h create mode 100644 arch/mips/mach-mtmips/include/mach/spl.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 create mode 100644 arch/mips/mach-mtmips/mt7628/serial.c delete mode 100644 arch/mips/mach-mtmips/mt76xx.h create mode 100644 arch/mips/mach-mtmips/spl.c create mode 100644 arch/mips/mach-mtmips/spl_load.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 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

Hi Weijie,
I've added another of my mail addresses to cc (mail@roese.nl) as the sending to the other 2 addresses does not seem to work.
On 17.01.20 08:45, Weijie Gao wrote:
This patch series are divided into two parts:
The main part is to rewrite the whole architecture code of mt7628:
- Lock parts of the d-cache for initial stack so the rest of the code can be reimplemented in C.
- Memory controller & DDR initialization have been fully written to support detecting DDR size automatically.
- DDR calibration has also been reimplemented with a clear logic.
- 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:
- 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.
- Generate compressed u-boot.bin image for SPL to reduce size of final combined binary.
- Enable DM support for SPL for a more flexible device probing.
- Add a demo board (mt7628_rfb) aims at router application.
Changes since v1:
- Split 'mips: mtmips: rewrite lowlevel codes of mt7628' into multiple patches.
- Dropped a patch which tried to use customized get_tbclk().
- Dropped a patch which tried to rename mt7628a.dtsi to mt7628.dtsi
- Refactor the patch which restores exception vector base before booting linux.
- Define a new option to enable u_boot_list in SPL.
- Enable compressed spl payload for all boards.
- Enable DM and DT support for linkit and gardena-smart-gateway.
- Complete pinmux for all three UARTs for SPL.
- Rewrite u_boot_lzma_img.py.
Weijie Gao (21):
It seems that patch 09/21 is missing on the list. Is it stuck in moderation? Or is the patch numbering corrupt?
Thanks, Stefan

On Fri, 2020-01-17 at 15:40 +0100, Stefan Roese wrote:
Hi Weijie,
I've added another of my mail addresses to cc (mail@roese.nl) as the sending to the other 2 addresses does not seem to work.
On 17.01.20 08:45, Weijie Gao wrote:
This patch series are divided into two parts:
The main part is to rewrite the whole architecture code of mt7628:
- Lock parts of the d-cache for initial stack so the rest of the code can be reimplemented in C.
- Memory controller & DDR initialization have been fully written to support detecting DDR size automatically.
- DDR calibration has also been reimplemented with a clear logic.
- 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:
- 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.
- Generate compressed u-boot.bin image for SPL to reduce size of final combined binary.
- Enable DM support for SPL for a more flexible device probing.
- Add a demo board (mt7628_rfb) aims at router application.
Changes since v1:
- Split 'mips: mtmips: rewrite lowlevel codes of mt7628' into multiple patches.
- Dropped a patch which tried to use customized get_tbclk().
- Dropped a patch which tried to rename mt7628a.dtsi to mt7628.dtsi
- Refactor the patch which restores exception vector base before booting linux.
- Define a new option to enable u_boot_list in SPL.
- Enable compressed spl payload for all boards.
- Enable DM and DT support for linkit and gardena-smart-gateway.
- Complete pinmux for all three UARTs for SPL.
- Rewrite u_boot_lzma_img.py.
Weijie Gao (21):
It seems that patch 09/21 is missing on the list. Is it stuck in moderation? Or is the patch numbering corrupt?
Thanks, Stefan
It's missing on my list. I've resent it.

Hi Weijie,
On 19.01.20 03:12, Weijie Gao wrote:
On Fri, 2020-01-17 at 15:40 +0100, Stefan Roese wrote:
Hi Weijie,
I've added another of my mail addresses to cc (mail@roese.nl) as the sending to the other 2 addresses does not seem to work.
On 17.01.20 08:45, Weijie Gao wrote:
This patch series are divided into two parts:
The main part is to rewrite the whole architecture code of mt7628:
- Lock parts of the d-cache for initial stack so the rest of the code can be reimplemented in C.
- Memory controller & DDR initialization have been fully written to support detecting DDR size automatically.
- DDR calibration has also been reimplemented with a clear logic.
- 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:
- 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.
- Generate compressed u-boot.bin image for SPL to reduce size of final combined binary.
- Enable DM support for SPL for a more flexible device probing.
- Add a demo board (mt7628_rfb) aims at router application.
Changes since v1:
- Split 'mips: mtmips: rewrite lowlevel codes of mt7628' into multiple patches.
- Dropped a patch which tried to use customized get_tbclk().
- Dropped a patch which tried to rename mt7628a.dtsi to mt7628.dtsi
- Refactor the patch which restores exception vector base before booting linux.
- Define a new option to enable u_boot_list in SPL.
- Enable compressed spl payload for all boards.
- Enable DM and DT support for linkit and gardena-smart-gateway.
- Complete pinmux for all three UARTs for SPL.
- Rewrite u_boot_lzma_img.py.
Weijie Gao (21):
It seems that patch 09/21 is missing on the list. Is it stuck in moderation? Or is the patch numbering corrupt?
Thanks, Stefan
It's missing on my list. I've resent it.
Thanks. Applying this patchset on top of current mainline results in this compilation error (using linkit-smart-7688_defconfig):
arch/mips/mach-mtmips/built-in.o: In function `get_tbclk': /home/stefan/git/u-boot/u-boot/arch/mips/mach-mtmips/mt7628/init.c:108: multiple definition of `get_tbclk' arch/mips/cpu/built-in.o:/home/stefan/git/u-boot/u-boot/arch/mips/cpu/time.c:18: first defined here make: *** [Makefile:1695: u-boot] Error 1
Is something else missing?
Thanks, Stefan

On 20.01.20 08:08, Stefan Roese wrote:
Hi Weijie,
On 19.01.20 03:12, Weijie Gao wrote:
On Fri, 2020-01-17 at 15:40 +0100, Stefan Roese wrote:
Hi Weijie,
I've added another of my mail addresses to cc (mail@roese.nl) as the sending to the other 2 addresses does not seem to work.
On 17.01.20 08:45, Weijie Gao wrote:
This patch series are divided into two parts:
The main part is to rewrite the whole architecture code of mt7628:
- Lock parts of the d-cache for initial stack so the rest of the code can be reimplemented in C.
- Memory controller & DDR initialization have been fully written to support detecting DDR size automatically.
- DDR calibration has also been reimplemented with a clear logic.
- 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:
- 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.
- Generate compressed u-boot.bin image for SPL to reduce size of final combined binary.
- Enable DM support for SPL for a more flexible device probing.
- Add a demo board (mt7628_rfb) aims at router application.
Changes since v1:
- Split 'mips: mtmips: rewrite lowlevel codes of mt7628' into multiple patches.
- Dropped a patch which tried to use customized get_tbclk().
- Dropped a patch which tried to rename mt7628a.dtsi to mt7628.dtsi
- Refactor the patch which restores exception vector base before booting linux.
- Define a new option to enable u_boot_list in SPL.
- Enable compressed spl payload for all boards.
- Enable DM and DT support for linkit and gardena-smart-gateway.
- Complete pinmux for all three UARTs for SPL.
- Rewrite u_boot_lzma_img.py.
Weijie Gao (21):
It seems that patch 09/21 is missing on the list. Is it stuck in moderation? Or is the patch numbering corrupt?
Thanks, Stefan
It's missing on my list. I've resent it.
Thanks. Applying this patchset on top of current mainline results in this compilation error (using linkit-smart-7688_defconfig):
arch/mips/mach-mtmips/built-in.o: In function `get_tbclk': /home/stefan/git/u-boot/u-boot/arch/mips/mach-mtmips/mt7628/init.c:108: multiple definition of `get_tbclk' arch/mips/cpu/built-in.o:/home/stefan/git/u-boot/u-boot/arch/mips/cpu/time.c:18: first defined here make: *** [Makefile:1695: u-boot] Error 1
Is something else missing?
Okay, I think I found it. This patch here is missing:
https://patchwork.ozlabs.org/patch/1215073/
Thanks, Stefan

On Mon, 2020-01-20 at 08:08 +0100, Stefan Roese wrote:
Hi Weijie,
On 19.01.20 03:12, Weijie Gao wrote:
On Fri, 2020-01-17 at 15:40 +0100, Stefan Roese wrote:
Hi Weijie,
I've added another of my mail addresses to cc (mail@roese.nl) as the sending to the other 2 addresses does not seem to work.
On 17.01.20 08:45, Weijie Gao wrote:
This patch series are divided into two parts:
The main part is to rewrite the whole architecture code of mt7628:
- Lock parts of the d-cache for initial stack so the rest of the code can be reimplemented in C.
- Memory controller & DDR initialization have been fully written to support detecting DDR size automatically.
- DDR calibration has also been reimplemented with a clear logic.
- 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:
- 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.
- Generate compressed u-boot.bin image for SPL to reduce size of final combined binary.
- Enable DM support for SPL for a more flexible device probing.
- Add a demo board (mt7628_rfb) aims at router application.
Changes since v1:
- Split 'mips: mtmips: rewrite lowlevel codes of mt7628' into multiple patches.
- Dropped a patch which tried to use customized get_tbclk().
- Dropped a patch which tried to rename mt7628a.dtsi to mt7628.dtsi
- Refactor the patch which restores exception vector base before booting linux.
- Define a new option to enable u_boot_list in SPL.
- Enable compressed spl payload for all boards.
- Enable DM and DT support for linkit and gardena-smart-gateway.
- Complete pinmux for all three UARTs for SPL.
- Rewrite u_boot_lzma_img.py.
Weijie Gao (21):
It seems that patch 09/21 is missing on the list. Is it stuck in moderation? Or is the patch numbering corrupt?
Thanks, Stefan
It's missing on my list. I've resent it.
Thanks. Applying this patchset on top of current mainline results in this compilation error (using linkit-smart-7688_defconfig):
arch/mips/mach-mtmips/built-in.o: In function `get_tbclk': /home/stefan/git/u-boot/u-boot/arch/mips/mach-mtmips/mt7628/init.c:108: multiple definition of `get_tbclk' arch/mips/cpu/built-in.o:/home/stefan/git/u-boot/u-boot/arch/mips/cpu/time.c:18: first defined here make: *** [Makefile:1695: u-boot] Error 1
Is something else missing?
Thanks, Stefan
Daniel said he has merged a patch which makes the original get_tbclk weak (arch/mips/cpu/time.c), and let me drop a related patch.
https://patchwork.ozlabs.org/patch/1215073/
I haven't seen it shown in mainline yet.
participants (2)
-
Stefan Roese
-
Weijie Gao