[PATCH v2 00/25] arm: Introduce Marvell/Cavium OcteonTX/TX2

Stefan Roese sr at denx.de
Mon Aug 17 09:07:37 CEST 2020


This series will add support for OcteonTX and OcteonTX2 processsor based
platforms. The Marvell/Cavium Octeon-TX 64-bit ARM based SoCs include
the CN80XX, CN81XX and CN83XX while Octeon-TX2 64-bit ARM based SoCs
include support for CN96XX and CN95XX.
These SoC's have peripheral drivers based on PCI ECAM.

Some comments on the individual patches:
[1 -13] Add requied changes to PCI framework
[15 - 16] Add OcteonTX/TX2 platform header files
[18 - 23] Add OcteonTX/TX2 drivers
[24 - 25] Add OcteonTX/TX2 board files and configurations

Update from RFC -> v1 (Stefan):
I took over upstreaming the patchset from Suneel. Suneel addressed some
of the review comments. I addressed some more.

Some of the drivers originally included in this patchset have already
been integrated into mainline (like I2C) and some are part of the MIPS
Octeon patchset mentioned above. The reason being, that MIPS Octeon and
Octen TX/TX2 share most of the peripherals, so a re-use of the drivers
in all Octeon platforms makes much sense.

Thanks,
Stefan

Changes in v2:
- Add Reviewed-by tag from Simon
- New patch
- Add Reviewed-by tag from Simon
- Split changes in board/renesas/rcar-common/common.c into separate
  patch
- Add Reviewed-by tag from Simon
- Correct patch subject
- Correct patch description in commit text
- Minor spelling update
- Add Reviewed-by tag from Simon
-  Add sandbox test
- Add Reviewed-by tag from Simon
- Add Reviewed-by tag from Simon
- Add Reviewed-by tag from Simon
- Add note about adding a Kconfig option for AHCI quirks, once there
  are multiple quirks
- Add Reviewed-by tag from Simon
- Add comments to enum declaration and "type" declaration
- Return -EINVAL in default case statement for unsupported length
- Add helper function octeontx_bdf_invalid() and return -EPERM
  in case of an errror
- Use livetree API
- Remove local mmc_power_init() call
- Add Reviewed-by tag from Simon
- Add CORE0_POKE_OFFSET_MASK and calculate poke register address in
  _probe() instead of repeatedly in _reset()
- Slightly change the Kconfig entry: use "default y", it already depends
  on "WDT && (ARCH_OCTEONTX || ARCH_OCTEONTX2)"
- Select CONFIG_OF_LIVE
- Select CONFIG_OF_LIVE

Changes in v1:
- Add return value description to function prototype in header
- Changed from using be32_to_cpup() to fdt32_to_cpu()
- New patch
- New patch, replaces increase of MAX_PCI_REGIONS to 10
- Change patch subject
- Change patch subject
- Change patch subject
- Enhance Kconfig help descrition
- Use if() instead of #if
- Change patch subject
- Change patch subject
- Enhance commit text: expanded the abbreviations
- Changed some printf() to debug()
- Changed 0 to '\0' in memset()
- Comments for variables in struct pci_child_platdata added
- Comments for newly introduced functions added in prototype / header
- Change patch subject
- Fixed multi-line comment style
- Moved "feature" into new function which is only called, when
  CONFIG_PCI_SRIOV is enabled, so that the code is not increased in
  all cases
- Changed variable declaration to use reverse xmas tree order
- Change patch subject
- Fixed multi-line comment style
- Added CONFIG_PCI_ARID and enabled the new code optionally, so that the
  code size is not increased in all cases
- New patch
- Change patch subject
- Add small commit text
- Also add clr/setbits_64 (without endianess extension), which is needed
  for the updated Octeon device drivers
