[PATCH v1 00/50] mips: octeon: Add serdes and device helper support incl. DM PCIe driver

Stefan Roese
2020-12-11T16:05:22Z

This patchset adds the serdes and (mostly networking) device helper
macros and functions, needed to support the still missing Octeon II /
III devices in mainline U-Boot.

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 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 headers and helper functions will be used by the upcoming
support for the Octeon II / III networking drivers, including PHY &
switch support. It was not easily possible to split these infrastructure
files into a separate patchset, as it is heavily interconnected in the
common QLM/DLM serdes interface initialization. The result is, that the
upcoming ethernet driver support will be much smaller (this is at least
my current assumption).

The added PCIe RC support with the included DM PCIe driver is the first
driver making use of this Octeon serdes infrastructure. This has been
tested with an Intel E1000 PCIe network card in the Octeon 7304 EBB.

Thanks,
Stefan

Aaron Williams (42):
mips: octeon: Add misc cvmx-helper header files
mips: octeon: Add cvmx-agl-defs.h header file
mips: octeon: Add cvmx-asxx-defs.h header file
mips: octeon: Add cvmx-bgxx-defs.h header file
mips: octeon: Add cvmx-ciu-defs.h header file
mips: octeon: Add cvmx-dbg-defs.h header file
mips: octeon: Add cvmx-dpi-defs.h header file
mips: octeon: Add cvmx-dtx-defs.h header file
mips: octeon: Add cvmx-fpa-defs.h header file
mips: octeon: Add cvmx-gmxx-defs.h header file
mips: octeon: Add cvmx-gserx-defs.h header file
mips: octeon: Add cvmx-ipd-defs.h header file
mips: octeon: Add cvmx-l2c-defs.h header file
mips: octeon: Add cvmx-mio-defs.h header file
mips: octeon: Add cvmx-npi-defs.h header file
mips: octeon: Add cvmx-pcieepx-defs.h header file
mips: octeon: Add cvmx-pciercx-defs.h header file
mips: octeon: Add cvmx-pcsx-defs.h header file
mips: octeon: Add cvmx-pemx-defs.h header file
mips: octeon: Add cvmx-pepx-defs.h header file
mips: octeon: Add cvmx-pip-defs.h header file
mips: octeon: Add cvmx-pki-defs.h header file
mips: octeon: Add cvmx-pko-defs.h header file
mips: octeon: Add cvmx-pow-defs.h header file
mips: octeon: Add cvmx-rst-defs.h header file
mips: octeon: Add cvmx-sata-defs.h header file
mips: octeon: Add cvmx-sli-defs.h header file
mips: octeon: Add cvmx-smix-defs.h header file
mips: octeon: Add cvmx-sriomaintx-defs.h header file
mips: octeon: Add cvmx-sriox-defs.h header file
mips: octeon: Add cvmx-sso-defs.h header file
mips: octeon: Add misc remaining header files
mips: octeon: Add cvmx-helper-cfg.c
mips: octeon: Add cvmx-helper-fdt.c
mips: octeon: Add cvmx-helper-jtag.c
mips: octeon: Add cvmx-helper-util.c
mips: octeon: Add cvmx-helper.c
mips: octeon: Add cvmx-pcie.c
mips: octeon: Add cvmx-qlm.c
mips: octeon: Add octeon_fdt.c
mips: octeon: Add octeon_qlm.c
mips: octeon: octeon_ebb7304: Add board specific QLM init code

Stefan Roese (8):
mips: global_data.h: Add Octeon specific data to arch_global_data
struct
mips: octeon: Misc changes required because of the newly added headers
mips: octeon: Move cvmx-lmcx-defs.h from mach/cvmx to mach
mips: octeon: Makefile: Enable building of the newly added C files
mips: octeon: Kconfig: Enable CONFIG_SYS_PCI_64BIT
mips: octeon: mrvl,cn73xx.dtsi: Add PCIe controller DT node
mips: octeon: Add Octeon PCIe host controller driver
mips: octeon: octeon_ebb7304_defconfig: Enable Octeon PCIe and E1000

