mbox series

[00/26,v7] Refactor the architecture parts of mt7628

Message ID 20200421072850.4970-1-sr@denx.de
Headers show
Series Refactor the architecture parts of mt7628 | expand

Message

Stefan Roese April 21, 2020, 7:28 a.m. UTC
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 v2:
* Dropped a patch which removes unused parts of mt7628a.dtsi
* Move lzma decompression support to common spl_nor.c
* Move u-boot,dm-pre-reloc to u-boot-mt7628.dtsi

Changes since v3:
* Rebased on newest master branch
* Add a test for binman etype u-boot-lzma-img to make sure binman passes 100%
  code coverage
* Use u-boot-with-spl.bin for SPL-enabled output file
* Remove unused code from spl_nor loader.

Changes since v5:
* Rebased on newest master branch
* Made lzma decompressing support for legacy U-Boot images more generic, so
  that it can be easily integrated into other devices loaders as well

Changes since v6:
* Add spl_image_get_comp() to enable the compiler to optimize
  the switch/case statement away due to Dead Code Elimination
  as suggested by Daniel
* Moved cache flush to MIPS specific file as suggested by Daniel
  
Stefan Roese (6):
  spl: Extract legacy image handling into separate file
  spl: spl_legacy: Use IS_ENABLED() to remove #ifdef
  spl: spl_nor: Move legacy image loading into spl_legacy.c
  spl: spl_nor: Remove unused variable 'ret' warning
  mips: spl: Flush cache before jumping to U-Boot proper
  mips: mtmips: Increase CONFIG_SPL_SYS_MALLOC_F_LEN

Weijie Gao (20):
  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: 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
  spl: spl_legacy: Add lzma decompression support for legacy image
  mips: mtmips: add SPL support
  mips: mtmips: enable SPL for all boards
  mips: mtmips: add support for mt7628-rfb

 Makefile                                      |  19 +
 arch/mips/Kconfig                             |  66 ++++
 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              |  56 +++
 arch/mips/dts/mt7628a.dtsi                    |  17 +-
 arch/mips/include/asm/global_data.h           |   3 +
 arch/mips/include/asm/u-boot-mips.h           |   2 +
 arch/mips/lib/Makefile                        |   1 +
 arch/mips/lib/bootm.c                         |   3 +
 arch/mips/lib/spl.c                           |  21 ++
 arch/mips/lib/traps.c                         |  19 +
 arch/mips/mach-mtmips/Kconfig                 | 135 +++----
 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/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                   |  44 +++
 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 +
 common/spl/Makefile                           |   1 +
 common/spl/spl.c                              |  56 +--
 common/spl/spl_legacy.c                       | 131 +++++++
 common/spl/spl_nor.c                          |  27 +-
 ...gardena-smart-gateway-mt7688-ram_defconfig |  74 ----
 .../gardena-smart-gateway-mt7688_defconfig    |  14 +-
 configs/linkit-smart-7688-ram_defconfig       |  65 ----
 configs/linkit-smart-7688_defconfig           |  14 +-
 configs/mt7628_rfb_defconfig                  |  46 +++
 drivers/sysreset/Kconfig                      |   6 +
 drivers/sysreset/Makefile                     |   1 +
 drivers/sysreset/sysreset_resetctl.c          |  48 +++
 .../configs/gardena-smart-gateway-mt7688.h    |  21 +-
 include/configs/linkit-smart-7688.h           |  22 +-
 include/configs/mt7628.h                      |  56 +++
 include/spl.h                                 |  13 +
 lib/Kconfig                                   |   5 +
 lib/Makefile                                  |   1 +
 tools/binman/README.entries                   |  15 +
 tools/binman/etype/u_boot_lzma_img.py         |  28 ++
 tools/binman/ftest.py                         |   7 +
 tools/binman/test/156_u_boot_lzma_img.dts     |  11 +
 59 files changed, 2108 insertions(+), 1032 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/lib/spl.c
 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
 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 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 common/spl/spl_legacy.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
 create mode 100644 tools/binman/test/156_u_boot_lzma_img.dts

Comments

