Hi,

> -----Original Message-----
> From: openwrt-devel [mailto:openwrt-devel-boun...@lists.openwrt.org]
> On Behalf Of Stijn Tintel
> Sent: Sonntag, 22. August 2021 01:15
> To: openwrt-devel@lists.openwrt.org
> Subject: [PATCH 6/6] qoriq: add support for WatchGuard Firebox M300
> 
> This device is based on NXP's QorIQ T2081QDS board, with a quad-core dual-
> threaded 1.5 GHz ppc64 CPU and 4GB ECC RAM. The board has 5 ethernet
> interfaces, of which 3 are connected to the ethernet ports on the front
> panel. The other 2 are internally connected to a Marvell
> 88E6171 switch; the other 5 ports of this switch are also connected to the
> ethernet ports on the front panel.
> 
> Installation: write the sdcard image to an SD card. Stock U-Boot will not 
> boot,
> wait for it to fail then run these commands:
> 
> setenv wgBootSysA "setenv bootargs root=/dev/mmcblk0p2 rw rootdelay=2
> console=$consoledev,$baudrate fsl_dpaa_fman.fsl_fm_max_frm=1522;
> ext2load mmc 0:1 $fdtaddr image-m300.dtb; ext2load mmc 0:1 $loadaddr
> firebox_m300-kernel.bin; bootm $loadaddr - $fdtaddr"
> saveenv
> reset
> 
> The default U-Boot boot entry will now boot OpenWrt from the SD card.

a few mostly cosmetic comments below, with the only real issue at the very 
bottom.

Target introduction in 5/6 looked fine.

> 
> Signed-off-by: Stijn Tintel <st...@linux-ipv6.be>
> ---
>  .../base-files/lib/preinit/79_move_config     |  17 +
>  .../qoriq/base-files/lib/upgrade/platform.sh  |  38 +++
> .../files/arch/powerpc/boot/dts/fsl/m300.dts  | 294 ++++++++++++++++++
>  target/linux/qoriq/image/generic.mk           |  13 +
>  4 files changed, 362 insertions(+)
>  create mode 100644 target/linux/qoriq/base-
> files/lib/preinit/79_move_config
>  create mode 100755 target/linux/qoriq/base-files/lib/upgrade/platform.sh
>  create mode 100644
> target/linux/qoriq/files/arch/powerpc/boot/dts/fsl/m300.dts
> 
> diff --git a/target/linux/qoriq/base-files/lib/preinit/79_move_config
> b/target/linux/qoriq/base-files/lib/preinit/79_move_config
> new file mode 100644
> index 0000000000..22ec022f6a
> --- /dev/null
> +++ b/target/linux/qoriq/base-files/lib/preinit/79_move_config
> @@ -0,0 +1,17 @@
> +# Copyright (C) 2015 OpenWrt.org

New files should have an SPDX identifier.