- Change patch subject
- Change patch subject
- Change patch subject
- Use constants from pci_ids.h instead of hardcoded values
- Change patch subject
- Remove inclusion of common.h
- Remove #ifdef's and use driver specific data instead
- Add comments to struct
- Add some helper functions to reduce code size
- Misc coding style changes (blank lines etc)
- Use debug() instead of printf() in some cases
- Change patch subject
- Rebased on latest TOT
- Removed inclusion of common.h
- Fix most checkpatch errors / warnings (use IS_ENABLED etc)
- Change patch subject
- Change patch subject
- Rebased on latest TOT
- Removed inclusion of common.h
- Change patch subject
- Rebased on latest TOT
- Removed inclusion of common.h
- Change patch subject
- Remove inclusion of common.h
- Remove global wdt_dev as its unused
- Remove #ifdef's
- Remove optional fixed register access - only use address passed via
  DT while probing
- Use dev_remap_addr() instead of dev_read_addr_index()
- Changed patch subject
- Rebased on latest TOT
- Removed inclusion of common.h
- Moved MEMTEST defines to Kconfig
- *.c files checkpatch cleanup
- Changed patch subject
- Rebased on latest TOT
- Removed inclusion of common.h
- Moved MEMTEST defines to Kconfig
- *.c files checkpatch cleanup
- Add go_uboot cmd for U-Boot starting from RAM

Stefan Roese (4):
  dm: core: Add API to read PCI bus-range property
  pci: pci-uclass: Remove #ifdef CONFIG_NR_DRAM_BANKS as its always set
  ARM: renesas: Drop unnecessary function ft_board_setup()
  pci: pci-uclass: Dynamically allocate the PCI regions

