openwrt/target/linux/mvebu/image/cortexa9.mk
INAGAKI Hiroshi 38d6c99dc0 mvebu: add support for Fortinet FortiGate 52E
Fortinet FortiGate 52E (FG-52E) is a UTM, based on Armada 385 (88F6820).

Specification:

- SoC          : Marvell Armada 385 88F6820
- RAM          : DDR3 2 GiB (4x Micron MT41K512M8DA-107, "D9SGQ")
- Flash        : SPI-NOR 128 MiB (Macronix MX66L1G45GMI-10G)
- SSD          : mSATA SSD 64 GB (2x A-DATA XM21E (AXM21ES3-32GM-B))
  - mode       : SATA III 6Gbps
  - power      : 3.3 VDC, 3.1 W (Max.)
- Ethernet     : 7x 10/100/1000 Mbps
  - LAN 1-5    : Marvell 88E6176
  - WAN 1, 2   : Marvell 88E1512 (2x)
- LEDs/Keys    : 18x/1x
- UART         : "CONSOLE" port (RJ-45, RS-232C level)
  - port       : ttyS0
  - settings   : 9600bps 8n1
  - assignment : 1:NC , 2:NC , 3:TXD, 4:GND,
                 5:GND, 6:RXD, 7:NC , 8:NC
  - note       : compatible with Cisco console cable
- HW Monitoring: nuvoTon NCT7802Y
- Power        : 12 VDC, 2.5 A
  - plug       : Molex 5557-02R

Flash instruction using initramfs image:

 1. Power on FG-52E and interrupt to show bootmenu
 2. Call "[I]: System information." -> "[S]: Set serial port baudrate."
    and set baudrate to 9600 bps
 3. Call "[R]: Review TFTP parameters.", check TFTP parameters and
    connect computer to "Image download port" in the parameters
 4. Prepare TFTP server with the parameters obtained above
 5. Rename OpenWrt initramfs image to "image.out" and put to TFTP
    directory
 6. Call "[T]: Initiate TFTP firmware transfer." to download initramfs
    image from TFTP server
 7. Type "R" key when the following message is showed, to boot initramfs
    image without flashing to spi-nor flash

    "Save as Default firmware/Backup firmware/Run image without saving:[D/B/R]?"

 8. On initramfs image, backup mtd if needed

    minimum:

    - "firmware-info"
    - "kernel"
    - "rootfs"

 9. On initramfs image, upload sysupgrade image to the device and perform
    sysupgrade
10. Wait ~200 seconds to complete flashing and rebooting.
    If the device is booted with stock firmware, login to bootmenu and
    call "[B]: Boot with backup firmware and set as default." to set the
    first OS image as default and boot it.

Notes:

- Both colors of Bi-color LEDs on the front panel cannot be turned on at
  the same time.

- "PWR" and "Logo" LEDs are connected to power source directly.

- The following partitions are added for OpenWrt.
  These partitions are contained in "uboot" partition (0x0-0x1fffff) on
  stock firmware.

  - "firmware-info"
  - "dtb"
  - "u-boot-env"
  - "board-info"

Image header for bootmenu tftp:

  0x0 - 0xf  : ?
 0x10 - 0x2f : Image Name
 0x30 - 0x17f: ?
0x180 - 0x183: Kernel Offset*
0x184 - 0x187: Kernel Length*
0x188 - 0x18b: RootFS Offset (ext2)*
0x18c - 0x18f: RootFS Length (ext2)*
0x190 - 0x193: DTB Offset
0x194 - 0x197: DTB Length
0x198 - 0x19b: Data Offset (jffs2)
0x19c - 0x19f: Data Length (jffs2)
0x1a0 - 0x1ff: ?

*: required for initramfs image

MAC addresses:

(eth0): 90:6C:AC:xx:xx:98 (board-info (OpenWrt), 0xd880 (hex))
WAN 1 : 90:6C:AC:xx:xx:99
WAN 2 : 90:6C:AC:xx:xx:9A
LAN 1 : 90:6C:AC:xx:xx:9B
LAN 2 : 90:6C:AC:xx:xx:9C
LAN 3 : 90:6C:AC:xx:xx:9D
LAN 4 : 90:6C:AC:xx:xx:9E
LAN 5 : 90:6C:AC:xx:xx:9F

