[PATCH v2 00/52] mips: octeon: Add ethernet support

Stefan Roese
2022-04-07T07:12:41Z

This patchset adds the networking files and drivers including device
helper headers and C files. Please excuse the massive amount of files
in this patch series. Also the sometimes huge files (mostly headers
with register definitions) that I needed to include.

The infrastructure code with all the headers is ported mistly without
any intended functional changes from the 2013 Cavium / Marvell U-Boot
version. It has undergone many hours of extensive code cleanup and
reformatting. Some of it done by using tools (checkpatch, Lindent, clang
format etc) and also some of it done manually, as I couldn't find some
tools that could do the needed work in a reliable and functional way.
The result is that checkpatch now only throws a "few" warnings that are
left. Some of those can't be removed without an even more extensive
cleanup / rewrite of the code, like the addition of typedefs.

The added header, helper and infrastructure files in the first part of
the patch-series (patches 1-43) are the foundation, that is used by the
main Octeon U-Boot ethernet driver (patch 50/52). Patches 47-49 add the
DT nodes and properties to the corresponding dtsi / dts files. Patches
51 & 52 finally enable the ethernet support both MIPS Octeon boards,
EBB7304 & NIC23.

All this is tested on the 2 Cavium / Marvell MIPS Octeon boards:
EBB7304 & NIC23

This patchset including the small Marvell PHY patches is available in
this gitlab branch:

https://source.denx.de/u-boot/custodians/u-boot-marvell/-/tree/mips-octeon-ethernet-v2-2022-04-07

Changes in v2:
- As suggested by Daniel, remove all unreferenced functions from the source
code by manually inspecting u-boot.map [1]
- Rebased on latest TOT

[1] Here the diffstat comarison between v1 and v2:
v1: 77 files changed, 42315 insertions(+), 586 deletions(-)
v2: 78 files changed, 33672 insertions(+), 2524 deletions(-)

Thanks,
Stefan

Aaron Williams (40):
mips: octeon: Add misc cvmx-* header files
mips: octeon: Add cvmx-ilk-defs.h header file
mips: octeon: Add cvmx-iob-defs.h header file
mips: octeon: Add cvmx-lbk-defs.h header file
mips: octeon: Add cvmx-npei-defs.h header file
mips: octeon: Add cvmx-pcsxx-defs.h header file
mips: octeon: Add cvmx-xcv-defs.h header file
mips: octeon: Add cvmx-helper-agl.c
mips: octeon: Add cvmx-helper-bgx.c
mips: octeon: Add cvmx-helper-board.c
mips: octeon: Add cvmx-helper-fpa.c
mips: octeon: Add cvmx-helper-ilk.c
mips: octeon: Add cvmx-helper-ipd.c
mips: octeon: Add cvmx-helper-loop.c
mips: octeon: Add cvmx-helper-npi.c
mips: octeon: Add cvmx-helper-pki.c
mips: octeon: Add cvmx-helper-pko.c
mips: octeon: Add cvmx-helper-pko3.c
mips: octeon: Add cvmx-helper-rgmii.c
mips: octeon: Add cvmx-helper-sgmii.c
mips: octeon: Add cvmx-helper-sfp.c
mips: octeon: Add cvmx-helper-xaui.c
mips: octeon: Add cvmx-agl.c
mips: octeon: Add cvmx-cmd-queue.c
mips: octeon: Add cvmx-fau-compat.c
mips: octeon: Add cvmx-fpa.c
mips: octeon: Add cvmx-fpa-resource.c
mips: octeon: Add cvmx-global-resource.c
mips: octeon: Add cvmx-ilk.c
mips: octeon: Add cvmx-ipd.c
mips: octeon: Add cvmx-pki.c
mips: octeon: Add cvmx-pki-resources.c
mips: octeon: Add cvmx-pko.c
mips: octeon: Add cvmx-pko3.c
mips: octeon: Add cvmx-pko3-queue.c
mips: octeon: Add cvmx-pko3-compat.c
mips: octeon: Add cvmx-pko3-resources.c
mips: octeon: Add cvmx-pko-internal-ports-range.c
mips: octeon: Add cvmx-qlm-tables.c
mips: octeon: Add cvmx-range.c

Stefan Roese (12):
mips: octeon: Misc changes to existing headers for upcoming eth
support
mips: octeon: Misc changes to existing C files for upcoming eth
support
mips: octeon: Makefile: Enable building of the newly added C files
mips: octeon: cpu.c: Move bootmem init to arch_early_init_r()
mips: octeon: cpu.c: Implement configure_lmtdma_window()
mips: octeon: octeon_common.h: Move init SP because of increased image
size
mips: octeon: mrvl,cn73xx.dtsi: Add ethernet (BGX) and SMI DT nodes
mips: octeon: mrvl,octeon-ebb7304.dts: Add ethernet DT support
mips: octeon: mrvl,octeon-nic23.dts: Add ethernet DT support
net: Add ethernet support for MIPS Octeon
mips: octeon: ebb7304: Enable ethernet support
mips: octeon: nic23: Enable ethernet support

