diff --git a/board/aarch64/Config.in b/board/aarch64/Config.in index eac6607e..a27864e8 100644 --- a/board/aarch64/Config.in +++ b/board/aarch64/Config.in @@ -2,6 +2,7 @@ if BR2_aarch64 source "$BR2_EXTERNAL_INFIX_PATH/board/aarch64/alder-alder/Config.in" source "$BR2_EXTERNAL_INFIX_PATH/board/aarch64/bananapi-bpi-r3/Config.in" +source "$BR2_EXTERNAL_INFIX_PATH/board/aarch64/bananapi-bpi-r64/Config.in" source "$BR2_EXTERNAL_INFIX_PATH/board/aarch64/freescale-imx8mp-evk/Config.in" source "$BR2_EXTERNAL_INFIX_PATH/board/aarch64/friendlyarm-nanopi-r2s/Config.in" source "$BR2_EXTERNAL_INFIX_PATH/board/aarch64/marvell-cn9130-crb/Config.in" diff --git a/board/aarch64/README.md b/board/aarch64/README.md index 9f2e217a..074cfab4 100644 --- a/board/aarch64/README.md +++ b/board/aarch64/README.md @@ -4,7 +4,8 @@ aarch64 Board Specific Documentation ---------------------------- -- [Banana Pi R3](banana-pi-r3/) +- [Banana Pi BPi-R3](banana-pi-r3/) +- [Banana Pi BPi-R64](banana-pi-r64/) - [Marvell CN9130-CRB](cn9130-crb/) - [Microchip SparX-5i PCB135 (eMMC)](sparx5-pcb135/) - [NanoPi R2S](r2s/) diff --git a/board/aarch64/bananapi-bpi-r64/Config.in b/board/aarch64/bananapi-bpi-r64/Config.in new file mode 100644 index 00000000..6b184d7c --- /dev/null +++ b/board/aarch64/bananapi-bpi-r64/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_BANANAPI_BPI_R64 + bool "Banana Pi R64" + depends on BR2_aarch64 + select BR2_PACKAGE_FEATURE_WIFI + select SDCARD_AUX + help + Build Banana PI R64 support diff --git a/board/aarch64/bananapi-bpi-r64/LICENSE b/board/aarch64/bananapi-bpi-r64/LICENSE new file mode 100644 index 00000000..8cdb30a3 --- /dev/null +++ b/board/aarch64/bananapi-bpi-r64/LICENSE @@ -0,0 +1,13 @@ +Copyright (c) 2026 The KernelKit Authors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/board/aarch64/bananapi-bpi-r64/README.md b/board/aarch64/bananapi-bpi-r64/README.md new file mode 100644 index 00000000..9db6728b --- /dev/null +++ b/board/aarch64/bananapi-bpi-r64/README.md @@ -0,0 +1,143 @@ +# Banana Pi BPI-R64 + +## Overview + +Board Overview + +The Banana Pi BPI-R64 is a networking board based on the MediaTek MT7622 +(dual Cortex-A53, AArch64) SoC. + +### Hardware Features + +- MediaTek MT7622 ARM Cortex-A53 dual-core processor @ 1.35 GHz +- 1 GB DDR3L RAM +- 8 GB eMMC storage +- microSD card slot +- MT7531 Gigabit Ethernet switch (4x LAN + 1x WAN) +- MT7603E built-in 2.4 GHz WiFi +- USB 3.0 port +- 2x Mini PCIe slots + +### Default Network Configuration + +Infix comes preconfigured with: + +- **LAN ports** (lan0-lan3): Bridged for internal networking +- **WAN port**: DHCP client enabled for internet connectivity +- **WiFi** (wifi0-ap): Bridged to LAN (MT7615 PCIe card if fitted, otherwise MT7603E) + +## Boot Switch Reference + +SW1 Boot Switch + +The BPI-R64 uses a 2-position DIP switch (SW1) to select the boot device +order. The MT7622 Boot ROM tries devices in the order listed and falls +back to the next if no valid BL2 is found at the expected location. + +| SW1 | Boot device | Use case | +|-----|-------------|----------------------------| +| OFF | eMMC | Production eMMC boot | +| ON | SD card | SD card boot / development | + +> [!NOTE] +> SinoVoip has exposed only one bit of the MT7622's two-bit `BOOT_SEL[1:0]` +> strapping field via SW1, with `BOOT_SEL[1]` hardwired high. This limits the +> board to eMMC (`10b`) and SD (`11b`) boot; the SPI-NOR and SPI-NAND modes +> available on the MT7622 reference board (`00b`, `01b`) are not selectable. + +## Getting Started + +### Quick Start with SD Card + +1. **Flash the image to an SD card** (the filename includes the version, e.g. + `infix-25.01-bpi-r64-sdcard.img`): + +Debug UART + + ```sh + dd if=infix-*-bpi-r64-sdcard.img of=/dev/sdX bs=4M status=progress + ``` + +2. **Set boot switch:** SW1 ON (SD card boot) +3. **Insert SD card and power on** +4. **Connect console:** 115200 8N1 — use the dedicated Debug UART header + just below the 40-pin GPIO header; pins are labeled GND, RX, TX on the board +5. **Default login:** `admin` / `admin` + +## Installing to eMMC + +Unlike the BPI-R3 (where SD and eMMC share a bus, requiring a NAND intermediate +step), the BPI-R64 has separate controllers for SD (mmc1/MSDC1) and eMMC +(mmc0/MSDC0). You can write directly to eMMC while booted from SD. + +### eMMC Boot ROM Behaviour + +> [!IMPORTANT] +> The MT7622 Boot ROM reads BL2 from the eMMC BOOT0 hardware partition (offset +> 0), not from the User Data Area where the main disk image lives. The +> installation procedure below writes BL2 to BOOT0 separately to handle this. + +### Procedure + +Boot from SD and write the eMMC image from U-Boot using a FAT32-formatted USB +drive. + +#### Step 1: Boot from SD card + +1. Set SW1 to ON (SD boot) +2. Insert SD card with Infix +3. Power on and break into U-Boot (press Ctrl-C during boot) + +#### Step 2: Write the eMMC image from U-Boot + +Place `infix-bpi-r64-emmc.img` and `bl2.img` on a FAT32-formatted USB drive, +then from the U-Boot prompt: + +``` +usb start +fatload usb 0:1 0x44000000 infix-bpi-r64-emmc.img +setexpr blocks ${filesize} / 0x200 +mmc dev 0 +mmc write 0x44000000 0x0 ${blocks} +``` + +#### Step 3: Write BL2 to eMMC BOOT0 + +``` +fatload usb 0:1 0x44000000 bl2.img +mmc partconf 0 1 1 1 +setexpr blkcnt ${filesize} + 0x1ff +setexpr blkcnt ${blkcnt} / 0x200 +mmc write 0x44000000 0x0 ${blkcnt} +mmc partconf 0 1 1 0 +``` + +#### Step 4: Boot from eMMC + +1. Power off the board +2. Set SW1 to OFF (eMMC boot) +3. Remove SD card and USB drive +4. Power on + +## Platform Notes + +### mmc0 = eMMC, mmc1 = SD + +On MT7622, MSDC0 (mmc0) is the 8-bit eMMC controller and MSDC1 (mmc1) is the +4-bit SD card controller — the reverse of many other platforms. + +## Building + +```sh +# Bootloader only (SD) +make O=x-boot-bpir64-sd bpi_r64_sd_boot_defconfig && make O=x-boot-bpir64-sd + +# Bootloader only (eMMC) +make O=x-boot-bpir64-emmc bpi_r64_emmc_boot_defconfig && make O=x-boot-bpir64-emmc + +# Compose SD image (pass the Infix rootfs output directory) +utils/mkimage.sh -b x-boot-bpir64-sd -r x-aarch64/images bananapi-bpi-r64 + +# Compose eMMC image +utils/mkimage.sh -b x-boot-bpir64-emmc -r x-aarch64/images -t emmc bananapi-bpi-r64 +``` diff --git a/board/aarch64/bananapi-bpi-r64/banana_pi_bpi-r64_interface.jpg b/board/aarch64/bananapi-bpi-r64/banana_pi_bpi-r64_interface.jpg new file mode 100644 index 00000000..b99136c8 Binary files /dev/null and b/board/aarch64/bananapi-bpi-r64/banana_pi_bpi-r64_interface.jpg differ diff --git a/board/aarch64/bananapi-bpi-r64/bananapi-bpi-r64.mk b/board/aarch64/bananapi-bpi-r64/bananapi-bpi-r64.mk new file mode 100644 index 00000000..deef167f --- /dev/null +++ b/board/aarch64/bananapi-bpi-r64/bananapi-bpi-r64.mk @@ -0,0 +1,35 @@ +define BANANAPI_BPI_R64_LINUX_CONFIG_FIXUPS + $(call KCONFIG_ENABLE_OPT,CONFIG_ARCH_MEDIATEK) + $(call KCONFIG_ENABLE_OPT,CONFIG_MACH_MT7622) + $(call KCONFIG_ENABLE_OPT,CONFIG_PINCTRL_MT7622) + $(call KCONFIG_ENABLE_OPT,CONFIG_SERIAL_8250_MT6577) + $(call KCONFIG_ENABLE_OPT,CONFIG_MTK_UART) + $(call KCONFIG_ENABLE_OPT,CONFIG_MEDIATEK_WATCHDOG) + # Ethernet subsystem clock controller — required for the eth MAC, + # MT7531 DSA switch, and HSDMA to get their clocks from ðsys. + # Without this, eth probe fails and the switch is never detected. + $(call KCONFIG_ENABLE_OPT,CONFIG_COMMON_CLK_MT7622_ETHSYS) + # HIF subsystem clock controller — required for PCIe and USB. + $(call KCONFIG_ENABLE_OPT,CONFIG_COMMON_CLK_MT7622_HIFSYS) + $(call KCONFIG_ENABLE_OPT,CONFIG_MEDIATEK_GE_PHY) + $(call KCONFIG_ENABLE_OPT,CONFIG_REALTEK_PHY) + $(call KCONFIG_ENABLE_OPT,CONFIG_NET_VENDOR_MEDIATEK) + $(call KCONFIG_ENABLE_OPT,CONFIG_NET_MEDIATEK_SOC) + $(call KCONFIG_SET_OPT,CONFIG_NET_DSA_MT7530,m) + $(call KCONFIG_SET_OPT,CONFIG_MT7603E,m) + $(call KCONFIG_SET_OPT,CONFIG_PCIE_MEDIATEK,m) + $(call KCONFIG_ENABLE_OPT,CONFIG_MMC_MTK) + $(call KCONFIG_SET_OPT,CONFIG_USB_XHCI_MTK,m) + $(call KCONFIG_SET_OPT,CONFIG_PHY_MTK_TPHY,m) + $(call KCONFIG_SET_OPT,CONFIG_MTK_THERMAL,m) + $(call KCONFIG_SET_OPT,CONFIG_MTK_SOC_THERMAL,m) + $(call KCONFIG_SET_OPT,CONFIG_I2C_MT65XX,m) + $(call KCONFIG_SET_OPT,CONFIG_PWM_MEDIATEK,m) + $(call KCONFIG_SET_OPT,CONFIG_REGULATOR_MT6380,m) + $(call KCONFIG_SET_OPT,CONFIG_NVMEM_MTK_EFUSE,m) + $(call KCONFIG_SET_OPT,CONFIG_CRYPTO_DEV_SAFEXCEL,m) + $(call KCONFIG_ENABLE_OPT,CONFIG_RTC_DRV_MT7622) +endef + +$(eval $(ix-board)) +$(eval $(generic-package)) diff --git a/board/aarch64/bananapi-bpi-r64/bpi-r64-sw1.png b/board/aarch64/bananapi-bpi-r64/bpi-r64-sw1.png new file mode 100644 index 00000000..381d9253 Binary files /dev/null and b/board/aarch64/bananapi-bpi-r64/bpi-r64-sw1.png differ diff --git a/board/aarch64/bananapi-bpi-r64/debug-uart.png b/board/aarch64/bananapi-bpi-r64/debug-uart.png new file mode 100644 index 00000000..edd0bd75 Binary files /dev/null and b/board/aarch64/bananapi-bpi-r64/debug-uart.png differ diff --git a/board/aarch64/bananapi-bpi-r64/dts/Makefile b/board/aarch64/bananapi-bpi-r64/dts/Makefile new file mode 100644 index 00000000..7f7e51f8 --- /dev/null +++ b/board/aarch64/bananapi-bpi-r64/dts/Makefile @@ -0,0 +1 @@ +dtb-y += mediatek/mt7622-bananapi-bpi-r64.dtb diff --git a/board/aarch64/bananapi-bpi-r64/dts/mediatek/mt7622-bananapi-bpi-r64.dts b/board/aarch64/bananapi-bpi-r64/dts/mediatek/mt7622-bananapi-bpi-r64.dts new file mode 100644 index 00000000..ea5f00c1 --- /dev/null +++ b/board/aarch64/bananapi-bpi-r64/dts/mediatek/mt7622-bananapi-bpi-r64.dts @@ -0,0 +1,3 @@ +#include + +#include "mt7622-bananapi-bpi-r64.dtsi" diff --git a/board/aarch64/bananapi-bpi-r64/dts/mediatek/mt7622-bananapi-bpi-r64.dtsi b/board/aarch64/bananapi-bpi-r64/dts/mediatek/mt7622-bananapi-bpi-r64.dtsi new file mode 100644 index 00000000..b279fc70 --- /dev/null +++ b/board/aarch64/bananapi-bpi-r64/dts/mediatek/mt7622-bananapi-bpi-r64.dtsi @@ -0,0 +1,10 @@ +/ { + chosen { + infix { + /* Default admin user password: 'admin' */ + factory-password-hash = "$5$mI/zpOAqZYKLC2WU$i7iPzZiIjOjrBF3NyftS9CCq8dfYwHwrmUK097Jca9A"; + usb-ports = <&ssusb>; + usb-port-names = "USB"; + }; + }; +}; diff --git a/board/aarch64/bananapi-bpi-r64/genimage.cfg.in b/board/aarch64/bananapi-bpi-r64/genimage.cfg.in new file mode 100644 index 00000000..eda4fa13 --- /dev/null +++ b/board/aarch64/bananapi-bpi-r64/genimage.cfg.in @@ -0,0 +1,89 @@ +image cfg.ext4 { + empty = true + temporary = true + size = 128M + ext4 { + label = "cfg" + use-mke2fs = true + features = "uninit_bg" + extraargs = "-m 0 -i 4096" + } +} + +# The /var partition will be expanded automatically at first boot +# to use the full size of the SD-card or eMMC media. +image var.ext4 { + empty = true + temporary = true + size = 128M + ext4 { + label = "var" + use-mke2fs = true + features = "uninit_bg" + extraargs = "-m 0 -i 4096" + } +} + +image #INFIX_ID##VERSION#-bpi-r64-#TARGET#.img { + hdimage { + partition-table-type = "hybrid" + # MT7622 TF-A partition driver detects GPT by checking MBR[0] + # for the 0xEE protective entry. Place it first so that BL2 + # (with partition-type = 0x83) lands at MBR slot 1. + gpt-protective-first = true + } + + # BL2 bootloader at sector 1024 (0x80000). The MT7622 Boot ROM scans + # the hybrid MBR for a bootable entry and loads BL2 from its offset. + # partition-type makes it visible in the MBR at slot 1 (slot 0 holds + # the 0xEE protective entry required by the TF-A partition driver). + partition bl2 { + partition-type = 0x83 + image = "bl2.img" + offset = 1024s + size = 1024s + bootable = true + } + + # Factory/calibration data at fixed offset + partition factory { + offset = 4608K + size = 2M + } + + # FIP partition - BL31 + U-Boot + partition fip { + image = "fip.bin" + offset = 13312s + size = 4096s + } + + partition aux { + partition-uuid = D4EF35A0-0652-45A1-B3DE-D63339C82035 + image = "aux.ext4" + } + + partition primary { + partition-type-uuid = 0FC63DAF-8483-4772-8E79-3D69D8477DE4 + bootable = true + size = 250M + image = "rootfs.squashfs" + } + + partition secondary { + partition-type-uuid = 0FC63DAF-8483-4772-8E79-3D69D8477DE4 + bootable = true + size = 250M + image = "rootfs.squashfs" + } + + partition cfg { + partition-uuid = 7aa497f0-73b5-47e5-b2ab-8752d8a48105 + image = "cfg.ext4" + } + + partition var { + partition-uuid = 8046A06A-E45A-4A14-A6AD-6684704A393F + image = "var.ext4" + } +} diff --git a/board/aarch64/bananapi-bpi-r64/rootfs/usr/share/product/bananapi,bpi-r64/etc/factory-config.cfg b/board/aarch64/bananapi-bpi-r64/rootfs/usr/share/product/bananapi,bpi-r64/etc/factory-config.cfg new file mode 100644 index 00000000..bb9eb50c --- /dev/null +++ b/board/aarch64/bananapi-bpi-r64/rootfs/usr/share/product/bananapi,bpi-r64/etc/factory-config.cfg @@ -0,0 +1,437 @@ +{ + "ieee802-dot1ab-lldp:lldp": { + "infix-lldp:enabled": true + }, + "ietf-hardware:hardware": { + "component": [ + { + "name": "USB", + "class": "infix-hardware:usb", + "state": { + "admin-state": "unlocked" + } + }, + { + "name": "radio0", + "class": "infix-hardware:wifi", + "infix-hardware:wifi-radio": { + "country-code": "DE", + "band": "2.4GHz", + "channel": "auto" + } + } + ] + }, + "ietf-interfaces:interfaces": { + "interface": [ + { + "name": "br0", + "type": "infix-if-type:bridge", + "ietf-ip:ipv4": { + "address": [ + { + "ip": "192.168.0.1", + "prefix-length": 24 + } + ] + } + }, + { + "name": "lan0", + "type": "infix-if-type:ethernet", + "ietf-ip:ipv6": {}, + "infix-interfaces:bridge-port": { + "bridge": "br0" + } + }, + { + "name": "lan1", + "type": "infix-if-type:ethernet", + "ietf-ip:ipv6": {}, + "infix-interfaces:bridge-port": { + "bridge": "br0" + } + }, + { + "name": "lan2", + "type": "infix-if-type:ethernet", + "ietf-ip:ipv6": {}, + "infix-interfaces:bridge-port": { + "bridge": "br0" + } + }, + { + "name": "lan3", + "type": "infix-if-type:ethernet", + "ietf-ip:ipv6": {}, + "infix-interfaces:bridge-port": { + "bridge": "br0" + } + }, + { + "name": "lo", + "type": "infix-if-type:loopback", + "ietf-ip:ipv4": { + "address": [ + { + "ip": "127.0.0.1", + "prefix-length": 8 + } + ] + }, + "ietf-ip:ipv6": { + "address": [ + { + "ip": "::1", + "prefix-length": 128 + } + ] + } + }, + { + "name": "wan", + "type": "infix-if-type:ethernet", + "ietf-ip:ipv4": { + "infix-dhcp-client:dhcp": { + "option": [ + { + "id": "ntp-server" + }, + { + "id": "broadcast" + }, + { + "id": "domain" + }, + { + "id": "hostname" + }, + { + "id": "dns-server" + }, + { + "id": "router" + }, + { + "id": "netmask" + }, + { + "id": "vendor-class", + "value": "Banana Pi BPI-R64" + } + ] + } + }, + "ietf-ip:ipv6": { + "infix-dhcpv6-client:dhcp": { + "option": [ + { + "id": "ntp-server" + }, + { + "id": "client-fqdn" + }, + { + "id": "domain-search" + }, + { + "id": "dns-server" + } + ] + } + } + }, + { + "name": "wifi0-ap", + "type": "infix-if-type:wifi", + "infix-interfaces:wifi": { + "radio": "radio0", + "access-point": { + "ssid": "Infix", + "security": { + "secret": "wifi" + } + } + }, + "infix-interfaces:bridge-port": { + "bridge": "br0" + } + } + ] + }, + "ietf-keystore:keystore": { + "asymmetric-keys": { + "asymmetric-key": [ + { + "name": "genkey", + "public-key-format": "infix-crypto-types:ssh-public-key-format", + "public-key": "", + "private-key-format": "infix-crypto-types:rsa-private-key-format", + "cleartext-private-key": "", + "certificates": {} + } + ] + }, + "symmetric-keys": { + "symmetric-key": [ + { + "name": "wifi", + "cleartext-symmetric-key": "aW5maXhpbmZpeA==", + "key-format": "infix-crypto-types:passphrase-key-format" + } + ] + } + }, + "ietf-netconf-acm:nacm": { + "enable-nacm": true, + "read-default": "permit", + "write-default": "permit", + "exec-default": "permit", + "groups": { + "group": [ + { + "name": "admin", + "user-name": [ + "admin" + ] + }, + { + "name": "operator", + "user-name": [] + }, + { + "name": "guest", + "user-name": [] + } + ] + }, + "rule-list": [ + { + "name": "admin-acl", + "group": [ + "admin" + ], + "rule": [ + { + "name": "permit-all", + "module-name": "*", + "access-operations": "*", + "action": "permit", + "comment": "Allow 'admin' group complete access to all operations and data." + } + ] + }, + { + "name": "operator-acl", + "group": [ + "operator" + ], + "rule": [ + { + "name": "permit-system-rpcs", + "module-name": "ietf-system", + "rpc-name": "*", + "access-operations": "exec", + "action": "permit", + "comment": "Operators can reboot, shutdown, and set system time." + } + ] + }, + { + "name": "guest-acl", + "group": [ + "guest" + ], + "rule": [ + { + "name": "deny-all-write+exec", + "module-name": "*", + "access-operations": "create update delete exec", + "action": "deny", + "comment": "Guests cannot change anything or exec rpcs." + } + ] + }, + { + "name": "default-deny-all", + "group": [ + "*" + ], + "rule": [ + { + "name": "deny-password-access", + "path": "/ietf-system:system/authentication/user/password", + "access-operations": "*", + "action": "deny", + "comment": "No user except admins can access password hashes." + }, + { + "name": "deny-keystore-access", + "module-name": "ietf-keystore", + "access-operations": "*", + "action": "deny", + "comment": "No user except admins can access cryptographic keys." + }, + { + "name": "deny-truststore-access", + "module-name": "ietf-truststore", + "access-operations": "*", + "action": "deny", + "comment": "No user except admins can access trust store." + } + ] + } + ] + }, + "ietf-netconf-server:netconf-server": { + "listen": { + "endpoints": { + "endpoint": [ + { + "name": "default-ssh", + "ssh": { + "tcp-server-parameters": { + "local-bind": [ + { + "local-address": "::" + } + ] + }, + "ssh-server-parameters": { + "server-identity": { + "host-key": [ + { + "name": "default-key", + "public-key": { + "central-keystore-reference": "genkey" + } + } + ] + } + } + } + } + ] + } + } + }, + "ietf-system:system": { + "hostname": "bpi-%m", + "ntp": { + "server": [ + { + "name": "default", + "udp": { + "address": "pool.ntp.org" + } + } + ] + }, + "authentication": { + "user": [ + { + "name": "admin", + "password": "$factory$", + "infix-system:shell": "bash" + } + ] + }, + "infix-system:motd-banner": "Li0tLS0tLS0uCnwgIC4gLiAgfCBJbmZpeCBPUyDigJQgSW1tdXRhYmxlLkZyaWVuZGx5LlNlY3VyZQp8LS4gdiAuLXwgaHR0cHM6Ly9rZXJuZWxraXQub3JnCictJy0tLSctJwo=" + }, + "infix-dhcp-server:dhcp-server": { + "option": [ + { + "id": "ntp-server", + "address": "auto" + }, + { + "id": "dns-server", + "address": "auto" + }, + { + "id": "router", + "address": "auto" + } + ], + "subnet": [ + { + "subnet": "192.168.0.0/24", + "pool": { + "start-address": "192.168.0.100", + "end-address": "192.168.0.250" + } + } + ] + }, + "infix-firewall:firewall": { + "default": "wan", + "zone": [ + { + "name": "lan", + "action": "accept", + "interface": [ + "br0" + ] + }, + { + "name": "wan", + "action": "drop", + "interface": [ + "wan" + ], + "service": [ + "dhcpv6-client" + ] + } + ], + "policy": [ + { + "name": "lan-to-wan", + "action": "accept", + "ingress": [ + "lan" + ], + "egress": [ + "wan" + ], + "masquerade": true + } + ] + }, + "infix-meta:meta": { + "version": "1.7" + }, + "infix-services:mdns": { + "enabled": true + }, + "infix-services:ssh": { + "enabled": true, + "hostkey": [ + "genkey" + ], + "listen": [ + { + "name": "ipv4", + "address": "0.0.0.0", + "port": 22 + }, + { + "name": "ipv6", + "address": "::", + "port": 22 + } + ] + }, + "infix-services:web": { + "enabled": true, + "console": { + "enabled": true + }, + "netbrowse": { + "enabled": true + }, + "restconf": { + "enabled": true + } + } +} diff --git a/board/aarch64/bananapi-bpi-r64/rootfs/usr/share/product/bananapi,bpi-r64/etc/udev/rules.d/90-bpi-r64-rename-ethernet.rules b/board/aarch64/bananapi-bpi-r64/rootfs/usr/share/product/bananapi,bpi-r64/etc/udev/rules.d/90-bpi-r64-rename-ethernet.rules new file mode 100644 index 00000000..6ab0f3a0 --- /dev/null +++ b/board/aarch64/bananapi-bpi-r64/rootfs/usr/share/product/bananapi,bpi-r64/etc/udev/rules.d/90-bpi-r64-rename-ethernet.rules @@ -0,0 +1,14 @@ +# Rename MT7531 external switch ports by DT node path. + +# The DTS already contains this but it has been observed in the wild +# that we may end up with names like lan118 rather than by DTS label, +# so this set of rules, that run after most other rules, match on the +# OF_FULLNAME which is a stable reference. +# +# MT7622 / BPI-R64 switch topology (switch@1f, ports): +# port@0 = wan, port@1..4 = lan0..lan3, port@5,6 = cpu +ACTION=="add", SUBSYSTEM=="net", ENV{OF_FULLNAME}=="*/switch@1f/ports/port@0", NAME="wan" +ACTION=="add", SUBSYSTEM=="net", ENV{OF_FULLNAME}=="*/switch@1f/ports/port@1", NAME="lan0" +ACTION=="add", SUBSYSTEM=="net", ENV{OF_FULLNAME}=="*/switch@1f/ports/port@2", NAME="lan1" +ACTION=="add", SUBSYSTEM=="net", ENV{OF_FULLNAME}=="*/switch@1f/ports/port@3", NAME="lan2" +ACTION=="add", SUBSYSTEM=="net", ENV{OF_FULLNAME}=="*/switch@1f/ports/port@4", NAME="lan3" diff --git a/board/aarch64/bananapi-bpi-r64/uboot/emmc-extras.config b/board/aarch64/bananapi-bpi-r64/uboot/emmc-extras.config new file mode 100644 index 00000000..9dff8112 --- /dev/null +++ b/board/aarch64/bananapi-bpi-r64/uboot/emmc-extras.config @@ -0,0 +1,2 @@ +CONFIG_DEVICE_TREE_INCLUDES="infix-env.dtsi infix-key.dtsi mt7622-emmc-env.dtsi" +CONFIG_SUPPORT_EMMC_BOOT=y diff --git a/board/aarch64/bananapi-bpi-r64/uboot/extras.config b/board/aarch64/bananapi-bpi-r64/uboot/extras.config new file mode 100644 index 00000000..232d4ea1 --- /dev/null +++ b/board/aarch64/bananapi-bpi-r64/uboot/extras.config @@ -0,0 +1,19 @@ +CONFIG_AUTOBOOT=y +CONFIG_BOOTDELAY=2 +# CONFIG_MMC_PCI is not set +CONFIG_ENV_IS_NOWHERE=y +# CONFIG_ENV_IS_IN_MMC is not set + +CONFIG_USB=y +CONFIG_USB_XHCI_HCD=y +CONFIG_USB_XHCI_MTK=y +CONFIG_PHY=y +CONFIG_PHY_MTK_TPHY=y + +CONFIG_DM_MDIO=y +CONFIG_DM_ETH_PHY=y +CONFIG_PHY_ETHERNET_ID=y + +CONFIG_CMD_MDIO=y +CONFIG_CMD_USB=y +CONFIG_CMD_DM=y diff --git a/board/aarch64/bananapi-bpi-r64/uboot/mt7622-emmc-env.dtsi b/board/aarch64/bananapi-bpi-r64/uboot/mt7622-emmc-env.dtsi new file mode 100644 index 00000000..c70a826f --- /dev/null +++ b/board/aarch64/bananapi-bpi-r64/uboot/mt7622-emmc-env.dtsi @@ -0,0 +1,5 @@ +#include + +&env { + fdtfile = "mediatek/mt7622-bananapi-bpi-r64.dtb"; +}; diff --git a/board/aarch64/bananapi-bpi-r64/uboot/mt7622-env.dtsi b/board/aarch64/bananapi-bpi-r64/uboot/mt7622-env.dtsi new file mode 100644 index 00000000..9f36845c --- /dev/null +++ b/board/aarch64/bananapi-bpi-r64/uboot/mt7622-env.dtsi @@ -0,0 +1,18 @@ +/ { + config { + env: environment { + bootcmd = "run ixboot"; + boot_targets = "mmc0"; + ethprime = "eth0"; + fdt_addr_r = "0x43f00000"; + kernel_addr_r = "0x44000000"; + scriptaddr = "0x48000000"; + ramdisk_addr_r = "0x4A000000"; + + /* This is a development platform, keep + * developer mode statically enabled. + */ + ixbtn-devmode = "setenv dev_mode yes; echo Enabled"; + }; + }; +}; diff --git a/board/aarch64/bananapi-bpi-r64/uboot/mt7622-sd-env.dtsi b/board/aarch64/bananapi-bpi-r64/uboot/mt7622-sd-env.dtsi new file mode 100644 index 00000000..45f3c86f --- /dev/null +++ b/board/aarch64/bananapi-bpi-r64/uboot/mt7622-sd-env.dtsi @@ -0,0 +1,6 @@ +#include + +&env { + boot_targets = "mmc1"; /* SD = mmc1 on MT7622 */ + fdtfile = "mediatek/mt7622-bananapi-bpi-r64.dtb"; +}; diff --git a/board/aarch64/bananapi-bpi-r64/uboot/sd-extras.config b/board/aarch64/bananapi-bpi-r64/uboot/sd-extras.config new file mode 100644 index 00000000..9502bd1d --- /dev/null +++ b/board/aarch64/bananapi-bpi-r64/uboot/sd-extras.config @@ -0,0 +1 @@ +CONFIG_DEVICE_TREE_INCLUDES="infix-env.dtsi infix-key.dtsi mt7622-sd-env.dtsi" diff --git a/configs/aarch64_defconfig b/configs/aarch64_defconfig index 3aeff9f8..07b01f60 100644 --- a/configs/aarch64_defconfig +++ b/configs/aarch64_defconfig @@ -134,6 +134,7 @@ BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT=y BR2_PACKAGE_HOST_UBOOT_TOOLS_FDT_ADD_PUBKEY=y BR2_PACKAGE_ALDER_ALDER=y BR2_PACKAGE_BANANAPI_BPI_R3=y +BR2_PACKAGE_BANANAPI_BPI_R64=y BR2_PACKAGE_FRIENDLYARM_NANOPI_R2S=y BR2_PACKAGE_MARVELL_CN9130_CRB=y BR2_PACKAGE_MARVELL_ESPRESSOBIN=y diff --git a/configs/aarch64_minimal_defconfig b/configs/aarch64_minimal_defconfig index 73ac12ba..67768dc1 100644 --- a/configs/aarch64_minimal_defconfig +++ b/configs/aarch64_minimal_defconfig @@ -113,6 +113,7 @@ BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT=y BR2_PACKAGE_HOST_UBOOT_TOOLS_FDT_ADD_PUBKEY=y BR2_PACKAGE_ALDER_ALDER=y BR2_PACKAGE_BANANAPI_BPI_R3=y +BR2_PACKAGE_BANANAPI_BPI_R64=y BR2_PACKAGE_FRIENDLYARM_NANOPI_R2S=y BR2_PACKAGE_MARVELL_CN9130_CRB=y BR2_PACKAGE_MARVELL_ESPRESSOBIN=y diff --git a/configs/bpi_r64_emmc_boot_defconfig b/configs/bpi_r64_emmc_boot_defconfig new file mode 100644 index 00000000..42597189 --- /dev/null +++ b/configs/bpi_r64_emmc_boot_defconfig @@ -0,0 +1,42 @@ +BR2_aarch64=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y +BR2_DL_DIR="$(BR2_EXTERNAL_INFIX_PATH)/dl" +BR2_CCACHE=y +BR2_CCACHE_DIR="$(BR2_EXTERNAL_INFIX_PATH)/.ccache" +BR2_ENABLE_DEBUG=y +BR2_PACKAGE_OVERRIDE_FILE="$(BR2_EXTERNAL_INFIX_PATH)/local.mk" +BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL_INFIX_PATH)/patches" +BR2_SSP_NONE=y +BR2_INIT_NONE=y +BR2_SYSTEM_BIN_SH_NONE=y +# BR2_PACKAGE_BUSYBOX is not set +# BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL="https://github.com/mtk-openwrt/arm-trusted-firmware-mtk.git" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION="78a0dfd927bb00ce973a1f8eb4079df0f755887a" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="mt7622" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_AS_BL33=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_ADDITIONAL_VARIABLES="BOOT_DEVICE=emmc DDR3_FLYBY=1 DEVICE_HEADER_OFFSET=0x0 USE_MKIMAGE=1" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_IMAGES="*.img *.bin" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2025.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="mt7622_bpir64_emmc" +BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="${BR2_EXTERNAL_INFIX_PATH}/board/common/uboot/extras.config ${BR2_EXTERNAL_INFIX_PATH}/board/aarch64/bananapi-bpi-r64/uboot/extras.config ${BR2_EXTERNAL_INFIX_PATH}/board/aarch64/bananapi-bpi-r64/uboot/emmc-extras.config" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_FORMAT_DTB=y +BR2_TARGET_UBOOT_CUSTOM_DTS_PATH="${BR2_EXTERNAL_INFIX_PATH}/board/aarch64/bananapi-bpi-r64/uboot/*.dtsi" +BR2_PACKAGE_HOST_BMAP_TOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_RAUC=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_FDT_ADD_PUBKEY=y +TRUSTED_KEYS=y +TRUSTED_KEYS_DEVELOPMENT=y diff --git a/configs/bpi_r64_sd_boot_defconfig b/configs/bpi_r64_sd_boot_defconfig new file mode 100644 index 00000000..56f5f2ac --- /dev/null +++ b/configs/bpi_r64_sd_boot_defconfig @@ -0,0 +1,42 @@ +BR2_aarch64=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y +BR2_DL_DIR="$(BR2_EXTERNAL_INFIX_PATH)/dl" +BR2_CCACHE=y +BR2_CCACHE_DIR="$(BR2_EXTERNAL_INFIX_PATH)/.ccache" +BR2_ENABLE_DEBUG=y +BR2_PACKAGE_OVERRIDE_FILE="$(BR2_EXTERNAL_INFIX_PATH)/local.mk" +BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL_INFIX_PATH)/patches" +BR2_SSP_NONE=y +BR2_INIT_NONE=y +BR2_SYSTEM_BIN_SH_NONE=y +# BR2_PACKAGE_BUSYBOX is not set +# BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL="https://github.com/mtk-openwrt/arm-trusted-firmware-mtk.git" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION="78a0dfd927bb00ce973a1f8eb4079df0f755887a" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="mt7622" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_AS_BL33=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_ADDITIONAL_VARIABLES="BOOT_DEVICE=sdmmc DDR3_FLYBY=1 DEVICE_HEADER_OFFSET=0x80000 USE_MKIMAGE=1" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_IMAGES="*.img *.bin" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2025.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="mt7622_bpir64_sd" +BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="${BR2_EXTERNAL_INFIX_PATH}/board/common/uboot/extras.config ${BR2_EXTERNAL_INFIX_PATH}/board/aarch64/bananapi-bpi-r64/uboot/extras.config ${BR2_EXTERNAL_INFIX_PATH}/board/aarch64/bananapi-bpi-r64/uboot/sd-extras.config" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_FORMAT_DTB=y +BR2_TARGET_UBOOT_CUSTOM_DTS_PATH="${BR2_EXTERNAL_INFIX_PATH}/board/aarch64/bananapi-bpi-r64/uboot/*.dtsi" +BR2_PACKAGE_HOST_BMAP_TOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_RAUC=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_FDT_ADD_PUBKEY=y +TRUSTED_KEYS=y +TRUSTED_KEYS_DEVELOPMENT=y diff --git a/patches/uboot/2025.01/0001-hush-Remove-Ctrl-C-detection-in-loops.patch b/patches/uboot/2025.01/0001-hush-Remove-Ctrl-C-detection-in-loops.patch index ce997020..5d4dca02 100644 --- a/patches/uboot/2025.01/0001-hush-Remove-Ctrl-C-detection-in-loops.patch +++ b/patches/uboot/2025.01/0001-hush-Remove-Ctrl-C-detection-in-loops.patch @@ -1,10 +1,7 @@ From 9a9885324c70d607c9c79814441dbc829e212e41 Mon Sep 17 00:00:00 2001 From: Tobias Waldekranz Date: Mon, 10 Jun 2024 13:25:31 +0200 -Subject: [PATCH 1/7] hush: Remove Ctrl-C detection in loops -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit +Subject: [PATCH 1/9] hush: Remove Ctrl-C detection in loops Organization: Wires Assume that the original intent was to emulate SIGINT to a shell. This @@ -17,7 +14,7 @@ Disable this behavior and delegate the problem of loop termination to the writer of the script instead. Signed-off-by: Tobias Waldekranz -Signed-off-by: Mattias Walström +Signed-off-by: Joachim Wiberg --- common/cli_hush.c | 7 ------- 1 file changed, 7 deletions(-) diff --git a/patches/uboot/2025.01/0002-cmd-new-command-rpidisplay.patch b/patches/uboot/2025.01/0002-cmd-new-command-rpidisplay.patch index 9594f443..52becdcd 100644 --- a/patches/uboot/2025.01/0002-cmd-new-command-rpidisplay.patch +++ b/patches/uboot/2025.01/0002-cmd-new-command-rpidisplay.patch @@ -1,13 +1,14 @@ From 7efc3aa61fbc84b2c0c959e737257d2de2e8020c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20Walstr=C3=B6m?= Date: Sat, 6 Sep 2025 22:18:27 +0200 -Subject: [PATCH 2/7] cmd: new command rpidisplay +Subject: [PATCH 2/9] cmd: new command rpidisplay MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Organization: Wires Signed-off-by: Mattias Walström +Signed-off-by: Joachim Wiberg --- cmd/Kconfig | 14 ++++++++ cmd/Makefile | 2 +- diff --git a/patches/uboot/2025.01/0003-arm-dts-at91-sama7g5ek-increase-clock-for-sdmmc-from.patch b/patches/uboot/2025.01/0003-arm-dts-at91-sama7g5ek-increase-clock-for-sdmmc-from.patch index 0e96b921..a8f183fd 100644 --- a/patches/uboot/2025.01/0003-arm-dts-at91-sama7g5ek-increase-clock-for-sdmmc-from.patch +++ b/patches/uboot/2025.01/0003-arm-dts-at91-sama7g5ek-increase-clock-for-sdmmc-from.patch @@ -1,11 +1,8 @@ From c646eef3ee304ae49ad7e3f998ed08bfa0efb7b9 Mon Sep 17 00:00:00 2001 From: Mihai Sain Date: Fri, 5 May 2023 13:28:31 +0300 -Subject: [PATCH 3/7] arm: dts: at91: sama7g5ek: increase clock for sdmmc from +Subject: [PATCH 3/9] arm: dts: at91: sama7g5ek: increase clock for sdmmc from 25 MHz to 50 MHz -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit Organization: Wires Current clock for sdmmc0 and sdmmc1 is 25 MHz because of the caps forced @@ -16,7 +13,7 @@ improve the boot time when reading the kernel binary. Tested on sama7g5ek rev 5 using mmcinfo command. Signed-off-by: Mihai Sain -Signed-off-by: Mattias Walström +Signed-off-by: Joachim Wiberg --- arch/arm/dts/at91-sama7g5ek.dts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/patches/uboot/2025.01/0004-arm-dts-at91-sama7g5ek-supports-high-speed-on-mmc0-e.patch b/patches/uboot/2025.01/0004-arm-dts-at91-sama7g5ek-supports-high-speed-on-mmc0-e.patch index 6bbef056..9299166b 100644 --- a/patches/uboot/2025.01/0004-arm-dts-at91-sama7g5ek-supports-high-speed-on-mmc0-e.patch +++ b/patches/uboot/2025.01/0004-arm-dts-at91-sama7g5ek-supports-high-speed-on-mmc0-e.patch @@ -1,11 +1,8 @@ From 5a530e4eebf64887fd6b449dd45df04eccd07cad Mon Sep 17 00:00:00 2001 From: Joachim Wiberg Date: Thu, 12 Feb 2026 10:00:02 +0100 -Subject: [PATCH 4/7] arm: dts: at91: sama7g5ek supports high-speed on mmc0 +Subject: [PATCH 4/9] arm: dts: at91: sama7g5ek supports high-speed on mmc0 (eMMC) -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit Organization: Wires - eMMC high-speed timing is supported @@ -14,7 +11,6 @@ Organization: Wires Tested on sama7g5ek rev 5. Signed-off-by: Joachim Wiberg -Signed-off-by: Mattias Walström --- arch/arm/dts/at91-sama7g5ek.dts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/patches/uboot/2025.01/0005-net-phy-Add-the-Airoha-EN8811H-PHY-driver.patch b/patches/uboot/2025.01/0005-net-phy-Add-the-Airoha-EN8811H-PHY-driver.patch index 81e8eccc..4261bcff 100644 --- a/patches/uboot/2025.01/0005-net-phy-Add-the-Airoha-EN8811H-PHY-driver.patch +++ b/patches/uboot/2025.01/0005-net-phy-Add-the-Airoha-EN8811H-PHY-driver.patch @@ -1,10 +1,7 @@ From be250151366460ee318ca47bb15ec23e5e322a84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20Walstr=C3=B6m?= Date: Wed, 18 Feb 2026 17:00:09 +0100 -Subject: [PATCH 5/7] net: phy: Add the Airoha EN8811H PHY driver -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit +Subject: [PATCH 5/9] net: phy: Add the Airoha EN8811H PHY driver Organization: Wires Add the driver for the Airoha EN8811H 2.5 Gigabit PHY. The PHY supports @@ -26,7 +23,7 @@ I have modified the relevant process to align with the U-Boot boot sequence. and have validated this on Banana Pi BPI-R3 Mini. Signed-off-by: Lucien.Jheng -Signed-off-by: Mattias Walström +Signed-off-by: Joachim Wiberg --- drivers/net/phy/Kconfig | 25 + drivers/net/phy/Makefile | 1 + diff --git a/patches/uboot/2025.01/0006-Add-bpi-r3-mini-device-tree.patch b/patches/uboot/2025.01/0006-Add-bpi-r3-mini-device-tree.patch index 1811ce3c..229e2200 100644 --- a/patches/uboot/2025.01/0006-Add-bpi-r3-mini-device-tree.patch +++ b/patches/uboot/2025.01/0006-Add-bpi-r3-mini-device-tree.patch @@ -1,13 +1,10 @@ From a987f92a768291669eec1a8c5d413190bd9241ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20Walstr=C3=B6m?= Date: Wed, 18 Feb 2026 17:00:42 +0100 -Subject: [PATCH 6/7] Add bpi-r3-mini device tree -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit +Subject: [PATCH 6/9] Add bpi-r3-mini device tree Organization: Wires -Signed-off-by: Mattias Walström +Signed-off-by: Joachim Wiberg --- arch/arm/dts/Makefile | 1 + arch/arm/dts/mt7986a-bpi-r3-mini.dts | 238 +++++++++++++++++++++++++++ diff --git a/patches/uboot/2025.01/0007-bpi-r3-r4-Add-probe-for-specific-model.patch b/patches/uboot/2025.01/0007-bpi-r3-r4-Add-probe-for-specific-model.patch index a3e1bbe7..1868e06c 100644 --- a/patches/uboot/2025.01/0007-bpi-r3-r4-Add-probe-for-specific-model.patch +++ b/patches/uboot/2025.01/0007-bpi-r3-r4-Add-probe-for-specific-model.patch @@ -1,10 +1,7 @@ From 57b3cd8612a8da852f0796d97e6a7526cc4742cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20Walstr=C3=B6m?= Date: Wed, 18 Feb 2026 17:02:23 +0100 -Subject: [PATCH 7/7] bpi-r3/r4: Add probe for specific model -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit +Subject: [PATCH 7/9] bpi-r3/r4: Add probe for specific model Organization: Wires Probe for bpi-r3 and bpi-r3-mini and select correct device tree, @@ -12,7 +9,7 @@ prepare for bpi-r4 (not supported yet, but soon), for bpi-r3, look if there are phys connected, if so it is a mini, else it is regular bpi-r3. -Signed-off-by: Mattias Walström +Signed-off-by: Joachim Wiberg --- arch/arm/mach-mediatek/Kconfig | 3 + board/mediatek/mt7986/Kconfig | 10 ++ diff --git a/patches/uboot/2025.01/0008-arm-mediatek-fix-MT7622-BROM-image-header-type.patch b/patches/uboot/2025.01/0008-arm-mediatek-fix-MT7622-BROM-image-header-type.patch new file mode 100644 index 00000000..f3eb471e --- /dev/null +++ b/patches/uboot/2025.01/0008-arm-mediatek-fix-MT7622-BROM-image-header-type.patch @@ -0,0 +1,37 @@ +From c07b984f00e48294cb6e14825919405d53532271 Mon Sep 17 00:00:00 2001 +From: Joachim Wiberg +Date: Thu, 26 Feb 2026 11:22:28 +0100 +Subject: [PATCH 8/9] arm: mediatek: fix MT7622 BROM image header type +Organization: Wires + +The LK image header for MT7622 was inadvertently changed to "media=nor" +when board Kconfigs were merged into mach-mediatek/Kconfig. MT7622 uses +the same ATF/LK-based boot flow as MT7623 and requires "lk=1" so that +mkimage generates the correct header for the BROM to accept. + +Reported-by: Shiji Yang +Signed-off-by: Joachim Wiberg +--- + arch/arm/mach-mediatek/Kconfig | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/arch/arm/mach-mediatek/Kconfig b/arch/arm/mach-mediatek/Kconfig +index def8a564d90..53d5b5e58bd 100644 +--- a/arch/arm/mach-mediatek/Kconfig ++++ b/arch/arm/mach-mediatek/Kconfig +@@ -148,10 +148,10 @@ config SYS_CONFIG_NAME + + config MTK_BROM_HEADER_INFO + string +- default "media=nor" if TARGET_MT8518 || TARGET_MT8512 || TARGET_MT7629 || TARGET_MT7622 ++ default "media=nor" if TARGET_MT8518 || TARGET_MT8512 || TARGET_MT7629 + default "media=emmc" if TARGET_MT8516 || TARGET_MT8365 || TARGET_MT8183 + default "media=snand;nandinfo=2k+64" if TARGET_MT7981 || TARGET_MT7986 || TARGET_MT7988 +- default "lk=1" if TARGET_MT7623 ++ default "lk=1" if TARGET_MT7622 || TARGET_MT7623 + + source "board/mediatek/mt7986/Kconfig" + source "board/mediatek/mt7988/Kconfig" +-- +2.43.0 + diff --git a/patches/uboot/2025.01/0009-arm-mediatek-add-BananaPi-BPI-R64-MT7622-defconfigs.patch b/patches/uboot/2025.01/0009-arm-mediatek-add-BananaPi-BPI-R64-MT7622-defconfigs.patch new file mode 100644 index 00000000..d832763f --- /dev/null +++ b/patches/uboot/2025.01/0009-arm-mediatek-add-BananaPi-BPI-R64-MT7622-defconfigs.patch @@ -0,0 +1,710 @@ +From d89bb394f5d5f2cf8b15e5694d168f937b9ac426 Mon Sep 17 00:00:00 2001 +From: Joachim Wiberg +Date: Thu, 26 Feb 2026 11:23:28 +0100 +Subject: [PATCH 9/9] arm: mediatek: add BananaPi BPI-R64 (MT7622) defconfigs +Organization: Wires + +Add U-Boot support for the BananaPi BPI-R64 router board, based on the +MediaTek MT7622 SoC (dual-core ARM Cortex-A53, 64-bit). Three defconfigs +are provided, following the BPI-R3 pattern: + + mt7622_bpir64_emmc_defconfig - eMMC (mmc0), env at 4 MiB + mt7622_bpir64_sd_defconfig - SD card (mmc1), env at 4 MiB + mt7622_bpir64_snand_defconfig - SPI NAND via SNFI, env in UBI + +All variants include PCIe, USB3 (xHCI + T-PHY), Ethernet (MT7531 switch +via SGMII/2500base-x), GPIO-LEDs, and push-button support. + +The SNAND variant uses the upstream CONFIG_MTK_SNFI_SPI + MTD_SPI_NAND +path with a spi-nand child under &snfi, adapting OpenWRT patch 403 to +the upstream driver model (which has no separate &snand node or +CONFIG_MTK_SPI_NAND). NAND layout: bl2 at 0x0 (512 KiB), ubi for the +remainder of the flash. + +Also, add hardware description missing from the original device tree: + - ethernet0 alias for the MT7531 switch + - gpio-keys nodes for the reset (GPIO0) and WPS (GPIO102) buttons + - gpio-leds nodes for the green (GPIO89) and blue (GPIO85) LEDs + - Fix cap-sd-highspeed -> cap-mmc-highspeed on mmc0 (eMMC requires + the MMC-specific capability flag, not the SD one) + - Reduce mmc1 (SD card) max-frequency to 25 MHz for stability + +Sources: + OpenWRT patches 402-404/408 for package/boot/uboot-mediatek + https://git.infobricfleet.com/gtu/openwrt/-/tree/master/package/boot/uboot-mediatek/patches + Frank Wunderlich's initial MT7622/BPI-R64 U-Boot port (2019) + https://github.com/frank-w/u-boot/commit/c451ad3950e63d54b074f71e930459281dd3f594 + +Signed-off-by: Joachim Wiberg +--- + arch/arm/dts/mt7622-bananapi-bpi-r64-nand.dts | 290 ++++++++++++++++++ + arch/arm/dts/mt7622-bananapi-bpi-r64.dts | 38 ++- + board/mediatek/mt7622/MAINTAINERS | 5 + + configs/mt7622_bpir64_emmc_defconfig | 82 +++++ + configs/mt7622_bpir64_sd_defconfig | 82 +++++ + configs/mt7622_bpir64_snand_defconfig | 88 ++++++ + 6 files changed, 583 insertions(+), 2 deletions(-) + create mode 100644 arch/arm/dts/mt7622-bananapi-bpi-r64-nand.dts + create mode 100644 configs/mt7622_bpir64_emmc_defconfig + create mode 100644 configs/mt7622_bpir64_sd_defconfig + create mode 100644 configs/mt7622_bpir64_snand_defconfig + +diff --git a/arch/arm/dts/mt7622-bananapi-bpi-r64-nand.dts b/arch/arm/dts/mt7622-bananapi-bpi-r64-nand.dts +new file mode 100644 +index 00000000000..afdcb646f69 +--- /dev/null ++++ b/arch/arm/dts/mt7622-bananapi-bpi-r64-nand.dts +@@ -0,0 +1,290 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Copyright (c) 2019 MediaTek Inc. ++ * Author: Sam Shih ++ * ++ * BananaPi BPI-R64 - SPI NAND flash variant ++ */ ++ ++/dts-v1/; ++#include ++#include "mt7622.dtsi" ++#include "mt7622-u-boot.dtsi" ++ ++/ { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ model = "mt7622-bpi-r64"; ++ compatible = "mediatek,mt7622", "mediatek,mt7622-rfb"; ++ chosen { ++ stdout-path = &uart0; ++ tick-timer = &timer0; ++ }; ++ ++ aliases { ++ spi0 = &snfi; ++ ethernet0 = ð ++ }; ++ ++ memory@40000000 { ++ device_type = "memory"; ++ reg = <0x40000000 0x40000000>; ++ }; ++ ++ gpio-keys { ++ compatible = "gpio-keys"; ++ ++ factory-reset { ++ label = "factory-reset"; ++ gpios = <&gpio 0 GPIO_ACTIVE_LOW>; ++ linux,code = ; ++ }; ++ ++ wps { ++ label = "wps"; ++ gpios = <&gpio 102 GPIO_ACTIVE_LOW>; ++ linux,code = ; ++ }; ++ }; ++ ++ leds { ++ compatible = "gpio-leds"; ++ ++ green { ++ label = "bpi-r64:pio:green"; ++ gpios = <&gpio 89 GPIO_ACTIVE_HIGH>; ++ default-state = "off"; ++ }; ++ ++ blue { ++ label = "bpi-r64:pio:blue"; ++ gpios = <&gpio 85 GPIO_ACTIVE_LOW>; ++ default-state = "off"; ++ }; ++ }; ++ ++ reg_1p8v: regulator-1p8v { ++ compatible = "regulator-fixed"; ++ regulator-name = "fixed-1.8V"; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-boot-on; ++ regulator-always-on; ++ }; ++ ++ reg_3p3v: regulator-3p3v { ++ compatible = "regulator-fixed"; ++ regulator-name = "fixed-3.3V"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-boot-on; ++ regulator-always-on; ++ }; ++}; ++ ++&pcie { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pcie0_pins>, <&pcie1_pins>; ++ status = "okay"; ++ ++ pcie@0,0 { ++ status = "okay"; ++ }; ++ ++ pcie@1,0 { ++ status = "okay"; ++ }; ++}; ++ ++&pinctrl { ++ pcie0_pins: pcie0-pins { ++ mux { ++ function = "pcie"; ++ groups = "pcie0_pad_perst", ++ "pcie0_1_waken", ++ "pcie0_1_clkreq"; ++ }; ++ }; ++ ++ pcie1_pins: pcie1-pins { ++ mux { ++ function = "pcie"; ++ groups = "pcie1_pad_perst", ++ "pcie1_0_waken", ++ "pcie1_0_clkreq"; ++ }; ++ }; ++ ++ snfi_pins: snfi-pins { ++ mux { ++ function = "flash"; ++ groups = "snfi"; ++ }; ++ }; ++ ++ uart0_pins: uart0 { ++ mux { ++ function = "uart"; ++ groups = "uart0_0_tx_rx" ; ++ }; ++ }; ++ ++ pwm_pins: pwm1 { ++ mux { ++ function = "pwm"; ++ groups = "pwm_ch1_0" ; ++ }; ++ }; ++ ++ watchdog_pins: watchdog-default { ++ mux { ++ function = "watchdog"; ++ groups = "watchdog"; ++ }; ++ }; ++ ++ mmc0_pins_default: mmc0default { ++ mux { ++ function = "emmc"; ++ groups = "emmc"; ++ }; ++ ++ conf-cmd-dat { ++ pins = "NDL0", "NDL1", "NDL2", ++ "NDL3", "NDL4", "NDL5", ++ "NDL6", "NDL7", "NRB"; ++ input-enable; ++ bias-pull-up; ++ }; ++ ++ conf-clk { ++ pins = "NCLE"; ++ bias-pull-down; ++ }; ++ }; ++ ++ mmc1_pins_default: mmc1default { ++ mux { ++ function = "sd"; ++ groups = "sd_0"; ++ }; ++ ++ conf-cmd-data { ++ pins = "I2S2_OUT", "I2S4_IN", "I2S3_IN", ++ "I2S2_IN","I2S4_OUT"; ++ input-enable; ++ drive-strength = <8>; ++ bias-pull-up; ++ }; ++ ++ conf-clk { ++ pins = "I2S3_OUT"; ++ drive-strength = <12>; ++ bias-pull-down; ++ }; ++ ++ conf-cd { ++ pins = "TXD3"; ++ bias-pull-up; ++ }; ++ }; ++}; ++ ++&snfi { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&snfi_pins>; ++ status = "okay"; ++ ++ spi-nand@0 { ++ compatible = "spi-nand"; ++ reg = <0>; ++ spi-tx-bus-width = <4>; ++ spi-rx-bus-width = <4>; ++ ++ partitions { ++ compatible = "fixed-partitions"; ++ #address-cells = <1>; ++ #size-cells = <1>; ++ ++ partition@0 { ++ label = "bl2"; ++ reg = <0x0 0x80000>; ++ }; ++ ++ partition@80000 { ++ label = "ubi"; ++ reg = <0x80000 0x7f80000>; ++ }; ++ }; ++ }; ++}; ++ ++&uart0 { ++ status = "okay"; ++}; ++ ++&pwm { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pwm_pins>; ++ status = "okay"; ++}; ++ ++&mmc0 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&mmc0_pins_default>; ++ status = "okay"; ++ bus-width = <8>; ++ max-frequency = <50000000>; ++ cap-mmc-highspeed; ++ vmmc-supply = <®_3p3v>; ++ vqmmc-supply = <®_3p3v>; ++ non-removable; ++}; ++ ++&mmc1 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&mmc1_pins_default>; ++ status = "okay"; ++ bus-width = <4>; ++ max-frequency = <25000000>; ++ cap-sd-highspeed; ++ r_smpl = <1>; ++ vmmc-supply = <®_3p3v>; ++ vqmmc-supply = <®_3p3v>; ++}; ++ ++&watchdog { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&watchdog_pins>; ++ status = "okay"; ++}; ++ ++ð { ++ status = "okay"; ++ mediatek,gmac-id = <0>; ++ phy-mode = "2500base-x"; ++ mediatek,switch = "mt7531"; ++ reset-gpios = <&gpio 54 GPIO_ACTIVE_HIGH>; ++ ++ fixed-link { ++ speed = <2500>; ++ full-duplex; ++ }; ++}; ++ ++&gpio { ++ /*gpio 90 for setting mode to sata*/ ++ asm_sel { ++ gpio-hog; ++ gpios = <90 GPIO_ACTIVE_HIGH>; ++ output-low; ++ }; ++}; ++ ++&ssusb { ++ status = "okay"; ++}; ++ ++&u3phy { ++ status = "okay"; ++}; +diff --git a/arch/arm/dts/mt7622-bananapi-bpi-r64.dts b/arch/arm/dts/mt7622-bananapi-bpi-r64.dts +index 717baf26d3f..f25257be63d 100644 +--- a/arch/arm/dts/mt7622-bananapi-bpi-r64.dts ++++ b/arch/arm/dts/mt7622-bananapi-bpi-r64.dts +@@ -5,6 +5,7 @@ + */ + + /dts-v1/; ++#include + #include "mt7622.dtsi" + #include "mt7622-u-boot.dtsi" + +@@ -20,6 +21,7 @@ + + aliases { + spi0 = &snfi; ++ ethernet0 = ð + }; + + memory@40000000 { +@@ -27,6 +29,38 @@ + reg = <0x40000000 0x40000000>; + }; + ++ gpio-keys { ++ compatible = "gpio-keys"; ++ ++ factory-reset { ++ label = "factory-reset"; ++ gpios = <&gpio 0 GPIO_ACTIVE_LOW>; ++ linux,code = ; ++ }; ++ ++ wps { ++ label = "wps"; ++ gpios = <&gpio 102 GPIO_ACTIVE_LOW>; ++ linux,code = ; ++ }; ++ }; ++ ++ leds { ++ compatible = "gpio-leds"; ++ ++ green { ++ label = "bpi-r64:pio:green"; ++ gpios = <&gpio 89 GPIO_ACTIVE_HIGH>; ++ default-state = "off"; ++ }; ++ ++ blue { ++ label = "bpi-r64:pio:blue"; ++ gpios = <&gpio 85 GPIO_ACTIVE_LOW>; ++ default-state = "off"; ++ }; ++ }; ++ + reg_1p8v: regulator-1p8v { + compatible = "regulator-fixed"; + regulator-name = "fixed-1.8V"; +@@ -197,7 +231,7 @@ + status = "okay"; + bus-width = <8>; + max-frequency = <50000000>; +- cap-sd-highspeed; ++ cap-mmc-highspeed; + vmmc-supply = <®_3p3v>; + vqmmc-supply = <®_3p3v>; + non-removable; +@@ -208,7 +242,7 @@ + pinctrl-0 = <&mmc1_pins_default>; + status = "okay"; + bus-width = <4>; +- max-frequency = <50000000>; ++ max-frequency = <25000000>; + cap-sd-highspeed; + r_smpl = <1>; + vmmc-supply = <®_3p3v>; +diff --git a/board/mediatek/mt7622/MAINTAINERS b/board/mediatek/mt7622/MAINTAINERS +index a3e0e75ca07..a7da7948a65 100644 +--- a/board/mediatek/mt7622/MAINTAINERS ++++ b/board/mediatek/mt7622/MAINTAINERS +@@ -4,3 +4,8 @@ S: Maintained + F: board/mediatek/mt7622 + F: include/configs/mt7622.h + F: configs/mt7622_rfb_defconfig ++F: configs/mt7622_bpir64_emmc_defconfig ++F: configs/mt7622_bpir64_sd_defconfig ++F: configs/mt7622_bpir64_snand_defconfig ++F: arch/arm/dts/mt7622-bananapi-bpi-r64.dts ++F: arch/arm/dts/mt7622-bananapi-bpi-r64-nand.dts +diff --git a/configs/mt7622_bpir64_emmc_defconfig b/configs/mt7622_bpir64_emmc_defconfig +new file mode 100644 +index 00000000000..9af7b280c93 +--- /dev/null ++++ b/configs/mt7622_bpir64_emmc_defconfig +@@ -0,0 +1,82 @@ ++CONFIG_ARM=y ++CONFIG_SYS_HAS_NONCACHED_MEMORY=y ++CONFIG_POSITION_INDEPENDENT=y ++CONFIG_ARCH_MEDIATEK=y ++CONFIG_TARGET_MT7622=y ++CONFIG_TEXT_BASE=0x41e00000 ++CONFIG_SYS_MALLOC_F_LEN=0x4000 ++CONFIG_NR_DRAM_BANKS=1 ++CONFIG_ENV_SIZE=0x80000 ++CONFIG_ENV_OFFSET=0x400000 ++CONFIG_DEFAULT_DEVICE_TREE="mt7622-bananapi-bpi-r64" ++CONFIG_SYS_LOAD_ADDR=0x40080000 ++CONFIG_DEBUG_UART_BASE=0x11002000 ++CONFIG_DEBUG_UART_CLOCK=25000000 ++CONFIG_PCI=y ++CONFIG_DEBUG_UART=y ++CONFIG_FIT=y ++# CONFIG_EFI_LOADER is not set ++# CONFIG_AUTOBOOT is not set ++CONFIG_DEFAULT_FDT_FILE="mt7622-bananapi-bpi-r64" ++CONFIG_SYS_CBSIZE=512 ++CONFIG_SYS_PBSIZE=1049 ++CONFIG_LOGLEVEL=7 ++CONFIG_LOG=y ++CONFIG_SYS_PROMPT="BPI-R64> " ++# CONFIG_BOOTM_NETBSD is not set ++# CONFIG_BOOTM_PLAN9 is not set ++# CONFIG_BOOTM_RTEMS is not set ++# CONFIG_BOOTM_VXWORKS is not set ++# CONFIG_CMD_ELF is not set ++# CONFIG_CMD_UNLZ4 is not set ++# CONFIG_CMD_UNZIP is not set ++CONFIG_CMD_GPIO=y ++CONFIG_CMD_GPT=y ++CONFIG_CMD_GPT_RENAME=y ++CONFIG_CMD_LSBLK=y ++CONFIG_CMD_MMC=y ++CONFIG_CMD_PART=y ++CONFIG_CMD_READ=y ++CONFIG_CMD_PCI=y ++CONFIG_CMD_USB=y ++CONFIG_CMD_PING=y ++CONFIG_CMD_SMC=y ++CONFIG_CMD_FAT=y ++CONFIG_CMD_FS_GENERIC=y ++CONFIG_PARTITION_TYPE_GUID=y ++CONFIG_ENV_OVERWRITE=y ++CONFIG_ENV_IS_IN_MMC=y ++CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y ++CONFIG_NET_RANDOM_ETHADDR=y ++CONFIG_REGMAP=y ++CONFIG_SYSCON=y ++CONFIG_BUTTON=y ++CONFIG_BUTTON_GPIO=y ++CONFIG_CLK=y ++CONFIG_GPIO_HOG=y ++CONFIG_LED=y ++CONFIG_LED_GPIO=y ++CONFIG_SUPPORT_EMMC_BOOT=y ++CONFIG_MMC_HS200_SUPPORT=y ++CONFIG_MMC_MTK=y ++CONFIG_PHY_FIXED=y ++CONFIG_MEDIATEK_ETH=y ++CONFIG_PCIE_MEDIATEK=y ++CONFIG_PHY=y ++CONFIG_PHY_MTK_TPHY=y ++CONFIG_PINCTRL=y ++CONFIG_PINCONF=y ++CONFIG_PINCTRL_MT7622=y ++CONFIG_POWER_DOMAIN=y ++CONFIG_MTK_POWER_DOMAIN=y ++CONFIG_DM_REGULATOR=y ++CONFIG_DM_REGULATOR_FIXED=y ++CONFIG_RAM=y ++CONFIG_DM_SERIAL=y ++CONFIG_MTK_SERIAL=y ++CONFIG_USB=y ++CONFIG_USB_XHCI_HCD=y ++CONFIG_USB_XHCI_MTK=y ++CONFIG_USB_STORAGE=y ++CONFIG_FAT_WRITE=y ++CONFIG_HEXDUMP=y +diff --git a/configs/mt7622_bpir64_sd_defconfig b/configs/mt7622_bpir64_sd_defconfig +new file mode 100644 +index 00000000000..5e9340a09a6 +--- /dev/null ++++ b/configs/mt7622_bpir64_sd_defconfig +@@ -0,0 +1,82 @@ ++CONFIG_ARM=y ++CONFIG_SYS_HAS_NONCACHED_MEMORY=y ++CONFIG_POSITION_INDEPENDENT=y ++CONFIG_ARCH_MEDIATEK=y ++CONFIG_TARGET_MT7622=y ++CONFIG_TEXT_BASE=0x41e00000 ++CONFIG_SYS_MALLOC_F_LEN=0x4000 ++CONFIG_NR_DRAM_BANKS=1 ++CONFIG_ENV_SIZE=0x80000 ++CONFIG_ENV_OFFSET=0x400000 ++CONFIG_DEFAULT_DEVICE_TREE="mt7622-bananapi-bpi-r64" ++CONFIG_SYS_LOAD_ADDR=0x40080000 ++CONFIG_DEBUG_UART_BASE=0x11002000 ++CONFIG_DEBUG_UART_CLOCK=25000000 ++CONFIG_PCI=y ++CONFIG_DEBUG_UART=y ++CONFIG_FIT=y ++# CONFIG_EFI_LOADER is not set ++# CONFIG_AUTOBOOT is not set ++CONFIG_DEFAULT_FDT_FILE="mt7622-bananapi-bpi-r64" ++CONFIG_SYS_CBSIZE=512 ++CONFIG_SYS_PBSIZE=1049 ++CONFIG_LOGLEVEL=7 ++CONFIG_LOG=y ++CONFIG_SYS_PROMPT="BPI-R64> " ++# CONFIG_BOOTM_NETBSD is not set ++# CONFIG_BOOTM_PLAN9 is not set ++# CONFIG_BOOTM_RTEMS is not set ++# CONFIG_BOOTM_VXWORKS is not set ++# CONFIG_CMD_ELF is not set ++# CONFIG_CMD_UNLZ4 is not set ++# CONFIG_CMD_UNZIP is not set ++CONFIG_CMD_GPIO=y ++CONFIG_CMD_GPT=y ++CONFIG_CMD_GPT_RENAME=y ++CONFIG_CMD_LSBLK=y ++CONFIG_CMD_MMC=y ++CONFIG_CMD_PART=y ++CONFIG_CMD_READ=y ++CONFIG_CMD_PCI=y ++CONFIG_CMD_USB=y ++CONFIG_CMD_PING=y ++CONFIG_CMD_SMC=y ++CONFIG_CMD_FAT=y ++CONFIG_CMD_FS_GENERIC=y ++CONFIG_PARTITION_TYPE_GUID=y ++CONFIG_ENV_OVERWRITE=y ++CONFIG_ENV_IS_IN_MMC=y ++CONFIG_SYS_MMC_ENV_DEV=1 ++CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y ++CONFIG_NET_RANDOM_ETHADDR=y ++CONFIG_REGMAP=y ++CONFIG_SYSCON=y ++CONFIG_BUTTON=y ++CONFIG_BUTTON_GPIO=y ++CONFIG_CLK=y ++CONFIG_GPIO_HOG=y ++CONFIG_LED=y ++CONFIG_LED_GPIO=y ++CONFIG_MMC_HS200_SUPPORT=y ++CONFIG_MMC_MTK=y ++CONFIG_PHY_FIXED=y ++CONFIG_MEDIATEK_ETH=y ++CONFIG_PCIE_MEDIATEK=y ++CONFIG_PHY=y ++CONFIG_PHY_MTK_TPHY=y ++CONFIG_PINCTRL=y ++CONFIG_PINCONF=y ++CONFIG_PINCTRL_MT7622=y ++CONFIG_POWER_DOMAIN=y ++CONFIG_MTK_POWER_DOMAIN=y ++CONFIG_DM_REGULATOR=y ++CONFIG_DM_REGULATOR_FIXED=y ++CONFIG_RAM=y ++CONFIG_DM_SERIAL=y ++CONFIG_MTK_SERIAL=y ++CONFIG_USB=y ++CONFIG_USB_XHCI_HCD=y ++CONFIG_USB_XHCI_MTK=y ++CONFIG_USB_STORAGE=y ++CONFIG_FAT_WRITE=y ++CONFIG_HEXDUMP=y +diff --git a/configs/mt7622_bpir64_snand_defconfig b/configs/mt7622_bpir64_snand_defconfig +new file mode 100644 +index 00000000000..9be13d26fd9 +--- /dev/null ++++ b/configs/mt7622_bpir64_snand_defconfig +@@ -0,0 +1,88 @@ ++CONFIG_ARM=y ++CONFIG_SYS_HAS_NONCACHED_MEMORY=y ++CONFIG_POSITION_INDEPENDENT=y ++CONFIG_ARCH_MEDIATEK=y ++CONFIG_TARGET_MT7622=y ++CONFIG_TEXT_BASE=0x41e00000 ++CONFIG_SYS_MALLOC_F_LEN=0x4000 ++CONFIG_NR_DRAM_BANKS=1 ++CONFIG_DEFAULT_DEVICE_TREE="mt7622-bananapi-bpi-r64-nand" ++CONFIG_SYS_LOAD_ADDR=0x40080000 ++CONFIG_DEBUG_UART_BASE=0x11002000 ++CONFIG_DEBUG_UART_CLOCK=25000000 ++CONFIG_PCI=y ++CONFIG_DEBUG_UART=y ++CONFIG_FIT=y ++# CONFIG_EFI_LOADER is not set ++# CONFIG_AUTOBOOT is not set ++CONFIG_DEFAULT_FDT_FILE="mt7622-bananapi-bpi-r64-nand" ++CONFIG_SYS_CBSIZE=512 ++CONFIG_SYS_PBSIZE=1049 ++CONFIG_LOGLEVEL=7 ++CONFIG_LOG=y ++CONFIG_SYS_PROMPT="BPI-R64> " ++# CONFIG_BOOTM_NETBSD is not set ++# CONFIG_BOOTM_PLAN9 is not set ++# CONFIG_BOOTM_RTEMS is not set ++# CONFIG_BOOTM_VXWORKS is not set ++# CONFIG_CMD_ELF is not set ++# CONFIG_CMD_UNLZ4 is not set ++# CONFIG_CMD_UNZIP is not set ++CONFIG_CMD_GPIO=y ++CONFIG_CMD_MMC=y ++CONFIG_CMD_MTD=y ++CONFIG_CMD_PART=y ++CONFIG_CMD_READ=y ++CONFIG_CMD_PCI=y ++CONFIG_CMD_USB=y ++CONFIG_CMD_PING=y ++CONFIG_CMD_SMC=y ++CONFIG_CMD_FAT=y ++CONFIG_CMD_FS_GENERIC=y ++CONFIG_CMD_UBI=y ++CONFIG_PARTITION_TYPE_GUID=y ++CONFIG_ENV_OVERWRITE=y ++CONFIG_ENV_IS_IN_UBI=y ++CONFIG_ENV_REDUNDANT=y ++CONFIG_ENV_UBI_PART="ubi" ++CONFIG_ENV_UBI_VOLUME="ubootenv" ++CONFIG_ENV_UBI_VOLUME_REDUND="ubootenv2" ++CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y ++CONFIG_NET_RANDOM_ETHADDR=y ++CONFIG_REGMAP=y ++CONFIG_SYSCON=y ++CONFIG_BUTTON=y ++CONFIG_BUTTON_GPIO=y ++CONFIG_CLK=y ++CONFIG_GPIO_HOG=y ++CONFIG_LED=y ++CONFIG_LED_GPIO=y ++CONFIG_MMC_HS200_SUPPORT=y ++CONFIG_MMC_MTK=y ++CONFIG_MTD=y ++CONFIG_DM_MTD=y ++CONFIG_MTD_SPI_NAND=y ++CONFIG_PHY_FIXED=y ++CONFIG_MEDIATEK_ETH=y ++CONFIG_PCIE_MEDIATEK=y ++CONFIG_PHY=y ++CONFIG_PHY_MTK_TPHY=y ++CONFIG_PINCTRL=y ++CONFIG_PINCONF=y ++CONFIG_PINCTRL_MT7622=y ++CONFIG_POWER_DOMAIN=y ++CONFIG_MTK_POWER_DOMAIN=y ++CONFIG_DM_REGULATOR=y ++CONFIG_DM_REGULATOR_FIXED=y ++CONFIG_RAM=y ++CONFIG_DM_SERIAL=y ++CONFIG_MTK_SERIAL=y ++CONFIG_SPI=y ++CONFIG_DM_SPI=y ++CONFIG_MTK_SNFI_SPI=y ++CONFIG_USB=y ++CONFIG_USB_XHCI_HCD=y ++CONFIG_USB_XHCI_MTK=y ++CONFIG_USB_STORAGE=y ++CONFIG_FAT_WRITE=y ++CONFIG_HEXDUMP=y +-- +2.43.0 + diff --git a/utils/mkimage.sh b/utils/mkimage.sh index 41698182..882d34ba 100755 --- a/utils/mkimage.sh +++ b/utils/mkimage.sh @@ -186,6 +186,13 @@ get_bootloader_name() echo "bpi_r3_sd_boot" fi ;; + bananapi-bpi-r64) + if [ "$target" = "emmc" ]; then + echo "bpi_r64_emmc_boot" + else + echo "bpi_r64_sd_boot" + fi + ;; friendlyarm-nanopi-r2s) echo "nanopi_r2s_boot" ;;