Skip to content

[marvell-arm64]: Add support for 98DX35xx and 98CX85xx platform#311

Merged
saiarcot895 merged 3 commits intosonic-net:masterfrom
pavannaregundi:master
May 17, 2023
Merged

[marvell-arm64]: Add support for 98DX35xx and 98CX85xx platform#311
saiarcot895 merged 3 commits intosonic-net:masterfrom
pavannaregundi:master

Conversation

@pavannaregundi
Copy link
Copy Markdown
Contributor

These patches add necessary support for Marvell's Prestera family of switching platforms, namely 98DX35xx and 98CX85xx.
98DX35xx is internally referred as AC5(AlleyCat5) or AC5X(AlleyCat5X) and 98CX85xx as Falcon.

Testing:
Build of target/sonic-marvell-arm64.bin, load of the image on AC5XRD(98DX35xx) and Falcon(98CX85xx) switches, verified that all dockers operational and “show interface status” displays all ports correctly. Also verified operations of components such as management port, i2c, gpio, watchdog.

Build of target/sonic-marvell-armhf.bin, load of the image on M0, verified that all dockers operational and “show interface status” displays all ports correctly.

@pavannaregundi
Copy link
Copy Markdown
Contributor Author

@Pavan-Nokia please review PR

@saiarcot895
Copy link
Copy Markdown
Contributor

It looks like some of these patches are backports of existing patches in the kernel, whereas others are custom patches. For the backported patches, could you add the original commit hash, either into the patch file or in the PR description? For the custom patches, are there any plans to upstream these patches into the kernel?

Also, I might be missing something here, but what's the reason of having marvell-arm64 vs arm64 in the kconfig inclusion/exclusion files?

@pavannaregundi
Copy link
Copy Markdown
Contributor Author

@saiarcot895 Commit hash of upstreamed patches are mentioned as part of commit description.
arm64 is ARCH and marvell-arm64 will be PLATFORM for build. So as per manage-config, kconfig inclusions and exclusions can be created with platform section also. Specifying a platform name adds a more specific filter during the build.

@pavannaregundi
Copy link
Copy Markdown
Contributor Author

@saiarcot895 Regarding custom patches, Marvell will be planning to upstream them in near future.

@saiarcot895
Copy link
Copy Markdown
Contributor

If possible, I'd like to keep the kernel configs the same across different platforms within a given architecture (like how it is for amd64 currently). I do see that currently armhf does have separate configs for armhf and marvell-armhf, but for arm64 currently, with the kernel configs that are being set, they don't seem like they would break any other platform.

@pavannaregundi
Copy link
Copy Markdown
Contributor Author

I have moved all the configs except CONFIG_MARVELL_AC5_WATCHDOG under arm64.
CONFIG_MARVELL_AC5_WATCHDOG is retained under 'marvell-arm64' because this config is getting added as part of the specific kernel patch(0015-ac5-marvell-Add-watchdog-support.patch).

@radha-danda
Copy link
Copy Markdown

@saiarcot895, @pavannaregundi addressed your comments. Kindly review the PR and share if you have any further comments pls

@paulmenzel
Copy link
Copy Markdown
Contributor

@radha-danda, please refrain from adding such ping comments only a few hours after the last update. It only causes noise.

These are set of patches for supporting Marvells 98DX35xx series of
switching products.

Patches 0001 to 0012 are backport of upstream patches.

0001-dt-bindings-marvell-Document-the-AC5-AC5X-compatible.patch
 - torvalds/linux@d6c1b95

0002-dt-bindings-net-mvneta-Add-marvell-armada-ac5-neta.patch
 - torvalds/linux@270a959

0003-arm64-dts-marvell-Add-Armada-98DX2530-SoC-and-RD-AC5.patch
 - torvalds/linux@b795fad

0004-arm64-dts-marvell-Add-UART1-3-for-AC5-AC5X.patch
 - torvalds/linux@31be791

0005-arm64-dts-marvell-98dx25xx-Fix-i2c-gpios-property.patch
 - torvalds/linux@2b14d38

0006-arm64-dts-Update-cache-properties-for-marvell.patch
 - torvalds/linux@b5d971c

0007-arm64-dts-marvell-AC5-AC5X-Fix-address-for-UART1.patch
 - torvalds/linux@80502ff

0008-mtd-rawnand-marvell-Add-missing-layouts.patch
 - torvalds/linux@68c18da

0009-pinctrl-mvebu-Add-driver-for-98DX2530-SoC.patch
 - torvalds/linux@f8970fd

0010-arm64-marvell-Enable-the-98DX2530-pinctrl-driver.patch
 - torvalds/linux@8225663

