Hi Ian,

the patch looks good to me now, however, it doesn't apply:

Applying: mvebu: add support for iEi Puzzle-M901/Puzzle-M902
error: corrupt patch at line 433
Patch failed at 0001 mvebu: add support for iEi Puzzle-M901/Puzzle-M902
hint: Use 'git am --show-current-patch=diff' to see the failed patch
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".

When trying to apply it manually outside of git, I also doesn'y apply:

checking file target/linux/mvebu/cortexa72/base-files/etc/board.d/02_network
Hunk #1 succeeded at 10 (offset -1 lines).
checking file target/linux/mvebu/cortexa72/base-files/lib/upgrade/emmc.sh
checking file target/linux/mvebu/cortexa72/base-files/lib/upgrade/platform.sh
checking file 
target/linux/mvebu/files/arch/arm64/boot/dts/marvell/cn9131-puzzle-m901.dts
patch: **** malformed patch at line 433: diff --git 
a/target/linux/mvebu/files/arch/arm64/boot/dts/marvell/cn9132-puzzle-m902.dts 
b/target/linux/mvebu/files/arch/arm64/boot/dts/marvell/cn9132-puzzle-m902.dts

Please fix the patch so it applies cleanly.
I can't see obvious causes for this, linebreaks and such seem alright.

Try sending it again directly with 'git-send-email'.


Cheers


Daniel