Signed-off-by: INAGAKI Hiroshi <musashino.open@gmail.com>
2024-05-25 20:03:00 +02:00

428 lines
14 KiB
Makefile

# SPDX-License-Identifier: GPL-2.0-only
#
# Copyright (C) 2012-2016 OpenWrt.org
# Copyright (C) 2016 LEDE-project.org
DTS_DIR := $(DTS_DIR)/marvell
define Build/fortigate-header
( \
dd if=/dev/zero bs=384 count=1 2>/dev/null; \
datalen=$$(wc -c $@ | cut -d' ' -f1); \
datalen=$$(printf "%08x" $$datalen); \
datalen="$${datalen:6:2}$${datalen:4:2}$${datalen:2:2}$${datalen:0:2}"; \
printf $$(echo "00020000$${datalen}ffff0000ffff0000" | sed 's/../\\x&/g'); \
dd if=/dev/zero bs=112 count=1 2>/dev/null; \
cat $@; \
) > $@.new
mv $@.new $@
endef
define Build/seil-header
( \
data_size_crc="$$(gzip -c $@ | tail -c8 | \
od -An -tx8 --endian little | tr -d ' \n')"; \
printf "SEIL2015"; \
printf "$(call toupper,$(LINUX_KARCH)) $(VERSION_DIST) Linux-$(LINUX_VERSION)" | \
dd bs=80 count=1 conv=sync 2>/dev/null; \
printf "$$(echo $${data_size_crc:8:8} | sed 's/../\\x&/g')"; \
printf "\x00\x00\x00\x01\x00\x00\x00\x09\x00\x00\x00\x63"; \
printf "$(REVISION)" | dd bs=32 count=1 conv=sync 2>/dev/null; \
printf "\x00\x00\x00\x00"; \
printf "$$(echo $${data_size_crc:0:8} | sed 's/../\\x&/g')"; \
cat $@; \
) > $@.new
mv $@.new $@
endef
define Device/dsa-migration
DEVICE_COMPAT_VERSION := 1.1
DEVICE_COMPAT_MESSAGE := Config cannot be migrated from swconfig to DSA
endef
define Device/kernel-size-migration
DEVICE_COMPAT_VERSION := 2.0
DEVICE_COMPAT_MESSAGE := Partition design has changed compared to older versions (up to 19.07) due to kernel size restrictions. \
Upgrade via sysupgrade mechanism is not possible, so new installation via factory style image is required.
endef
define Device/buffalo_ls220de
$(Device/NAND-128K)
DEVICE_VENDOR := Buffalo
DEVICE_MODEL := LinkStation LS220DE
KERNEL_UBIFS_OPTS = -m $$(PAGESIZE) -e 124KiB -c 172 -x none
KERNEL := kernel-bin | append-dtb | uImage none | buffalo-kernel-ubifs
KERNEL_INITRAMFS := kernel-bin | append-dtb | uImage none
DEVICE_DTS := armada-370-buffalo-ls220de
DEVICE_PACKAGES := \
kmod-hwmon-gpiofan kmod-hwmon-drivetemp kmod-linkstation-poweroff \
kmod-md-mod kmod-md-raid0 kmod-md-raid1 kmod-md-raid10 kmod-fs-xfs \
mdadm mkf2fs e2fsprogs partx-utils
endef
TARGET_DEVICES += buffalo_ls220de
define Device/buffalo_ls421de
$(Device/NAND-128K)
DEVICE_VENDOR := Buffalo
DEVICE_MODEL := LinkStation LS421DE
SUBPAGESIZE :=
KERNEL_SIZE := 33554432
FILESYSTEMS := squashfs ubifs
KERNEL := kernel-bin | append-dtb | uImage none | buffalo-kernel-jffs2
KERNEL_INITRAMFS := kernel-bin | append-dtb | uImage none
DEVICE_DTS := armada-370-buffalo-ls421de
DEVICE_PACKAGES := \
kmod-rtc-rs5c372a kmod-hwmon-gpiofan kmod-hwmon-drivetemp kmod-usb3 \
kmod-linkstation-poweroff kmod-md-raid0 kmod-md-raid1 kmod-md-mod \
kmod-fs-xfs mkf2fs e2fsprogs partx-utils
endef
TARGET_DEVICES += buffalo_ls421de
define Device/ctera_c200-v2
PAGESIZE := 2048
SUBPAGESIZE := 512
BLOCKSIZE := 128k
DEVICE_VENDOR := Ctera
DEVICE_MODEL := C200
DEVICE_VARIANT := V2
SOC := armada-370
KERNEL := kernel-bin | append-dtb | uImage none | ctera-firmware
KERNEL_IN_UBI :=
KERNEL_SUFFIX := -factory.firm
DEVICE_PACKAGES := \
kmod-gpio-button-hotplug kmod-hwmon-drivetemp kmod-hwmon-nct7802 \
kmod-rtc-s35390a kmod-usb3 kmod-usb-ledtrig-usbport
IMAGES := sysupgrade.bin
endef
TARGET_DEVICES += ctera_c200-v2
define Device/cznic_turris-omnia
DEVICE_VENDOR := CZ.NIC
DEVICE_MODEL := Turris Omnia
KERNEL_INSTALL := 1
SOC := armada-385
KERNEL := kernel-bin
KERNEL_INITRAMFS := kernel-bin | gzip | fit gzip $$(KDIR)/image-$$(DEVICE_DTS).dtb
DEVICE_PACKAGES := \
mkf2fs e2fsprogs kmod-fs-vfat kmod-nls-cp437 kmod-nls-iso8859-1 \
wpad-basic-mbedtls kmod-ath9k kmod-ath10k-ct ath10k-firmware-qca988x-ct \
kmod-mt7915-firmware partx-utils kmod-i2c-mux-pca954x kmod-leds-turris-omnia
IMAGES := sysupgrade.img.gz
IMAGE/sysupgrade.img.gz := boot-scr | boot-img | sdcard-img | gzip | append-metadata
SUPPORTED_DEVICES += armada-385-turris-omnia
BOOT_SCRIPT := turris-omnia
endef
TARGET_DEVICES += cznic_turris-omnia
define Device/fortinet
DEVICE_VENDOR := Fortinet
SOC := armada-385
KERNEL := kernel-bin | append-dtb
KERNEL_SIZE := 6144k
IMAGE/sysupgrade.bin := append-rootfs | pad-rootfs | \
sysupgrade-tar rootfs=$$$$@ | append-metadata
DEVICE_PACKAGES := kmod-hwmon-nct7802
endef
define Device/fortinet_fg-30e
$(Device/fortinet)
DEVICE_MODEL := FortiGate 30E
DEVICE_DTS := armada-385-fortinet-fg-30e
KERNEL_INITRAMFS := kernel-bin | append-dtb | fortigate-header | \
gzip-filename FGT30E
endef
TARGET_DEVICES += fortinet_fg-30e
define Device/fortinet_fg-50e
$(Device/fortinet)
DEVICE_MODEL := FortiGate 50E
DEVICE_DTS := armada-385-fortinet-fg-50e
KERNEL_INITRAMFS := kernel-bin | append-dtb | fortigate-header | \
gzip-filename FGT50E
endef
TARGET_DEVICES += fortinet_fg-50e
define Device/fortinet_fg-51e
$(Device/fortinet)
DEVICE_MODEL := FortiGate 51E
DEVICE_DTS := armada-385-fortinet-fg-51e
KERNEL_INITRAMFS := kernel-bin | append-dtb | fortigate-header | \
gzip-filename FGT51E
endef
TARGET_DEVICES += fortinet_fg-51e
define Device/fortinet_fg-52e
$(Device/fortinet)
DEVICE_MODEL := FortiGate 52E
DEVICE_DTS := armada-385-fortinet-fg-52e
KERNEL_INITRAMFS := kernel-bin | append-dtb | fortigate-header | \
gzip-filename FGT52E
endef
TARGET_DEVICES += fortinet_fg-52e
define Device/globalscale_mirabox
$(Device/NAND-512K)
DEVICE_VENDOR := Globalscale
DEVICE_MODEL := Mirabox
SOC := armada-370
SUPPORTED_DEVICES += mirabox
endef
TARGET_DEVICES += globalscale_mirabox
define Device/iij_sa-w2
DEVICE_VENDOR := IIJ
DEVICE_MODEL := SA-W2
SOC := armada-380
KERNEL := kernel-bin | append-dtb | seil-header
DEVICE_DTS := armada-380-iij-sa-w2
IMAGE_SIZE := 15360k
IMAGE/sysupgrade.bin := append-kernel | pad-to 64k | \
append-rootfs | pad-rootfs | check-size | append-metadata
DEVICE_PACKAGES := kmod-ath9k kmod-ath10k-ct ath10k-firmware-qca988x-ct \
wpad-basic-mbedtls
endef
TARGET_DEVICES += iij_sa-w2
define Device/iptime_nas1dual
DEVICE_VENDOR := ipTIME
DEVICE_MODEL := NAS1dual
DEVICE_PACKAGES := kmod-hwmon-drivetemp kmod-hwmon-gpiofan kmod-usb3
SOC := armada-385
KERNEL := kernel-bin | append-dtb | iptime-naspkg nas1dual
KERNEL_SIZE := 6144k
IMAGES := sysupgrade.bin
IMAGE_SIZE := 64256k
IMAGE/sysupgrade.bin := append-kernel | pad-to $$(KERNEL_SIZE) | \
append-rootfs | pad-rootfs | check-size | append-metadata
endef
TARGET_DEVICES += iptime_nas1dual
define Device/kobol_helios4
DEVICE_VENDOR := Kobol
DEVICE_MODEL := Helios4
KERNEL_INSTALL := 1
KERNEL := kernel-bin
DEVICE_PACKAGES := mkf2fs e2fsprogs partx-utils
IMAGES := sdcard.img.gz
IMAGE/sdcard.img.gz := boot-scr | boot-img-ext4 | sdcard-img-ext4 | gzip | append-metadata
SOC := armada-388
UBOOT := helios4-u-boot-with-spl.kwb
BOOT_SCRIPT := clearfog
endef
TARGET_DEVICES += kobol_helios4
define Device/linksys
$(Device/NAND-128K)
DEVICE_VENDOR := Linksys
DEVICE_PACKAGES := kmod-mwlwifi wpad-basic-mbedtls
IMAGES += factory.img
IMAGE/factory.img := append-kernel | pad-to $$$$(KERNEL_SIZE) | \
append-ubi | pad-to $$$$(PAGESIZE)
KERNEL_SIZE := 6144k
endef
define Device/linksys_wrt1200ac
$(call Device/linksys)
$(Device/dsa-migration)
DEVICE_MODEL := WRT1200AC
DEVICE_ALT0_VENDOR := Linksys
DEVICE_ALT0_MODEL := Caiman
DEVICE_DTS := armada-385-linksys-caiman
DEVICE_PACKAGES += mwlwifi-firmware-88w8864
SUPPORTED_DEVICES += armada-385-linksys-caiman linksys,caiman
endef
TARGET_DEVICES += linksys_wrt1200ac
define Device/linksys_wrt1900acs
$(call Device/linksys)
$(Device/dsa-migration)
DEVICE_MODEL := WRT1900ACS
DEVICE_VARIANT := v1
DEVICE_ALT0_VENDOR := Linksys
DEVICE_ALT0_MODEL := WRT1900ACS
DEVICE_ALT0_VARIANT := v2
DEVICE_ALT1_VENDOR := Linksys
DEVICE_ALT1_MODEL := Shelby
DEVICE_DTS := armada-385-linksys-shelby
DEVICE_PACKAGES += mwlwifi-firmware-88w8864
SUPPORTED_DEVICES += armada-385-linksys-shelby linksys,shelby
endef
TARGET_DEVICES += linksys_wrt1900acs
define Device/linksys_wrt1900ac-v1
$(call Device/linksys)
$(Device/kernel-size-migration)
DEVICE_MODEL := WRT1900AC
DEVICE_VARIANT := v1
DEVICE_ALT0_VENDOR := Linksys
DEVICE_ALT0_MODEL := Mamba
DEVICE_DTS := armada-xp-linksys-mamba
DEVICE_PACKAGES += mwlwifi-firmware-88w8864
KERNEL_SIZE := 4096k
SUPPORTED_DEVICES += armada-xp-linksys-mamba linksys,mamba
endef
TARGET_DEVICES += linksys_wrt1900ac-v1
define Device/linksys_wrt1900ac-v2
$(call Device/linksys)
$(Device/dsa-migration)
DEVICE_MODEL := WRT1900AC
DEVICE_VARIANT := v2
DEVICE_ALT0_VENDOR := Linksys
DEVICE_ALT0_MODEL := Cobra
DEVICE_DTS := armada-385-linksys-cobra
DEVICE_PACKAGES += mwlwifi-firmware-88w8864
SUPPORTED_DEVICES += armada-385-linksys-cobra linksys,cobra
endef
TARGET_DEVICES += linksys_wrt1900ac-v2
define Device/linksys_wrt3200acm
$(call Device/linksys)
$(Device/dsa-migration)
DEVICE_MODEL := WRT3200ACM
DEVICE_ALT0_VENDOR := Linksys
DEVICE_ALT0_MODEL := Rango
DEVICE_DTS := armada-385-linksys-rango
DEVICE_PACKAGES += kmod-btmrvl kmod-mwifiex-sdio mwlwifi-firmware-88w8964
SUPPORTED_DEVICES += armada-385-linksys-rango linksys,rango
endef
TARGET_DEVICES += linksys_wrt3200acm
define Device/linksys_wrt32x
$(call Device/linksys)
$(Device/kernel-size-migration)
DEVICE_MODEL := WRT32X
DEVICE_ALT0_VENDOR := Linksys
DEVICE_ALT0_MODEL := Venom
DEVICE_DTS := armada-385-linksys-venom
DEVICE_PACKAGES += kmod-btmrvl kmod-mwifiex-sdio mwlwifi-firmware-88w8964
KERNEL_SIZE := 6144k
KERNEL := kernel-bin | append-dtb
SUPPORTED_DEVICES += armada-385-linksys-venom linksys,venom
endef
TARGET_DEVICES += linksys_wrt32x
define Device/marvell_a370-db
$(Device/NAND-512K)
DEVICE_VENDOR := Marvell
DEVICE_MODEL := Armada 370 Development Board (DB-88F6710-BP-DDR3)
DEVICE_DTS := armada-370-db
SUPPORTED_DEVICES += armada-370-db
endef
TARGET_DEVICES += marvell_a370-db
define Device/marvell_a370-rd
$(Device/NAND-512K)
DEVICE_VENDOR := Marvell
DEVICE_MODEL := Armada 370 RD (RD-88F6710-A1)
DEVICE_DTS := armada-370-rd
SUPPORTED_DEVICES += armada-370-rd
endef
TARGET_DEVICES += marvell_a370-rd
define Device/marvell_a385-db-ap
$(Device/NAND-256K)
DEVICE_VENDOR := Marvell
DEVICE_MODEL := Armada 385 Development Board AP (DB-88F6820-AP)
DEVICE_DTS := armada-385-db-ap
IMAGES += factory.img
IMAGE/factory.img := append-kernel | pad-to $$$$(KERNEL_SIZE) | \
append-ubi | pad-to $$$$(PAGESIZE)
KERNEL_SIZE := 8192k
SUPPORTED_DEVICES += armada-385-db-ap
endef
TARGET_DEVICES += marvell_a385-db-ap
define Device/marvell_a388-rd
DEVICE_VENDOR := Marvell
DEVICE_MODEL := Armada 388 RD (RD-88F6820-AP)
DEVICE_DTS := armada-388-rd
IMAGES := firmware.bin
IMAGE/firmware.bin := append-kernel | pad-to 256k | append-rootfs | pad-rootfs
SUPPORTED_DEVICES := armada-388-rd marvell,a385-rd
endef
TARGET_DEVICES += marvell_a388-rd
define Device/marvell_axp-db
$(Device/NAND-512K)
DEVICE_VENDOR := Marvell
DEVICE_MODEL := Armada XP Development Board (DB-78460-BP)
DEVICE_DTS := armada-xp-db
SUPPORTED_DEVICES += armada-xp-db
endef
TARGET_DEVICES += marvell_axp-db
define Device/marvell_axp-gp
$(Device/NAND-512K)
DEVICE_VENDOR := Marvell
DEVICE_MODEL := Armada Armada XP GP (DB-MV784MP-GP)
DEVICE_DTS := armada-xp-gp
SUPPORTED_DEVICES += armada-xp-gp
endef
TARGET_DEVICES += marvell_axp-gp
define Device/plathome_openblocks-ax3-4
DEVICE_VENDOR := Plat'Home
DEVICE_MODEL := OpenBlocks AX3
DEVICE_VARIANT := 4 ports
SOC := armada-xp
SUPPORTED_DEVICES += openblocks-ax3-4
BLOCKSIZE := 128k
PAGESIZE := 1
IMAGES += factory.img
IMAGE/factory.img := append-kernel | pad-to $$(BLOCKSIZE) | append-ubi
endef
TARGET_DEVICES += plathome_openblocks-ax3-4
define Device/solidrun_clearfog-base-a1
DEVICE_VENDOR := SolidRun
DEVICE_MODEL := ClearFog Base
KERNEL_INSTALL := 1
KERNEL := kernel-bin
DEVICE_PACKAGES := mkf2fs e2fsprogs partx-utils
IMAGES := sdcard.img.gz
IMAGE/sdcard.img.gz := boot-scr | boot-img-ext4 | sdcard-img-ext4 | gzip | append-metadata
DEVICE_DTS := armada-388-clearfog-base armada-388-clearfog-pro
UBOOT := clearfog-u-boot-with-spl.kwb
BOOT_SCRIPT := clearfog
SUPPORTED_DEVICES += armada-388-clearfog-base
DEVICE_COMPAT_VERSION := 1.1
DEVICE_COMPAT_MESSAGE := Ethernet interface rename has been dropped
endef
TARGET_DEVICES += solidrun_clearfog-base-a1
define Device/solidrun_clearfog-pro-a1
$(Device/dsa-migration)
DEVICE_VENDOR := SolidRun
DEVICE_MODEL := ClearFog Pro
KERNEL_INSTALL := 1
KERNEL := kernel-bin
DEVICE_PACKAGES := mkf2fs e2fsprogs partx-utils
IMAGES := sdcard.img.gz
IMAGE/sdcard.img.gz := boot-scr | boot-img-ext4 | sdcard-img-ext4 | gzip | append-metadata
DEVICE_DTS := armada-388-clearfog-pro armada-388-clearfog-base
UBOOT := clearfog-u-boot-with-spl.kwb
BOOT_SCRIPT := clearfog
SUPPORTED_DEVICES += armada-388-clearfog armada-388-clearfog-pro
endef
TARGET_DEVICES += solidrun_clearfog-pro-a1
define Device/synology_ds213j
DEVICE_VENDOR := Synology
DEVICE_MODEL := DS213j
KERNEL_SIZE := 6912k
IMAGE_SIZE := 7168k
FILESYSTEMS := squashfs ubifs
KERNEL := kernel-bin | append-dtb | uImage none
KERNEL_INITRAMFS := kernel-bin | append-dtb | uImage none
DEVICE_DTS := armada-370-synology-ds213j
IMAGES := sysupgrade.bin
IMAGE/sysupgrade.bin := append-kernel | append-rootfs | pad-rootfs | \
check-size | append-metadata
DEVICE_PACKAGES := \
kmod-rtc-s35390a kmod-hwmon-gpiofan kmod-hwmon-drivetemp \
kmod-md-raid0 kmod-md-raid1 kmod-md-mod e2fsprogs mdadm \
-ppp -kmod-nft-offload -firewall4 -dnsmasq -odhcpd-ipv6only
endef
TARGET_DEVICES += synology_ds213j