Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/1.0/patches/2175794/?format=api
{ "id": 2175794, "url": "http://patchwork.ozlabs.org/api/1.0/patches/2175794/?format=api", "project": { "id": 18, "url": "http://patchwork.ozlabs.org/api/1.0/projects/18/?format=api", "name": "U-Boot", "link_name": "uboot", "list_id": "u-boot.lists.denx.de", "list_email": "u-boot@lists.denx.de", "web_url": null, "scm_url": null, "webscm_url": null }, "msgid": "<20251218225936.2016920-4-judge.packham@gmail.com>", "date": "2025-12-18T22:59:36", "name": "[v3,3/3] arm: mvebu: Add Allied Telesis x220", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "43a6c6201d5ae06c61da13576e50737de29bee23", "submitter": { "id": 6125, "url": "http://patchwork.ozlabs.org/api/1.0/people/6125/?format=api", "name": "Chris Packham", "email": "judge.packham@gmail.com" }, "delegate": { "id": 1696, "url": "http://patchwork.ozlabs.org/api/1.0/users/1696/?format=api", "username": "stroese", "first_name": "Stefan", "last_name": "Roese", "email": "sr@denx.de" }, "mbox": "http://patchwork.ozlabs.org/project/uboot/patch/20251218225936.2016920-4-judge.packham@gmail.com/mbox/", "series": [ { "id": 485928, "url": "http://patchwork.ozlabs.org/api/1.0/series/485928/?format=api", "date": "2025-12-18T22:59:33", "name": "arm: mvebu: Updates for xcat3", "version": 3, "mbox": "http://patchwork.ozlabs.org/series/485928/mbox/" } ], "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2175794/checks/", "tags": {}, "headers": { "Return-Path": "<u-boot-bounces@lists.denx.de>", "X-Original-To": "incoming@patchwork.ozlabs.org", "Delivered-To": "patchwork-incoming@legolas.ozlabs.org", "Authentication-Results": [ "legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256\n header.s=20230601 header.b=WJuHlJ/T;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de\n (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de;\n envelope-from=u-boot-bounces@lists.denx.de; receiver=patchwork.ozlabs.org)", "phobos.denx.de;\n dmarc=pass (p=none dis=none) header.from=gmail.com", "phobos.denx.de;\n spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de", "phobos.denx.de;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=gmail.com header.i=@gmail.com header.b=\"WJuHlJ/T\";\n\tdkim-atps=neutral", "phobos.denx.de;\n dmarc=pass (p=none dis=none) header.from=gmail.com", "phobos.denx.de;\n spf=pass smtp.mailfrom=judge.packham@gmail.com" ], "Received": [ "from phobos.denx.de (phobos.denx.de\n [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4dXR2q5bDjz1xpw\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 19 Dec 2025 10:00:19 +1100 (AEDT)", "from h2850616.stratoserver.net (localhost [IPv6:::1])\n\tby phobos.denx.de (Postfix) with ESMTP id 13B44833C6;\n\tFri, 19 Dec 2025 00:00:00 +0100 (CET)", "by phobos.denx.de (Postfix, from userid 109)\n id B2A7583642; Thu, 18 Dec 2025 23:59:58 +0100 (CET)", "from mail-pj1-x1029.google.com (mail-pj1-x1029.google.com\n [IPv6:2607:f8b0:4864:20::1029])\n (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits))\n (No client certificate requested)\n by phobos.denx.de (Postfix) with ESMTPS id E6A198334F\n for <u-boot@lists.denx.de>; Thu, 18 Dec 2025 23:59:55 +0100 (CET)", "by mail-pj1-x1029.google.com with SMTP id\n 98e67ed59e1d1-34c1d84781bso1258818a91.2\n for <u-boot@lists.denx.de>; Thu, 18 Dec 2025 14:59:55 -0800 (PST)", "from chrisp-dl.atlnz.lc ([2001:df5:b000:22:dc63:c226:257b:b4c4])\n by smtp.gmail.com with ESMTPSA id\n 98e67ed59e1d1-34e70d6565esm3431356a91.6.2025.12.18.14.59.50\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Thu, 18 Dec 2025 14:59:53 -0800 (PST)" ], "X-Spam-Checker-Version": "SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de", "X-Spam-Level": "", "X-Spam-Status": "No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,\n DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,\n RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham\n autolearn_force=no version=3.4.2", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=gmail.com; s=20230601; t=1766098794; x=1766703594; darn=lists.denx.de;\n h=content-transfer-encoding:mime-version:references:in-reply-to\n :message-id:date:subject:cc:to:from:from:to:cc:subject:date\n :message-id:reply-to;\n bh=32o14xWFFYdb3vUrWVbUxLNYJCRtJwYMnby1eaVcYnA=;\n b=WJuHlJ/T8hDmdyDiMzUnCr2v8u5SkI/P2XBSWuZ3TxD6Qk6QNUexfmfUHA8qPo6baC\n 8StJhViAHnwVF04qi7J1gM9Ih/RktxCGCVRfHwtS29CN8SawaLPrYk83q9pSJr9I5F1V\n XXhT0tin8hbe+jNgXQHUpaZ5kUXaYbOPFO9eaaVZ3PCBPQP8XWCvVStoE+v+9Cmy3rUW\n xneKe0RUAByqgazKEFXTOkZ4zIWXtrJJy6q4ko5ugZTP5HsaKZ+RFtCoDqvfLYFjMZeF\n 7FNpaFFMxQh+8Jq5DCZ56YeDvszliPVIkRH7EW8zHJvjMuSeMuYMzUW41Io2ju1ld5yr\n gCmg==", "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20230601; t=1766098794; x=1766703594;\n h=content-transfer-encoding:mime-version:references:in-reply-to\n :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from\n :to:cc:subject:date:message-id:reply-to;\n bh=32o14xWFFYdb3vUrWVbUxLNYJCRtJwYMnby1eaVcYnA=;\n b=mfUKQghOx3AfUNN5CVToKMdrqfm32YKima0dvAquHdMNA7lgJRkRRvjzbXQJQawBEq\n od//EmHxUZjbD8wpwLb3FmFU4FzkpXfDT0Eu0PsaTTqwsMHlQVWU4Vuq8LkI0L0SqxTG\n WDTAHgmk/aB9DQFPX7JIUmcyQ1K1qrmxIlnCA+3x3GMamJwxjcCtz5nUYdq2nvl00NTM\n CH2qvcgxm5ljnwBI3L2edfr4R4SyvgPfhM4QHqg5TA5Cm9rGHGVavq8tw8GtMxqBT/Xu\n /e9+kxWtcYSL0StWgBC50Haz2iuP5HikG82OVj6OykXYWn4asnDFg6bbZHFrnL6ctf3+\n O92Q==", "X-Gm-Message-State": "AOJu0YxV6P5Ta8nIVpjKpliYnTbMZ4bGg2mZHxLqDQbATFfE0Y5N7a4a\n exOww6zktjW1T4qkE5SxSfmveo9da1VeFJVtopE7SeyxvJkAzND09qu6", "X-Gm-Gg": "AY/fxX76eGs9PhGUt0BSqHhvT9lIrnSPpNON/m2Yl6W9wx8VPqeah9s2HCLvCCdFVou\n N7a8kQf6qk8NyTlC66yJNn4Qw9CIdmyJlMDfU/rfj0RObllqmKHgDwUgg/XjQkZyeVObADhH+Tv\n r210ULpKUsqnAFjmVD5Fv4/SYgnqk75ING2n3wSrrYDieh56T08fTjjzftyXaRwZFFO+oT14dc5\n L70eQ7R8BEZ4JJBODoEFtWroUaQYNlUS4wUVXttlzEfKTR1SVOwrAmEWdLmKxOYMQDZw9C7ssaI\n Si/RyjLW3E+VvVHVxghwAaS3vvFtqcOAcvN/1tGy8R8GoyXvJDazKbBv8F7BgYhgve6XwYKhHw2\n gqV3Qj2i6xt+WlXazBWAwFiWQmEABeZVYqP6hwymItgMIqjjoz15Gi2VK7jQFLr1tJAz4ZiA0Ix\n IIlXAHgrCPQ0itD2v09HRu5yMS", "X-Google-Smtp-Source": "\n AGHT+IEBkXMhIbZl7fWkhkUEZMAJNelBa8pRgR3071k47CvcOz5CigHAIrUxMN8PFtzqDjfR0ykRig==", "X-Received": "by 2002:a17:90a:dfc6:b0:340:d1a1:af8e with SMTP id\n 98e67ed59e1d1-34e921e60d9mr697156a91.37.1766098794275;\n Thu, 18 Dec 2025 14:59:54 -0800 (PST)", "From": "Chris Packham <judge.packham@gmail.com>", "To": "trini@konsulko.com,\n\tstefan.roese@mailbox.org", "Cc": "u-boot@lists.denx.de,\n\tChris Packham <judge.packham@gmail.com>", "Subject": "[PATCH v3 3/3] arm: mvebu: Add Allied Telesis x220", "Date": "Fri, 19 Dec 2025 11:59:36 +1300", "Message-ID": "<20251218225936.2016920-4-judge.packham@gmail.com>", "X-Mailer": "git-send-email 2.52.0", "In-Reply-To": "<20251218225936.2016920-1-judge.packham@gmail.com>", "References": "<20251218225936.2016920-1-judge.packham@gmail.com>", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "X-BeenThere": "u-boot@lists.denx.de", "X-Mailman-Version": "2.1.39", "Precedence": "list", "List-Id": "U-Boot discussion <u-boot.lists.denx.de>", "List-Unsubscribe": "<https://lists.denx.de/options/u-boot>,\n <mailto:u-boot-request@lists.denx.de?subject=unsubscribe>", "List-Archive": "<https://lists.denx.de/pipermail/u-boot/>", "List-Post": "<mailto:u-boot@lists.denx.de>", "List-Help": "<mailto:u-boot-request@lists.denx.de?subject=help>", "List-Subscribe": "<https://lists.denx.de/listinfo/u-boot>,\n <mailto:u-boot-request@lists.denx.de?subject=subscribe>", "Errors-To": "u-boot-bounces@lists.denx.de", "Sender": "\"U-Boot\" <u-boot-bounces@lists.denx.de>", "X-Virus-Scanned": "clamav-milter 0.103.8 at phobos.denx.de", "X-Virus-Status": "Clean" }, "content": "Add the Allied Telesis x220 board. There are a number of other variants\nwith the same CPU block that are sold under some different brand names\nbut the x220 was first.\n\nThe x220 uses the AlleyCat3 switch chip with integrated ARMv7 CPU.\nBecause of this it is reliant on a binary blob for the DDR training. In\nupstream u-boot this is replaced by an empty file.\n\nSigned-off-by: Chris Packham <judge.packham@gmail.com>\n---\n\nNotes:\n Changes in v3:\n - Move README to new style doc/board\n Changes in v2:\n - None\n\n arch/arm/dts/Makefile | 1 +\n arch/arm/dts/armada-xp-atl-x220.dts | 162 +++++++++++++++++++++++\n arch/arm/mach-mvebu/Kconfig | 7 +\n board/alliedtelesis/x220/.gitattributes | 1 +\n board/alliedtelesis/x220/.gitignore | 1 +\n board/alliedtelesis/x220/MAINTAINERS | 8 ++\n board/alliedtelesis/x220/Makefile | 14 ++\n board/alliedtelesis/x220/binary.0 | Bin 0 -> 423 bytes\n board/alliedtelesis/x220/kwbimage.cfg.in | 12 ++\n board/alliedtelesis/x220/x220.c | 67 ++++++++++\n configs/x220_defconfig | 76 +++++++++++\n doc/board/alliedtelesis/index.rst | 11 ++\n doc/board/alliedtelesis/x220.rst | 39 ++++++\n doc/board/index.rst | 1 +\n include/configs/x220.h | 20 +++\n 15 files changed, 420 insertions(+)\n create mode 100644 arch/arm/dts/armada-xp-atl-x220.dts\n create mode 100644 board/alliedtelesis/x220/.gitattributes\n create mode 100644 board/alliedtelesis/x220/.gitignore\n create mode 100644 board/alliedtelesis/x220/MAINTAINERS\n create mode 100644 board/alliedtelesis/x220/Makefile\n create mode 100644 board/alliedtelesis/x220/binary.0\n create mode 100644 board/alliedtelesis/x220/kwbimage.cfg.in\n create mode 100644 board/alliedtelesis/x220/x220.c\n create mode 100644 configs/x220_defconfig\n create mode 100644 doc/board/alliedtelesis/index.rst\n create mode 100644 doc/board/alliedtelesis/x220.rst\n create mode 100644 include/configs/x220.h", "diff": "diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile\nindex fcad6fb2fc71..797d9a61154c 100644\n--- a/arch/arm/dts/Makefile\n+++ b/arch/arm/dts/Makefile\n@@ -155,6 +155,7 @@ dtb-$(CONFIG_ARCH_MVEBU) +=\t\t\t\\\n \tarmada-388-gp.dtb\t\t\t\\\n \tarmada-388-helios4.dtb\t\t\t\\\n \tarmada-38x-controlcenterdc.dtb\t\t\\\n+\tarmada-xp-atl-x220.dtb\t\t\t\\\n \tarmada-xp-crs305-1g-4s.dtb\t\t\\\n \tarmada-xp-crs305-1g-4s-bit.dtb\t\t\\\n \tarmada-xp-crs326-24g-2s.dtb\t\t\\\ndiff --git a/arch/arm/dts/armada-xp-atl-x220.dts b/arch/arm/dts/armada-xp-atl-x220.dts\nnew file mode 100644\nindex 000000000000..5b3307ed2884\n--- /dev/null\n+++ b/arch/arm/dts/armada-xp-atl-x220.dts\n@@ -0,0 +1,162 @@\n+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)\n+/*\n+ * Device Tree file for x220 board\n+ *\n+ * Copyright (C) 2025 Allied Telesis Labs\n+ */\n+\n+/dts-v1/;\n+#include <dt-bindings/gpio/gpio.h>\n+#include \"armada-xp-98dx3236.dtsi\"\n+#include \"mvebu-u-boot.dtsi\"\n+\n+/ {\n+\tmodel = \"x220\";\n+\tcompatible = \"marvell,armadaxp-98dx3236\", \"marvell,armadaxp-mv78260\",\n+\t\t \"marvell,armadaxp\", \"marvell,armada-370-xp\";\n+\n+\tchosen {\n+\t\tstdout-path = \"serial0:115200n8\";\n+\t\tbootargs = \"console=ttyS0,115200\";\n+\t};\n+\n+\taliases {\n+\t\ti2c0 = &i2c0;\n+\t\tspi0 = &spi0;\n+\t};\n+\n+\tmemory {\n+\t\tdevice_type = \"memory\";\n+\t\treg = <0x00000000 0x00000000 0x00000000 0x20000000>;\n+\t};\n+};\n+\n+&L2 {\n+\tarm,parity-enable;\n+\tmarvell,ecc-enable;\n+};\n+\n+&devbus_bootcs {\n+\tstatus = \"okay\";\n+\n+\t/* Device Bus parameters are required */\n+\n+\t/* Read parameters */\n+\tdevbus,bus-width = <16>;\n+\tdevbus,turn-off-ps = <60000>;\n+\tdevbus,badr-skew-ps = <0>;\n+\tdevbus,acc-first-ps = <124000>;\n+\tdevbus,acc-next-ps = <248000>;\n+\tdevbus,rd-setup-ps = <0>;\n+\tdevbus,rd-hold-ps = <0>;\n+\n+\t/* Write parameters */\n+\tdevbus,sync-enable = <0>;\n+\tdevbus,wr-high-ps = <60000>;\n+\tdevbus,wr-low-ps = <60000>;\n+\tdevbus,ale-wr-ps = <60000>;\n+};\n+\n+&uart0 {\n+\tstatus = \"okay\";\n+};\n+\n+&i2c0 {\n+\tclock-frequency = <100000>;\n+\tstatus = \"okay\";\n+\n+\trtc@68 {\n+\t\tcompatible = \"dallas,ds1340\";\n+\t\treg = <0x68>;\n+\t};\n+\n+\tadt7476a@2e {\n+\t\tcompatible = \"adi,adt7476\";\n+\t\treg = <0x2e>;\n+\t};\n+\n+\tsfpgpio: gpio@27 {\n+\t\t#address-cells = <2>;\n+\t\t#size-cells = <0>;\n+\t\tcompatible = \"nxp,pca9555\";\n+\t\treg = <0x27>;\n+\t\tgpio-controller;\n+\t\t#gpio-cells = <2>;\n+\t};\n+\n+\tsystemgpio: gpio@25 {\n+\t\t#address-cells = <1>;\n+\t\t#size-cells = <0>;\n+\t\tcompatible = \"nxp,pca9555\";\n+\t\treg = <0x25>;\n+\t\tgpio-controller;\n+\t\t#gpio-cells = <2>;\n+\n+\t\tnand-protect {\n+\t\t\tgpio-hog;\n+\t\t\tgpios = <6 GPIO_ACTIVE_HIGH>;\n+\t\t\toutput-high;\n+\t\t\tline-name = \"nand-protect\";\n+\t\t};\n+\n+\t\tusb-enable {\n+\t\t\tgpio-hog;\n+\t\t\tgpios = <9 GPIO_ACTIVE_HIGH>;\n+\t\t\toutput-high;\n+\t\t\tline-name = \"usb-enable\";\n+\t\t};\n+\n+\t\tphy-reset {\n+\t\t\tgpio-hog;\n+\t\t\tgpios = <5 GPIO_ACTIVE_LOW>;\n+\t\t\toutput-high;\n+\t\t\tline-name = \"phy-reset\";\n+\t\t};\n+\n+\t\tled-enable {\n+\t\t\tgpio-hog;\n+\t\t\tgpios = <13 GPIO_ACTIVE_HIGH>;\n+\t\t\toutput-low;\n+\t\t\tline-name = \"led-enable\";\n+\t\t};\n+\t};\n+};\n+\n+&watchdog {\n+\tstatus = \"okay\";\n+};\n+\n+&usb0 {\n+\tstatus = \"okay\";\n+};\n+\n+&spi0 {\n+\tstatus = \"okay\";\n+\n+\tspi-flash@0 {\n+\t\t#address-cells = <1>;\n+\t\t#size-cells = <1>;\n+\t\tcompatible = \"spi-flash\", \"jedec,spi-nor\";\n+\t\treg = <0>; /* Chip select 0 */\n+\t\tspi-max-frequency = <20000000>;\n+\t};\n+};\n+\n+&nand_controller {\n+\tcompatible = \"marvell,armada370-nand-controller\";\n+\tlabel = \"pxa3xx_nand-0\";\n+\tstatus = \"okay\";\n+\tnand-rb = <0>;\n+\tnand-on-flash-bbt;\n+\tnand-ecc-strength = <4>;\n+\tnand-ecc-step-size = <512>;\n+};\n+\n+&{/} {\n+\tboot-board {\n+\t\tcompatible = \"atl,boot-board\";\n+\t\tpresent-gpio = <&systemgpio 12 GPIO_ACTIVE_HIGH>;\n+\t\toverride-gpio = <&gpio0 31 GPIO_ACTIVE_HIGH>;\n+\t};\n+};\n+\ndiff --git a/arch/arm/mach-mvebu/Kconfig b/arch/arm/mach-mvebu/Kconfig\nindex b76510ab4527..bc009163ed96 100644\n--- a/arch/arm/mach-mvebu/Kconfig\n+++ b/arch/arm/mach-mvebu/Kconfig\n@@ -226,6 +226,10 @@ config TARGET_X240\n \tselect ALLEYCAT_5\n \timply BOOTSTD_DEFAULTS\n \n+config TARGET_X220\n+\tbool \"Support Allied Telesis x220\"\n+\tselect 98DX3336\n+\n config TARGET_DB_XC3_24G4XG\n \tbool \"Support DB-XC3-24G4XG\"\n \tselect 98DX3336\n@@ -310,6 +314,7 @@ config SYS_BOARD\n \tdefault \"x530\" if TARGET_X530\n \tdefault \"x250\" if TARGET_X250\n \tdefault \"x240\" if TARGET_X240\n+\tdefault \"x220\" if TARGET_X220\n \tdefault \"db-xc3-24g4xg\" if TARGET_DB_XC3_24G4XG\n \tdefault \"crs3xx-98dx3236\" if TARGET_CRS3XX_98DX3236\n \tdefault \"mvebu_alleycat-5\" if TARGET_MVEBU_ALLEYCAT5\n@@ -335,6 +340,7 @@ config SYS_CONFIG_NAME\n \tdefault \"x530\" if TARGET_X530\n \tdefault \"x250\" if TARGET_X250\n \tdefault \"x240\" if TARGET_X240\n+\tdefault \"x220\" if TARGET_X220\n \tdefault \"db-xc3-24g4xg\" if TARGET_DB_XC3_24G4XG\n \tdefault \"crs3xx-98dx3236\" if TARGET_CRS3XX_98DX3236\n \tdefault \"mvebu_alleycat-5\" if TARGET_MVEBU_ALLEYCAT5\n@@ -360,6 +366,7 @@ config SYS_VENDOR\n \tdefault \"alliedtelesis\" if TARGET_X530\n \tdefault \"alliedtelesis\" if TARGET_X250\n \tdefault \"alliedtelesis\" if TARGET_X240\n+\tdefault \"alliedtelesis\" if TARGET_X220\n \tdefault \"mikrotik\" if TARGET_CRS3XX_98DX3236\n \tdefault \"Marvell\" if TARGET_MVEBU_ALLEYCAT5\n \ndiff --git a/board/alliedtelesis/x220/.gitattributes b/board/alliedtelesis/x220/.gitattributes\nnew file mode 100644\nindex 000000000000..2aeb4eee6416\n--- /dev/null\n+++ b/board/alliedtelesis/x220/.gitattributes\n@@ -0,0 +1 @@\n+binary.0 binary\ndiff --git a/board/alliedtelesis/x220/.gitignore b/board/alliedtelesis/x220/.gitignore\nnew file mode 100644\nindex 000000000000..775b9346b859\n--- /dev/null\n+++ b/board/alliedtelesis/x220/.gitignore\n@@ -0,0 +1 @@\n+kwbimage.cfg\ndiff --git a/board/alliedtelesis/x220/MAINTAINERS b/board/alliedtelesis/x220/MAINTAINERS\nnew file mode 100644\nindex 000000000000..63da2725f716\n--- /dev/null\n+++ b/board/alliedtelesis/x220/MAINTAINERS\n@@ -0,0 +1,8 @@\n+x220 BOARD\n+M:\tChris Packham <chris.packham@alliedtelesis.co.nz>\n+S:\tMaintained\n+F:\tboard/alliedtelesis/x220\n+F:\tinclude/configs/x220.h\n+F:\tconfigs/x220_defconfig\n+F:\tarch/arm/dts/armada-xp-atl-x220.dts\n+F:\tdoc/board/alliedtelesis/x220.rst\ndiff --git a/board/alliedtelesis/x220/Makefile b/board/alliedtelesis/x220/Makefile\nnew file mode 100644\nindex 000000000000..a74f0a769484\n--- /dev/null\n+++ b/board/alliedtelesis/x220/Makefile\n@@ -0,0 +1,14 @@\n+# SPDX-License-Identifier: GPL-2.0+\n+#\n+# Copyright (C) 2025 Allied Telesis Labs\n+\n+obj-y\t:= x220.o\n+extra-y\t:= kwbimage.cfg\n+\n+quiet_cmd_sed = SED $@\n+ cmd_sed = sed $(SEDFLAGS_$(@F)) $< >$(dir $@)$(@F)\n+\n+SEDFLAGS_kwbimage.cfg =-e \"s|^BINARY.*|BINARY $(srctree)/$(@D)/binary.0 0000005b 00000068|\"\n+$(obj)/kwbimage.cfg: $(src)/kwbimage.cfg.in include/autoconf.mk \\\n+\t\tinclude/config/auto.conf\n+\t $(call if_changed,sed)\ndiff --git a/board/alliedtelesis/x220/binary.0 b/board/alliedtelesis/x220/binary.0\nnew file mode 100644\nindex 0000000000000000000000000000000000000000..8dd687286a001c5df3cbc878d527d2a764f8c40b\nGIT binary patch\nliteral 423\nzcmYk2F>b>!3`KXHf(NjDfNtqhWN3z>MaF`*7)y;z29zAvw=ZR<MFmad=l_pv+x@xo\nz;q7!hy*#-`p>^*eX1K&ekb}(0!ysHRGL%5jNB#_6VI(HSLLT~cYly}%GA4LMy;Dl=\nzqkR@B5T{$BiOiuy;SLVj<Q8Cmm{qNjR^Te+A<f<lx1^YV4eq4bCL34?0^SMGSJh^6\nzOE^%F<VhRIVnr+)%^vRJgd@R#3_blrUShG$3XrO3?wmVbV3qk{4_B7Owv{@xh+ZR)\nze|uj<t5l&ERNvGvt_Als=K@TXOh9QP+aU{mm;IiB)Eq5*W3*GEt`G<f-ywS&8)UlG\nJ%kTW1`vEC^lKcPw\n\nliteral 0\nHcmV?d00001\n\ndiff --git a/board/alliedtelesis/x220/kwbimage.cfg.in b/board/alliedtelesis/x220/kwbimage.cfg.in\nnew file mode 100644\nindex 000000000000..8beda907ba45\n--- /dev/null\n+++ b/board/alliedtelesis/x220/kwbimage.cfg.in\n@@ -0,0 +1,12 @@\n+#\n+# Copyright (C) 2025 Allied Telesis Labs\n+#\n+\n+# Armada XP uses version 1 image format\n+VERSION\t\t1\n+\n+# Boot Media configurations\n+BOOT_FROM\tspi\n+\n+# Binary Header (bin_hdr) with DDR3 training code\n+BINARY board/alliedtelesis/x220/binary.0 0000005b 00000068\ndiff --git a/board/alliedtelesis/x220/x220.c b/board/alliedtelesis/x220/x220.c\nnew file mode 100644\nindex 000000000000..7c9a73de9a24\n--- /dev/null\n+++ b/board/alliedtelesis/x220/x220.c\n@@ -0,0 +1,67 @@\n+// SPDX-License-Identifier: GPL-2.0+\n+/*\n+ * Copyright (C) 2025 Allied Telesis Labs\n+ */\n+\n+#include <i2c.h>\n+#include <init.h>\n+#include <asm/global_data.h>\n+#include <asm/gpio.h>\n+#include <linux/bitops.h>\n+#include <linux/mbus.h>\n+#include <linux/io.h>\n+#include <asm/arch/cpu.h>\n+#include <asm/arch/soc.h>\n+\n+DECLARE_GLOBAL_DATA_PTR;\n+\n+#define X220_GPP_OUT_ENA_LOW\t(~(BIT(12) | BIT(17) | BIT(18) | BIT(31)))\n+#define X220_GPP_OUT_ENA_MID\t(~(0))\n+#define X220_GPP_OUT_VAL_LOW\t(BIT(12) | BIT(18))\n+#define X220_GPP_OUT_VAL_MID\t0x0\n+#define X220_GPP_POL_LOW\t0x0\n+#define X220_GPP_POL_MID\t0x0\n+\n+int board_early_init_f(void)\n+{\n+\t/* Configure MPP */\n+\twritel(0x44042222, MVEBU_MPP_BASE + 0x00);\n+\twritel(0x11000004, MVEBU_MPP_BASE + 0x04);\n+\twritel(0x44444004, MVEBU_MPP_BASE + 0x08);\n+\twritel(0x04444444, MVEBU_MPP_BASE + 0x0c);\n+\twritel(0x00000004, MVEBU_MPP_BASE + 0x10);\n+\n+\t/* Set GPP Out value */\n+\twritel(X220_GPP_OUT_VAL_LOW, MVEBU_GPIO0_BASE + 0x00);\n+\twritel(X220_GPP_OUT_VAL_MID, MVEBU_GPIO1_BASE + 0x00);\n+\n+\t/* Set GPP Polarity */\n+\twritel(X220_GPP_POL_LOW, MVEBU_GPIO0_BASE + 0x0c);\n+\twritel(X220_GPP_POL_MID, MVEBU_GPIO1_BASE + 0x0c);\n+\n+\t/* Set GPP Out Enable */\n+\twritel(X220_GPP_OUT_ENA_LOW, MVEBU_GPIO0_BASE + 0x04);\n+\twritel(X220_GPP_OUT_ENA_MID, MVEBU_GPIO1_BASE + 0x04);\n+\n+\treturn 0;\n+}\n+\n+int board_init(void)\n+{\n+\t/* address of boot parameters */\n+\tgd->bd->bi_boot_params = mvebu_sdram_bar(0) + 0x100;\n+\n+\t/* Disable MBUS Err Prop - in order to avoid data aborts */\n+\tclrbits_le32(MVEBU_CPU_WIN_BASE + 0x200, (1 << 8));\n+\n+\treturn 0;\n+}\n+\n+#ifdef CONFIG_DISPLAY_BOARDINFO\n+int checkboard(void)\n+{\n+\tputs(\"Board: Allied Telesis x220\\n\");\n+\n+\treturn 0;\n+}\n+#endif\ndiff --git a/configs/x220_defconfig b/configs/x220_defconfig\nnew file mode 100644\nindex 000000000000..4318f5e6ef1d\n--- /dev/null\n+++ b/configs/x220_defconfig\n@@ -0,0 +1,76 @@\n+CONFIG_ARM=y\n+CONFIG_ARCH_CPU_INIT=y\n+CONFIG_ARCH_MVEBU=y\n+CONFIG_SYS_KWD_CONFIG=\"board/alliedtelesis/x220/kwbimage.cfg\"\n+CONFIG_TEXT_BASE=0x00800000\n+CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y\n+CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0xff0000\n+CONFIG_TARGET_X220=y\n+CONFIG_ENV_SIZE=0x10000\n+CONFIG_ENV_OFFSET=0x100000\n+CONFIG_ENV_SECT_SIZE=0x40000\n+CONFIG_DEFAULT_DEVICE_TREE=\"armada-xp-atl-x220\"\n+CONFIG_SYS_LOAD_ADDR=0x800000\n+CONFIG_PCI=y\n+CONFIG_SYS_MEMTEST_START=0x00800000\n+CONFIG_SYS_MEMTEST_END=0x00ffffff\n+CONFIG_FIT=y\n+CONFIG_FIT_VERBOSE=y\n+CONFIG_FIT_BEST_MATCH=y\n+CONFIG_USE_PREBOOT=y\n+CONFIG_SYS_CONSOLE_INFO_QUIET=y\n+CONFIG_SYS_MAXARGS=96\n+CONFIG_CMD_MEMTEST=y\n+CONFIG_SYS_ALT_MEMTEST=y\n+CONFIG_CMD_GPIO=y\n+CONFIG_CMD_I2C=y\n+CONFIG_CMD_SPI=y\n+CONFIG_CMD_USB=y\n+# CONFIG_CMD_SETEXPR is not set\n+CONFIG_CMD_TFTPPUT=y\n+CONFIG_CMD_DHCP=y\n+CONFIG_CMD_MII=y\n+CONFIG_CMD_PING=y\n+CONFIG_CMD_CACHE=y\n+CONFIG_CMD_TIME=y\n+CONFIG_CMD_EXT2=y\n+CONFIG_CMD_EXT4=y\n+CONFIG_CMD_FAT=y\n+CONFIG_CMD_FS_GENERIC=y\n+CONFIG_CMD_MTDPARTS=y\n+CONFIG_MTDIDS_DEFAULT=\"nand0=nand\"\n+CONFIG_MTDPARTS_DEFAULT=\"mtdparts=nand:112M(user),8M(errlog),8M(nand-bbt)\"\n+CONFIG_CMD_UBI=y\n+CONFIG_ENV_OVERWRITE=y\n+CONFIG_ENV_IS_IN_SPI_FLASH=y\n+CONFIG_ENV_RELOC_GD_ENV_ADDR=y\n+CONFIG_ARP_TIMEOUT=200\n+CONFIG_NET_RETRY_COUNT=50\n+CONFIG_GPIO_HOG=y\n+CONFIG_DM_PCA953X=y\n+CONFIG_DM_I2C=y\n+CONFIG_SYS_I2C_MVTWSI=y\n+# CONFIG_MMC is not set\n+CONFIG_MTD_RAW_NAND=y\n+CONFIG_SYS_NAND_USE_FLASH_BBT=y\n+CONFIG_NAND_PXA3XX=y\n+CONFIG_SYS_NAND_ONFI_DETECTION=y\n+CONFIG_SPI_FLASH_SFDP_SUPPORT=y\n+CONFIG_SPI_FLASH_MACRONIX=y\n+CONFIG_SPI_FLASH_STMICRO=y\n+CONFIG_SPI_FLASH_SST=y\n+# CONFIG_SPI_FLASH_USE_4K_SECTORS is not set\n+CONFIG_PCI_MVEBU=y\n+CONFIG_SYS_NS16550=y\n+CONFIG_KIRKWOOD_SPI=y\n+CONFIG_USB=y\n+CONFIG_USB_EHCI_HCD=y\n+CONFIG_USB_STORAGE=y\n+CONFIG_USB_HOST_ETHER=y\n+CONFIG_USB_ETHER_ASIX=y\n+CONFIG_USB_ETHER_ASIX88179=y\n+CONFIG_USB_ETHER_MCS7830=y\n+CONFIG_USB_ETHER_RTL8152=y\n+CONFIG_USB_ETHER_SMSC95XX=y\n+CONFIG_WDT=y\n+CONFIG_WDT_ORION=y\ndiff --git a/doc/board/alliedtelesis/index.rst b/doc/board/alliedtelesis/index.rst\nnew file mode 100644\nindex 000000000000..a8de29866095\n--- /dev/null\n+++ b/doc/board/alliedtelesis/index.rst\n@@ -0,0 +1,11 @@\n+.. SPDX-License-Identifier: GPL-2.0+\n+.. Copyright (C) 2026 Allied Telesis Labs\n+\n+Allied Telesis\n+==============\n+\n+.. toctree::\n+ :maxdepth: 2\n+\n+ x220\n+\ndiff --git a/doc/board/alliedtelesis/x220.rst b/doc/board/alliedtelesis/x220.rst\nnew file mode 100644\nindex 000000000000..6ca5f61ec4e1\n--- /dev/null\n+++ b/doc/board/alliedtelesis/x220.rst\n@@ -0,0 +1,39 @@\n+.. SPDX-License-Identifier: GPL-2.0+\n+.. Copyright (C) 2026 Allied Telesis Labs\n+\n+x220 Platforms\n+==============\n+\n+Introduction\n+------------\n+\n+The x220 has is a range of L2+ switches using the Marvell AlleyCat3 switch with\n+integrated ARMv7 CPU. It is also sold under some different brands for different\n+markets.\n+\n+- x220-52GP\n+- x220-52GT\n+- x220-28GS\n+- GS980M/52PS\n+- GS980M/52\n+- x230-52\n+\n+DDR Traning (binhdr)\n+--------------------\n+\n+The AlleyCat3 uses a binary blob for it's DDR training. This is launched by\n+the built-in bootloader prior to U-Boot starting.\n+\n+To generate binary.0 from Marvell's bin_hdr.elf use the following command\n+\n+.. prompt:: bash $\n+\n+ arm-softfloat-linux-gnueabi-objcopy -S -O binary bin_hdr.elf \\\n+ board/alliedtelesis/x220/binary.0\n+\n+Alternatively, it is possible to extract the binary.0 from an existing U-Boot\n+image\n+\n+.. prompt:: bash $\n+\n+ ./tools/dumpimage -T kwbimage -p 1 -o board/alliedtelesis/x220/binary.0 u-boot.kwb\ndiff --git a/doc/board/index.rst b/doc/board/index.rst\nindex 7870f1bc2461..22c63f88e863 100644\n--- a/doc/board/index.rst\n+++ b/doc/board/index.rst\n@@ -10,6 +10,7 @@ Board-specific doc\n actions/index\n advantech/index\n andestech/index\n+ alliedtelesis/index\n allwinner/index\n amlogic/index\n anbernic/index\ndiff --git a/include/configs/x220.h b/include/configs/x220.h\nnew file mode 100644\nindex 000000000000..3022ad491b7e\n--- /dev/null\n+++ b/include/configs/x220.h\n@@ -0,0 +1,20 @@\n+/* SPDX-License-Identifier: GPL-2.0+ */\n+/*\n+ * Copyright (C) 2025 Allied Telesis Labs\n+ */\n+\n+#ifndef _CONFIG_X220_H\n+#define _CONFIG_X220_H\n+\n+/* Keep device tree and initrd in lower memory so the kernel can access them */\n+#define CFG_EXTRA_ENV_SETTINGS\t\\\n+\t\"fdt_high=0x10000000\\0\"\t\t\\\n+\t\"initrd_high=0x10000000\\0\"\n+\n+/*\n+ * mv-common.h should be defined after CMD configs since it used them\n+ * to enable certain macros\n+ */\n+#include \"mv-common.h\"\n+\n+#endif /* _CONFIG_X220_H */\n", "prefixes": [ "v3", "3/3" ] }