This series adds U-Boot support for the EcoNet/Airoha EN75xx MIPS SoC
family: the big-endian MIPS34Kc EN7512/EN7521 and the little-endian
MIPS1004Kc EN7528, used in many GPON/XPON ONT home gateways. It extends
the existing Airoha SNFI SPI-NAND and GDM Ethernet drivers.

It brings up the SoC (TPL/SPL, cache/CM init), and adds the UART, the
EN75 BMT SPI-NAND bad-block mapping, weak bootm decompression hooks for
the coherent CM, and Ethernet. Reference boards for the EN7512 and EN7528
are included, plus the EN7528 R3-hook boot variant.

The DDR calibration stage is a vendor artifact and is not shipped
in-tree. The reference board packages it as a binman "blob-ext"; build
those configs with BINMAN_ALLOW_MISSING=1 and supply the blob to run
(see arch/mips/mach-en75xx/README.ddr-blob). A native DDR-init
implementation is a known TODO.

Tested on a Nokia G-2425G-A (EN7528, MT29F2G01 SPI-NAND): boots to the
prompt with correct 256 MiB DRAM, working Ethernet/TFTP and SPI-NAND.

AK Sharma (12):
  mips: en75xx: add EcoNet/Airoha EN75xx SoC support
  mips: en75xx: add TPL and SPL early boot stages
  serial: en75xx: add EcoNet/Airoha EN75xx UART driver
  spi: airoha-snfi: add EN7528 SPI-NAND controller support
  mtd: spi-nand: add EN75 BMT bad-block management support
  net: airoha-eth: add EN7528 Ethernet support
  mtd: env, cmd: add EN75 NAND remap handling
  boot: image: add weak hooks for the decompression buffer and flush
  mips: dts: add EcoNet EN75xx device trees
  board: econet: add EN7512 reference board
  board: econet: add EN7528 board support
  doc: board: econet: add EN75xx documentation

 arch/mips/Kconfig                             |  21 +
 arch/mips/Makefile                            |   2 +
 arch/mips/cpu/start.S                         |   2 +
 arch/mips/dts/Makefile                        |   2 +
 .../dts/econet,en7512-reference-u-boot.dtsi   |  58 ++
 arch/mips/dts/econet,en7512-reference.dts     |  27 +
 arch/mips/dts/econet,en7512.dtsi              |  88 ++
 arch/mips/dts/econet,en7528-ram-u-boot.dtsi   |   6 +
 arch/mips/dts/econet,en7528-ram.dts           |  72 ++
 .../dts/econet,en7528-reference-u-boot.dtsi   |  62 ++
 arch/mips/dts/econet,en7528-reference.dts     |  25 +
 arch/mips/dts/econet,en7528.dtsi              | 164 ++++
 arch/mips/mach-en75xx/Kconfig                 | 118 +++
 arch/mips/mach-en75xx/Makefile                |  17 +
 arch/mips/mach-en75xx/README.ddr-blob         |  21 +
 arch/mips/mach-en75xx/cache.c                 | 121 +++
 arch/mips/mach-en75xx/cpu.c                   |  95 ++
 arch/mips/mach-en75xx/early_sfc.c             | 352 ++++++++
 arch/mips/mach-en75xx/include/mach/en75xx.h   | 104 +++
 arch/mips/mach-en75xx/spl/Makefile            |   2 +
 arch/mips/mach-en75xx/spl/spl.c               |  47 +
 arch/mips/mach-en75xx/tpl/Makefile            |   3 +
 arch/mips/mach-en75xx/tpl/start.S             | 101 +++
 arch/mips/mach-en75xx/tpl/tpl.c               | 158 ++++
 board/econet/en7512/MAINTAINERS               |   8 +
 board/econet/en7512/Makefile                  |   2 +
 board/econet/en7512/board.c                   |  34 +
 board/econet/en7528/MAINTAINERS               |  13 +
 board/econet/en7528/Makefile                  |   2 +
 board/econet/en7528/board.c                   | 110 +++
 board/econet/en7528/mk_tclinux_uboot.py       | 112 +++
 board/econet/en7528/tclinux_stub.S            |  65 ++
 boot/image.c                                  |  34 +-
 cmd/mtd.c                                     |  30 +-
 configs/en7512_reference_defconfig            |  93 ++
 configs/en7528_jcow414_r3hook_defconfig       |  76 ++
 configs/en7528_ram_defconfig                  |  62 ++
 configs/en7528_reference_defconfig            |  40 +
 defenvs/en7528_jcow414_r3hook_env             |   5 +
 doc/board/econet/en7512.rst                   |  70 ++
 doc/board/econet/en7528.rst                   |  39 +
 doc/board/econet/index.rst                    |  10 +
 doc/board/index.rst                           |   1 +
 drivers/mtd/nand/spi/Kconfig                  |   8 +
 drivers/mtd/nand/spi/Makefile                 |   1 +
 drivers/mtd/nand/spi/core.c                   |   9 +-
 drivers/mtd/nand/spi/en75_bmt.c               | 665 ++++++++++++++
 drivers/mtd/nand/spi/en75_bmt.h               |  24 +
 drivers/net/Kconfig                           |   8 +-
 drivers/net/airoha_eth.c                      | 850 +++++++++++++++++-
 drivers/phy/Kconfig                           |   2 +-
 drivers/serial/Kconfig                        |   7 +
 drivers/serial/Makefile                       |   1 +
 drivers/serial/serial_en75xx.c                | 170 ++++
 drivers/spi/Kconfig                           |   3 +-
 drivers/spi/airoha_snfi_spi.c                 | 409 +++++++--
 drivers/usb/host/Kconfig                      |   2 +-
 env/Kconfig                                   |   2 +-
 env/mtd.c                                     |  98 +-
 include/configs/en7512.h                      |   8 +
 include/configs/en7528.h                      |   9 +
 include/image.h                               |   5 +
 62 files changed, 4578 insertions(+), 177 deletions(-)
 create mode 100644 arch/mips/dts/econet,en7512-reference-u-boot.dtsi
 create mode 100644 arch/mips/dts/econet,en7512-reference.dts
 create mode 100644 arch/mips/dts/econet,en7512.dtsi
 create mode 100644 arch/mips/dts/econet,en7528-ram-u-boot.dtsi
 create mode 100644 arch/mips/dts/econet,en7528-ram.dts
 create mode 100644 arch/mips/dts/econet,en7528-reference-u-boot.dtsi
 create mode 100644 arch/mips/dts/econet,en7528-reference.dts
 create mode 100644 arch/mips/dts/econet,en7528.dtsi
 create mode 100644 arch/mips/mach-en75xx/Kconfig
 create mode 100644 arch/mips/mach-en75xx/Makefile
 create mode 100644 arch/mips/mach-en75xx/README.ddr-blob
 create mode 100644 arch/mips/mach-en75xx/cache.c
 create mode 100644 arch/mips/mach-en75xx/cpu.c
 create mode 100644 arch/mips/mach-en75xx/early_sfc.c
 create mode 100644 arch/mips/mach-en75xx/include/mach/en75xx.h
 create mode 100644 arch/mips/mach-en75xx/spl/Makefile
 create mode 100644 arch/mips/mach-en75xx/spl/spl.c
 create mode 100644 arch/mips/mach-en75xx/tpl/Makefile
 create mode 100644 arch/mips/mach-en75xx/tpl/start.S
 create mode 100644 arch/mips/mach-en75xx/tpl/tpl.c
 create mode 100644 board/econet/en7512/MAINTAINERS
 create mode 100644 board/econet/en7512/Makefile
 create mode 100644 board/econet/en7512/board.c
 create mode 100644 board/econet/en7528/MAINTAINERS
 create mode 100644 board/econet/en7528/Makefile
 create mode 100644 board/econet/en7528/board.c
 create mode 100644 board/econet/en7528/mk_tclinux_uboot.py
 create mode 100644 board/econet/en7528/tclinux_stub.S
 create mode 100644 configs/en7512_reference_defconfig
 create mode 100644 configs/en7528_jcow414_r3hook_defconfig
 create mode 100644 configs/en7528_ram_defconfig
 create mode 100644 configs/en7528_reference_defconfig
 create mode 100644 defenvs/en7528_jcow414_r3hook_env
 create mode 100644 doc/board/econet/en7512.rst
 create mode 100644 doc/board/econet/en7528.rst
 create mode 100644 doc/board/econet/index.rst
 create mode 100644 drivers/mtd/nand/spi/en75_bmt.c
 create mode 100644 drivers/mtd/nand/spi/en75_bmt.h
 create mode 100644 drivers/serial/serial_en75xx.c
 create mode 100644 include/configs/en7512.h
 create mode 100644 include/configs/en7528.h

-- 
2.53.0

Reply via email to