On Wed, Jul 07, 2021 at 07:30:20PM +0800, eveans2...@gmail.com wrote:
> From: Ian Chang <ianch...@ieiworld.com>
> 
>  Hardware specification
>  ----------------------
>  * CN9130 SoC, Quad-core ARMv8 Cortex-72 @ 2200 MHz
>  * 4 GB DDR
>  * 4 GB eMMC
>  * mmcblk0
> - mmcblk0p164M  kernel_1
> - mmcblk0p264M  kernel_2
> - mmcblk0p3   512M  rootfs_1
> - mmcblk0p4   512M  rootfs_2
> - mmcblk0p5   512M  Reserved
> - mmcblk0p664M  Reserved
> - mmcblk0p7   1.8G  rootfs_data
> 
>  * 4 MB (SPI Flash)
>  * 6 x 2.5 Gigabit  ports (Puzzle-M901)
> - External PHY with 6 ports (AQR112R)
>  * 6 x 2.5 Gigabit ports (Puzzle-M902)
> - External PHY with 6 ports (AQR112R)
>    3 x 10 Gigabit ports (Puzzle-M902)
> - External PHY with 3 ports (AQR113R)
> 
>  * 4 x Front panel LED
>  * 1 x USB 3.0
>  * Reset button on Rear panel
>  * UART (115200 8N1,header on PCB)
> 
>  Flash instructions:
>       The original firmware is based on OpenWrt.
>       Flash firmware using LuCI and CLI
> 
> Signed-off-by: Ian Chang <ianch...@ieiworld.com>
> ---
>  .../base-files/etc/board.d/02_network         |   6 +
>  .../cortexa72/base-files/lib/upgrade/emmc.sh  |  36 ++
>  .../base-files/lib/upgrade/platform.sh        |   8 +
>  .../boot/dts/marvell/cn9131-puzzle-m901.dts   | 326 ++++++++++++
>  .../boot/dts/marvell/cn9132-puzzle-m902.dts   | 491 ++++++++++++++++++
>  target/linux/mvebu/image/cortexa72.mk         |  18 +
>  ...l-Add-support-for-Marvell-CN9130-SoC.patch |  61 +++
>  7 files changed, 946 insertions(+)
>  create mode 100644 
> target/linux/mvebu/cortexa72/base-files/lib/upgrade/emmc.sh
>  create mode 100644 
> target/linux/mvebu/files/arch/arm64/boot/dts/marvell/cn9131-puzzle-m901.dts
>  create mode 100644 
> target/linux/mvebu/files/arch/arm64/boot/dts/marvell/cn9132-puzzle-m902.dts
>  create mode 100644 
> target/linux/mvebu/patches-5.4/000-v5.5-arm64-dts-marvell-Add-support-for-Marvell-CN9130-SoC.patch
> 
> diff --git a/target/linux/mvebu/cortexa72/base-files/etc/board.d/02_network 
> b/target/linux/mvebu/cortexa72/base-files/etc/board.d/02_network
> index 9ab3c8174d..e0a4bc3015 100755
> --- a/target/linux/mvebu/cortexa72/base-files/etc/board.d/02_network
> +++ b/target/linux/mvebu/cortexa72/base-files/etc/board.d/02_network
> @@ -11,6 +11,12 @@ board_config_update
>  board=$(board_name)
>  
>  case "$board" in
> +iei,puzzle-m901)
> +     ucidef_set_interfaces_lan_wan "eth1 eth2 eth3 eth4 eth5" "eth0"
> +     ;;
> +iei,puzzle-m902)
> +     ucidef_set_interfaces_lan_wan "eth1 eth2 eth3 eth4 eth5 eth10 eth11 
> eth12" "eth0"
> +     ;;
>  marvell,armada8040-mcbin-doubleshot|\
>  marvell,armada8040-mcbin-singleshot)
>       ucidef_set_interfaces_lan_wan "eth0 eth1 eth3" "eth2"
> diff --git a/target/linux/mvebu/cortexa72/base-files/lib/upgrade/emmc.sh 
> b/target/linux/mvebu/cortexa72/base-files/lib/upgrade/emmc.sh
> new file mode 100644
> index 0000000000..90ed7ae79a
> --- /dev/null
> +++ b/target/linux/mvebu/cortexa72/base-files/lib/upgrade/emmc.sh
> @@ -0,0 +1,36 @@
> +platform_do_upgrade_emmc() {
> +     local board=$(board_name)
> +     local diskdev partdev
> +
> +     export_bootdevice && export_partdevice diskdev 0 || {
> +             v "Unable to determine upgrade device"
> +     return 1
> +     }
> +     sync
> +     if [ "$UPGRADE_OPT_SAVE_PARTITIONS" = "1" ]; then
> +             get_partitions "/dev/$diskdev" bootdisk
> +             v "Extract boot sector from the image"
> +             get_image_dd "$1" of=/tmp/image.bs count=1 bs=512b
> +             get_partitions /tmp/image.bs image
> +     fi
> +
> +     #iterate over each partition from the image and write it to the boot 
> disk
> +     while read part start size; do
> +             if export_partdevice partdev $part; then
> +                     if [ "$partdev" = "mmcblk0p2" ]; then
> +                             v "Writing image mmcblk0p3 for /dev/$partdev  
> $start $size"
> +                             get_image_dd "$1" of="/dev/mmcblk0p3" ibs="512" 
> obs=1M skip="$start" count="$size" conv=fsync
> +                     elif [ "$partdev" = "mmcblk0p1" ]; then
> +                             v "Writing image mmcblk0p1 for /dev/$partdev 
> $start $size"
> +                             get_image_dd "$1" of="/dev/$partdev" ibs="512" 
> obs=1M skip="$start" count="$size" conv=fsync
> +                     fi
> +             else
> +                     v "Unable to find partition $part device, skipped."
> +             fi
> +     done < /tmp/partmap.image
> +
> +     v "Writing new UUID to /dev/$diskdev..."
> +     get_image_dd "$1" of="/dev/$diskdev" bs=1 skip=440 count=4 seek=440 
> conv=fsync
> +
> +     sleep 1
> +}
> diff --git a/target/linux/mvebu/cortexa72/base-files/lib/upgrade/platform.sh 
> b/target/linux/mvebu/cortexa72/base-files/lib/upgrade/platform.sh
> index 04ea634097..9a89768d14 100755
> --- a/target/linux/mvebu/cortexa72/base-files/lib/upgrade/platform.sh
> +++ b/target/linux/mvebu/cortexa72/base-files/lib/upgrade/platform.sh
> @@ -9,6 +9,8 @@ REQUIRE_IMAGE_METADATA=1
>  
>  platform_check_image() {
>       case "$(board_name)" in
> +     iei,puzzle-m901|\
> +     iei,puzzle-m902|\
>       marvell,armada8040-mcbin-doubleshot|\
>       marvell,armada8040-mcbin-singleshot)
>               platform_check_image_sdcard "$1"
> @@ -21,6 +23,10 @@ platform_check_image() {
>  
>  platform_do_upgrade() {
>       case "$(board_name)" in
> +     iei,puzzle-m901|\
> +     iei,puzzle-m902)
> +             platform_do_upgrade_emmc "$1"
> +             ;;
>       marvell,armada8040-mcbin-doubleshot|\
>       marvell,armada8040-mcbin-singleshot)
>               platform_do_upgrade_sdcard "$1"
> @@ -32,6 +38,8 @@ platform_do_upgrade() {
>  }
>  platform_copy_config() {
>       case "$(board_name)" in
> +     iei,puzzle-m901|\
> +     iei,puzzle-m902|\
>       marvell,armada8040-mcbin-doubleshot|\
>       marvell,armada8040-mcbin-singleshot)
>               platform_copy_config_sdcard
> diff --git 
> a/target/linux/mvebu/files/arch/arm64/boot/dts/marvell/cn9131-puzzle-m901.dts 
> b/target/linux/mvebu/files/arch/arm64/boot/dts/marvell/cn9131-puzzle-m901.dts
> new file mode 100644
> index 0000000000..d010b7cc0b
> --- /dev/null
> +++ 
> b/target/linux/mvebu/files/arch/arm64/boot/dts/marvell/cn9131-puzzle-m901.dts
> @@ -0,0 +1,326 @@
> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> +/*
> + * Copyright (C) 2019 Marvell International Ltd.
> + *
> + * Device tree for the CN9131-DB board.
> + */
> +
> +#include "cn9130.dtsi"
> +
> +#include <dt-bindings/gpio/gpio.h>
> +
> +/ {
> +     model = "iEi Puzzle-M901";
> +     compatible = "iei,puzzle-m901",
> +                  "marvell,armada-ap807-quad", "marvell,armada-ap807";
> +
> +     chosen {
> +             stdout-path = "serial0:115200n8";
> +     };
> +
> +     aliases {
> +             i2c0 = &cp0_i2c0;
> +             i2c1 = &cp1_i2c0;
> +             ethernet0 = &cp0_eth0;
> +             ethernet1 = &cp0_eth1;
> +             ethernet2 = &cp0_eth2;
> +             ethernet3 = &cp1_eth0;
> +             ethernet4 = &cp1_eth1;
> +             ethernet5 = &cp1_eth2;
> +             gpio1 = &cp0_gpio1;
> +             gpio2 = &cp0_gpio2;
> +             gpio3 = &cp1_gpio1;
> +             gpio4 = &cp1_gpio2;
> +     };
> +
> +     memory@00000000 {
> +             device_type = "memory";
> +             reg = <0x0 0x0 0x0 0x80000000>;
> +     };
> +};
> +
> +&uart0 {
> +     status = "okay";
> +};
> +
> +&cp0_uart0 {
> +     status = "okay";
> +};
> +
> +/* on-board eMMC - U9 */
> +&ap_sdhci0 {
> +     pinctrl-names = "default";
> +     bus-width = <8>;
> +     status = "okay";
> +     mmc-ddr-1_8v;
> +     mmc-hs400-1_8v;
> +};
> +
> +&cp0_crypto {
> +     status = "okay";
> +};
> +
> +&cp0_xmdio {
> +     status = "okay";
> +     cp0_nbaset_phy0: ethernet-phy@0 {
> +             compatible = "ethernet-phy-ieee802.3-c45";
> +             reg = <2>;
> +     };
> +     cp0_nbaset_phy1: ethernet-phy@1 {
> +             compatible = "ethernet-phy-ieee802.3-c45";
> +             reg = <0>;
> +     };
> +     cp0_nbaset_phy2: ethernet-phy@2 {
> +             compatible = "ethernet-phy-ieee802.3-c45";
> +             reg = <8>;
> +     };
> +};
> +
> +&cp0_ethernet {
> +     status = "okay";
> +};
> +
> +/* SLM-1521-V2, CON9 */
> +&cp0_eth0 {
> +     status = "okay";
> +     phy-mode = "2500base-x";
> +     phys = <&cp0_comphy2 0>;
> +     managed = "in-band-status";
> +};
> +
> +&cp0_eth1 {
> +     status = "okay";
> +     phy-mode = "2500base-x";
> +     phys = <&cp0_comphy4 1>;
> +     managed = "in-band-status";
> +};
> +
> +&cp0_eth2 {
> +     status = "okay";
> +     phy-mode = "2500base-x";
> +     phys = <&cp0_comphy5 2>;
> +     managed = "in-band-status";
> +};
> +
> +&cp0_gpio1 {
> +     status = "okay";
> +};
> +
> +&cp0_gpio2 {
> +     status = "okay";
> +};
> +
> +&cp0_i2c0 {
> +     pinctrl-names = "default";
> +     pinctrl-0 = <&cp0_i2c0_pins>;
> +     status = "okay";
> +     clock-frequency = <100000>;
> +     rtc@32 {
> +             compatible = "epson,rx8130";
> +             reg = <0x32>;
> +             wakeup-source;
> +     };
> +};
> +
> +/* SLM-1521-V2, CON6 */
> +&cp0_pcie0 {
> +     status = "okay";
> +     num-lanes = <2>;
> +     num-viewport = <8>;
> +     phys = <&cp0_comphy0 0>, <&cp0_comphy1 0>;
> +};
> +
> +/* U55 */
> +&cp0_spi1 {
> +     pinctrl-names = "default";
> +     pinctrl-0 = <&cp0_spi0_pins>;
> +     reg = <0x700680 0x50>,          /* control */
> +           <0x2000000 0x1000000>;    /* CS0 */
> +     status = "okay";
> +     spi-flash@0 {
> +             #address-cells = <0x1>;
> +             #size-cells = <0x1>;
> +             compatible = "jedec,spi-nor";
> +             reg = <0x0>;
> +             spi-max-frequency = <40000000>;
> +             partitions {
> +                     compatible = "fixed-partitions";
> +                     #address-cells = <1>;
> +                     #size-cells = <1>;
> +                     partition@0 {
> +                             label = "U-Boot";
> +                             reg = <0x0 0x1f0000>;
> +                     };
> +                     partition@1f0000 {
> +                             label = "U-Boot ENV Factory";
> +                             reg = <0x1f0000 0x10000>;
> +                     };
> +                     partition@200000 {
> +                             label = "Reserved";
> +                             reg = <0x200000 0x1f0000>;
> +                     };
> +                     partition@3f0000 {
> +                             label = "U-Boot ENV";
> +                             reg = <0x3f0000 0x10000>;
> +                     };
> +             };
> +     };
> +};
> +
> +&cp0_syscon0 {
> +     cp0_pinctrl: pinctrl {
> +             compatible = "marvell,cp115-standalone-pinctrl";
> +             cp0_i2c0_pins: cp0-i2c-pins-0 {
> +                     marvell,pins = "mpp37", "mpp38";
> +                     marvell,function = "i2c0";
> +             };
> +             cp0_i2c1_pins: cp0-i2c-pins-1 {
> +                     marvell,pins = "mpp35", "mpp36";
> +                     marvell,function = "i2c1";
> +             };
> +             cp0_ge1_rgmii_pins: cp0-ge-rgmii-pins-0 {
> +                     marvell,pins = "mpp0", "mpp1", "mpp2",
> +                                    "mpp3", "mpp4", "mpp5",
> +                                    "mpp6", "mpp7", "mpp8",
> +                                    "mpp9", "mpp10", "mpp11";
> +                     marvell,function = "ge0";
> +             };
> +             cp0_ge2_rgmii_pins: cp0-ge-rgmii-pins-1 {
> +                     marvell,pins = "mpp44", "mpp45", "mpp46",
> +                                    "mpp47", "mpp48", "mpp49",
> +                                    "mpp50", "mpp51", "mpp52",
> +                                    "mpp53", "mpp54", "mpp55";
> +                     marvell,function = "ge1";
> +             };
> +             cp0_spi0_pins: cp0-spi-pins-0 {
> +                     marvell,pins = "mpp13", "mpp14", "mpp15", "mpp16";
> +                     marvell,function = "spi1";
> +             };
> +     };
> +};
> +
> +/*
> + * Instantiate the first connected CP115
> + */
> +
> +#define CP11X_NAME           cp1
> +#define CP11X_BASE           f6000000
> +#define CP11X_PCIEx_MEM_BASE(iface) (0xe2000000 + (iface * 0x1000000))
> +#define CP11X_PCIEx_MEM_SIZE(iface) 0xf00000
> +#define CP11X_PCIE0_BASE     f6600000
> +#define CP11X_PCIE1_BASE     f6620000
> +#define CP11X_PCIE2_BASE     f6640000
> +
> +#include "armada-cp115.dtsi"
> +
> +#undef CP11X_NAME
> +#undef CP11X_BASE
> +#undef CP11X_PCIEx_MEM_BASE
> +#undef CP11X_PCIEx_MEM_SIZE
> +#undef CP11X_PCIE0_BASE
> +#undef CP11X_PCIE1_BASE
> +#undef CP11X_PCIE2_BASE
> +
> +&cp1_crypto {
> +     status = "okay";
> +};
> +
> +&cp1_xmdio {
> +     status = "okay";
> +     cp1_nbaset_phy0: ethernet-phy@3 {
> +             compatible = "ethernet-phy-ieee802.3-c45";
> +             reg = <2>;
> +     };
> +     cp1_nbaset_phy1: ethernet-phy@4 {
> +             compatible = "ethernet-phy-ieee802.3-c45";
> +             reg = <0>;
> +     };
> +     cp1_nbaset_phy2: ethernet-phy@5 {
> +             compatible = "ethernet-phy-ieee802.3-c45";
> +             reg = <8>;
> +     };
> +};
> +
> +&cp1_ethernet {
> +     status = "okay";
> +};
> +
> +/* CON50 */
> +&cp1_eth0 {
> +     status = "okay";
> +     phy-mode = "2500base-x";
> +     phys = <&cp1_comphy2 0>;
> +     managed = "in-band-status";
> +};
> +
> +&cp1_eth1 {
> +     status = "okay";
> +     phy-mode = "2500base-x";
> +     phys = <&cp1_comphy4 1>;
> +     managed = "in-band-status";
> +};
> +
> +&cp1_eth2 {
> +     status = "okay";
> +     phy-mode = "2500base-x";
> +     phys = <&cp1_comphy5 2>;
> +     managed = "in-band-status";
> +};
> +
> +&cp1_sata0 {
> +     status = "okay";
> +     sata-port@1 {
> +             status = "okay";
> +             phys = <&cp1_comphy0 1>;
> +     };
> +};
> +
> +&cp1_gpio1 {
> +     status = "okay";
> +};
> +
> +&cp1_gpio2 {
> +     status = "okay";
> +};
> +
> +&cp1_i2c0 {
> +     status = "okay";
> +     pinctrl-names = "default";
> +     pinctrl-0 = <&cp1_i2c0_pins>;
> +     clock-frequency = <100000>;
> +};
> +
> +&cp1_syscon0 {
> +     cp1_pinctrl: pinctrl {
> +             compatible = "marvell,cp115-standalone-pinctrl";
> +             cp1_i2c0_pins: cp1-i2c-pins-0 {
> +                     marvell,pins = "mpp37", "mpp38";
> +                     marvell,function = "i2c0";
> +             };
> +             cp1_spi0_pins: cp1-spi-pins-0 {
> +                     marvell,pins = "mpp13", "mpp14", "mpp15", "mpp16";
> +                     marvell,function = "spi1";
> +             };
> +             cp1_xhci0_vbus_pins: cp1-xhci0-vbus-pins {
> +                     marvell,pins = "mpp3";
> +                     marvell,function = "gpio";
> +             };
> +             cp1_sfp_pins: sfp-pins {
> +                     marvell,pins = "mpp8", "mpp9", "mpp10", "mpp11";
> +                     marvell,function = "gpio";
> +             };
> +     };
> +};
> +
> +&cp1_usb3_1 {
> +     status = "okay";
> +     phys = <&cp1_comphy3 1>;
> +     phy-names = "usb";
> +};
> +
> diff --git 
> a/target/linux/mvebu/files/arch/arm64/boot/dts/marvell/cn9132-puzzle-m902.dts 
> b/target/linux/mvebu/files/arch/arm64/boot/dts/marvell/cn9132-puzzle-m902.dts
> new file mode 100644
> index 0000000000..d5e5a17451
> --- /dev/null
> +++ 
> b/target/linux/mvebu/files/arch/arm64/boot/dts/marvell/cn9132-puzzle-m902.dts
> @@ -0,0 +1,491 @@
> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> +/*
> + * Copyright (C) 2019 Marvell International Ltd.
> + *
> + * Device tree for the CN9132-DB board.
> + */
> +
> +#include "cn9130.dtsi"
> +
> +#include <dt-bindings/gpio/gpio.h>
> +
> +/ {
> +     model = "iEi Puzzle-M902";
> +     compatible = "iei,puzzle-m902",
> +                  "marvell,armada-ap807-quad", "marvell,armada-ap807";
> +
> +     chosen {
> +             stdout-path = "serial0:115200n8";
> +     };
> +
> +     aliases {
> +             i2c0 = &cp0_i2c0;
> +             i2c1 = &cp1_i2c0;
> +             gpio1 = &cp0_gpio1;
> +             gpio2 = &cp0_gpio2;
> +             gpio3 = &cp1_gpio1;
> +             gpio4 = &cp1_gpio2;
> +             gpio5 = &cp2_gpio1;
> +             gpio6 = &cp2_gpio2;
> +             ethernet0 = &cp0_eth0;
> +             ethernet1 = &cp0_eth1;
> +             ethernet2 = &cp0_eth2;
> +             ethernet3 = &cp1_eth0;
> +             ethernet4 = &cp1_eth1;
> +             ethernet5 = &cp1_eth2;
> +             ethernet6 = &cp2_eth0;
> +             ethernet7 = &cp2_eth1;
> +             ethernet8 = &cp2_eth2;
> +             spi1 = &cp0_spi0;
> +             spi2 = &cp0_spi1;
> +             serial1 = &cp0_uart0;
> +     };
> +
> +     memory@00000000 {
> +             device_type = "memory";
> +             reg = <0x0 0x0 0x0 0x80000000>;
> +     };
> +
> +     cp2_reg_usb3_vbus0: cp2_usb3_vbus@0 {
> +             compatible = "regulator-fixed";
> +             regulator-name = "cp2-xhci0-vbus";
> +             regulator-min-microvolt = <5000000>;
> +             regulator-max-microvolt = <5000000>;
> +             enable-active-high;
> +             gpio = <&cp2_gpio1 2 GPIO_ACTIVE_HIGH>;
> +     };
> +
> +     cp2_usb3_0_phy0: cp2_usb3_phy0 {
> +             compatible = "usb-nop-xceiv";
> +             vcc-supply = <&cp2_reg_usb3_vbus0>;
> +     };
> +
> +     cp2_reg_usb3_vbus1: cp2_usb3_vbus@1 {
> +             compatible = "regulator-fixed";
> +             regulator-name = "cp2-xhci1-vbus";
> +             regulator-min-microvolt = <5000000>;
> +             regulator-max-microvolt = <5000000>;
> +             enable-active-high;
> +             gpio = <&cp2_gpio1 3 GPIO_ACTIVE_HIGH>;
> +     };
> +
> +     cp2_usb3_0_phy1: cp2_usb3_phy1 {
> +             compatible = "usb-nop-xceiv";
> +             vcc-supply = <&cp2_reg_usb3_vbus1>;
> +     };
> +
> +     cp2_sfp_eth0: sfp-eth0 {
> +             compatible = "sff,sfp";
> +             i2c-bus = <&cp2_sfpp0_i2c>;
> +             los-gpio = <&cp2_module_expander1 11 GPIO_ACTIVE_HIGH>;
> +             mod-def0-gpio = <&cp2_module_expander1 10 GPIO_ACTIVE_LOW>;
> +             tx-disable-gpio = <&cp2_module_expander1 9 GPIO_ACTIVE_HIGH>;
> +             tx-fault-gpio = <&cp2_module_expander1 8 GPIO_ACTIVE_HIGH>;
> +             status = "disabled";
> +     };
> +};
> +
> +&uart0 {
> +     status = "okay";
> +};
> +
> +&cp0_uart0 {
> +     status = "okay";
> +};
> +
> +/* on-board eMMC - U9 */
> +&ap_sdhci0 {
> +     pinctrl-names = "default";
> +     bus-width = <8>;
> +     status = "okay";
> +     mmc-ddr-1_8v;
> +     mmc-hs400-1_8v;
> +};
> +
> +&cp0_crypto {
> +     status = "okay";
> +};
> +
> +&cp0_xmdio {
> +     status = "okay";
> +     cp0_nbaset_phy0: ethernet-phy@0 {
> +             compatible = "ethernet-phy-ieee802.3-c45";
> +             reg = <2>;
> +     };
> +     cp0_nbaset_phy1: ethernet-phy@1 {
> +             compatible = "ethernet-phy-ieee802.3-c45";
> +             reg = <0>;
> +     };
> +     cp0_nbaset_phy2: ethernet-phy@2 {
> +             compatible = "ethernet-phy-ieee802.3-c45";
> +             reg = <8>;
> +     };
> +};
> +
> +&cp0_ethernet {
> +     status = "okay";
> +};
> +
> +/* SLM-1521-V2, CON9 */
> +&cp0_eth0 {
> +     status = "okay";
> +     phy-mode = "10gbase-kr";
> +     phys = <&cp0_comphy2 0>;
> +     managed = "in-band-status";
> +};
> +
> +&cp0_eth1 {
> +     status = "okay";
> +     phy-mode = "2500base-x";
> +     phys = <&cp0_comphy4 1>;
> +     managed = "in-band-status";
> +};
> +
> +&cp0_eth2 {
> +     status = "okay";
> +     phy-mode = "2500base-x";
> +     phys = <&cp0_comphy1 2>;
> +     managed = "in-band-status";
> +};
> +
> +&cp0_gpio1 {
> +     status = "okay";
> +};
> +
> +&cp0_gpio2 {
> +     status = "okay";
> +};
> +
> +&cp0_i2c0 {
> +     pinctrl-names = "default";
> +     pinctrl-0 = <&cp0_i2c0_pins>;
> +     status = "okay";
> +     clock-frequency = <100000>;
> +     rtc@32 {
> +             compatible = "epson,rx8130";
> +             reg = <0x32>;
> +             wakeup-source;
> +     };
> +};
> +
> +&cp0_i2c1 {
> +     clock-frequency = <100000>;
> +};
> +
> +/* SLM-1521-V2, CON6 */
> +&cp0_sata0 {
> +     status = "okay";
> +     sata-port@1 {
> +             status = "okay";
> +             phys = <&cp0_comphy0 1>;
> +     };
> +};
> +
> +&cp0_pcie2 {
> +     status = "okay";
> +     num-lanes = <1>;
> +     num-viewport = <8>;
> +     phys = <&cp0_comphy5 2>;
> +};
> +
> +/* U55 */
> +&cp0_spi1 {
> +     pinctrl-names = "default";
> +     pinctrl-0 = <&cp0_spi0_pins>;
> +     reg = <0x700680 0x50>,          /* control */
> +           <0x2000000 0x1000000>;    /* CS0 */
> +     status = "okay";
> +     spi-flash@0 {
> +             #address-cells = <0x1>;
> +             #size-cells = <0x1>;
> +             compatible = "jedec,spi-nor";
> +             reg = <0x0>;
> +             spi-max-frequency = <40000000>;
> +             partitions {
> +                     compatible = "fixed-partitions";
> +                     #address-cells = <1>;
> +                     #size-cells = <1>;
> +                     partition@0 {
> +                             label = "U-Boot";
> +                             reg = <0x0 0x1f0000>;
> +                     };
> +             partition@1f0000 {
> +                             label = "U-Boot ENV Factory";
> +                             reg = <0x1f0000 0x10000>;
> +                     };
> +             partition@200000 {
> +                             label = "Reserved";
> +                             reg = <0x200000 0x1f0000>;
> +                     };
> +             partition@3f0000 {
> +                             label = "U-Boot ENV";
> +                             reg = <0x3f0000 0x10000>;
> +                     };
> +             };
> +     };
> +};
> +
> +&cp0_syscon0 {
> +     cp0_pinctrl: pinctrl {
> +             compatible = "marvell,cp115-standalone-pinctrl";
> +             cp0_i2c0_pins: cp0-i2c-pins-0 {
> +                     marvell,pins = "mpp37", "mpp38";
> +                     marvell,function = "i2c0";
> +             };
> +             cp0_i2c1_pins: cp0-i2c-pins-1 {
> +                     marvell,pins = "mpp35", "mpp36";
> +                     marvell,function = "i2c1";
> +             };
> +             cp0_ge1_rgmii_pins: cp0-ge-rgmii-pins-0 {
> +                     marvell,pins = "mpp0", "mpp1", "mpp2",
> +                                    "mpp3", "mpp4", "mpp5",
> +                                    "mpp6", "mpp7", "mpp8",
> +                                    "mpp9", "mpp10", "mpp11";
> +                     marvell,function = "ge0";
> +             };
> +             cp0_ge2_rgmii_pins: cp0-ge-rgmii-pins-1 {
> +                     marvell,pins = "mpp44", "mpp45", "mpp46",
> +                                    "mpp47", "mpp48", "mpp49",
> +                                    "mpp50", "mpp51", "mpp52",
> +                                    "mpp53", "mpp54", "mpp55";
> +                     marvell,function = "ge1";
> +             };
> +             cp0_spi0_pins: cp0-spi-pins-0 {
> +                     marvell,pins = "mpp13", "mpp14", "mpp15", "mpp16";
> +                     marvell,function = "spi1";
> +             };
> +     };
> +};
> +
> +&cp0_usb3_1 {
> +     status = "okay";
> +     phys = <&cp0_comphy3 1>;
> +     phy-names = "usb";
> +};
> +
> +/*
> + * Instantiate the first connected CP115
> + */
> +
> +#define CP11X_NAME           cp1
> +#define CP11X_BASE           f4000000
> +#define CP11X_PCIEx_MEM_BASE(iface) (0xe2000000 + (iface * 0x1000000))
> +#define CP11X_PCIEx_MEM_SIZE(iface) 0xf00000
> +#define CP11X_PCIE0_BASE     f4600000
> +#define CP11X_PCIE1_BASE     f4620000
> +#define CP11X_PCIE2_BASE     f4640000
> +
> +#include "armada-cp115.dtsi"
> +
> +#undef CP11X_NAME
> +#undef CP11X_BASE
> +#undef CP11X_PCIEx_MEM_BASE
> +#undef CP11X_PCIEx_MEM_SIZE
> +#undef CP11X_PCIE0_BASE
> +#undef CP11X_PCIE1_BASE
> +#undef CP11X_PCIE2_BASE
> +
> +&cp1_crypto {
> +     status = "okay";
> +};
> +
> +&cp1_xmdio {
> +     status = "okay";
> +     cp1_nbaset_phy0: ethernet-phy@3 {
> +             compatible = "ethernet-phy-ieee802.3-c45";
> +             reg = <2>;
> +     };
> +     cp1_nbaset_phy1: ethernet-phy@4 {
> +             compatible = "ethernet-phy-ieee802.3-c45";
> +             reg = <0>;
> +     };
> +     cp1_nbaset_phy2: ethernet-phy@5 {
> +             compatible = "ethernet-phy-ieee802.3-c45";
> +             reg = <8>;
> +     };
> +};
> +
> +&cp1_ethernet {
> +     status = "okay";
> +};
> +
> +/* CON50 */
> +&cp1_eth0 {
> +     status = "okay";
> +     phy-mode = "10gbase-kr";
> +     phys = <&cp1_comphy2 0>;
> +     managed = "in-band-status";
> +};
> +
> +&cp1_eth1 {
> +     status = "okay";
> +     phy-mode = "2500base-x";
> +     phys = <&cp1_comphy4 1>;
> +     managed = "in-band-status";
> +};
> +
> +&cp1_eth2 {
> +     status = "okay";
> +     phy-mode = "2500base-x";
> +     phys = <&cp1_comphy1 2>;
> +     managed = "in-band-status";
> +};
> +
> +&cp1_gpio1 {
> +     status = "okay";
> +};
> +
> +&cp1_gpio2 {
> +     status = "okay";
> +};
> +
> +&cp1_i2c0 {
> +     status = "okay";
> +     pinctrl-names = "default";
> +     pinctrl-0 = <&cp1_i2c0_pins>;
> +     clock-frequency = <100000>;
> +};
> +
> +&cp1_syscon0 {
> +     cp1_pinctrl: pinctrl {
> +             compatible = "marvell,cp115-standalone-pinctrl";
> +             cp1_i2c0_pins: cp1-i2c-pins-0 {
> +                     marvell,pins = "mpp37", "mpp38";
> +                     marvell,function = "i2c0";
> +             };
> +             cp1_spi0_pins: cp1-spi-pins-0 {
> +                     marvell,pins = "mpp13", "mpp14", "mpp15", "mpp16";
> +                     marvell,function = "spi1";
> +             };
> +             cp1_xhci0_vbus_pins: cp1-xhci0-vbus-pins {
> +                     marvell,pins = "mpp3";
> +                     marvell,function = "gpio";
> +             };
> +     };
> +};
> +
> +/*
> + * Instantiate the second connected CP115
> + */
> +
> +#define CP11X_NAME           cp2
> +#define CP11X_BASE           f6000000
> +#define CP11X_PCIEx_MEM_BASE(iface) (0xe5000000 + (iface * 0x1000000))
> +#define CP11X_PCIEx_MEM_SIZE(iface) 0xf00000
> +#define CP11X_PCIE0_BASE     f6600000
> +#define CP11X_PCIE1_BASE     f6620000
> +#define CP11X_PCIE2_BASE     f6640000
> +
> +#include "armada-cp115.dtsi"
> +
> +#undef CP11X_NAME
> +#undef CP11X_BASE
> +#undef CP11X_PCIEx_MEM_BASE
> +#undef CP11X_PCIEx_MEM_SIZE
> +#undef CP11X_PCIE0_BASE
> +#undef CP11X_PCIE1_BASE
> +#undef CP11X_PCIE2_BASE
> +
> +&cp2_crypto {
> +     status = "okay";
> +};
> +
> +&cp2_ethernet {
> +     status = "okay";
> +};
> +
> +&cp2_xmdio {
> +     status = "okay";
> +     cp2_nbaset_phy0: ethernet-phy@6 {
> +             compatible = "ethernet-phy-ieee802.3-c45";
> +             reg = <2>;
> +     };
> +     cp2_nbaset_phy1: ethernet-phy@7 {
> +             compatible = "ethernet-phy-ieee802.3-c45";
> +             reg = <0>;
> +     };
> +     cp2_nbaset_phy2: ethernet-phy@8 {
> +             compatible = "ethernet-phy-ieee802.3-c45";
> +             reg = <8>;
> +     };
> +};
> +
> +/* SLM-1521-V2, CON9 */
> +&cp2_eth0 {
> +     status = "okay";
> +     phy-mode = "10gbase-kr";
> +     phys = <&cp2_comphy2 0>;
> +     managed = "in-band-status";
> +};
> +
> +&cp2_eth1 {
> +     status = "okay";
> +     phy-mode = "2500base-x";
> +     phys = <&cp2_comphy4 1>;
> +     managed = "in-band-status";
> +};
> +
> +&cp2_eth2 {
> +     status = "okay";
> +     phy-mode = "2500base-x";
> +     phys = <&cp2_comphy1 2>;
> +     managed = "in-band-status";
> +};
> +
> +&cp2_gpio1 {
> +     status = "okay";
> +};
> +
> +&cp2_gpio2 {
> +     status = "okay";
> +};
> +
> +&cp2_i2c0 {
> +     clock-frequency = <100000>;
> +     /* SLM-1521-V2 - U3 */
> +     i2c-mux@72 {
> +             compatible = "nxp,pca9544";
> +             #address-cells = <1>;
> +             #size-cells = <0>;
> +             reg = <0x72>;
> +             cp2_sfpp0_i2c: i2c@0 {
> +                     #address-cells = <1>;
> +                     #size-cells = <0>;
> +                     reg = <0>;
> +             };
> +
> +             i2c@1 {
> +                     #address-cells = <1>;
> +                     #size-cells = <0>;
> +                     reg = <1>;
> +                     /* U12 */
> +                     cp2_module_expander1: pca9555@21 {
> +                             compatible = "nxp,pca9555";
> +                             pinctrl-names = "default";
> +                             gpio-controller;
> +                             #gpio-cells = <2>;
> +                             reg = <0x21>;
> +                     };
> +             };
> +     };
> +};
> +
> +&cp2_syscon0 {
> +     cp2_pinctrl: pinctrl {
> +             compatible = "marvell,cp115-standalone-pinctrl";
> +             cp2_i2c0_pins: cp2-i2c-pins-0 {
> +                     marvell,pins = "mpp37", "mpp38";
> +                     marvell,function = "i2c0";
> +             };
> +     };
> +};
> +
> diff --git a/target/linux/mvebu/image/cortexa72.mk 
> b/target/linux/mvebu/image/cortexa72.mk
> index 1440c07a0b..29727f8b9d 100644
> --- a/target/linux/mvebu/image/cortexa72.mk
> +++ b/target/linux/mvebu/image/cortexa72.mk
> @@ -43,3 +43,21 @@ define Device/marvell_macchiatobin-singleshot
>    SUPPORTED_DEVICES := marvell,armada8040-mcbin-singleshot
>  endef
>  TARGET_DEVICES += marvell_macchiatobin-singleshot
> +
> +define Device/iei_puzzle-m901
> +  $(call Device/Default-arm64)
> +  DEVICE_VENDOR := iEi
> +  DEVICE_MODEL := Puzzle-M901
> +  SOC := cn9131
> +  IMAGE/sdcard.img.gz := boot-img-ext4 | sdcard-img-ext4 | gzip | 
> append-metadata
> +endef
> +TARGET_DEVICES += iei_puzzle-m901
> +
> +define Device/iei_puzzle-m902
> +  $(call Device/Default-arm64)
> +  DEVICE_VENDOR := iEi
> +  DEVICE_MODEL := Puzzle-M902
> +  SOC := cn9132
> +  IMAGE/sdcard.img.gz := boot-img-ext4 | sdcard-img-ext4 | gzip | 
> append-metadata
> +endef
> +TARGET_DEVICES += iei_puzzle-m902
> diff --git 
> a/target/linux/mvebu/patches-5.4/000-v5.5-arm64-dts-marvell-Add-support-for-Marvell-CN9130-SoC.patch
>  
> b/target/linux/mvebu/patches-5.4/000-v5.5-arm64-dts-marvell-Add-support-for-Marvell-CN9130-SoC.patch
> new file mode 100644
> index 0000000000..008bf9e24d
> --- /dev/null
> +++ 
> b/target/linux/mvebu/patches-5.4/000-v5.5-arm64-dts-marvell-Add-support-for-Marvell-CN9130-SoC.patch
> @@ -0,0 +1,61 @@
> +From 6b8970bd8d7a17a648e31f3996d9b21336b4a2cf Mon Sep 17 00:00:00 2001
> +From: Miquel Raynal <miquel.ray...@bootlin.com>
> +Date: Fri, 4 Oct 2019 16:27:35 +0200
> +Subject: [PATCH] arm64: dts: marvell: Add support for Marvell CN9130 SoC
> + support
> +
> +A CN9130 SoC has one AP807 and one internal CP115.
> +
> +Signed-off-by: Miquel Raynal <miquel.ray...@bootlin.com>
> +Signed-off-by: Gregory CLEMENT <gregory.clem...@bootlin.com>
> +---
> + arch/arm64/boot/dts/marvell/cn9130.dtsi | 37 +++++++++++++++++++++++++
> + 1 file changed, 37 insertions(+)
> + create mode 100644 arch/arm64/boot/dts/marvell/cn9130.dtsi
> +
> +diff --git a/arch/arm64/boot/dts/marvell/cn9130.dtsi 
> b/arch/arm64/boot/dts/marvell/cn9130.dtsi
> +new file mode 100644
> +index 000000000000..a2b7e5ec979d
> +--- /dev/null
> ++++ b/arch/arm64/boot/dts/marvell/cn9130.dtsi
> +@@ -0,0 +1,37 @@
> ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> ++/*
> ++ * Copyright (C) 2019 Marvell International Ltd.
> ++ *
> ++ * Device tree for the CN9130 SoC.
> ++ */
> ++
> ++#include "armada-ap807-quad.dtsi"
> ++
> ++/ {
> ++    model = "Marvell Armada CN9130 SoC";
> ++    compatible = "marvell,cn9130", "marvell,armada-ap807-quad",
> ++                 "marvell,armada-ap807";
> ++};
> ++
> ++/*
> ++ * Instantiate the internal CP115
> ++ */
> ++
> ++#define CP11X_NAME          cp0
> ++#define CP11X_BASE          f2000000
> ++#define CP11X_PCIEx_MEM_BASE(iface) ((iface == 0) ? 0xc0000000 : \
> ++                                                0xe0000000 + ((iface - 1) * 
> 0x1000000))
> ++#define CP11X_PCIEx_MEM_SIZE(iface) ((iface == 0) ? 0x1ff00000 : 0xf00000)
> ++#define CP11X_PCIE0_BASE    f2600000
> ++#define CP11X_PCIE1_BASE    f2620000
> ++#define CP11X_PCIE2_BASE    f2640000
> ++
> ++#include "armada-cp115.dtsi"
> ++
> ++#undef CP11X_NAME
> ++#undef CP11X_BASE
> ++#undef CP11X_PCIEx_MEM_BASE
> ++#undef CP11X_PCIEx_MEM_SIZE
> ++#undef CP11X_PCIE0_BASE
> ++#undef CP11X_PCIE1_BASE
> ++#undef CP11X_PCIE2_BASE
> +-- 
> +2.17.1
> +
> -- 
> 2.17.1
> 
> 
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel@lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel

_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to