mirror of
https://github.com/kernelkit/infix.git
synced 2026-07-30 04:33:00 +02:00
Merge pull request #1430 from kernelkit/bpi-r64
Add support for Banana Pi BPi-R64 Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
This commit is contained in:
@@ -19,6 +19,8 @@ jobs:
|
|||||||
- aarch64_qemu_boot
|
- aarch64_qemu_boot
|
||||||
- bpi_r3_sd_boot
|
- bpi_r3_sd_boot
|
||||||
- bpi_r3_emmc_boot
|
- bpi_r3_emmc_boot
|
||||||
|
- bpi_r64_sd_boot
|
||||||
|
- bpi_r64_emmc_boot
|
||||||
- cn9130_crb_boot
|
- cn9130_crb_boot
|
||||||
- fireant_boot
|
- fireant_boot
|
||||||
- nanopi_r2s_boot
|
- nanopi_r2s_boot
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ on:
|
|||||||
- raspberrypi-rpi2
|
- raspberrypi-rpi2
|
||||||
- raspberrypi-rpi64
|
- raspberrypi-rpi64
|
||||||
- bananapi-bpi-r3
|
- bananapi-bpi-r3
|
||||||
|
- bananapi-bpi-r64
|
||||||
- friendlyarm-nanopi-r2s
|
- friendlyarm-nanopi-r2s
|
||||||
- microchip-sama7g54-ek
|
- microchip-sama7g54-ek
|
||||||
default: 'raspberrypi-rpi64'
|
default: 'raspberrypi-rpi64'
|
||||||
@@ -67,6 +68,12 @@ jobs:
|
|||||||
echo "ARCH=aarch64" >> $GITHUB_ENV
|
echo "ARCH=aarch64" >> $GITHUB_ENV
|
||||||
echo "BUILD_EMMC=true" >> $GITHUB_ENV
|
echo "BUILD_EMMC=true" >> $GITHUB_ENV
|
||||||
;;
|
;;
|
||||||
|
bananapi-bpi-r64)
|
||||||
|
echo "BOOTLOADER_SD=bpi-r64-sd-boot" >> $GITHUB_ENV
|
||||||
|
echo "BOOTLOADER_EMMC=bpi-r64-emmc-boot" >> $GITHUB_ENV
|
||||||
|
echo "ARCH=aarch64" >> $GITHUB_ENV
|
||||||
|
echo "BUILD_EMMC=true" >> $GITHUB_ENV
|
||||||
|
;;
|
||||||
friendlyarm-nanopi-r2s)
|
friendlyarm-nanopi-r2s)
|
||||||
echo "BOOTLOADER=nanopi-r2s-boot" >> $GITHUB_ENV
|
echo "BOOTLOADER=nanopi-r2s-boot" >> $GITHUB_ENV
|
||||||
echo "ARCH=aarch64" >> $GITHUB_ENV
|
echo "ARCH=aarch64" >> $GITHUB_ENV
|
||||||
|
|||||||
@@ -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/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-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/freescale-imx8mp-evk/Config.in"
|
||||||
source "$BR2_EXTERNAL_INFIX_PATH/board/aarch64/friendlyarm-nanopi-r2s/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"
|
source "$BR2_EXTERNAL_INFIX_PATH/board/aarch64/marvell-cn9130-crb/Config.in"
|
||||||
|
|||||||
@@ -4,7 +4,8 @@ aarch64
|
|||||||
Board Specific Documentation
|
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/)
|
- [Marvell CN9130-CRB](cn9130-crb/)
|
||||||
- [Microchip SparX-5i PCB135 (eMMC)](sparx5-pcb135/)
|
- [Microchip SparX-5i PCB135 (eMMC)](sparx5-pcb135/)
|
||||||
- [NanoPi R2S](r2s/)
|
- [NanoPi R2S](r2s/)
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -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.
|
||||||
@@ -0,0 +1,143 @@
|
|||||||
|
# Banana Pi BPI-R64
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
<img align="right" src="banana_pi_bpi-r64_interface.jpg" alt="Board Overview" width=400 padding=10>
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
<img align="right" src="bpi-r64-sw1.png" alt="SW1 Boot Switch" width=90 padding=10>
|
||||||
|
|
||||||
|
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`):
|
||||||
|
|
||||||
|
<img align="right" src="debug-uart.png" alt="Debug UART" width=100 padding=10>
|
||||||
|
|
||||||
|
```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
|
||||||
|
```
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 228 KiB |
@@ -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))
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 120 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 96 KiB |
@@ -0,0 +1 @@
|
|||||||
|
dtb-y += mediatek/mt7622-bananapi-bpi-r64.dtb
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
#include <arm64/mediatek/mt7622-bananapi-bpi-r64.dts>
|
||||||
|
|
||||||
|
#include "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";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
@@ -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"
|
||||||
|
}
|
||||||
|
}
|
||||||
+437
@@ -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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+14
@@ -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"
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
CONFIG_DEVICE_TREE_INCLUDES="infix-env.dtsi infix-key.dtsi mt7622-emmc-env.dtsi"
|
||||||
|
CONFIG_SUPPORT_EMMC_BOOT=y
|
||||||
@@ -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
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
#include <mt7622-env.dtsi>
|
||||||
|
|
||||||
|
&env {
|
||||||
|
fdtfile = "mediatek/mt7622-bananapi-bpi-r64.dtb";
|
||||||
|
};
|
||||||
@@ -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";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
#include <mt7622-env.dtsi>
|
||||||
|
|
||||||
|
&env {
|
||||||
|
boot_targets = "mmc1"; /* SD = mmc1 on MT7622 */
|
||||||
|
fdtfile = "mediatek/mt7622-bananapi-bpi-r64.dtb";
|
||||||
|
};
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
CONFIG_DEVICE_TREE_INCLUDES="infix-env.dtsi infix-key.dtsi mt7622-sd-env.dtsi"
|
||||||
@@ -35,7 +35,4 @@ fixup_file=fixup4.dat
|
|||||||
dtoverlay=vc4-kms-v3d-pi4
|
dtoverlay=vc4-kms-v3d-pi4
|
||||||
lcd_rotate=2
|
lcd_rotate=2
|
||||||
|
|
||||||
# Prevent console on DSI
|
|
||||||
console=map:0
|
|
||||||
|
|
||||||
gpu_mem=256
|
gpu_mem=256
|
||||||
|
|||||||
@@ -43,8 +43,8 @@ image #INFIX_ID##VERSION#-rpi64-sdcard.img {
|
|||||||
|
|
||||||
partition boot {
|
partition boot {
|
||||||
partition-type = 0xc
|
partition-type = 0xc
|
||||||
bootable = "true"
|
|
||||||
image = "boot.vfat"
|
image = "boot.vfat"
|
||||||
|
bootable = "true"
|
||||||
}
|
}
|
||||||
|
|
||||||
partition aux {
|
partition aux {
|
||||||
@@ -54,16 +54,14 @@ image #INFIX_ID##VERSION#-rpi64-sdcard.img {
|
|||||||
|
|
||||||
partition primary {
|
partition primary {
|
||||||
partition-type-uuid = linux
|
partition-type-uuid = linux
|
||||||
bootable = "true"
|
|
||||||
size = 250M
|
|
||||||
image = "rootfs.squashfs"
|
image = "rootfs.squashfs"
|
||||||
|
size = 250M
|
||||||
}
|
}
|
||||||
|
|
||||||
partition secondary {
|
partition secondary {
|
||||||
partition-type-uuid = linux
|
partition-type-uuid = linux
|
||||||
bootable = "true"
|
|
||||||
size = 250M
|
|
||||||
image = "rootfs.squashfs"
|
image = "rootfs.squashfs"
|
||||||
|
size = 250M
|
||||||
}
|
}
|
||||||
|
|
||||||
partition cfg {
|
partition cfg {
|
||||||
|
|||||||
+312
@@ -0,0 +1,312 @@
|
|||||||
|
{
|
||||||
|
"ieee802-dot1ab-lldp:lldp": {
|
||||||
|
"infix-lldp:enabled": true
|
||||||
|
},
|
||||||
|
"ietf-hardware:hardware": {
|
||||||
|
"component": [
|
||||||
|
{
|
||||||
|
"name": "USB1",
|
||||||
|
"class": "infix-hardware:usb",
|
||||||
|
"state": {
|
||||||
|
"admin-state": "unlocked"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "USB2",
|
||||||
|
"class": "infix-hardware:usb",
|
||||||
|
"state": {
|
||||||
|
"admin-state": "unlocked"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "USB3",
|
||||||
|
"class": "infix-hardware:usb",
|
||||||
|
"state": {
|
||||||
|
"admin-state": "unlocked"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "radio0",
|
||||||
|
"class": "infix-hardware:wifi",
|
||||||
|
"infix-hardware:wifi-radio": {
|
||||||
|
"country-code": "00"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"ietf-interfaces:interfaces": {
|
||||||
|
"interface": [
|
||||||
|
{
|
||||||
|
"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": "eth0",
|
||||||
|
"type": "infix-if-type:ethernet",
|
||||||
|
"ietf-ip:ipv6": {},
|
||||||
|
"ietf-ip:ipv4": {
|
||||||
|
"infix-dhcp-client:dhcp": {
|
||||||
|
"option": [
|
||||||
|
{
|
||||||
|
"id": "netmask"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "broadcast"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "router"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "domain"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "hostname"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "dns-server"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "ntp-server"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "vendor-class",
|
||||||
|
"value": "Raspberry Pi 400"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "wifi0",
|
||||||
|
"type": "infix-if-type:wifi",
|
||||||
|
"infix-interfaces:wifi": {
|
||||||
|
"radio": "radio0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"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": {}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"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": "rpi-%m",
|
||||||
|
"ntp": {
|
||||||
|
"enabled": true,
|
||||||
|
"server": [
|
||||||
|
{
|
||||||
|
"name": "ntp.org",
|
||||||
|
"udp": {
|
||||||
|
"address": "pool.ntp.org"
|
||||||
|
},
|
||||||
|
"iburst": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"authentication": {
|
||||||
|
"user": [
|
||||||
|
{
|
||||||
|
"name": "admin",
|
||||||
|
"password": "$factory$",
|
||||||
|
"infix-system:shell": "bash"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"infix-system:motd-banner": "Li0tLS0tLS0uCnwgIC4gLiAgfCBJbmZpeCBPUyDigJQgSW1tdXRhYmxlLkZyaWVuZGx5LlNlY3VyZQp8LS4gdiAuLXwgaHR0cHM6Ly9rZXJuZWxraXQub3JnCictJy0tLSctJwo="
|
||||||
|
},
|
||||||
|
"infix-meta:meta": {
|
||||||
|
"version": "1.7"
|
||||||
|
},
|
||||||
|
"infix-services:mdns": {
|
||||||
|
"enabled": true
|
||||||
|
},
|
||||||
|
"infix-services:web": {
|
||||||
|
"enabled": true,
|
||||||
|
"console": {
|
||||||
|
"enabled": true
|
||||||
|
},
|
||||||
|
"netbrowse": {
|
||||||
|
"enabled": true
|
||||||
|
},
|
||||||
|
"restconf": {
|
||||||
|
"enabled": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"infix-services:ssh": {
|
||||||
|
"enabled": true,
|
||||||
|
"hostkey": [
|
||||||
|
"genkey"
|
||||||
|
],
|
||||||
|
"listen": [
|
||||||
|
{
|
||||||
|
"name": "ipv4",
|
||||||
|
"address": "0.0.0.0",
|
||||||
|
"port": 22
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "ipv6",
|
||||||
|
"address": "::",
|
||||||
|
"port": 22
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
+10
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"eth0": {
|
||||||
|
"comment": "Primary Ethernet controller, native on BCM2711, and smsc95xx on BCM2837",
|
||||||
|
"phy-detached-when-down": true
|
||||||
|
},
|
||||||
|
"@ethtool:driver=smsc95xx": {
|
||||||
|
"comment": "BCM2837 smsc95xx driver does not support disabling flow control",
|
||||||
|
"broken-flow-control": true
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
# Authorize USB devices on buses that Infix has unlocked (authorized_default=1).
|
||||||
|
#
|
||||||
|
# With usbcore.authorized_default=2 only DT-marked hard-wired ports are
|
||||||
|
# auto-authorized by the kernel. When confd unlocks a bus it sets
|
||||||
|
# authorized_default=1 on the root hub and uses nftw to authorize already-
|
||||||
|
# present devices. However, devices behind an intermediate hub may appear
|
||||||
|
# asynchronously — after nftw has already finished — because hub port probing
|
||||||
|
# is slow. This rule catches those out-of-band additions: if a device arrives
|
||||||
|
# unauthorized (authorized=0) on a bus where confd has set authorized_default=1
|
||||||
|
# on any ancestor root hub, authorize it immediately.
|
||||||
|
#
|
||||||
|
# Note: ATTRS{} matches the attribute on the device itself or any parent,
|
||||||
|
# so authorized_default=1 on the root hub (usbN) is found even for devices
|
||||||
|
# connected through one or more intermediate hubs. Locked buses keep
|
||||||
|
# authorized_default=0, so this rule correctly leaves them alone.
|
||||||
|
ACTION=="add", SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", \
|
||||||
|
ATTR{authorized}=="0", \
|
||||||
|
ATTRS{authorized_default}=="1", \
|
||||||
|
RUN+="/bin/sh -c 'echo 1 > /sys%p/authorized'"
|
||||||
@@ -433,7 +433,13 @@ def probe_qemusystem(out):
|
|||||||
|
|
||||||
|
|
||||||
def generic_usb_ports(out):
|
def generic_usb_ports(out):
|
||||||
"""Generic USB port discovery - works for all systems"""
|
"""Generic USB port discovery - works for all systems.
|
||||||
|
|
||||||
|
Each root hub gets its own uniquely-named entry so it can be independently
|
||||||
|
enabled or disabled. Boards that need explicit per-port control (e.g. to
|
||||||
|
exclude internal buses) should annotate their DT with usb-ports /
|
||||||
|
usb-port-names in the chosen/infix node instead.
|
||||||
|
"""
|
||||||
ports = []
|
ports = []
|
||||||
usb_base = "/sys/bus/usb/devices"
|
usb_base = "/sys/bus/usb/devices"
|
||||||
|
|
||||||
@@ -441,26 +447,22 @@ def generic_usb_ports(out):
|
|||||||
return
|
return
|
||||||
|
|
||||||
for entry in sorted(os.listdir(usb_base)):
|
for entry in sorted(os.listdir(usb_base)):
|
||||||
# Only look at root hubs (usbN)
|
|
||||||
if not entry.startswith("usb"):
|
if not entry.startswith("usb"):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
device_path = os.path.join(usb_base, entry)
|
device_path = os.path.join(usb_base, entry)
|
||||||
# Check if this is a root hub (has authorized files)
|
if not os.path.exists(os.path.join(device_path, "authorized")):
|
||||||
if os.path.exists(os.path.join(device_path, "authorized")):
|
continue
|
||||||
# Extract number from usbN
|
num = entry.replace("usb", "")
|
||||||
num = entry.replace("usb", "")
|
ports.append({"num": num, "path": device_path})
|
||||||
ports.append({
|
|
||||||
"num": num,
|
|
||||||
"path": device_path
|
|
||||||
})
|
|
||||||
|
|
||||||
# Name ports: "USB" for single port, "USB1", "USB2", etc. for multiple
|
if not ports:
|
||||||
if ports:
|
return
|
||||||
if len(ports) == 1:
|
|
||||||
out["usb-ports"] = [{"name": "USB", "path": ports[0]["path"]}]
|
# Single bus → "USB"; multiple → "USB1", "USB2", ... (by bus number)
|
||||||
else:
|
if len(ports) == 1:
|
||||||
out["usb-ports"] = [{"name": f"USB{p['num']}", "path": p["path"]} for p in ports]
|
out["usb-ports"] = [{"name": "USB", "path": ports[0]["path"]}]
|
||||||
|
else:
|
||||||
|
out["usb-ports"] = [{"name": f"USB{p['num']}", "path": p["path"]} for p in ports]
|
||||||
|
|
||||||
|
|
||||||
def probe_dmisystem(out):
|
def probe_dmisystem(out):
|
||||||
|
|||||||
@@ -5,24 +5,21 @@
|
|||||||
# interfaces at boot, such that physical interfaces will start from
|
# interfaces at boot, such that physical interfaces will start from
|
||||||
# the same point as virtual ones.
|
# the same point as virtual ones.
|
||||||
tmp=$(mktemp)
|
tmp=$(mktemp)
|
||||||
fil=$(mktemp)
|
out=$(mktemp)
|
||||||
|
|
||||||
# Ignore unreadable entries, like net.ipv6.conf.default.stable_secret
|
# Ignore unreadable entries, like net.ipv6.conf.default.stable_secret
|
||||||
sysctl net.ipv4.conf.default >"$tmp" 2>/dev/null
|
sysctl net.ipv4.conf.default >"$tmp" 2>/dev/null
|
||||||
sysctl net.ipv6.conf.default >>"$tmp" 2>/dev/null
|
sysctl net.ipv6.conf.default >>"$tmp" 2>/dev/null
|
||||||
|
|
||||||
# Filter out read-only entries like net.ipv4.conf.default.mc_forwarding
|
# Build a single sysctl input with settings for all interfaces
|
||||||
# to prevent misleading error messages in syslog
|
for dir in /sys/class/net/*/; do
|
||||||
while IFS= read -r line; do
|
iface=${dir%/}
|
||||||
entry=$(echo "$line" | awk '{print $1}')
|
iface=${iface##*/}
|
||||||
path="/proc/sys/$(echo "$entry" | tr . /)"
|
sed "s/.default./.${iface}./g" "$tmp" >> "$out"
|
||||||
if [ -w "$path" ]; then
|
|
||||||
echo "$line" >> "$fil"
|
|
||||||
fi
|
|
||||||
done < "$tmp"
|
|
||||||
|
|
||||||
for iface in $(ip -j link show | jq -r .[].ifname); do
|
|
||||||
sed -e "s/.default./.${iface}./g" "$fil" | sysctl -q -p -
|
|
||||||
done
|
done
|
||||||
|
|
||||||
rm "$tmp" "$fil"
|
# Apply all at once, suppress errors from read-only entries
|
||||||
|
# (e.g., net.ipv4.conf.*.mc_forwarding)
|
||||||
|
sysctl -q -p - < "$out" 2>/dev/null
|
||||||
|
|
||||||
|
rm "$tmp" "$out"
|
||||||
|
|||||||
@@ -59,17 +59,9 @@ is_mmc()
|
|||||||
{
|
{
|
||||||
[ -n "$mmc" ] && return $mmc
|
[ -n "$mmc" ] && return $mmc
|
||||||
|
|
||||||
# Check if primary or secondary partition (our rootfs) is on MMC
|
# Fast sysfs check — avoids triggering the slow partition scan
|
||||||
for label in primary secondary; do
|
for d in /sys/class/block/mmcblk[0-9]; do
|
||||||
devname=$(find_partition_by_label "$label" 2>/dev/null)
|
[ -d "$d" ] && mmc=0 && return 0
|
||||||
if [ -n "$devname" ]; then
|
|
||||||
case "$devname" in
|
|
||||||
mmcblk*)
|
|
||||||
mmc=0
|
|
||||||
return 0
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
done
|
done
|
||||||
|
|
||||||
mmc=1
|
mmc=1
|
||||||
@@ -78,77 +70,67 @@ is_mmc()
|
|||||||
|
|
||||||
wait_mmc()
|
wait_mmc()
|
||||||
{
|
{
|
||||||
# Try up to 50 times with 0.2s sleep = 10 second timeout
|
tries=50
|
||||||
for _ in $(seq 50); do
|
while [ $tries -gt 0 ]; do
|
||||||
if ls /dev/mmcblk* >/dev/null 2>&1; then
|
for d in /dev/mmcblk[0-9]; do
|
||||||
logger $opt -p user.notice -t "$nm" "MMC device available after delay"
|
if [ -b "$d" ]; then
|
||||||
return 0
|
logger $opt -p user.notice -t "$nm" "MMC device available after delay"
|
||||||
fi
|
return 0
|
||||||
sleep .2
|
fi
|
||||||
|
done
|
||||||
|
sleep .2
|
||||||
|
tries=$((tries - 1))
|
||||||
done
|
done
|
||||||
|
|
||||||
logger $opt -p user.warn -t "$nm" "Timeout waiting for MMC device"
|
logger $opt -p user.warn -t "$nm" "Timeout waiting for MMC device"
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
# This early on we don't have the luxury of /dev/disk/by-label/$1
|
# Read filesystem label from an ext2/3/4 formatted whole disk.
|
||||||
|
# Superblock is at byte 1024, magic 0xEF53 at offset 56, label at 120.
|
||||||
|
# Handles both LE and BE byte order (bi-endian MIPS, etc.)
|
||||||
|
read_ext_label()
|
||||||
|
{
|
||||||
|
magic=$(dd if="$1" bs=1 skip=1080 count=2 2>/dev/null \
|
||||||
|
| od -t x2 -An | tr -d ' \n')
|
||||||
|
case "$magic" in
|
||||||
|
ef53|53ef) ;;
|
||||||
|
*) return 1 ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
dd if="$1" bs=1 skip=1144 count=16 2>/dev/null | tr -d '\000'
|
||||||
|
}
|
||||||
|
|
||||||
|
# Look up a block device by its GPT partition name using the kernel's
|
||||||
|
# sysfs uevent data (zero forks). Falls back to reading the ext2/3/4
|
||||||
|
# superblock for whole disks without GPT (e.g., virtual or USB setups).
|
||||||
find_partition_by_label()
|
find_partition_by_label()
|
||||||
{
|
{
|
||||||
label="$1"
|
# The kernel exposes GPT partition names as PARTNAME in uevent
|
||||||
|
for uevent in /sys/class/block/*/uevent; do
|
||||||
for diskpath in /sys/class/block/*; do
|
while IFS='=' read -r key val; do
|
||||||
devname=$(basename "$diskpath")
|
if [ "$key" = "PARTNAME" ]; then
|
||||||
|
if [ "$val" = "$1" ]; then
|
||||||
# Skip partitions, only check whole disks
|
devname="${uevent%/uevent}"
|
||||||
[ -f "$diskpath/partition" ] && continue
|
echo "${devname##*/}"
|
||||||
|
return 0
|
||||||
# Skip ram, loop, and other virtual devices
|
fi
|
||||||
case "$devname" in
|
break
|
||||||
ram*|loop*|nullb*|dm-*) continue ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
disk="/dev/$devname"
|
|
||||||
|
|
||||||
#
|
|
||||||
# 1. Try GPT/MBR partition label using sgdisk
|
|
||||||
#
|
|
||||||
result=$(sgdisk -p "$disk" 2>/dev/null | awk -v label="$label" -v devname="$devname" '
|
|
||||||
/^ *[0-9]/ {
|
|
||||||
if ($7 == label) {
|
|
||||||
if (devname ~ /^(mmcblk|nvme|loop)/)
|
|
||||||
print devname "p" $1;
|
|
||||||
else
|
|
||||||
print devname $1;
|
|
||||||
exit 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
')
|
|
||||||
|
|
||||||
if [ -n "$result" ]; then
|
|
||||||
echo "$result"
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
#
|
|
||||||
# 2. Fallback: Check if the whole disk is an ext4/ext2/ext3 filesystem
|
|
||||||
#
|
|
||||||
|
|
||||||
# Check for ext4/ext2/ext3 magic number (0xEF53) at offset 1080 (1024+56).
|
|
||||||
magic_number=$(dd if="$disk" bs=1 skip=1080 count=2 2>/dev/null | od -t x2 -A n | tr -d ' \n')
|
|
||||||
|
|
||||||
# Check for both Little-Endian ('53ef') and Big-Endian ('ef53') interpretations of 0xEF53.
|
|
||||||
# This supports bi-endian architectures like MIPS that may run in BE mode,
|
|
||||||
# as well as the LE mode which is standard for RISC-V and ext filesystems.
|
|
||||||
if [ "$magic_number" = "ef53" ] || [ "$magic_number" = "53ef" ]; then
|
|
||||||
|
|
||||||
# Read the volume label from offset 1144 (1024+120)
|
|
||||||
fslabel=$(dd if="$disk" bs=1 skip=1144 count=16 2>/dev/null | tr -d '\000')
|
|
||||||
logger $opt -p user.notice -t "$nm" "Found label $fslabel on disk $disk ..."
|
|
||||||
|
|
||||||
if [ "$fslabel" = "$label" ]; then
|
|
||||||
echo "$devname"
|
|
||||||
return 0
|
|
||||||
fi
|
fi
|
||||||
|
done < "$uevent"
|
||||||
|
done
|
||||||
|
|
||||||
|
# Fallback: ext filesystem label on whole disk
|
||||||
|
for diskpath in /sys/class/block/*; do
|
||||||
|
[ -f "$diskpath/partition" ] && continue
|
||||||
|
devname="${diskpath##*/}"
|
||||||
|
case "$devname" in
|
||||||
|
ram*|loop*|nullb*|dm-*|*boot[0-9]*|*rpmb) continue ;;
|
||||||
|
esac
|
||||||
|
fslabel=$(read_ext_label "/dev/$devname")
|
||||||
|
if [ "$fslabel" = "$1" ]; then
|
||||||
|
echo "$devname"
|
||||||
|
return 0
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
@@ -319,12 +301,6 @@ mount_rw()
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# TODO: Also look for UBI partitions
|
|
||||||
|
|
||||||
# Disable periodic fsck, yet keeping safety checks on ext4
|
|
||||||
if grep "LABEL=$label" /etc/fstab |grep -q ext4; then
|
|
||||||
tune2fs -c 0 -i 0 LABEL="$1" 2>/dev/null
|
|
||||||
fi
|
|
||||||
mount LABEL="$1" 2>/dev/null && return 0
|
mount LABEL="$1" 2>/dev/null && return 0
|
||||||
|
|
||||||
return 1
|
return 1
|
||||||
|
|||||||
+1
-1
Submodule buildroot updated: 7323ef2c85...48dfe86868
@@ -134,6 +134,7 @@ BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT=y
|
|||||||
BR2_PACKAGE_HOST_UBOOT_TOOLS_FDT_ADD_PUBKEY=y
|
BR2_PACKAGE_HOST_UBOOT_TOOLS_FDT_ADD_PUBKEY=y
|
||||||
BR2_PACKAGE_ALDER_ALDER=y
|
BR2_PACKAGE_ALDER_ALDER=y
|
||||||
BR2_PACKAGE_BANANAPI_BPI_R3=y
|
BR2_PACKAGE_BANANAPI_BPI_R3=y
|
||||||
|
BR2_PACKAGE_BANANAPI_BPI_R64=y
|
||||||
BR2_PACKAGE_FRIENDLYARM_NANOPI_R2S=y
|
BR2_PACKAGE_FRIENDLYARM_NANOPI_R2S=y
|
||||||
BR2_PACKAGE_MARVELL_CN9130_CRB=y
|
BR2_PACKAGE_MARVELL_CN9130_CRB=y
|
||||||
BR2_PACKAGE_MARVELL_ESPRESSOBIN=y
|
BR2_PACKAGE_MARVELL_ESPRESSOBIN=y
|
||||||
|
|||||||
@@ -113,6 +113,7 @@ BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT=y
|
|||||||
BR2_PACKAGE_HOST_UBOOT_TOOLS_FDT_ADD_PUBKEY=y
|
BR2_PACKAGE_HOST_UBOOT_TOOLS_FDT_ADD_PUBKEY=y
|
||||||
BR2_PACKAGE_ALDER_ALDER=y
|
BR2_PACKAGE_ALDER_ALDER=y
|
||||||
BR2_PACKAGE_BANANAPI_BPI_R3=y
|
BR2_PACKAGE_BANANAPI_BPI_R3=y
|
||||||
|
BR2_PACKAGE_BANANAPI_BPI_R64=y
|
||||||
BR2_PACKAGE_FRIENDLYARM_NANOPI_R2S=y
|
BR2_PACKAGE_FRIENDLYARM_NANOPI_R2S=y
|
||||||
BR2_PACKAGE_MARVELL_CN9130_CRB=y
|
BR2_PACKAGE_MARVELL_CN9130_CRB=y
|
||||||
BR2_PACKAGE_MARVELL_ESPRESSOBIN=y
|
BR2_PACKAGE_MARVELL_ESPRESSOBIN=y
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -9,6 +9,8 @@ All notable changes to the project are documented in this file.
|
|||||||
### Changes
|
### Changes
|
||||||
|
|
||||||
- Upgrade Linux kernel to 6.18.16 (LTS)
|
- Upgrade Linux kernel to 6.18.16 (LTS)
|
||||||
|
- Add support for [Banana Pi R64 Mini][BPI-R64], 5 port router with WiFi 5
|
||||||
|
- Add support for [Raspberry Pi 400][RPI-400], an RPi 4B built into a keyboard
|
||||||
- **Revamped <http://network.local> device browser**. Device cards now
|
- **Revamped <http://network.local> device browser**. Device cards now
|
||||||
show the IP address, product name, and firmware version from mDNS TXT
|
show the IP address, product name, and firmware version from mDNS TXT
|
||||||
records. the mDNS browser is now also available over plain HTTP
|
records. the mDNS browser is now also available over plain HTTP
|
||||||
@@ -38,6 +40,9 @@ All notable changes to the project are documented in this file.
|
|||||||
- Fix regression in MVEBU SafeXcel Crypto Engine for Marvell Armada SOCs (37xx,
|
- Fix regression in MVEBU SafeXcel Crypto Engine for Marvell Armada SOCs (37xx,
|
||||||
7k, 8k, and CN913x series). Firmware package lost in v26.01.0
|
7k, 8k, and CN913x series). Firmware package lost in v26.01.0
|
||||||
|
|
||||||
|
[BPI-R64]: https://docs.banana-pi.org/en/BPI-R64/BananaPi_BPI-R64
|
||||||
|
[RPI-400]: https://www.raspberrypi.com/products/raspberry-pi-400/
|
||||||
|
|
||||||
[v26.02.0][] - 2026-03-01
|
[v26.02.0][] - 2026-03-01
|
||||||
-------------------------
|
-------------------------
|
||||||
|
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ config BR2_PACKAGE_FEATURE_WIFI_MEDIATEK
|
|||||||
select BR2_PACKAGE_LINUX_FIRMWARE
|
select BR2_PACKAGE_LINUX_FIRMWARE
|
||||||
select BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7601U
|
select BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7601U
|
||||||
select BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7610E
|
select BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7610E
|
||||||
|
select BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7615
|
||||||
select BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT76X2E
|
select BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT76X2E
|
||||||
select BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7921
|
select BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7921
|
||||||
select BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7922
|
select BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7922
|
||||||
|
|||||||
@@ -0,0 +1,133 @@
|
|||||||
|
From 7f50533b9e57f5e7d1e4dd47c3f43e2d6a9c8b1a Mon Sep 17 00:00:00 2001
|
||||||
|
From: Joachim Wiberg <troglobit@gmail.com>
|
||||||
|
Date: Sun, 8 Mar 2026 04:33:56 +0100
|
||||||
|
Subject: [PATCH] hdimage: add gpt-protective-first option for hybrid MBR
|
||||||
|
Organization: Wires
|
||||||
|
|
||||||
|
In a hybrid MBR the conventional layout (used by gdisk and others) is:
|
||||||
|
|
||||||
|
MBR[0] = 0xEE (GPT protective, covers whole disk)
|
||||||
|
MBR[1..3] = user-selected GPT partitions with legacy type codes
|
||||||
|
|
||||||
|
genimage currently appends the 0xEE entry after the data partitions,
|
||||||
|
producing the opposite order. This is fine for most platforms, but
|
||||||
|
breaks firmware that detects GPT by inspecting only MBR entry 0: seeing
|
||||||
|
a non-0xEE type there it falls into pure-MBR mode and cannot look up
|
||||||
|
GPT partitions by name.
|
||||||
|
|
||||||
|
The TF-A partition driver (drivers/partition/partition.c) exhibits
|
||||||
|
exactly this behaviour: load_mbr_header() copies entry[0] and checks
|
||||||
|
type == 0xEE to select between MBR and GPT mode. The MediaTek MT7622
|
||||||
|
platform (BananaPi BPI-R64) is a concrete example where this matters.
|
||||||
|
|
||||||
|
On the other hand, Raspberry Pi firmware scans all MBR slots for a
|
||||||
|
bootable FAT32 partition. If slot 0 holds a 0xEE protective entry the
|
||||||
|
firmware switches to GPT detection, looks for an EFI System Partition
|
||||||
|
UUID, and reports "no bootable partitions" when none is found.
|
||||||
|
|
||||||
|
Add an opt-in hdimage option `gpt-protective-first = true` that places
|
||||||
|
the 0xEE entry at slot 0 and shifts data partitions to slots 1..3.
|
||||||
|
The default (false) preserves the existing genimage behaviour so that
|
||||||
|
platforms like Raspberry Pi continue to work without any changes.
|
||||||
|
|
||||||
|
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
|
||||||
|
---
|
||||||
|
README.rst | 10 ++++++++++
|
||||||
|
image-hd.c | 27 ++++++++++++++++++++++-----
|
||||||
|
2 files changed, 32 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/README.rst b/README.rst
|
||||||
|
index 9a95f75..f45fb93 100644
|
||||||
|
--- a/README.rst
|
||||||
|
+++ b/README.rst
|
||||||
|
@@ -480,6 +480,16 @@ Options:
|
||||||
|
placed at 512 bytes (sector 1). Defaults to 1024 bytes (sector 2).
|
||||||
|
:gpt-no-backup: Boolean. If true, then the backup partition table at the end of
|
||||||
|
the image is not written.
|
||||||
|
+:gpt-protective-first: Boolean. If true, then for ``hybrid`` partition tables, the GPT
|
||||||
|
+ protective entry (type ``0xEE``) is placed at MBR slot 0 and
|
||||||
|
+ data partitions fill slots 1..3. This matches the layout
|
||||||
|
+ produced by tools such as gdisk and is required by firmware
|
||||||
|
+ that identifies GPT disks by inspecting only MBR entry 0 —
|
||||||
|
+ for example the TF-A partition driver used on MediaTek MT7622
|
||||||
|
+ (BananaPi BPI-R64). When false (the default), the 0xEE entry
|
||||||
|
+ is placed after the data partitions, which is compatible with
|
||||||
|
+ firmware that scans MBR slots for a bootable partition (e.g.
|
||||||
|
+ Raspberry Pi).
|
||||||
|
:disk-uuid: UUID string used as disk id in GPT partitioning. Defaults to a
|
||||||
|
random value.
|
||||||
|
:fill: If this is set to true, then the image file will be filled
|
||||||
|
diff --git a/image-hd.c b/image-hd.c
|
||||||
|
index 274c6ac..610d9d1 100644
|
||||||
|
--- a/image-hd.c
|
||||||
|
+++ b/image-hd.c
|
||||||
|
@@ -46,6 +46,7 @@ struct hdimage {
|
||||||
|
int table_type;
|
||||||
|
unsigned long long gpt_location;
|
||||||
|
cfg_bool_t gpt_no_backup;
|
||||||
|
+ cfg_bool_t gpt_protective_first;
|
||||||
|
cfg_bool_t fill;
|
||||||
|
unsigned long long file_size;
|
||||||
|
};
|
||||||
|
@@ -152,6 +153,26 @@ static int hdimage_insert_mbr(struct image *image, struct list_head *partitions)
|
||||||
|
memset(&mbr, 0, sizeof(mbr));
|
||||||
|
memcpy(&mbr.disk_signature, &hd->disksig, sizeof(hd->disksig));
|
||||||
|
|
||||||
|
+ /*
|
||||||
|
+ * For hybrid MBR, optionally write the GPT protective entry (0xEE) at
|
||||||
|
+ * slot 0 first when gpt-protective-first = true. This matches the
|
||||||
|
+ * conventional layout used by tools such as gdisk and is required by
|
||||||
|
+ * firmware that detects GPT by inspecting only MBR[0] (e.g. the TF-A
|
||||||
|
+ * partition driver on MediaTek MT7622). Leave slot 0 free by default
|
||||||
|
+ * so that firmware scanning for a bootable MBR partition (e.g.
|
||||||
|
+ * Raspberry Pi) can find data partitions at slots 0..2.
|
||||||
|
+ */
|
||||||
|
+ if (hd->table_type == TYPE_HYBRID && hd->gpt_protective_first) {
|
||||||
|
+ struct mbr_partition_entry *entry = &mbr.part_entry[0];
|
||||||
|
+
|
||||||
|
+ entry->boot = 0x00;
|
||||||
|
+ entry->partition_type = 0xee;
|
||||||
|
+ entry->relative_sectors = 1;
|
||||||
|
+ entry->total_sectors = hd->gpt_location / 512 + GPT_SECTORS - 2;
|
||||||
|
+ hdimage_setup_chs(entry, 0);
|
||||||
|
+ i = 1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
list_for_each_entry(part, partitions, list) {
|
||||||
|
struct mbr_partition_entry *entry;
|
||||||
|
|
||||||
|
@@ -176,13 +197,13 @@ static int hdimage_insert_mbr(struct image *image, struct list_head *partitions)
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (hd->table_type == TYPE_HYBRID) {
|
||||||
|
+ /* For hybrid MBR without gpt-protective-first, append 0xEE after data partitions. */
|
||||||
|
+ if (hd->table_type == TYPE_HYBRID && !hd->gpt_protective_first) {
|
||||||
|
struct mbr_partition_entry *entry;
|
||||||
|
|
||||||
|
entry = &mbr.part_entry[i];
|
||||||
|
|
||||||
|
entry->boot = 0x00;
|
||||||
|
-
|
||||||
|
entry->partition_type = 0xee;
|
||||||
|
entry->relative_sectors = 1;
|
||||||
|
entry->total_sectors = hd->gpt_location / 512 + GPT_SECTORS - 2;
|
||||||
|
@@ -978,6 +999,7 @@ static int hdimage_setup(struct image *image, cfg_t *cfg)
|
||||||
|
table_type = cfg_getstr(cfg, "partition-table-type");
|
||||||
|
hd->gpt_location = cfg_getint_suffix(cfg, "gpt-location");
|
||||||
|
hd->gpt_no_backup = cfg_getbool(cfg, "gpt-no-backup");
|
||||||
|
+ hd->gpt_protective_first = cfg_getbool(cfg, "gpt-protective-first");
|
||||||
|
hd->fill = cfg_getbool(cfg, "fill");
|
||||||
|
|
||||||
|
if (is_block_device(imageoutfile(image))) {
|
||||||
|
@@ -1227,6 +1249,7 @@ static cfg_opt_t hdimage_opts[] = {
|
||||||
|
CFG_BOOL("gpt", cfg_false, CFGF_NODEFAULT),
|
||||||
|
CFG_STR("gpt-location", NULL, CFGF_NONE),
|
||||||
|
CFG_BOOL("gpt-no-backup", cfg_false, CFGF_NONE),
|
||||||
|
+ CFG_BOOL("gpt-protective-first", cfg_false, CFGF_NONE),
|
||||||
|
CFG_BOOL("fill", cfg_false, CFGF_NONE),
|
||||||
|
CFG_END()
|
||||||
|
};
|
||||||
|
--
|
||||||
|
2.43.0
|
||||||
|
|
||||||
@@ -1,10 +1,7 @@
|
|||||||
From 9a9885324c70d607c9c79814441dbc829e212e41 Mon Sep 17 00:00:00 2001
|
From 9a9885324c70d607c9c79814441dbc829e212e41 Mon Sep 17 00:00:00 2001
|
||||||
From: Tobias Waldekranz <tobias@waldekranz.com>
|
From: Tobias Waldekranz <tobias@waldekranz.com>
|
||||||
Date: Mon, 10 Jun 2024 13:25:31 +0200
|
Date: Mon, 10 Jun 2024 13:25:31 +0200
|
||||||
Subject: [PATCH 1/7] hush: Remove Ctrl-C detection in loops
|
Subject: [PATCH 1/9] hush: Remove Ctrl-C detection in loops
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=UTF-8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
Organization: Wires
|
Organization: Wires
|
||||||
|
|
||||||
Assume that the original intent was to emulate SIGINT to a shell. This
|
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.
|
the writer of the script instead.
|
||||||
|
|
||||||
Signed-off-by: Tobias Waldekranz <tobias@waldekranz.com>
|
Signed-off-by: Tobias Waldekranz <tobias@waldekranz.com>
|
||||||
Signed-off-by: Mattias Walström <lazzer@gmail.com>
|
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
|
||||||
---
|
---
|
||||||
common/cli_hush.c | 7 -------
|
common/cli_hush.c | 7 -------
|
||||||
1 file changed, 7 deletions(-)
|
1 file changed, 7 deletions(-)
|
||||||
|
|||||||
@@ -1,13 +1,14 @@
|
|||||||
From 7efc3aa61fbc84b2c0c959e737257d2de2e8020c Mon Sep 17 00:00:00 2001
|
From 7efc3aa61fbc84b2c0c959e737257d2de2e8020c Mon Sep 17 00:00:00 2001
|
||||||
From: =?UTF-8?q?Mattias=20Walstr=C3=B6m?= <lazzer@gmail.com>
|
From: =?UTF-8?q?Mattias=20Walstr=C3=B6m?= <lazzer@gmail.com>
|
||||||
Date: Sat, 6 Sep 2025 22:18:27 +0200
|
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
|
MIME-Version: 1.0
|
||||||
Content-Type: text/plain; charset=UTF-8
|
Content-Type: text/plain; charset=UTF-8
|
||||||
Content-Transfer-Encoding: 8bit
|
Content-Transfer-Encoding: 8bit
|
||||||
Organization: Wires
|
Organization: Wires
|
||||||
|
|
||||||
Signed-off-by: Mattias Walström <lazzer@gmail.com>
|
Signed-off-by: Mattias Walström <lazzer@gmail.com>
|
||||||
|
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
|
||||||
---
|
---
|
||||||
cmd/Kconfig | 14 ++++++++
|
cmd/Kconfig | 14 ++++++++
|
||||||
cmd/Makefile | 2 +-
|
cmd/Makefile | 2 +-
|
||||||
|
|||||||
+2
-5
@@ -1,11 +1,8 @@
|
|||||||
From c646eef3ee304ae49ad7e3f998ed08bfa0efb7b9 Mon Sep 17 00:00:00 2001
|
From c646eef3ee304ae49ad7e3f998ed08bfa0efb7b9 Mon Sep 17 00:00:00 2001
|
||||||
From: Mihai Sain <mihai.sain@microchip.com>
|
From: Mihai Sain <mihai.sain@microchip.com>
|
||||||
Date: Fri, 5 May 2023 13:28:31 +0300
|
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
|
25 MHz to 50 MHz
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=UTF-8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
Organization: Wires
|
Organization: Wires
|
||||||
|
|
||||||
Current clock for sdmmc0 and sdmmc1 is 25 MHz because of the caps forced
|
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.
|
sama7g5ek rev 5 using mmcinfo command.
|
||||||
|
|
||||||
Signed-off-by: Mihai Sain <mihai.sain@microchip.com>
|
Signed-off-by: Mihai Sain <mihai.sain@microchip.com>
|
||||||
Signed-off-by: Mattias Walström <lazzer@gmail.com>
|
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
|
||||||
---
|
---
|
||||||
arch/arm/dts/at91-sama7g5ek.dts | 4 ----
|
arch/arm/dts/at91-sama7g5ek.dts | 4 ----
|
||||||
1 file changed, 4 deletions(-)
|
1 file changed, 4 deletions(-)
|
||||||
|
|||||||
+1
-5
@@ -1,11 +1,8 @@
|
|||||||
From 5a530e4eebf64887fd6b449dd45df04eccd07cad Mon Sep 17 00:00:00 2001
|
From 5a530e4eebf64887fd6b449dd45df04eccd07cad Mon Sep 17 00:00:00 2001
|
||||||
From: Joachim Wiberg <troglobit@gmail.com>
|
From: Joachim Wiberg <troglobit@gmail.com>
|
||||||
Date: Thu, 12 Feb 2026 10:00:02 +0100
|
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)
|
(eMMC)
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=UTF-8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
Organization: Wires
|
Organization: Wires
|
||||||
|
|
||||||
- eMMC high-speed timing is supported
|
- eMMC high-speed timing is supported
|
||||||
@@ -14,7 +11,6 @@ Organization: Wires
|
|||||||
Tested on sama7g5ek rev 5.
|
Tested on sama7g5ek rev 5.
|
||||||
|
|
||||||
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
|
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
|
||||||
Signed-off-by: Mattias Walström <lazzer@gmail.com>
|
|
||||||
---
|
---
|
||||||
arch/arm/dts/at91-sama7g5ek.dts | 2 ++
|
arch/arm/dts/at91-sama7g5ek.dts | 2 ++
|
||||||
1 file changed, 2 insertions(+)
|
1 file changed, 2 insertions(+)
|
||||||
|
|||||||
@@ -1,10 +1,7 @@
|
|||||||
From be250151366460ee318ca47bb15ec23e5e322a84 Mon Sep 17 00:00:00 2001
|
From be250151366460ee318ca47bb15ec23e5e322a84 Mon Sep 17 00:00:00 2001
|
||||||
From: =?UTF-8?q?Mattias=20Walstr=C3=B6m?= <lazzer@gmail.com>
|
From: =?UTF-8?q?Mattias=20Walstr=C3=B6m?= <lazzer@gmail.com>
|
||||||
Date: Wed, 18 Feb 2026 17:00:09 +0100
|
Date: Wed, 18 Feb 2026 17:00:09 +0100
|
||||||
Subject: [PATCH 5/7] net: phy: Add the Airoha EN8811H PHY driver
|
Subject: [PATCH 5/9] net: phy: Add the Airoha EN8811H PHY driver
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=UTF-8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
Organization: Wires
|
Organization: Wires
|
||||||
|
|
||||||
Add the driver for the Airoha EN8811H 2.5 Gigabit PHY. The PHY supports
|
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.
|
and have validated this on Banana Pi BPI-R3 Mini.
|
||||||
|
|
||||||
Signed-off-by: Lucien.Jheng <lucienzx159@gmail.com>
|
Signed-off-by: Lucien.Jheng <lucienzx159@gmail.com>
|
||||||
Signed-off-by: Mattias Walström <lazzer@gmail.com>
|
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
|
||||||
---
|
---
|
||||||
drivers/net/phy/Kconfig | 25 +
|
drivers/net/phy/Kconfig | 25 +
|
||||||
drivers/net/phy/Makefile | 1 +
|
drivers/net/phy/Makefile | 1 +
|
||||||
|
|||||||
@@ -1,13 +1,10 @@
|
|||||||
From a987f92a768291669eec1a8c5d413190bd9241ec Mon Sep 17 00:00:00 2001
|
From a987f92a768291669eec1a8c5d413190bd9241ec Mon Sep 17 00:00:00 2001
|
||||||
From: =?UTF-8?q?Mattias=20Walstr=C3=B6m?= <lazzer@gmail.com>
|
From: =?UTF-8?q?Mattias=20Walstr=C3=B6m?= <lazzer@gmail.com>
|
||||||
Date: Wed, 18 Feb 2026 17:00:42 +0100
|
Date: Wed, 18 Feb 2026 17:00:42 +0100
|
||||||
Subject: [PATCH 6/7] Add bpi-r3-mini device tree
|
Subject: [PATCH 6/9] Add bpi-r3-mini device tree
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=UTF-8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
Organization: Wires
|
Organization: Wires
|
||||||
|
|
||||||
Signed-off-by: Mattias Walström <lazzer@gmail.com>
|
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
|
||||||
---
|
---
|
||||||
arch/arm/dts/Makefile | 1 +
|
arch/arm/dts/Makefile | 1 +
|
||||||
arch/arm/dts/mt7986a-bpi-r3-mini.dts | 238 +++++++++++++++++++++++++++
|
arch/arm/dts/mt7986a-bpi-r3-mini.dts | 238 +++++++++++++++++++++++++++
|
||||||
|
|||||||
@@ -1,10 +1,7 @@
|
|||||||
From 57b3cd8612a8da852f0796d97e6a7526cc4742cc Mon Sep 17 00:00:00 2001
|
From 57b3cd8612a8da852f0796d97e6a7526cc4742cc Mon Sep 17 00:00:00 2001
|
||||||
From: =?UTF-8?q?Mattias=20Walstr=C3=B6m?= <lazzer@gmail.com>
|
From: =?UTF-8?q?Mattias=20Walstr=C3=B6m?= <lazzer@gmail.com>
|
||||||
Date: Wed, 18 Feb 2026 17:02:23 +0100
|
Date: Wed, 18 Feb 2026 17:02:23 +0100
|
||||||
Subject: [PATCH 7/7] bpi-r3/r4: Add probe for specific model
|
Subject: [PATCH 7/9] bpi-r3/r4: Add probe for specific model
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=UTF-8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
Organization: Wires
|
Organization: Wires
|
||||||
|
|
||||||
Probe for bpi-r3 and bpi-r3-mini and select correct device tree,
|
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
|
look if there are phys connected, if so it is a mini, else it is
|
||||||
regular bpi-r3.
|
regular bpi-r3.
|
||||||
|
|
||||||
Signed-off-by: Mattias Walström <lazzer@gmail.com>
|
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
|
||||||
---
|
---
|
||||||
arch/arm/mach-mediatek/Kconfig | 3 +
|
arch/arm/mach-mediatek/Kconfig | 3 +
|
||||||
board/mediatek/mt7986/Kconfig | 10 ++
|
board/mediatek/mt7986/Kconfig | 10 ++
|
||||||
|
|||||||
@@ -0,0 +1,37 @@
|
|||||||
|
From c07b984f00e48294cb6e14825919405d53532271 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Joachim Wiberg <troglobit@gmail.com>
|
||||||
|
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 <yangshiji66@outlook.com>
|
||||||
|
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
|
||||||
|
---
|
||||||
|
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
|
||||||
|
|
||||||
@@ -0,0 +1,710 @@
|
|||||||
|
From d89bb394f5d5f2cf8b15e5694d168f937b9ac426 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Joachim Wiberg <troglobit@gmail.com>
|
||||||
|
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 <troglobit@gmail.com>
|
||||||
|
---
|
||||||
|
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 <sam.shih@mediatek.com>
|
||||||
|
+ *
|
||||||
|
+ * BananaPi BPI-R64 - SPI NAND flash variant
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+/dts-v1/;
|
||||||
|
+#include <dt-bindings/input/linux-event-codes.h>
|
||||||
|
+#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 = <KEY_RESTART>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ wps {
|
||||||
|
+ label = "wps";
|
||||||
|
+ gpios = <&gpio 102 GPIO_ACTIVE_LOW>;
|
||||||
|
+ linux,code = <KEY_WPS_BUTTON>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ 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 <dt-bindings/input/linux-event-codes.h>
|
||||||
|
#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 = <KEY_RESTART>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ wps {
|
||||||
|
+ label = "wps";
|
||||||
|
+ gpios = <&gpio 102 GPIO_ACTIVE_LOW>;
|
||||||
|
+ linux,code = <KEY_WPS_BUTTON>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ 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
|
||||||
|
|
||||||
@@ -78,6 +78,17 @@ static bool usb_authorize(struct json_t *root, const char *name, int enabled)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
/*
|
||||||
|
* Set authorized_default=1 on the bus BEFORE nftw
|
||||||
|
* authorizes individual devices. With FTW_DEPTH,
|
||||||
|
* nftw visits children before the root-hub entry, so
|
||||||
|
* without this a hub would be authorized first while
|
||||||
|
* authorized_default is still 2. Setting it here
|
||||||
|
* ensures devices appearing behind an intermediate
|
||||||
|
* hub are auto-authorized by the kernel as they probe.
|
||||||
|
*/
|
||||||
|
if (fexist(apath))
|
||||||
|
writedf(1, "w", "%s", apath);
|
||||||
if (realpath(path, apath))
|
if (realpath(path, apath))
|
||||||
nftw(apath, dir_cb, 20, FTW_DEPTH | FTW_PHYS);
|
nftw(apath, dir_cb, 20, FTW_DEPTH | FTW_PHYS);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -186,6 +186,13 @@ get_bootloader_name()
|
|||||||
echo "bpi_r3_sd_boot"
|
echo "bpi_r3_sd_boot"
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
|
bananapi-bpi-r64)
|
||||||
|
if [ "$target" = "emmc" ]; then
|
||||||
|
echo "bpi_r64_emmc_boot"
|
||||||
|
else
|
||||||
|
echo "bpi_r64_sd_boot"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
friendlyarm-nanopi-r2s)
|
friendlyarm-nanopi-r2s)
|
||||||
echo "nanopi_r2s_boot"
|
echo "nanopi_r2s_boot"
|
||||||
;;
|
;;
|
||||||
|
|||||||
Reference in New Issue
Block a user