Suneel Garapati (21):
  fdtdec: Add API to read pci bus-range property
  pci: pci-uclass: Fix incorrect argument in map_physmem
  pci: pci-uclass: Make DT subnode parse optional
  pci: pci-uclass: Add multi entry support for memory regions
  pci: pci-uclass: Add support for Enhanced Allocation in Bridges
  pci: pci-uclass: Add support for Single-Root I/O Virtualization
  pci: pci-uclass: Add VF BAR map support for Enhanced Allocation
  pci: pci-uclass: Add support for Alternate-RoutingID capability
  pci: pci-uclass: Check validity of ofnode
  arm: include/asm/io.h: Add 64bit clrbits and setbits helpers
  arm: octeontx: Add headers for OcteonTX
  arm: octeontx2: Add headers for OcteonTX2
  ata: ahci: Add BAR index quirk for Cavium PCI SATA device
  pci: Add PCI controller driver for OcteonTX / TX2
  mmc: Add MMC controller driver for OcteonTX / TX2
  mtd: nand: Add NAND controller driver for OcteonTX
  net: Add NIC controller driver for OcteonTX
  net: Add NIC controller driver for OcteonTX2
  watchdog: Add reset support for OcteonTX / TX2
  arm: octeontx: Add support for OcteonTX SoC platforms
  arm: octeontx2: Add support for OcteonTX2 SoC platforms

 arch/arm/Kconfig                              |    24 +
 arch/arm/Makefile                             |     2 +
 arch/arm/include/asm/arch-octeontx/board.h    |   123 +
 arch/arm/include/asm/arch-octeontx/clock.h    |    25 +
 .../asm/arch-octeontx/csrs/csrs-mio_emm.h     |  1193 ++
 .../include/asm/arch-octeontx/csrs/csrs-xcv.h |   428 +
 arch/arm/include/asm/arch-octeontx/gpio.h     |     6 +
 arch/arm/include/asm/arch-octeontx/smc.h      |    20 +
 arch/arm/include/asm/arch-octeontx/soc.h      |    33 +
 arch/arm/include/asm/arch-octeontx2/board.h   |   128 +
 arch/arm/include/asm/arch-octeontx2/clock.h   |    24 +
 .../asm/arch-octeontx2/csrs/csrs-cgx.h        |  7851 ++++++++++++
 .../asm/arch-octeontx2/csrs/csrs-lmt.h        |    60 +
 .../asm/arch-octeontx2/csrs/csrs-mio_emm.h    |  1193 ++
 .../asm/arch-octeontx2/csrs/csrs-nix.h        | 10404 ++++++++++++++++
 .../asm/arch-octeontx2/csrs/csrs-npa.h        |  2294 ++++
 .../asm/arch-octeontx2/csrs/csrs-npc.h        |  1629 +++
 .../asm/arch-octeontx2/csrs/csrs-rvu.h        |  2276 ++++
 arch/arm/include/asm/arch-octeontx2/gpio.h    |     6 +
 arch/arm/include/asm/arch-octeontx2/smc-id.h  |    32 +
 arch/arm/include/asm/arch-octeontx2/smc.h     |    18 +
 arch/arm/include/asm/arch-octeontx2/soc.h     |    33 +
 arch/arm/include/asm/io.h                     |    16 +
 arch/arm/mach-octeontx/Kconfig                |    23 +
 arch/arm/mach-octeontx/Makefile               |     9 +
 arch/arm/mach-octeontx/clock.c                |    35 +
 arch/arm/mach-octeontx/cpu.c                  |    76 +
 arch/arm/mach-octeontx/lowlevel_init.S        |    33 +
 arch/arm/mach-octeontx2/Kconfig               |    23 +
 arch/arm/mach-octeontx2/Makefile              |     9 +
 arch/arm/mach-octeontx2/clock.c               |    35 +
 arch/arm/mach-octeontx2/config.mk             |     4 +
 arch/arm/mach-octeontx2/cpu.c                 |    72 +
 arch/arm/mach-octeontx2/lowlevel_init.S       |    33 +
 arch/sandbox/dts/test.dts                     |     5 +-
 board/Marvell/octeontx/Kconfig                |    14 +
 board/Marvell/octeontx/MAINTAINERS            |     8 +
 board/Marvell/octeontx/Makefile               |     9 +
 board/Marvell/octeontx/board-fdt.c            |   311 +
 board/Marvell/octeontx/board.c                |   152 +
 board/Marvell/octeontx/smc.c                  |    25 +
 board/Marvell/octeontx/soc-utils.c            |    50 +
 board/Marvell/octeontx2/Kconfig               |    14 +
 board/Marvell/octeontx2/MAINTAINERS           |     8 +
 board/Marvell/octeontx2/Makefile              |     9 +
 board/Marvell/octeontx2/board-fdt.c           |   221 +
 board/Marvell/octeontx2/board.c               |   247 +
 board/Marvell/octeontx2/smc.c                 |    58 +
 board/Marvell/octeontx2/soc-utils.c           |    49 +
 board/renesas/rcar-common/common.c            |    48 -
 configs/octeontx2_95xx_defconfig              |   105 +
 configs/octeontx2_96xx_defconfig              |   131 +
 configs/octeontx_81xx_defconfig               |   134 +
 configs/octeontx_83xx_defconfig               |   129 +
 configs/sandbox_defconfig                     |     1 +
 drivers/ata/ahci.c                            |    15 +
 drivers/core/read.c                           |    17 +
 drivers/mmc/Kconfig                           |     9 +
 drivers/mmc/Makefile                          |     1 +
 drivers/mmc/octeontx_hsmmc.c                  |  3897 ++++++
 drivers/mmc/octeontx_hsmmc.h                  |   207 +
 drivers/mtd/nand/raw/Kconfig                  |    16 +
 drivers/mtd/nand/raw/Makefile                 |     2 +
 drivers/mtd/nand/raw/octeontx_bch.c           |   426 +
 drivers/mtd/nand/raw/octeontx_bch.h           |   133 +
 drivers/mtd/nand/raw/octeontx_bch_regs.h      |   169 +
 drivers/mtd/nand/raw/octeontx_nand.c          |  2264 ++++
 drivers/net/Kconfig                           |    31 +
 drivers/net/Makefile                          |     4 +
 drivers/net/octeontx/Makefile                 |     9 +
 drivers/net/octeontx/bgx.c                    |  1572 +++
 drivers/net/octeontx/bgx.h                    |   259 +
 drivers/net/octeontx/nic.h                    |   510 +
 drivers/net/octeontx/nic_main.c               |   780 ++
 drivers/net/octeontx/nic_reg.h                |   252 +
 drivers/net/octeontx/nicvf_main.c             |   583 +
 drivers/net/octeontx/nicvf_queues.c           |  1142 ++
 drivers/net/octeontx/nicvf_queues.h           |   355 +
 drivers/net/octeontx/q_struct.h               |   697 ++
 drivers/net/octeontx/smi.c                    |   383 +
 drivers/net/octeontx/xcv.c                    |   129 +
 drivers/net/octeontx2/Makefile                |    11 +
 drivers/net/octeontx2/cgx.c                   |   298 +
 drivers/net/octeontx2/cgx.h                   |   107 +
 drivers/net/octeontx2/cgx_intf.c              |   717 ++
 drivers/net/octeontx2/cgx_intf.h              |   450 +
 drivers/net/octeontx2/lmt.h                   |    51 +
 drivers/net/octeontx2/nix.c                   |   833 ++
 drivers/net/octeontx2/nix.h                   |   355 +
 drivers/net/octeontx2/nix_af.c                |  1104 ++
 drivers/net/octeontx2/npc.h                   |    92 +
 drivers/net/octeontx2/rvu.h                   |   121 +
 drivers/net/octeontx2/rvu_af.c                |   173 +
 drivers/net/octeontx2/rvu_common.c            |    73 +
 drivers/net/octeontx2/rvu_pf.c                |   118 +
 drivers/pci/Kconfig                           |    37 +
 drivers/pci/Makefile                          |     1 +
 drivers/pci/pci-uclass.c                      |   288 +-
 drivers/pci/pci_octeontx.c                    |   364 +
 drivers/watchdog/Kconfig                      |    10 +
 drivers/watchdog/Makefile                     |     1 +
 drivers/watchdog/octeontx_wdt.c               |    66 +
 include/configs/octeontx2_common.h            |    72 +
 include/configs/octeontx_common.h             |    89 +
 include/dm/read.h                             |    12 +
 include/fdtdec.h                              |    13 +
 include/pci.h                                 |    45 +-
 lib/fdtdec.c                                  |    16 +
 test/dm/pci.c                                 |    22 +
 109 files changed, 49204 insertions(+), 95 deletions(-)
 create mode 100644 arch/arm/include/asm/arch-octeontx/board.h
 create mode 100644 arch/arm/include/asm/arch-octeontx/clock.h
 create mode 100644 arch/arm/include/asm/arch-octeontx/csrs/csrs-mio_emm.h
 create mode 100644 arch/arm/include/asm/arch-octeontx/csrs/csrs-xcv.h
 create mode 100644 arch/arm/include/asm/arch-octeontx/gpio.h
 create mode 100644 arch/arm/include/asm/arch-octeontx/smc.h
 create mode 100644 arch/arm/include/asm/arch-octeontx/soc.h
 create mode 100644 arch/arm/include/asm/arch-octeontx2/board.h
 create mode 100644 arch/arm/include/asm/arch-octeontx2/clock.h
 create mode 100644 arch/arm/include/asm/arch-octeontx2/csrs/csrs-cgx.h
 create mode 100644 arch/arm/include/asm/arch-octeontx2/csrs/csrs-lmt.h
 create mode 100644 arch/arm/include/asm/arch-octeontx2/csrs/csrs-mio_emm.h
 create mode 100644 arch/arm/include/asm/arch-octeontx2/csrs/csrs-nix.h
 create mode 100644 arch/arm/include/asm/arch-octeontx2/csrs/csrs-npa.h
 create mode 100644 arch/arm/include/asm/arch-octeontx2/csrs/csrs-npc.h
 create mode 100644 arch/arm/include/asm/arch-octeontx2/csrs/csrs-rvu.h
 create mode 100644 arch/arm/include/asm/arch-octeontx2/gpio.h
 create mode 100644 arch/arm/include/asm/arch-octeontx2/smc-id.h
 create mode 100644 arch/arm/include/asm/arch-octeontx2/smc.h
 create mode 100644 arch/arm/include/asm/arch-octeontx2/soc.h
 create mode 100644 arch/arm/mach-octeontx/Kconfig
 create mode 100644 arch/arm/mach-octeontx/Makefile
 create mode 100644 arch/arm/mach-octeontx/clock.c
 create mode 100644 arch/arm/mach-octeontx/cpu.c
 create mode 100644 arch/arm/mach-octeontx/lowlevel_init.S
 create mode 100644 arch/arm/mach-octeontx2/Kconfig
 create mode 100644 arch/arm/mach-octeontx2/Makefile
 create mode 100644 arch/arm/mach-octeontx2/clock.c
 create mode 100644 arch/arm/mach-octeontx2/config.mk
 create mode 100644 arch/arm/mach-octeontx2/cpu.c
 create mode 100644 arch/arm/mach-octeontx2/lowlevel_init.S
 create mode 100644 board/Marvell/octeontx/Kconfig
 create mode 100644 board/Marvell/octeontx/MAINTAINERS
 create mode 100644 board/Marvell/octeontx/Makefile
 create mode 100644 board/Marvell/octeontx/board-fdt.c
 create mode 100644 board/Marvell/octeontx/board.c
 create mode 100644 board/Marvell/octeontx/smc.c
 create mode 100644 board/Marvell/octeontx/soc-utils.c
 create mode 100644 board/Marvell/octeontx2/Kconfig
 create mode 100644 board/Marvell/octeontx2/MAINTAINERS
 create mode 100644 board/Marvell/octeontx2/Makefile
 create mode 100644 board/Marvell/octeontx2/board-fdt.c
 create mode 100644 board/Marvell/octeontx2/board.c
 create mode 100644 board/Marvell/octeontx2/smc.c
 create mode 100644 board/Marvell/octeontx2/soc-utils.c
 create mode 100644 configs/octeontx2_95xx_defconfig
 create mode 100644 configs/octeontx2_96xx_defconfig
 create mode 100644 configs/octeontx_81xx_defconfig
 create mode 100644 configs/octeontx_83xx_defconfig
 create mode 100644 drivers/mmc/octeontx_hsmmc.c
 create mode 100644 drivers/mmc/octeontx_hsmmc.h
 create mode 100644 drivers/mtd/nand/raw/octeontx_bch.c
 create mode 100644 drivers/mtd/nand/raw/octeontx_bch.h
 create mode 100644 drivers/mtd/nand/raw/octeontx_bch_regs.h
 create mode 100644 drivers/mtd/nand/raw/octeontx_nand.c
 create mode 100644 drivers/net/octeontx/Makefile
 create mode 100644 drivers/net/octeontx/bgx.c
 create mode 100644 drivers/net/octeontx/bgx.h
 create mode 100644 drivers/net/octeontx/nic.h
 create mode 100644 drivers/net/octeontx/nic_main.c
 create mode 100644 drivers/net/octeontx/nic_reg.h
 create mode 100644 drivers/net/octeontx/nicvf_main.c
 create mode 100644 drivers/net/octeontx/nicvf_queues.c
 create mode 100644 drivers/net/octeontx/nicvf_queues.h
 create mode 100644 drivers/net/octeontx/q_struct.h
 create mode 100644 drivers/net/octeontx/smi.c
 create mode 100644 drivers/net/octeontx/xcv.c
 create mode 100644 drivers/net/octeontx2/Makefile
 create mode 100644 drivers/net/octeontx2/cgx.c
 create mode 100644 drivers/net/octeontx2/cgx.h
 create mode 100644 drivers/net/octeontx2/cgx_intf.c
 create mode 100644 drivers/net/octeontx2/cgx_intf.h
 create mode 100644 drivers/net/octeontx2/lmt.h
 create mode 100644 drivers/net/octeontx2/nix.c
 create mode 100644 drivers/net/octeontx2/nix.h
 create mode 100644 drivers/net/octeontx2/nix_af.c
 create mode 100644 drivers/net/octeontx2/npc.h
 create mode 100644 drivers/net/octeontx2/rvu.h
 create mode 100644 drivers/net/octeontx2/rvu_af.c
 create mode 100644 drivers/net/octeontx2/rvu_common.c
 create mode 100644 drivers/net/octeontx2/rvu_pf.c
 create mode 100644 drivers/pci/pci_octeontx.c
 create mode 100644 drivers/watchdog/octeontx_wdt.c
 create mode 100644 include/configs/octeontx2_common.h
 create mode 100644 include/configs/octeontx_common.h

-- 
2.28.0



More information about the U-Boot mailing list