0011-net-mvneta-Add-support-for-98DX2530-Ethernet-port.patch
 - torvalds/linux@2d2a514

0012-spi-a3700-Support-big-endianness-for-AC5-SPI-driver.patch
 - torvalds/linux@66bbf14

0013-dt-bindings-ac5-Add-mmc-and-usb-properties.patch
 - Patch adds documentation for mmc and usb device tree properties.

0014-dts-ac5-marvell-Add-switching-mmc-watchdog-node.patch
 - Patch adds dts nodes for prestera switching, emmc and watchdog support.

0015-ac5-marvell-Add-watchdog-support.patch
 - Patch adds support for WD driver for ac5.
   WD registers are located in protected CPU area, which gets locked after
   bootrom runs. Therefore need to access them by using SMC, which was
   added in this driver.

0016-ac5-marvell-Add-support-for-emmc.patch
 - Patch adds eMMC support by adding compatible string.

0017-usb-ehci-Add-support-for-ac5.patch
 - Patch adds usb support by adding compatible string.

0018-mv6xxx-Fix-i2c-lock-due-to-arb-loss.patch
 - Patch fixes i2c bus lock issue due to lost arbitration from some i2c
   slaves, mainly SFPs.

Change-Id: I9eb90d25c91c62e9ff7eee54f403411caeccd43f
Signed-off-by: Pavan Naregundi <[email protected]>
These are set of patches for supporting Armada 7020 comexpress card
hosting integrated CPUs used in Marvells 98CX85xx switching products.

0019-dt-bindings-marvell-Add-ARMADA-7K-properties.patch
 - Patch adds documentation for 7020 comexpress.

0020-dts-marvell-Add-support-for-7020-comexpress.patch
 - Patch defines device tree for 7020 comexpress.

Change-Id: I56bc4d7a826201be0931fa109590723f98b74447
Signed-off-by: Pavan Naregundi <[email protected]>
Inclusions:
EEPROM support for SFPs and QSFP.
    CONFIG_EEPROM_SFF_8436=m
    CONFIG_EEPROM_OPTOE=m

Support I2C busses connected through a MUX.
    CONFIG_I2C_MUX_GPIO=m

NAND flash support, used for accessing uboot environment variables.
    CONFIG_MTD_RAW_NAND=m
    CONFIG_MTD_NAND_ECC_SW_BCH=y
    CONFIG_MTD_NAND_MARVELL=m

Enable fan controller driver.
    CONFIG_SENSORS_EMC2305=m

