* [PATCH 00/16] Refactor the architecture parts of mt7628
@ 2020-01-08 2:59 Weijie Gao
2020-01-09 7:52 ` Stefan Roese
0 siblings, 1 reply; 6+ messages in thread
From: Weijie Gao @ 2020-01-08 2:59 UTC (permalink / raw)
To: u-boot
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.
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
--
2.17.1
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 00/16] Refactor the architecture parts of mt7628
2020-01-08 2:59 [PATCH 00/16] Refactor the architecture parts of mt7628 Weijie Gao
@ 2020-01-09 7:52 ` Stefan Roese
2020-01-09 8:49 ` Weijie Gao
0 siblings, 1 reply; 6+ messages in thread
From: Stefan Roese @ 2020-01-09 7:52 UTC (permalink / raw)
To: u-boot
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
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 00/16] Refactor the architecture parts of mt7628
2020-01-09 7:52 ` Stefan Roese
@ 2020-01-09 8:49 ` Weijie Gao
2020-01-09 12:36 ` Stefan Roese
0 siblings, 1 reply; 6+ messages in thread
From: Weijie Gao @ 2020-01-09 8:49 UTC (permalink / raw)
To: u-boot
Hi Stefan,
On Thu, 2020-01-09 at 08:52 +0100, Stefan Roese wrote:
> 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)?
I'll do further test for this.
>
> Did you compare the boot speed with using SPL + main U-Boot vs U-Boot
> only?
As far as I tested the difference of boot time should be less than 1s.
>
> 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?
I just kept these two boards untouched. I can switch them to compressed
mode if you have no concern.
>
> 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
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 00/16] Refactor the architecture parts of mt7628
2020-01-09 8:49 ` Weijie Gao
@ 2020-01-09 12:36 ` Stefan Roese
2020-01-10 10:48 ` Weijie Gao
0 siblings, 1 reply; 6+ messages in thread
From: Stefan Roese @ 2020-01-09 12:36 UTC (permalink / raw)
To: u-boot
Hi Weijie,
On 09.01.20 09:49, Weijie Gao wrote:
> On Thu, 2020-01-09 at 08:52 +0100, Stefan Roese wrote:
>> 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)?
>
> I'll do further test for this.
I also did some tests and here is a WIP patch that fixes this issue for
the LinkIt board. Please feel free to integrate it into your next patch
set version:
diff --git a/arch/mips/mach-mtmips/spl.c b/arch/mips/mach-mtmips/spl.c
index 37172abadf..33b4485be2 100644
--- a/arch/mips/mach-mtmips/spl.c
+++ b/arch/mips/mach-mtmips/spl.c
@@ -7,10 +7,25 @@
#include <common.h>
#include <spl.h>
+#include <asm/io.h>
+
+#define MT76XX_GPIO1_MODE 0x10000060
+
+static void uart2_mux_init(void)
+{
+ void __iomem *gpio_mode;
+
+ /* Select UART2 mode instead of GPIO mode (default) */
+ gpio_mode = ioremap_nocache(MT76XX_GPIO1_MODE, 0x100);
+ clrbits_le32(gpio_mode, GENMASK(27, 26));
+}
void __noreturn board_init_f(ulong dummy)
{
#ifdef CONFIG_SPL_SERIAL_SUPPORT
+#if CONFIG_CONS_INDEX == 3
+ uart2_mux_init();
+#endif
preloader_console_init();
#endif
diff --git a/include/configs/linkit-smart-7688.h b/include/configs/linkit-smart-7688.h
index 01705ee2a5..b4bba9dcc5 100644
--- a/include/configs/linkit-smart-7688.h
+++ b/include/configs/linkit-smart-7688.h
@@ -32,8 +32,10 @@
#define CONFIG_SYS_NS16550_MEM32
#define CONFIG_SYS_NS16550_CLK 40000000
#define CONFIG_SYS_NS16550_REG_SIZE -4
-#define CONFIG_SYS_NS16550_COM1 0xb0000e00
-#define CONFIG_CONS_INDEX 1
+/* Console index starts with 1 -> UART2 = IDX 3 */
+#define CONFIG_SYS_NS16550_COM3 0xb0000e00
+#undef CONFIG_CONS_INDEX
+#define CONFIG_CONS_INDEX 3
#endif
/* UART */
>>
>> Did you compare the boot speed with using SPL + main U-Boot vs U-Boot
>> only?
>
> As far as I tested the difference of boot time should be less than 1s.
1 second is quite a lot of time. I prefer to stay with the non compressed
boot configuration then. Testing shows that the new SPL based version
also boots pretty fast, when the main U-Boot proper is not compressed.
>>
>> 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?
>
> I just kept these two boards untouched. I can switch them to compressed
> mode if you have no concern.
I did not test yet. If its really a difference in time of 1 second (or
similar), then let stay with uncompressed for these board please.
Thanks,
Stefan
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 00/16] Refactor the architecture parts of mt7628
2020-01-09 12:36 ` Stefan Roese
@ 2020-01-10 10:48 ` Weijie Gao
2020-01-10 13:13 ` Stefan Roese
0 siblings, 1 reply; 6+ messages in thread
From: Weijie Gao @ 2020-01-10 10:48 UTC (permalink / raw)
To: u-boot
On Thu, 2020-01-09 at 13:36 +0100, Stefan Roese wrote:
> Hi Weijie,
>
> On 09.01.20 09:49, Weijie Gao wrote:
> > On Thu, 2020-01-09 at 08:52 +0100, Stefan Roese wrote:
> >> 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)?
> >
> > I'll do further test for this.
>
> I also did some tests and here is a WIP patch that fixes this issue for
> the LinkIt board. Please feel free to integrate it into your next patch
> set version:
>
> diff --git a/arch/mips/mach-mtmips/spl.c b/arch/mips/mach-mtmips/spl.c
> index 37172abadf..33b4485be2 100644
> --- a/arch/mips/mach-mtmips/spl.c
> +++ b/arch/mips/mach-mtmips/spl.c
> @@ -7,10 +7,25 @@
>
> #include <common.h>
> #include <spl.h>
> +#include <asm/io.h>
> +
> +#define MT76XX_GPIO1_MODE 0x10000060
> +
> +static void uart2_mux_init(void)
> +{
> + void __iomem *gpio_mode;
> +
> + /* Select UART2 mode instead of GPIO mode (default) */
> + gpio_mode = ioremap_nocache(MT76XX_GPIO1_MODE, 0x100);
> + clrbits_le32(gpio_mode, GENMASK(27, 26));
> +}
>
> void __noreturn board_init_f(ulong dummy)
> {
> #ifdef CONFIG_SPL_SERIAL_SUPPORT
> +#if CONFIG_CONS_INDEX == 3
> + uart2_mux_init();
> +#endif
> preloader_console_init();
> #endif
>
> diff --git a/include/configs/linkit-smart-7688.h b/include/configs/linkit-smart-7688.h
> index 01705ee2a5..b4bba9dcc5 100644
> --- a/include/configs/linkit-smart-7688.h
> +++ b/include/configs/linkit-smart-7688.h
> @@ -32,8 +32,10 @@
> #define CONFIG_SYS_NS16550_MEM32
> #define CONFIG_SYS_NS16550_CLK 40000000
> #define CONFIG_SYS_NS16550_REG_SIZE -4
> -#define CONFIG_SYS_NS16550_COM1 0xb0000e00
> -#define CONFIG_CONS_INDEX 1
> +/* Console index starts with 1 -> UART2 = IDX 3 */
> +#define CONFIG_SYS_NS16550_COM3 0xb0000e00
> +#undef CONFIG_CONS_INDEX
> +#define CONFIG_CONS_INDEX 3
> #endif
>
> /* UART */
>
>
> >>
> >> Did you compare the boot speed with using SPL + main U-Boot vs U-Boot
> >> only?
> >
> > As far as I tested the difference of boot time should be less than 1s.
>
> 1 second is quite a lot of time. I prefer to stay with the non compressed
> boot configuration then. Testing shows that the new SPL based version
> also boots pretty fast, when the main U-Boot proper is not compressed.
>
> >>
> >> 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?
> >
> > I just kept these two boards untouched. I can switch them to compressed
> > mode if you have no concern.
>
> I did not test yet. If its really a difference in time of 1 second (or
> similar), then let stay with uncompressed for these board please.
>
> Thanks,
> Stefan
I did a precise measurement, and this is the result:
type | spl load/decompression time | boot to shell (total time)
spl + lzma | 75ms | 563ms
spl + none | 139ms | 627ms
non-spl | N/A | 626ms
Actually spl+lzma is the fastest. I think this is because it has the
smallest binary size.
It's OK to switch all of them to compressed mode.
Best Regards,
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 00/16] Refactor the architecture parts of mt7628
2020-01-10 10:48 ` Weijie Gao
@ 2020-01-10 13:13 ` Stefan Roese
0 siblings, 0 replies; 6+ messages in thread
From: Stefan Roese @ 2020-01-10 13:13 UTC (permalink / raw)
To: u-boot
Hi Weijie,
On 10.01.20 11:48, Weijie Gao wrote:
<snip>
>>>> Did you compare the boot speed with using SPL + main U-Boot vs U-Boot
>>>> only?
>>>
>>> As far as I tested the difference of boot time should be less than 1s.
>>
>> 1 second is quite a lot of time. I prefer to stay with the non compressed
>> boot configuration then. Testing shows that the new SPL based version
>> also boots pretty fast, when the main U-Boot proper is not compressed.
>>
>>>>
>>>> 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?
>>>
>>> I just kept these two boards untouched. I can switch them to compressed
>>> mode if you have no concern.
>>
>> I did not test yet. If its really a difference in time of 1 second (or
>> similar), then let stay with uncompressed for these board please.
>>
>> Thanks,
>> Stefan
>
>
> I did a precise measurement, and this is the result:
>
> type | spl load/decompression time | boot to shell (total time)
> spl + lzma | 75ms | 563ms
> spl + none | 139ms | 627ms
> non-spl | N/A | 626ms
Great. Thanks for doing these tests and reporting here.
> Actually spl+lzma is the fastest. I think this is because it has the
> smallest binary size.
Makes sense. SPI NOR load time savage is bigger than the added
decompression time.
> It's OK to switch all of them to compressed mode.
Yes, please do so. This might be a nice boot time increase for other
boards as well. I'll do some tests on i.MX6 soon. :)
Thanks,
Stefan
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2020-01-10 13:13 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-01-08 2:59 [PATCH 00/16] Refactor the architecture parts of mt7628 Weijie Gao
2020-01-09 7:52 ` Stefan Roese
2020-01-09 8:49 ` Weijie Gao
2020-01-09 12:36 ` Stefan Roese
2020-01-10 10:48 ` Weijie Gao
2020-01-10 13:13 ` Stefan Roese
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.