> +
> +. /lib/functions.sh
> +. /lib/upgrade/common.sh
> +
> +move_config() {
> +     local partdev
> +
> +     if export_bootdevice && export_partdevice partdev 1; then
> +             mkdir -p /boot
> +             mount -o rw,noatime "/dev/$partdev" /boot
> +             [ -f "/boot/$BACKUP_FILE" ] && mv -f "/boot/$BACKUP_FILE"
> /
> +             umount /boot
> +     fi
> +}
> +
> +boot_hook_add preinit_mount_root move_config
> diff --git a/target/linux/qoriq/base-files/lib/upgrade/platform.sh
> b/target/linux/qoriq/base-files/lib/upgrade/platform.sh
> new file mode 100755
> index 0000000000..d88f70e3f6
> --- /dev/null
> +++ b/target/linux/qoriq/base-files/lib/upgrade/platform.sh
> @@ -0,0 +1,38 @@
> +#
> +# Copyright (C) 2011 OpenWrt.org
> +#
> +
> +PART_NAME=firmware
> +REQUIRE_IMAGE_METADATA=1
> +
> +platform_check_image() {
> +     case "$(board_name)" in
> +     watchguard,firebox-m300)
> +             legacy_sdcard_check_image "$1"
> +             ;;
> +     *)
> +             return 0
> +             ;;
> +     esac
> +}
> +
> +platform_copy_config() {
> +     case "$(board_name)" in
> +     watchguard,firebox-m300)
> +             legacy_sdcard_copy_config "$1"
> +             ;;
> +     *)
> +             return 0
> +     esac
> +}
> +
> +platform_do_upgrade() {
> +     case "$(board_name)" in
> +     watchguard,firebox-m300)
> +             legacy_sdcard_do_upgrade "$1"
> +             ;;
> +     *)
> +             default_do_upgrade "$1"
> +             ;;
> +     esac
> +}
> diff --git a/target/linux/qoriq/files/arch/powerpc/boot/dts/fsl/m300.dts
> b/target/linux/qoriq/files/arch/powerpc/boot/dts/fsl/m300.dts
> new file mode 100644
> index 0000000000..71ff57dcb6
> --- /dev/null
> +++ b/target/linux/qoriq/files/arch/powerpc/boot/dts/fsl/m300.dts
> @@ -0,0 +1,294 @@
> +// SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0-or-later
> +/*
> + * WatchGuard Firebox M300 Device Tree Source
> + * Based on t2081qds.dts from Linux 5.10
> + *
> + * Copyright 2013 - 2015 Freescale Semiconductor Inc.
> + * Copyright 2020 - 2021 Stijn Tintel <st...@linux-ipv6.be>  */
> +
> +/include/ "t208xsi-pre.dtsi"
> +/include/ "t208xqds.dtsi"
> +
> +/ {
> +     model = "WatchGuard Firebox M300";
> +     compatible = "watchguard,firebox-m300", "fsl,T2081QDS";

I'd add an empty line after these two.

> +     #address-cells = <2>;
> +     #size-cells = <2>;

Do we need these without a direct subnode?

> +     interrupt-parent = <&mpic>;
> +
> +     aliases {
> +     };

Consider dropping the empty node.

> +};
> +
> +// mdio-mux under &boardctrl + its aliases removed. causes crash:
> +// Oops: Machine check, sig: 7 [#1]
> +
> +/include/ "t2081si-post.dtsi"
> +
> +// add stuff below the include to make sure we override whatever is
> +there
> +
> +&enet0 {
> +     phy-connection-type = "sgmii";
> +     phy-handle = <&phy1>;
> +};
> +
> +&enet1 {
> +     phy-connection-type = "sgmii";
> +     phy-handle = <&phy2>;
> +};
> +
> +&enet2 {
> +     phy-connection-type = "rgmii";
> +     fixed-link = <0x10 0x01 0x3e8 0x00 0x00>; };
> +
> +&enet3 {
> +     phy-connection-type = "rgmii";
> +     fixed-link = <0x04 0x01 0x3e8 0x00 0x00>; };
> +
> +&enet4 {
> +     status = "disabled";
> +};
> +
> +&enet5 {
> +     status = "disabled";
> +};
> +
> +&enet6 {
> +     status = "disabled";
> +};
> +
> +&enet7 {
> +     phy-connection-type = "sgmii";
> +     phy-handle = <&phy0>;
> +};
> +
> +&ifc {
> +     ranges = <0x00 0x00 0x0f 0xefc00000 0x400000>;
> +
> +     nor@0,0 {
> +             reg = <0x00 0x00 0x400000>;
> +
> +             partition@00000000 {

The @x number could be shortened.

> +                     reg = <0x00 0x10000>;
> +                     label = "NOR (RW) LANNER RCW Code";

Labels here might need some refactoring, too.

> +             };
> +
> +             partition@00010000 {
> +                     reg = <0x10000 0x20000>;
> +                     label = "NOR (RW) WG CFG0";
> +             };
> +
> +             partition@00030000 {
> +                     reg = <0x30000 0x10000>;
> +                     label = "NOR (RW) WG CFG1";
> +             };
> +
> +             partition@00040000 {
> +                     reg = <0x40000 0x10000>;
> +                     label = "NOR (RW) WG MFG DATA";
> +             };
> +
> +             partition@00050000 {
> +                     reg = <0x50000 0xb0000>;
> +                     label = "NOR (RW) WG bootOpt Data & reserved";
> +             };
> +
> +             partition@00100000 {
> +                     reg = <0x100000 0xb0000>;
> +                     label = "NOR (RW) WG extra reserved 1";
> +             };
> +
> +             partition@001B0000 {
> +                     reg = <0x1b0000 0xb0000>;
> +                     label = "NOR (RW) WG extra reserved 2";
> +             };
> +
> +             partition@00260000 {
> +                     reg = <0x260000 0xc0000>;
> +                     label = "NOR (RW) WG U-Boot FAILSAFE";
> +             };
> +
> +             partition@00320000 {
> +                     reg = <0x320000 0x10000>;
> +                     label = "NOR (RW) FMAN";
> +             };
> +
> +             partition@00330000 {
> +                     reg = <0x330000 0x10000>;
> +                     label = "NOR (RW) WG U-Boot ENV";
> +             };
> +
> +             partition@00340000 {
> +                     reg = <0x340000 0xc0000>;
> +                     label = "NOR (RW) WG U-Boot Image";
> +             };
> +     };
> +
> +     nand@2,0 {
> +             status = "disabled";
> +     };
> +};
> +
> +&mdio0 {
> +     // m300 ethernet port 0
> +     phy0: ethernet-phy@0 {
> +             reg = <0x00>;
> +     };
> +
> +     // m300 ethernet port 1
> +     phy1: ethernet-phy@1 {
> +             reg = <0x01>;
> +     };
> +
> +     phy2: ethernet-phy@2 {
> +             reg = <0x02>;
> +     };
> +
> +     phy3: ethernet-phy@3 {
> +             reg = <0x03>;
> +     };
> +
> +     // m300 mv88e6123 switch detected
> +     switch0: switch@10 {
> +             compatible = "marvell,mv88e6085";
> +             reg = <0x10>;
> +
> +             //dsa,member = <0 0>;
> +             mdio {
> +                     #address-cells = <1>;
> +                     #size-cells = <0>;
> +
> +                     switch0phy0: switch0phy0@0 {
> +                             reg = <0x00>;
> +                             interrupt-parent = <&switch0>;
> +                     };
> +
> +                     switch0phy1: switch0phy1@1 {
> +                             reg = <0x01>;
> +                             interrupt-parent = <&switch0>;
> +                     };
> +
> +                     switch0phy2: switch0phy2@2 {
> +                             reg = <0x02>;
> +                             interrupt-parent = <&switch0>;
> +                     };
> +
> +                     switch0phy3: switch0phy3@3 {
> +                             reg = <0x03>;
> +                             interrupt-parent = <&switch0>;
> +                     };
> +
> +                     switch0phy4: switch0phy4@4 {
> +                             reg = <0x04>;
> +                             interrupt-parent = <&switch0>;
> +                     };
> +             };
> +
> +             ports {
> +                     #address-cells = <1>;
> +                     #size-cells = <0>;
> +
> +                     port@0 {
> +                             reg = <0>;
> +                             // TODO: rename to eth3 after figuring out
> how to rename SoC eth3
> +                             label = "sw0p0";
> +                             phy-handle = <&switch0phy0>;
> +                     };
> +
> +                     port@1 {
> +                             // TODO: rename to eth4 after figuring out
> how to rename SoC eth4
> +                             reg = <1>;
> +                             label = "sw0p1";
> +                             phy-handle = <&switch0phy1>;
> +                     };
> +
> +                     port@2 {
> +                             reg = <2>;
> +                             label = "eth5";
> +                             phy-handle = <&switch0phy2>;
> +                     };
> +
> +                     port@3 {
> +                             reg = <3>;
> +                             label = "eth6";
> +                             phy-handle = <&switch0phy3>;
> +                     };
> +
> +                     port@4 {
> +                             reg = <4>;
> +                             label = "eth7";
> +                             phy-handle = <&switch0phy4>;
> +                     };
> +
> +                     port@5 {
> +                             status = "disabled";
> +
> +                             reg = "<5>";
> +                             label = "cpu1";
> +                             ethernet = <&enet2>;
> +                             phy-mode = "rgmii";
> +
> +                             fixed-link {
> +                                     speed = <1000>;
> +                                     full-duplex;
> +                             };

This is still WIP? Or why do we need to add this if it's disabled?

> +                     };
> +
> +                     port@6 {
> +                             reg = <6>;
> +                             label = "cpu";
> +                             ethernet = <&enet3>;
> +                             phy-mode = "rgmii-id";
> +
> +                             fixed-link {
> +                                     speed = <1000>;
> +                                     full-duplex;
> +                             };
> +                     };
> +             };
> +     };
> +};
> +
> +&soc {
> +     i2c@118000 {
> +             tpm@29 {
> +                     compatible = "tpm,tpm_i2c_atmel";
> +                     reg = <0x29>;
> +             };
> +             hwmon@2c {
> +                     compatible = "winbond,w83793";
> +                     reg = <0x2c>;
> +             };
> +             hwmon@2d {
> +                     compatible = "winbond,w83793";
> +                     reg = <0x2d>;
> +             };
> +             rtc@32 {
> +                     compatible = "ricoh,rs5c372a";
> +                     reg = <0x32>;
> +             };
> +             pca9547@77 {
> +                     status = "disabled";
> +             };
> +     };
> +
> +     spi@110000 {
> +             // DTS decompiled from OEM DTB contains flash@0 but
> doesn't work
> +             // spi-nor spi0.0: unrecognized JEDEC id bytes: ff ff ff ff ff 
> ff
> +             // disable for now
> +             flash@0 {
> +                     status = "disabled";
> +             };
> +
> +             flash@1 {
> +                     status = "disabled";
> +             };
> +
> +             flash@2 {
> +                     status = "disabled";
> +             };
> +     };
> +};
> diff --git a/target/linux/qoriq/image/generic.mk
> b/target/linux/qoriq/image/generic.mk
> index e69de29bb2..2709811658 100644
> --- a/target/linux/qoriq/image/generic.mk
> +++ b/target/linux/qoriq/image/generic.mk
> @@ -0,0 +1,13 @@
> +define Device/firebox_m300