Enable watchdog for AC5X.
 - CONFIG_MARVELL_AC5_WATCHDOG=m`

Exclusions:
Overcome following dmesg error during boot.
    - UBIFS error: cannot initialize compressor zstd, error -2
        - CONFIG_UBIFS_FS_ZSTD

    - crypto-safexcel f2800000.crypto: HW init failed (-2)
        - CONFIG_CRYPTO_DEV_SAFEXCEL
        - EIP197 cryptographic engine is not used.

Change-Id: Iaf0aeb8c309c85644dc640a9144f4a7bc37d71a2
Signed-off-by: Pavan Naregundi <[email protected]>
@lguohan
Copy link
Copy Markdown
Contributor

lguohan commented May 10, 2023

maybe i am missing something, but i couldn't find the kernel upstream commit id for any of the patch.

#
# Marvell platform patches for 4.19
# Marvell platform patches for 5.10
armhf_secondary_boot_online.patch
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

has this patch being upstreamed?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

has this patch being upstreamed?

Please find upstreamed patches in the commit description and link has been given to them.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Snippet from commits, referencing the upstream commit information.
image

@saiarcot895 saiarcot895 merged commit e7c93a5 into sonic-net:master May 17, 2023
@pavannaregundi
Copy link
Copy Markdown
Contributor Author

@saiarcot895 Can this PR be backported to 202211 sonic-linux-kernel branch?

yxieca pushed a commit that referenced this pull request Oct 12, 2023
* Add patches for marvell-arm64 support

These are set of patches for supporting Marvells 98DX35xx series of
switching products.

Patches 0001 to 0012 are backport of upstream patches.

0001-dt-bindings-marvell-Document-the-AC5-AC5X-compatible.patch
 - torvalds/linux@d6c1b95

0002-dt-bindings-net-mvneta-Add-marvell-armada-ac5-neta.patch
 - torvalds/linux@270a959

0003-arm64-dts-marvell-Add-Armada-98DX2530-SoC-and-RD-AC5.patch
 - torvalds/linux@b795fad

0004-arm64-dts-marvell-Add-UART1-3-for-AC5-AC5X.patch
 - torvalds/linux@31be791

0005-arm64-dts-marvell-98dx25xx-Fix-i2c-gpios-property.patch
 - torvalds/linux@2b14d38

0006-arm64-dts-Update-cache-properties-for-marvell.patch
 - torvalds/linux@b5d971c

0007-arm64-dts-marvell-AC5-AC5X-Fix-address-for-UART1.patch
 - torvalds/linux@80502ff

0008-mtd-rawnand-marvell-Add-missing-layouts.patch
 - torvalds/linux@68c18da

0009-pinctrl-mvebu-Add-driver-for-98DX2530-SoC.patch
 - torvalds/linux@f8970fd

0010-arm64-marvell-Enable-the-98DX2530-pinctrl-driver.patch
 - torvalds/linux@8225663

0011-net-mvneta-Add-support-for-98DX2530-Ethernet-port.patch
 - torvalds/linux@2d2a514

0012-spi-a3700-Support-big-endianness-for-AC5-SPI-driver.patch
 - torvalds/linux@66bbf14

0013-dt-bindings-ac5-Add-mmc-and-usb-properties.patch
 - Patch adds documentation for mmc and usb device tree properties.

0014-dts-ac5-marvell-Add-switching-mmc-watchdog-node.patch
 - Patch adds dts nodes for prestera switching, emmc and watchdog support.

0015-ac5-marvell-Add-watchdog-support.patch
 - Patch adds support for WD driver for ac5.
   WD registers are located in protected CPU area, which gets locked after
   bootrom runs. Therefore need to access them by using SMC, which was
   added in this driver.

0016-ac5-marvell-Add-support-for-emmc.patch
 - Patch adds eMMC support by adding compatible string.

0017-usb-ehci-Add-support-for-ac5.patch
 - Patch adds usb support by adding compatible string.

0018-mv6xxx-Fix-i2c-lock-due-to-arb-loss.patch
 - Patch fixes i2c bus lock issue due to lost arbitration from some i2c
   slaves, mainly SFPs.

Change-Id: I9eb90d25c91c62e9ff7eee54f403411caeccd43f
Signed-off-by: Pavan Naregundi <[email protected]>

* Add DTS support for 7020 ComExpress

These are set of patches for supporting Armada 7020 comexpress card
hosting integrated CPUs used in Marvells 98CX85xx switching products.

0019-dt-bindings-marvell-Add-ARMADA-7K-properties.patch
 - Patch adds documentation for 7020 comexpress.

0020-dts-marvell-Add-support-for-7020-comexpress.patch
 - Patch defines device tree for 7020 comexpress.

Change-Id: I56bc4d7a826201be0931fa109590723f98b74447
Signed-off-by: Pavan Naregundi <[email protected]>

* Update kernel configuration for Marvell platforms

Inclusions:
EEPROM support for SFPs and QSFP.
    CONFIG_EEPROM_SFF_8436=m
    CONFIG_EEPROM_OPTOE=m

Support I2C busses connected through a MUX.
    CONFIG_I2C_MUX_GPIO=m

NAND flash support, used for accessing uboot environment variables.
    CONFIG_MTD_RAW_NAND=m
    CONFIG_MTD_NAND_ECC_SW_BCH=y
    CONFIG_MTD_NAND_MARVELL=m

Enable fan controller driver.
    CONFIG_SENSORS_EMC2305=m

Enable watchdog for AC5X.
 - CONFIG_MARVELL_AC5_WATCHDOG=m`

Exclusions:
Overcome following dmesg error during boot.
    - UBIFS error: cannot initialize compressor zstd, error -2
        - CONFIG_UBIFS_FS_ZSTD

    - crypto-safexcel f2800000.crypto: HW init failed (-2)
        - CONFIG_CRYPTO_DEV_SAFEXCEL
        - EIP197 cryptographic engine is not used.

Change-Id: Iaf0aeb8c309c85644dc640a9144f4a7bc37d71a2
Signed-off-by: Pavan Naregundi <[email protected]>

---------

Signed-off-by: Pavan Naregundi <[email protected]>
@StormLiangMS
Copy link
Copy Markdown
Contributor

@Blueve could we have an ADO to track this cherry pick?

@StormLiangMS
Copy link
Copy Markdown
Contributor

@pavannaregundi cherry pick conflict for 202305, could you help to raise separate PR?

@Blueve for vis.

@radha-danda
Copy link
Copy Markdown

@pavannaregundi is on PTO till 25th Oct. He raise PR once he is back to work.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants