All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 00/24] ARM: zte: Add support for Sanechips ZX279128S and ZTE ZXHN H3600
@ 2026-10-14  7:20 Navid Ghahremani
  2026-10-14  7:20 ` [PATCH v2 01/24] MAINTAINERS: Consolidate ARM/ZTE ZX SOC SUPPORT with Stefan Doesinger Navid Ghahremani
                   ` (24 more replies)
  0 siblings, 25 replies; 61+ messages in thread
From: Navid Ghahremani @ 2026-10-14  7:20 UTC (permalink / raw)
  To: linux-arm-kernel; +Cc: arnd, stefandoesinger, krzk, Navid Ghahremani

This series introduces mainline Linux support for the Sanechips (ZTE)
ZX279128S SoC and the ZTE ZXHN H3600 Wi-Fi 6 router.

The ZX279128S is a dual-core ARM Cortex-A9 network SoC with an ARM
PL310 / L2C-310 outer cache controller, dual PCIe interfaces, a 5-port
Gigabit Ethernet switch with hardware packet classification and flow
offload, SPI-NAND flash controller, and DWC3 USB 2.0 host.

Changes in v2:
- Dropped [PATCH RFC] tag.
- Decoupled controversial silicon bus/cache workaround (patches 01-03
  from RFC) from this platform series based on discussions with
  Arnd Bergmann and Stefan Doesinger. Kept downstream in OpenWrt while
  exploring a cleaner long-term MMIO solution (e.g. lib/logic_iomem.c).
- Consolidated maintainership under ARM/ZTE ZX SOC SUPPORT in
  MAINTAINERS with Stefan Doesinger and Navid Ghahremani as
  co-maintainers (Patch 01).
- Split CRM Device Tree schemas into separate dedicated topcrm and
  lspcrpm bindings with fixed clock lists (Patch 04).
- Added syscon-reboot child under topcrm with simple-mfd, dropping
  deprecated regmap properties (Patches 04, 06, 23).
- Converted reset bindings to sequential logical enum IDs (0, 1, 2...)
  in include/dt-bindings/reset/zte,zx279128s-reset.h with driver lookup
  table, ensuring stable DT ABI (Patches 05, 06).
- Synchronized clock gating and reset operations in CRM using shared
  spinlocks to protect shared registers (Patch 06).
- Used CLK_OF_DECLARE_DRIVER for topcrm to ensure simple-mfd populates
  child platform devices (Patch 06).
- Header hygiene: dropped <linux/mod_devicetable.h> from platform
  drivers in favor of <linux/platform_device.h> (Uwe Kleine-Koenig)
  (Patches 08, 13, 15, 16).
- Isolated PCIe SerDes/PLL into a Generic PHY driver under drivers/phy/
  with #phy-cells = <0>, completely removing raw syscon register poking
  from the DWC PCIe host controller driver (Patches 10, 11, 12, 13).
- Restored PCIe ASPM and CLKPM masking in controller setup, preventing
  MT7915 endpoint lockup when entering L0s/L1 power states (Patch 13).
- Replaced separate SPI driver with Stefan Doesinger unified spi-zx.c
  driver supporting both ZX29 and ZX279128S with dynamic CCF clock
  scaling via clk_get_rate(spifc->clk) (Patches 19, 20).
- Validated spi-zx.c in PIO mode on physical ZTE ZXHN H3600 hardware
  with 128 MiB HeYangTek SPI-NAND, UBI auto-attach, and UBIFS
  read/write.
- Fixed LED colors and shared PCIe reset GPIOs on H3600 (Patch 24).
- All DT schemas validated with dtschema and dt-doc-validate (0 warnings).
- All patches validated with scripts/checkpatch.pl (0 errors, 0 warnings).

Series breakdown:
- Patch 01: Consolidated MAINTAINERS entry.
- Patches 02-03: SoC platform integration, SMP CPU hotplug trampoline.
- Patches 04-06: Split CRM clock bindings, logical reset bindings,
  CCF/reset driver.
- Patches 07-09: GPIO controller bindings/driver, pinctrl-single
  bindings.
- Patches 10-13: Generic PCIe PHY bindings/driver, DWC PCIe controller.
- Patches 14-18: Networking: MDIO bus controller, ZX5201 Gigabit PHY,
  Gigabit Ethernet switch driver.
- Patches 19-20: Unified SPI flash controller bindings and spi-zx driver.
- Patches 21-22: Synopsys DWC3 USB platform glue binding and enablement.
- Patches 23-24: Device tree descriptions for the ZX279128S SoC and
  ZTE ZXHN H3600 board.

Hardware testing:
- Validated on physical ZTE ZXHN H3600 hardware running Linux 6.18.55.
- Dual-core SMP, CPU hotplug, and thermal sensors operational.
- Unified spi-zx driver verified with 128 MiB HeYangTek SPI-NAND,
  10 MTD partitions, UBI attachment, and UBIFS rootfs overlay.
- Dual-band MT7915 2.4/5 GHz Wi-Fi links initialized and stable.
- Gigabit Ethernet switch verified at line-rate 1 Gbps forwarding.
- USB 2.0 host verified.
---

Navid Ghahremani (24):
  MAINTAINERS: Consolidate ARM/ZTE ZX SOC SUPPORT with Stefan Doesinger
  dt-bindings: arm: Add ZTE ZX279128S platform descriptions
  ARM: zte: Add ZX279128S platform and CPU hotplug support
  dt-bindings: clock: Add ZTE ZX279128S CRM clock bindings
  dt-bindings: reset: Add ZTE ZX279128S reset controller bindings
  clk: zte: Add ZX279128S CRM clock and reset driver
  dt-bindings: gpio: Add ZTE ZX279128S GPIO controller
  gpio: Add ZTE ZX279128S GPIO driver
  dt-bindings: pinctrl: pinctrl-single: Add ZTE ZX279128S pin mux
  dt-bindings: phy: Add ZTE ZX279128S PCIe PHY binding
  phy: zte: Add ZTE ZX279128S PCIe PHY driver
  dt-bindings: PCI: Add ZTE ZX279128S host controller
  PCI: dwc: Add ZTE ZX279128S host controller driver
  dt-bindings: net: Add ZTE ZX279128S MDIO controller
  net: mdio: Add ZTE ZX279128S MDIO controller
  net: phy: Add Sanechips ZX5201 PHY support
  dt-bindings: net: Add ZTE ZX279128S Ethernet switch
  net: ethernet: zte: Add ZX279128S Ethernet switch driver
  dt-bindings: spi: Add ZTE ZX family SPI flash controller binding
  spi: zx: Add ZTE ZX family SPI flash controller driver
  dt-bindings: usb: Add ZTE ZX279128S DWC3 controller
  usb: dwc3: generic-plat: Add ZTE ZX279128S
  ARM: dts: zte: Add ZX279128S SoC description
  ARM: dts: zte: Add ZTE ZXHN H3600 board

 .../devicetree/bindings/arm/cpus.yaml         |    1 +
 .../devicetree/bindings/arm/zte.yaml          |    8 +-
 .../bindings/clock/zte,zx279128s-crm2.yaml    |   48 +
 .../bindings/clock/zte,zx279128s-lspcrpm.yaml |  101 ++
 .../bindings/clock/zte,zx279128s-topcrm.yaml  |   86 +
 .../bindings/gpio/zte,zx279128s-gpio.yaml     |   53 +
 .../bindings/net/zte,zx279128s-gmac.yaml      |  125 ++
 .../bindings/net/zte,zx279128s-mdio.yaml      |   65 +
 .../bindings/pci/zte,zx279128s-pcie.yaml      |  121 ++
 .../bindings/phy/zte,zx279128s-pcie-phy.yaml  |   40 +
 .../bindings/pinctrl/pinctrl-single.yaml      |    1 +
 .../bindings/spi/zte,zx279128s-spifc.yaml     |   72 +
 .../devicetree/bindings/sram/sram.yaml        |    1 +
 .../bindings/usb/zte,zx279128s-dwc3.yaml      |   76 +
 MAINTAINERS                                   |   27 +-
 arch/arm/boot/dts/zte/Makefile                |    2 +
 .../boot/dts/zte/zx279128s-zte-zxhn-h3600.dts |  364 ++++
 arch/arm/boot/dts/zte/zx279128s.dtsi          |  416 +++++
 arch/arm/mach-zte/Kconfig                     |   16 +
 arch/arm/mach-zte/Makefile                    |    4 +
 arch/arm/mach-zte/platsmp-zx279128s.c         |  173 ++
 arch/arm/mach-zte/zx279128s.c                 |   19 +
 drivers/clk/Kconfig                           |    1 +
 drivers/clk/Makefile                          |    1 +
 drivers/clk/zte/Kconfig                       |   14 +
 drivers/clk/zte/Makefile                      |    2 +
 drivers/clk/zte/clk-zx279128s.c               |  758 +++++++++
 drivers/gpio/Kconfig                          |   12 +
 drivers/gpio/Makefile                         |    1 +
 drivers/gpio/gpio-zx279128s.c                 |   79 +
 drivers/net/ethernet/zte/Kconfig              |   13 +
 drivers/net/ethernet/zte/Makefile             |    3 +
 drivers/net/ethernet/zte/zx279128s-eth.h      |  386 +++++
 drivers/net/ethernet/zte/zx279128s-main.c     | 1502 +++++++++++++++++
 drivers/net/ethernet/zte/zx279128s-ppe.c      |  805 +++++++++
 drivers/net/ethernet/zte/zx279128s-switch.c   |  368 ++++
 drivers/net/mdio/Kconfig                      |   11 +
 drivers/net/mdio/Makefile                     |    1 +
 drivers/net/mdio/mdio-zx279128s.c             |  157 ++
 drivers/net/phy/Kconfig                       |    8 +
 drivers/net/phy/Makefile                      |    1 +
 drivers/net/phy/sanechips.c                   |  152 ++
 drivers/pci/controller/dwc/Kconfig            |   13 +
 drivers/pci/controller/dwc/Makefile           |    1 +
 drivers/pci/controller/dwc/pcie-zx279128s.c   |  273 +++
 drivers/phy/Kconfig                           |   12 +
 drivers/phy/Makefile                          |    1 +
 drivers/phy/phy-zx279128s-pcie.c              |  156 ++
 drivers/spi/Kconfig                           |   15 +
 drivers/spi/Makefile                          |    1 +
 drivers/spi/spi-zx.c                          |  728 ++++++++
 drivers/usb/dwc3/Kconfig                      |    2 +-
 drivers/usb/dwc3/dwc3-generic-plat.c          |    1 +
 include/dt-bindings/clock/zte,zx279128s-crm.h |   51 +
 .../dt-bindings/reset/zte,zx279128s-reset.h   |   26 +
 55 files changed, 7370 insertions(+), 4 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/clock/zte,zx279128s-crm2.yaml
 create mode 100644 Documentation/devicetree/bindings/clock/zte,zx279128s-lspcrpm.yaml
 create mode 100644 Documentation/devicetree/bindings/clock/zte,zx279128s-topcrm.yaml
 create mode 100644 Documentation/devicetree/bindings/gpio/zte,zx279128s-gpio.yaml
 create mode 100644 Documentation/devicetree/bindings/net/zte,zx279128s-gmac.yaml
 create mode 100644 Documentation/devicetree/bindings/net/zte,zx279128s-mdio.yaml
 create mode 100644 Documentation/devicetree/bindings/pci/zte,zx279128s-pcie.yaml
 create mode 100644 Documentation/devicetree/bindings/phy/zte,zx279128s-pcie-phy.yaml
 create mode 100644 Documentation/devicetree/bindings/spi/zte,zx279128s-spifc.yaml
 create mode 100644 Documentation/devicetree/bindings/usb/zte,zx279128s-dwc3.yaml
 create mode 100644 arch/arm/boot/dts/zte/zx279128s-zte-zxhn-h3600.dts
 create mode 100644 arch/arm/boot/dts/zte/zx279128s.dtsi
 create mode 100644 arch/arm/mach-zte/platsmp-zx279128s.c
 create mode 100644 arch/arm/mach-zte/zx279128s.c
 create mode 100644 drivers/clk/zte/Kconfig
 create mode 100644 drivers/clk/zte/Makefile
 create mode 100644 drivers/clk/zte/clk-zx279128s.c
 create mode 100644 drivers/gpio/gpio-zx279128s.c
 create mode 100644 drivers/net/ethernet/zte/zx279128s-eth.h
 create mode 100644 drivers/net/ethernet/zte/zx279128s-main.c
 create mode 100644 drivers/net/ethernet/zte/zx279128s-ppe.c
 create mode 100644 drivers/net/ethernet/zte/zx279128s-switch.c
 create mode 100644 drivers/net/mdio/mdio-zx279128s.c
 create mode 100644 drivers/net/phy/sanechips.c
 create mode 100644 drivers/pci/controller/dwc/pcie-zx279128s.c
 create mode 100644 drivers/phy/phy-zx279128s-pcie.c
 create mode 100644 drivers/spi/spi-zx.c
 create mode 100644 include/dt-bindings/clock/zte,zx279128s-crm.h
 create mode 100644 include/dt-bindings/reset/zte,zx279128s-reset.h

-- 
2.55.0



^ permalink raw reply	[flat|nested] 61+ messages in thread

end of thread, other threads:[~2026-10-15 14:29 UTC | newest]

Thread overview: 61+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-14  7:20 [PATCH v2 00/24] ARM: zte: Add support for Sanechips ZX279128S and ZTE ZXHN H3600 Navid Ghahremani
2026-10-14  7:20 ` [PATCH v2 01/24] MAINTAINERS: Consolidate ARM/ZTE ZX SOC SUPPORT with Stefan Doesinger Navid Ghahremani
2026-10-14 20:11   ` Stefan Dösinger
2026-10-14  7:20 ` [PATCH v2 02/24] dt-bindings: arm: Add ZTE ZX279128S platform descriptions Navid Ghahremani
2026-10-14  7:20 ` [PATCH v2 03/24] ARM: zte: Add ZX279128S platform and CPU hotplug support Navid Ghahremani
2026-10-14  7:20 ` [PATCH v2 04/24] dt-bindings: clock: Add ZTE ZX279128S CRM clock bindings Navid Ghahremani
2026-10-14 21:48   ` Stefan Dösinger
2026-10-15  7:24   ` sashiko-bot
2026-10-15  9:25   ` Krzysztof Kozlowski
2026-10-15  9:26   ` Krzysztof Kozlowski
2026-10-14  7:20 ` [PATCH v2 05/24] dt-bindings: reset: Add ZTE ZX279128S reset controller bindings Navid Ghahremani
2026-10-15  7:24   ` sashiko-bot
2026-10-15  9:27   ` Krzysztof Kozlowski
2026-10-14  7:20 ` [PATCH v2 06/24] clk: zte: Add ZX279128S CRM clock and reset driver Navid Ghahremani
2026-10-14 13:21   ` Philipp Zabel
2026-10-14 19:39   ` Stefan Dösinger
2026-10-15  7:24   ` sashiko-bot
2026-10-14  7:20 ` [PATCH v2 07/24] dt-bindings: gpio: Add ZTE ZX279128S GPIO controller Navid Ghahremani
2026-10-14  7:20 ` [PATCH v2 08/24] gpio: Add ZTE ZX279128S GPIO driver Navid Ghahremani
2026-10-14 21:11   ` Stefan Dösinger
2026-10-15 12:25   ` Bartosz Golaszewski
2026-10-14  7:20 ` [PATCH v2 09/24] dt-bindings: pinctrl: pinctrl-single: Add ZTE ZX279128S pin mux Navid Ghahremani
2026-10-14  7:20 ` [PATCH v2 10/24] dt-bindings: phy: Add ZTE ZX279128S PCIe PHY binding Navid Ghahremani
2026-10-14  7:20   ` Navid Ghahremani
2026-10-15  7:24   ` sashiko-bot
2026-10-15  7:24     ` sashiko-bot
2026-10-15  9:29   ` Krzysztof Kozlowski
2026-10-15  9:29     ` Krzysztof Kozlowski
2026-10-14  7:20 ` [PATCH v2 11/24] phy: zte: Add ZTE ZX279128S PCIe PHY driver Navid Ghahremani
2026-10-14  7:20   ` Navid Ghahremani
2026-10-15  7:24   ` sashiko-bot
2026-10-14  7:20 ` [PATCH v2 12/24] dt-bindings: PCI: Add ZTE ZX279128S host controller Navid Ghahremani
2026-10-15  7:24   ` sashiko-bot
2026-10-14  7:20 ` [PATCH v2 13/24] PCI: dwc: Add ZTE ZX279128S host controller driver Navid Ghahremani
2026-10-14 13:19   ` Bjorn Helgaas
2026-10-14 21:06     ` Stefan Dösinger
2026-10-15  7:24   ` sashiko-bot
2026-10-14  7:20 ` [PATCH v2 14/24] dt-bindings: net: Add ZTE ZX279128S MDIO controller Navid Ghahremani
2026-10-14  7:20 ` [PATCH v2 15/24] net: mdio: " Navid Ghahremani
2026-10-14 12:13   ` Andrew Lunn
2026-10-14  7:20 ` [PATCH v2 16/24] net: phy: Add Sanechips ZX5201 PHY support Navid Ghahremani
2026-10-14 12:37   ` Andrew Lunn
2026-10-14  7:20 ` [PATCH v2 17/24] dt-bindings: net: Add ZTE ZX279128S Ethernet switch Navid Ghahremani
2026-10-14  7:20 ` [PATCH v2 18/24] net: ethernet: zte: Add ZX279128S Ethernet switch driver Navid Ghahremani
2026-10-14  7:20 ` [PATCH v2 19/24] dt-bindings: spi: Add ZTE ZX family SPI flash controller binding Navid Ghahremani
2026-10-14 20:33   ` Stefan Dösinger
2026-10-15  9:35   ` Krzysztof Kozlowski
2026-10-15  9:36   ` Krzysztof Kozlowski
2026-10-14  7:21 ` [PATCH v2 20/24] spi: zx: Add ZTE ZX family SPI flash controller driver Navid Ghahremani
2026-10-14 19:28   ` Stefan Dösinger
2026-10-15  9:34   ` Krzysztof Kozlowski
2026-10-15 14:29   ` kernel test robot
2026-10-14  7:21 ` [PATCH v2 21/24] dt-bindings: usb: Add ZTE ZX279128S DWC3 controller Navid Ghahremani
2026-10-15  7:24   ` sashiko-bot
2026-10-14  7:21 ` [PATCH v2 22/24] usb: dwc3: generic-plat: Add ZTE ZX279128S Navid Ghahremani
2026-10-15  7:24   ` sashiko-bot
2026-10-14  7:21 ` [PATCH v2 23/24] ARM: dts: zte: Add ZX279128S SoC description Navid Ghahremani
2026-10-14  7:21 ` [PATCH v2 24/24] ARM: dts: zte: Add ZTE ZXHN H3600 board Navid Ghahremani
2026-10-14 12:52   ` Andrew Lunn
2026-10-15  7:24   ` sashiko-bot
2026-10-14 20:00 ` [PATCH v2 00/24] ARM: zte: Add support for Sanechips ZX279128S and ZTE ZXHN H3600 Stefan Dösinger

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.