[PATCH 00/52] mips: octeon: Add ethernet support
Stefan Roese
sr at denx.de
Thu Mar 31 07:27:18 CEST 2022
Hi Daniel,
On 3/31/22 01:56, Daniel Schwierzeck wrote:
> Am Mittwoch, dem 30.03.2022 um 12:06 +0200 schrieb Stefan Roese:
>> 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-v1-2022-03-30
>>
>> 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-igl.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
>
> are those 10 millions helper functions really used by the ethernet
> driver? Do you really need features like SFP modules in U-Boot?
It's very hard to add the network support for those SoCs with their
quite complex devices and interfaces without using this proven code.
I agree, that this is not really appealing. And at least the NIC23
only supports network via SFP modules, so there is not alterative
interface here.
> Maybe it helps to have a look at u-boot.map to see which functions are
> unused and are discarded by the linker. Those functions could be
> actually removed to reduce the LoC count ;)
Good idea, thanks. I was looking for something like this, but never got
the idea to actually look at the u-boot.map file to detect the unused
functions, so that I can remove them. I'll work on this to get the LoC
down a bit. ;)
Thanks,
Stefan
>>
>> 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 | 449 +++
>> arch/mips/mach-octeon/cvmx-fau-compat.c | 53 +
>> arch/mips/mach-octeon/cvmx-fpa-resource.c | 305 ++
>> arch/mips/mach-octeon/cvmx-fpa.c | 1672 ++++++++
>> arch/mips/mach-octeon/cvmx-global-resources.c | 639 +++
>> arch/mips/mach-octeon/cvmx-helper-agl.c | 231 ++
>> arch/mips/mach-octeon/cvmx-helper-bgx.c | 3215 +++++++++++++++
>> arch/mips/mach-octeon/cvmx-helper-board.c | 2030 ++++++++++
>> arch/mips/mach-octeon/cvmx-helper-cfg.c | 67 +-
>> arch/mips/mach-octeon/cvmx-helper-fdt.c | 645 ++-
>> arch/mips/mach-octeon/cvmx-helper-fpa.c | 329 ++
>> arch/mips/mach-octeon/cvmx-helper-ilk.c | 926 +++++
>> arch/mips/mach-octeon/cvmx-helper-ipd.c | 313 ++
>> arch/mips/mach-octeon/cvmx-helper-loop.c | 178 +
>> arch/mips/mach-octeon/cvmx-helper-npi.c | 146 +
>> arch/mips/mach-octeon/cvmx-helper-pki.c | 2156 ++++++++++
>> arch/mips/mach-octeon/cvmx-helper-pko.c | 312 ++
>> arch/mips/mach-octeon/cvmx-helper-pko3.c | 1252 ++++++
>> arch/mips/mach-octeon/cvmx-helper-rgmii.c | 431 ++
>> arch/mips/mach-octeon/cvmx-helper-sfp.c | 1877 +++++++++
>> arch/mips/mach-octeon/cvmx-helper-sgmii.c | 781 ++++
>> arch/mips/mach-octeon/cvmx-helper-xaui.c | 587 +++
>> arch/mips/mach-octeon/cvmx-helper.c | 45 +-
>> arch/mips/mach-octeon/cvmx-ilk.c | 1618 ++++++++
>> arch/mips/mach-octeon/cvmx-ipd.c | 690 ++++
>> arch/mips/mach-octeon/cvmx-pki-resources.c | 519 +++
>> arch/mips/mach-octeon/cvmx-pki.c | 1619 ++++++++
>> .../cvmx-pko-internal-ports-range.c | 164 +
>> arch/mips/mach-octeon/cvmx-pko.c | 1110 ++++++
>> arch/mips/mach-octeon/cvmx-pko3-compat.c | 656 +++
>> arch/mips/mach-octeon/cvmx-pko3-queue.c | 1331 ++++++
>> arch/mips/mach-octeon/cvmx-pko3-resources.c | 229 ++
>> arch/mips/mach-octeon/cvmx-pko3.c | 2143 ++++++++++
>> arch/mips/mach-octeon/cvmx-qlm-tables.c | 292 ++
>> arch/mips/mach-octeon/cvmx-range.c | 344 ++
>> 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 +
>> 77 files changed, 42315 insertions(+), 586 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
>>
Viele Grüße,
Stefan Roese
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr at denx.de
More information about the U-Boot
mailing list