This node name should be "Device/watchguard_firebox-m300", so it matches the 
compatible.

> +  DEVICE_VENDOR := WatchGuard
> +  DEVICE_MODEL := Firebox M300
> +  DEVICE_DTS_DIR := $(DTS_DIR)/fsl
> +  DEVICE_PACKAGES := kmod-hwmon-w83793 kmod-rtc-rs5c372a
> +kmod-tpm-i2c-atmel
> +  BLOCKSIZE := 128k
> +  KERNEL := kernel-bin | gzip | uImage gzip
> +  SUPPORTED_DEVICES := fsl,T2081QDS, watchguard,firebox-m300

The second entry should be dropped, since it's derived from the node name after 
change.
Do you really need the first one? If yes,

SUPPORTED_DEVICES += fsl,T2081QDS

otherwise drop the entire line.

With the new node name you should either rename the DTS to firebox-m300.dts [*] 
or add a specific DEVICE_DTS entry here if the shorter name can't be changed 
for some reason.

* I'd personally even prefer the long name watchguard-firebox-m300.dts, which 
would require to change the default DEVICE_DTS in patch 5/6. However, kernel is 
completely inconsistent here, so I don't know whether that would be acceptable 
for the particular target there.

Best

Adrian

> +  IMAGES := sdcard.img.gz sysupgrade.img.gz
> +  IMAGE/sysupgrade.img.gz :=  sdcard-img | gzip | append-metadata
> +  IMAGE/sdcard.img.gz := sdcard-img | gzip endef TARGET_DEVICES +=
> +firebox_m300
> --
> 2.31.1
> 
> 
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel@lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Attachment: openpgp-digital-signature.asc
Description: PGP signature

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

Reply via email to