Daniel Schwierzeck April 27, 2020, 1:35 p.m. UTC | #1
Am 21.04.20 um 09:28 schrieb Stefan Roese:
> 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 v2:
> * Dropped a patch which removes unused parts of mt7628a.dtsi
> * Move lzma decompression support to common spl_nor.c
> * Move u-boot,dm-pre-reloc to u-boot-mt7628.dtsi
> 
> Changes since v3:
> * Rebased on newest master branch
> * Add a test for binman etype u-boot-lzma-img to make sure binman passes 100%
>   code coverage
> * Use u-boot-with-spl.bin for SPL-enabled output file
> * Remove unused code from spl_nor loader.
> 
> Changes since v5:
> * Rebased on newest master branch
> * Made lzma decompressing support for legacy U-Boot images more generic, so
>   that it can be easily integrated into other devices loaders as well
> 
> Changes since v6:
> * Add spl_image_get_comp() to enable the compiler to optimize
>   the switch/case statement away due to Dead Code Elimination
>   as suggested by Daniel
> * Moved cache flush to MIPS specific file as suggested by Daniel
>   
> Stefan Roese (6):
>   spl: Extract legacy image handling into separate file
>   spl: spl_legacy: Use IS_ENABLED() to remove #ifdef
>   spl: spl_nor: Move legacy image loading into spl_legacy.c
>   spl: spl_nor: Remove unused variable 'ret' warning
>   mips: spl: Flush cache before jumping to U-Boot proper
>   mips: mtmips: Increase CONFIG_SPL_SYS_MALLOC_F_LEN
> 
> Weijie Gao (20):
>   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: 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
>   spl: spl_legacy: Add lzma decompression support for legacy image
>   mips: mtmips: add SPL support
>   mips: mtmips: enable SPL for all boards
>   mips: mtmips: add support for mt7628-rfb
> 
>  Makefile                                      |  19 +
>  arch/mips/Kconfig                             |  66 ++++
>  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              |  56 +++
>  arch/mips/dts/mt7628a.dtsi                    |  17 +-
>  arch/mips/include/asm/global_data.h           |   3 +
>  arch/mips/include/asm/u-boot-mips.h           |   2 +
>  arch/mips/lib/Makefile                        |   1 +
>  arch/mips/lib/bootm.c                         |   3 +
>  arch/mips/lib/spl.c                           |  21 ++
>  arch/mips/lib/traps.c                         |  19 +
>  arch/mips/mach-mtmips/Kconfig                 | 135 +++----
>  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/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                   |  44 +++
>  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 +
>  common/spl/Makefile                           |   1 +
>  common/spl/spl.c                              |  56 +--
>  common/spl/spl_legacy.c                       | 131 +++++++
>  common/spl/spl_nor.c                          |  27 +-
>  ...gardena-smart-gateway-mt7688-ram_defconfig |  74 ----
>  .../gardena-smart-gateway-mt7688_defconfig    |  14 +-
>  configs/linkit-smart-7688-ram_defconfig       |  65 ----
>  configs/linkit-smart-7688_defconfig           |  14 +-
>  configs/mt7628_rfb_defconfig                  |  46 +++
>  drivers/sysreset/Kconfig                      |   6 +
>  drivers/sysreset/Makefile                     |   1 +
>  drivers/sysreset/sysreset_resetctl.c          |  48 +++
>  .../configs/gardena-smart-gateway-mt7688.h    |  21 +-
>  include/configs/linkit-smart-7688.h           |  22 +-
>  include/configs/mt7628.h                      |  56 +++
>  include/spl.h                                 |  13 +
>  lib/Kconfig                                   |   5 +
>  lib/Makefile                                  |   1 +
>  tools/binman/README.entries                   |  15 +
>  tools/binman/etype/u_boot_lzma_img.py         |  28 ++
>  tools/binman/ftest.py                         |   7 +
>  tools/binman/test/156_u_boot_lzma_img.dts     |  11 +
>  59 files changed, 2108 insertions(+), 1032 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/lib/spl.c
>  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
>  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 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 common/spl/spl_legacy.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
>  create mode 100644 tools/binman/test/156_u_boot_lzma_img.dts
> 

series applied to u-boot-mips/next with some reordering of patches and
some minor fixups. The binman patch was left out because binman wasn't
used anymore since v4.