arch/mips/Kconfig | 1 +
arch/mips/dts/mrvl,cn73xx.dtsi | 35 +
arch/mips/dts/mrvl,octeon-ebb7304.dts | 45 +
arch/mips/dts/mrvl,octeon-nic23.dts | 238 ++
arch/mips/mach-octeon/Makefile | 35 +-
arch/mips/mach-octeon/cpu.c | 47 +-
arch/mips/mach-octeon/cvmx-agl.c | 216 +
arch/mips/mach-octeon/cvmx-bootmem.c | 3 +-
arch/mips/mach-octeon/cvmx-cmd-queue.c | 355 ++
arch/mips/mach-octeon/cvmx-fau-compat.c | 53 +
arch/mips/mach-octeon/cvmx-fpa-resource.c | 219 +
arch/mips/mach-octeon/cvmx-fpa.c | 1127 ++++++
arch/mips/mach-octeon/cvmx-global-resources.c | 517 +++
arch/mips/mach-octeon/cvmx-helper-agl.c | 231 ++
arch/mips/mach-octeon/cvmx-helper-bgx.c | 2737 +++++++++++++
arch/mips/mach-octeon/cvmx-helper-board.c | 1824 +++++++++
arch/mips/mach-octeon/cvmx-helper-cfg.c | 655 +--
arch/mips/mach-octeon/cvmx-helper-fdt.c | 898 +----
arch/mips/mach-octeon/cvmx-helper-fpa.c | 76 +
arch/mips/mach-octeon/cvmx-helper-ilk.c | 902 +++++
arch/mips/mach-octeon/cvmx-helper-ipd.c | 286 ++
arch/mips/mach-octeon/cvmx-helper-loop.c | 178 +
arch/mips/mach-octeon/cvmx-helper-npi.c | 137 +
arch/mips/mach-octeon/cvmx-helper-pki.c | 549 +++
arch/mips/mach-octeon/cvmx-helper-pko.c | 203 +
arch/mips/mach-octeon/cvmx-helper-pko3.c | 1088 +++++
arch/mips/mach-octeon/cvmx-helper-rgmii.c | 398 ++
arch/mips/mach-octeon/cvmx-helper-sfp.c | 1309 ++++++
arch/mips/mach-octeon/cvmx-helper-sgmii.c | 781 ++++
arch/mips/mach-octeon/cvmx-helper-util.c | 248 --
arch/mips/mach-octeon/cvmx-helper-xaui.c | 518 +++
arch/mips/mach-octeon/cvmx-helper.c | 845 +---
arch/mips/mach-octeon/cvmx-ilk.c | 1199 ++++++
arch/mips/mach-octeon/cvmx-ipd.c | 149 +
arch/mips/mach-octeon/cvmx-pki-resources.c | 285 ++
arch/mips/mach-octeon/cvmx-pki.c | 910 +++++
.../cvmx-pko-internal-ports-range.c | 99 +
arch/mips/mach-octeon/cvmx-pko.c | 788 ++++
arch/mips/mach-octeon/cvmx-pko3-compat.c | 656 +++
arch/mips/mach-octeon/cvmx-pko3-queue.c | 879 ++++
arch/mips/mach-octeon/cvmx-pko3-resources.c | 213 +
arch/mips/mach-octeon/cvmx-pko3.c | 786 ++++
arch/mips/mach-octeon/cvmx-qlm-tables.c | 292 ++
arch/mips/mach-octeon/cvmx-range.c | 259 ++
arch/mips/mach-octeon/include/mach/cvmx-agl.h | 45 +
.../mach-octeon/include/mach/cvmx-bootmem.h | 3 +-
.../mach-octeon/include/mach/cvmx-config.h | 128 +
arch/mips/mach-octeon/include/mach/cvmx-fau.h | 581 +++
arch/mips/mach-octeon/include/mach/cvmx-fpa.h | 3 +-
.../mips/mach-octeon/include/mach/cvmx-fpa3.h | 37 -
.../include/mach/cvmx-helper-board.h | 6 +-
.../include/mach/cvmx-helper-fdt.h | 40 +-
.../include/mach/cvmx-helper-pko.h | 2 +-
.../mach-octeon/include/mach/cvmx-helper.h | 20 +
.../mach-octeon/include/mach/cvmx-ilk-defs.h | 2269 +++++++++++
.../mach-octeon/include/mach/cvmx-iob-defs.h | 1328 ++++++
.../mach-octeon/include/mach/cvmx-lbk-defs.h | 157 +
.../mips/mach-octeon/include/mach/cvmx-mdio.h | 516 +++
.../mach-octeon/include/mach/cvmx-npei-defs.h | 3550 +++++++++++++++++
.../include/mach/cvmx-pcsxx-defs.h | 787 ++++
.../include/mach/cvmx-pki-cluster.h | 343 ++
arch/mips/mach-octeon/include/mach/cvmx-pko.h | 213 +
.../include/mach/cvmx-pko3-resources.h | 36 +
.../mips/mach-octeon/include/mach/cvmx-pko3.h | 1052 +++++
.../mach-octeon/include/mach/cvmx-range.h | 23 +
.../mips/mach-octeon/include/mach/cvmx-regs.h | 100 +-
.../mach-octeon/include/mach/cvmx-xcv-defs.h | 226 ++
.../mach-octeon/include/mach/octeon_eth.h | 54 +-
board/Marvell/octeon_nic23/board.c | 87 +-
configs/octeon_ebb7304_defconfig | 7 +
configs/octeon_nic23_defconfig | 10 +-
drivers/net/Kconfig | 7 +
drivers/net/Makefile | 1 +
drivers/net/octeon/Makefile | 6 +
drivers/net/octeon/octeon_eth.c | 1060 +++++
drivers/net/octeon/octeon_mdio.c | 226 ++
include/configs/octeon_common.h | 2 +-
include/configs/octeon_ebb7304.h | 2 +
78 files changed, 33672 insertions(+), 2524 deletions(-)
create mode 100644 arch/mips/mach-octeon/cvmx-agl.c
create mode 100644 arch/mips/mach-octeon/cvmx-cmd-queue.c
create mode 100644 arch/mips/mach-octeon/cvmx-fau-compat.c
create mode 100644 arch/mips/mach-octeon/cvmx-fpa-resource.c
create mode 100644 arch/mips/mach-octeon/cvmx-fpa.c
create mode 100644 arch/mips/mach-octeon/cvmx-global-resources.c
create mode 100644 arch/mips/mach-octeon/cvmx-helper-agl.c
create mode 100644 arch/mips/mach-octeon/cvmx-helper-bgx.c
create mode 100644 arch/mips/mach-octeon/cvmx-helper-board.c
create mode 100644 arch/mips/mach-octeon/cvmx-helper-fpa.c
create mode 100644 arch/mips/mach-octeon/cvmx-helper-ilk.c
create mode 100644 arch/mips/mach-octeon/cvmx-helper-ipd.c
create mode 100644 arch/mips/mach-octeon/cvmx-helper-loop.c
create mode 100644 arch/mips/mach-octeon/cvmx-helper-npi.c
create mode 100644 arch/mips/mach-octeon/cvmx-helper-pki.c
create mode 100644 arch/mips/mach-octeon/cvmx-helper-pko.c
create mode 100644 arch/mips/mach-octeon/cvmx-helper-pko3.c
create mode 100644 arch/mips/mach-octeon/cvmx-helper-rgmii.c
create mode 100644 arch/mips/mach-octeon/cvmx-helper-sfp.c
create mode 100644 arch/mips/mach-octeon/cvmx-helper-sgmii.c
create mode 100644 arch/mips/mach-octeon/cvmx-helper-xaui.c
create mode 100644 arch/mips/mach-octeon/cvmx-ilk.c
create mode 100644 arch/mips/mach-octeon/cvmx-ipd.c
create mode 100644 arch/mips/mach-octeon/cvmx-pki-resources.c
create mode 100644 arch/mips/mach-octeon/cvmx-pki.c
create mode 100644 arch/mips/mach-octeon/cvmx-pko-internal-ports-range.c
create mode 100644 arch/mips/mach-octeon/cvmx-pko.c
create mode 100644 arch/mips/mach-octeon/cvmx-pko3-compat.c
create mode 100644 arch/mips/mach-octeon/cvmx-pko3-queue.c
create mode 100644 arch/mips/mach-octeon/cvmx-pko3-resources.c
create mode 100644 arch/mips/mach-octeon/cvmx-pko3.c
create mode 100644 arch/mips/mach-octeon/cvmx-qlm-tables.c
create mode 100644 arch/mips/mach-octeon/cvmx-range.c
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-agl.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-config.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-fau.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-ilk-defs.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-iob-defs.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-lbk-defs.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-mdio.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-npei-defs.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-pcsxx-defs.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-pki-cluster.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-pko.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-pko3-resources.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-pko3.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-range.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-xcv-defs.h
create mode 100644 drivers/net/octeon/Makefile
create mode 100644 drivers/net/octeon/octeon_eth.c
create mode 100644 drivers/net/octeon/octeon_mdio.c

--
2.35.1