arch/mips/dts/mrvl,cn73xx.dtsi | 16 +
arch/mips/include/asm/global_data.h | 9 +
arch/mips/mach-octeon/Kconfig | 4 +
arch/mips/mach-octeon/Makefile | 11 +
arch/mips/mach-octeon/bootoctlinux.c | 1 +
arch/mips/mach-octeon/cvmx-bootmem.c | 6 -
arch/mips/mach-octeon/cvmx-coremask.c | 1 +
arch/mips/mach-octeon/cvmx-helper-cfg.c | 1914 ++++
arch/mips/mach-octeon/cvmx-helper-fdt.c | 970 ++
arch/mips/mach-octeon/cvmx-helper-jtag.c | 172 +
arch/mips/mach-octeon/cvmx-helper-util.c | 1225 +++
arch/mips/mach-octeon/cvmx-helper.c | 2611 +++++
arch/mips/mach-octeon/cvmx-pcie.c | 2487 +++++
arch/mips/mach-octeon/cvmx-qlm.c | 2350 +++++
.../mach-octeon/include/mach/cvmx-address.h | 209 +
.../mach-octeon/include/mach/cvmx-agl-defs.h | 3135 ++++++
.../mach-octeon/include/mach/cvmx-asxx-defs.h | 709 ++
.../mach-octeon/include/mach/cvmx-bgxx-defs.h | 4106 +++++++
.../mach-octeon/include/mach/cvmx-ciu-defs.h | 7351 +++++++++++++
.../mach-octeon/include/mach/cvmx-cmd-queue.h | 441 +
.../mach-octeon/include/mach/cvmx-csr-enums.h | 87 +
arch/mips/mach-octeon/include/mach/cvmx-csr.h | 78 +
.../mach-octeon/include/mach/cvmx-dbg-defs.h | 33 +
.../mach-octeon/include/mach/cvmx-dpi-defs.h | 1460 +++
.../mach-octeon/include/mach/cvmx-dtx-defs.h | 6962 ++++++++++++
.../mach-octeon/include/mach/cvmx-error.h | 456 +
.../mach-octeon/include/mach/cvmx-fpa-defs.h | 1866 ++++
arch/mips/mach-octeon/include/mach/cvmx-fpa.h | 217 +
.../mips/mach-octeon/include/mach/cvmx-fpa1.h | 196 +
.../mips/mach-octeon/include/mach/cvmx-fpa3.h | 566 +
.../include/mach/cvmx-global-resources.h | 213 +
arch/mips/mach-octeon/include/mach/cvmx-gmx.h | 16 +
.../mach-octeon/include/mach/cvmx-gmxx-defs.h | 6378 +++++++++++
.../include/mach/cvmx-gserx-defs.h | 2191 ++++
.../include/mach/cvmx-helper-agl.h | 68 +
.../include/mach/cvmx-helper-bgx.h | 335 +
.../include/mach/cvmx-helper-board.h | 558 +
.../include/mach/cvmx-helper-cfg.h | 884 ++
.../include/mach/cvmx-helper-errata.h | 50 +
.../include/mach/cvmx-helper-fdt.h | 568 +
.../include/mach/cvmx-helper-fpa.h | 43 +
.../include/mach/cvmx-helper-gpio.h | 427 +
.../include/mach/cvmx-helper-ilk.h | 93 +
.../include/mach/cvmx-helper-ipd.h | 16 +
.../include/mach/cvmx-helper-jtag.h | 84 +
.../include/mach/cvmx-helper-loop.h | 37 +
.../include/mach/cvmx-helper-npi.h | 42 +
.../include/mach/cvmx-helper-pki.h | 319 +
.../include/mach/cvmx-helper-pko.h | 51 +
.../include/mach/cvmx-helper-pko3.h | 76 +
.../include/mach/cvmx-helper-rgmii.h | 99 +
.../include/mach/cvmx-helper-sfp.h | 437 +
.../include/mach/cvmx-helper-sgmii.h | 81 +
.../include/mach/cvmx-helper-spi.h | 73 +
.../include/mach/cvmx-helper-srio.h | 72 +
.../include/mach/cvmx-helper-util.h | 412 +
.../include/mach/cvmx-helper-xaui.h | 108 +
.../mach-octeon/include/mach/cvmx-helper.h | 565 +
.../mach-octeon/include/mach/cvmx-hwfau.h | 606 ++
.../mach-octeon/include/mach/cvmx-hwpko.h | 570 +
arch/mips/mach-octeon/include/mach/cvmx-ilk.h | 154 +
.../mach-octeon/include/mach/cvmx-ipd-defs.h | 1925 ++++
arch/mips/mach-octeon/include/mach/cvmx-ipd.h | 233 +
.../mach-octeon/include/mach/cvmx-l2c-defs.h | 172 +
.../include/mach/{cvmx => }/cvmx-lmcx-defs.h | 0
.../mach-octeon/include/mach/cvmx-mio-defs.h | 353 +
.../mach-octeon/include/mach/cvmx-npi-defs.h | 1953 ++++
.../mach-octeon/include/mach/cvmx-packet.h | 40 +
.../mips/mach-octeon/include/mach/cvmx-pcie.h | 279 +
.../include/mach/cvmx-pcieepx-defs.h | 6848 ++++++++++++
.../include/mach/cvmx-pciercx-defs.h | 5586 ++++++++++
.../mach-octeon/include/mach/cvmx-pcsx-defs.h | 1005 ++
.../mach-octeon/include/mach/cvmx-pemx-defs.h | 2028 ++++
.../mach-octeon/include/mach/cvmx-pexp-defs.h | 1382 +++
.../mach-octeon/include/mach/cvmx-pip-defs.h | 3040 ++++++
arch/mips/mach-octeon/include/mach/cvmx-pip.h | 1080 ++
.../mach-octeon/include/mach/cvmx-pki-defs.h | 2353 +++++
.../include/mach/cvmx-pki-resources.h | 157 +
arch/mips/mach-octeon/include/mach/cvmx-pki.h | 970 ++
.../mach-octeon/include/mach/cvmx-pko-defs.h | 9388 +++++++++++++++++
.../mach/cvmx-pko-internal-ports-range.h | 43 +
.../include/mach/cvmx-pko3-queue.h | 175 +
.../mach-octeon/include/mach/cvmx-pow-defs.h | 1135 ++
arch/mips/mach-octeon/include/mach/cvmx-pow.h | 2991 ++++++
arch/mips/mach-octeon/include/mach/cvmx-qlm.h | 304 +
.../mips/mach-octeon/include/mach/cvmx-regs.h | 330 +-
.../mach-octeon/include/mach/cvmx-rst-defs.h | 77 +
.../mach-octeon/include/mach/cvmx-sata-defs.h | 311 +
.../mach-octeon/include/mach/cvmx-scratch.h | 113 +
.../mach-octeon/include/mach/cvmx-sli-defs.h | 6548 ++++++++++++
.../mach-octeon/include/mach/cvmx-smix-defs.h | 360 +
.../include/mach/cvmx-sriomaintx-defs.h | 61 +
.../include/mach/cvmx-sriox-defs.h | 44 +
.../mach-octeon/include/mach/cvmx-sso-defs.h | 2904 +++++
arch/mips/mach-octeon/include/mach/cvmx-wqe.h | 1462 +++
.../mach-octeon/include/mach/octeon-feature.h | 2 +
.../mach-octeon/include/mach/octeon-model.h | 2 +
.../mach-octeon/include/mach/octeon_ddr.h | 189 +-
arch/mips/mach-octeon/octeon_fdt.c | 1040 ++
arch/mips/mach-octeon/octeon_qlm.c | 5853 ++++++++++
board/Marvell/octeon_ebb7304/board.c | 732 +-
configs/octeon_ebb7304_defconfig | 5 +-
drivers/pci/Kconfig | 6 +
drivers/pci/Makefile | 1 +
drivers/pci/pcie_octeon.c | 159 +
drivers/ram/octeon/octeon3_lmc.c | 28 +-
drivers/ram/octeon/octeon_ddr.c | 22 +-
107 files changed, 118724 insertions(+), 240 deletions(-)
create mode 100644 arch/mips/mach-octeon/cvmx-helper-cfg.c
create mode 100644 arch/mips/mach-octeon/cvmx-helper-fdt.c
create mode 100644 arch/mips/mach-octeon/cvmx-helper-jtag.c
create mode 100644 arch/mips/mach-octeon/cvmx-helper-util.c
create mode 100644 arch/mips/mach-octeon/cvmx-helper.c
create mode 100644 arch/mips/mach-octeon/cvmx-pcie.c
create mode 100644 arch/mips/mach-octeon/cvmx-qlm.c
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-address.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-agl-defs.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-asxx-defs.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-bgxx-defs.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-ciu-defs.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-cmd-queue.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-csr-enums.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-csr.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-dbg-defs.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-dpi-defs.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-dtx-defs.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-error.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-fpa-defs.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-fpa.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-fpa1.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-fpa3.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-global-resources.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-gmx.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-gmxx-defs.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-gserx-defs.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-helper-agl.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-helper-bgx.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-helper-board.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-helper-cfg.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-helper-errata.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-helper-fdt.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-helper-fpa.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-helper-gpio.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-helper-ilk.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-helper-ipd.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-helper-jtag.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-helper-loop.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-helper-npi.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-helper-pki.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-helper-pko.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-helper-pko3.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-helper-rgmii.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-helper-sfp.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-helper-sgmii.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-helper-spi.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-helper-srio.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-helper-util.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-helper-xaui.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-helper.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-hwfau.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-hwpko.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-ilk.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-ipd-defs.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-ipd.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-l2c-defs.h
rename arch/mips/mach-octeon/include/mach/{cvmx => }/cvmx-lmcx-defs.h (100%)
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-mio-defs.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-npi-defs.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-packet.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-pcie.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-pcieepx-defs.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-pciercx-defs.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-pcsx-defs.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-pemx-defs.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-pexp-defs.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-pip-defs.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-pip.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-pki-defs.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-pki-resources.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-pki.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-pko-defs.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-pko-internal-ports-range.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-pko3-queue.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-pow-defs.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-pow.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-qlm.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-rst-defs.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-sata-defs.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-scratch.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-sli-defs.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-smix-defs.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-sriomaintx-defs.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-sriox-defs.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-sso-defs.h
create mode 100644 arch/mips/mach-octeon/include/mach/cvmx-wqe.h
create mode 100644 arch/mips/mach-octeon/octeon_fdt.c
create mode 100644 arch/mips/mach-octeon/octeon_qlm.c
create mode 100644 drivers/pci/pcie_octeon.c

--
2.29.2