mellowflyc5 emac1 uboot#1
Conversation
- from t2linux/linux-t2-patches@b806ec3 - "Revert to applesmc" as it seems new SMC patches are borked - `7001-drm-i915-fbdev-Discard-BIOS-framebuffers-exceeding-h`: keep attribution - drop APFS_FS as we're not carrying those patches
Add CONFIG_ATH9K_HTC=m to the kernel configs that were missing it but have the prerequisites (CONFIG_MAC80211 + CONFIG_USB) — so AR9271/AR7010 USB wifi dongles (ath9k_htc) work across the fleet, not just on some families. 35 configs gained it (59 -> 94 with it set). Also set CONFIG_ATH9K_HTC_DEBUGFS off everywhere: explicit '# ... is not set' on the newly-added ones, and flipped the 7 configs that had it =y (debug-only, unwanted in shipped kernels). Skipped (not 'missing'): 6 configs without MAC80211 (no wireless stack), 2 without USB host (ath9k_htc is USB-only), and 4 that carry an explicit '# CONFIG_ATH9K_HTC is not set' (deliberately disabled). Signed-off-by: Igor Pecovnik <igor@armbian.com>
CONFIG_ATH9K_HTC=m was added to several configs that still forced CONFIG_WLAN_VENDOR_ATH off. All of ath9k lives under `if WLAN_VENDOR_ATH` in Kconfig, so olddefconfig silently drops ATH9K_HTC and the entry is a no-op. Flip the forced-off vendor gate to =y in the 8 affected configs so ATH9K_HTC survives resolution (the hidden ATH9K_HW/ATH9K_COMMON/ATH_COMMON selects are pulled in automatically, matching how the other configs carry it): filogic-current, filogic-legacy, meson-s4t7-legacy, nuvoton-ma35d1-vendor, spacemit-current, spacemit-k3-legacy, spacemit-legacy, xpressreal-t3-6.6. Signed-off-by: Igor Pecovnik <igor@armbian.com>
ATH9K_HTC=m was added to the UEFI cloud configs, but cloud images run on VMs/servers and have the WLAN driver tree disabled (# CONFIG_WLAN is not set), so the USB Atheros dongle driver is both ineffective and unwanted there. Remove CONFIG_ATH9K_HTC (and its DEBUGFS line) from linux-uefi-arm64-cloud and linux-uefi-x86-cloud rather than pulling the whole wireless stack into a cloud kernel. Signed-off-by: Igor Pecovnik <igor@armbian.com>
The kernel load failed on NIO-12L with:
Loading kernel image to 0x40000000...
** Reading file would overwrite reserved memory **
Failed to load '/boot/Image'
then booted garbage at 0x40000000 ("Bad Linux ARM64 Image magic!"),
because the script didn't check the load return code.
Root cause is a layout thinko. The script reserved kernel_addr_r at
0x40000000 with a comment claiming a 100 MB window (0x40000000-0x46400000),
but the board's first reserved region, low RAM 0x43200000-0x43DFFFFF, sits
*inside* that claimed window. Only the first 50 MB is actually contiguous:
0x43200000 - 0x40000000 = 0x3200000 = 52,428,800 bytes = 50 MB
The kernel Image is 54,565,376 bytes (~52.04 MB), so loading it at
0x40000000 would end at 0x43409A00 -- ~2.04 MB into the reserved region.
U-Boot's LMB check refuses the write, the (previously unchecked) load
fails, and booti runs whatever stale data is at 0x40000000.
Move kernel_addr_r above the hole to 0x44000000 (2 MB aligned, just past
the region's end at 0x43DFFFFF). That gives a contiguous window up to the
next reserved region at 0x54600000:
0x54600000 - 0x44000000 = 0x10600000 = 262 MB
The 52 MB kernel now lands at 0x44000000-0x47409A00 with ~210 MB of
headroom, clear of fdt (0x56000000) and ramdisk (0x64000000), which were
already placed above the holes.
Also guard the kernel/initramfs/dtb loads with if/else+exit so a refused
load aborts loudly instead of silently falling through to booti on an
unwritten address.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- CONFIG_IPV6 is not modulable anymore, it's effectively =y now
- I've sent https://lore.kernel.org/linux-mediatek/20260624-nio-12l-add-i2c-40-pin-v2-0-cf3707a6aaf1@pardini.net/ which has the i2c3 also contained here
- there's trouble ref ufs rework from Nicolas Frattaroli in collabora's tree - which might or not be related to some BL32-not-really-there problem in Armbian
…rnels/initrds - for extlinux/pxelinux scenarios (matching recently-updated bootscript boot.scr for genio)
7.1 is the active edge branch
…ed daemon When several builds share one Docker daemon — the usual setup with multiple self-hosted runners on one host — they all tagged the per-build initial image with one fixed tag, so concurrent builds collided: one runner's image build or cleanup clobbered another's. Tag the per-build initial image uniquely instead, derived from ARMBIAN_BUILD_UUID. Hash the UUID and take 8 hex chars rather than its first 8 raw chars: when uuidgen is unavailable, ARMBIAN_BUILD_UUID is the "no-uuidgen-yet-<RANDOM>-..." fallback whose first 8 chars are a constant "no-uuidg", which would still collide; hashing folds in the per-build entropy while staying deterministic within a build. Remove the per-build image once the container exits so the unique tags don't pile up. Signed-off-by: Igor Pecovnik <igor@armbian.com>
Update the prebuilt u-boot blobs for khadas-vim1 and khadas-vim2 to khadas-uboot 0.17.3 (https://github.com/khadas/khadas-uboot/releases/tag/0.17.3) and bump UBOOT_HASH_EXTRA to "khadas-uboot-0.17.3" so the u-boot artifact cache key changes and the .deb repackages instead of serving the stale 0.11 build. Signed-off-by: Igor Pecovnik <igor@armbian.com>
… parameter expansion
Replace `echo $root_partition | sed 's/\/dev\///g'` with the bash-native
`${root_partition#/dev/}` prefix-trim. Removes a subshell plus two external
processes (echo, sed) on every u-boot update path.
The variable `root_partition_name` is assigned but unused both before and
after this change; cleaning that up is out of scope for P2b.
Part of armbian#9400 (P2b).
Assisted-by: Claude:claude-opus-4.7
Re-indent the `python_proxy_env` array elements with one extra tab so the file no longer drifts when shellfmt is run scoped on it. No behavior change. Pure preparation for the following P2b commit; carried in the same PR so the functional change diff is not contaminated with formatting noise. Assisted-by: Claude:claude-opus-4.7
…ll with parameter expansion
Replace
$(echo "${python3_version_full}" | awk '{print $2}' | cut -d. -f1,2)
with two bash-native parameter expansions: `${python3_version_full#* }`
strips the "Python " prefix, then `${_py_ver_triplet%.*}` drops the patch
component. Same observable output (e.g. "3.12"), one subshell and three
external processes (echo, awk, cut) eliminated.
Part of armbian#9400 (P2b).
Assisted-by: Claude:claude-opus-4.7
…h parameter expansion
Split the sfdisk version (e.g. "2.41.1") directly with `IFS=. read` and
format the numeric form (e.g. "024101") with `printf -v`, eliminating
the `echo | awk` subshell. Same observable output.
Each component is then stripped of any non-numeric suffix (e.g.
"2.41-rc1" -> minor "41", not "41-rc1") before the printf so we don't
bomb under `set -e` on prerelease util-linux builds; the prior
`awk -F. '{printf "%d%02d%02d"}'` quietly accepted the numeric prefix,
and we keep that tolerance here.
Spotted by @chatgpt-codex-connector on PR armbian#161 (iav/armbian fork pre-review).
Part of armbian#9400 (P2b).
Assisted-by: Claude:claude-opus-4.7
shellfmt collapses the extra spaces before the inline `# -> libfoo` and `# -> libfoo.path` comments to its single-space rule. No behavior change. Pure preparation for the following P2b commit; carried in the same PR so the functional change diff is not contaminated with formatting noise. Assisted-by: Claude:claude-opus-4.7
…x-trim Replace the `echo "$url" | sed "s|^https://github.com/|${GITHUB_SOURCE}/|"` form with a guarded bash-native prefix trim. The guard preserves the sed-with-^ semantics: only URLs literally starting with the GitHub host are rewritten; anything else (private mirrors, gitlab, etc.) is left alone. Eliminates one subshell + the sed external on every fetch_from_repo call. Part of armbian#9400 (P2b). Assisted-by: Claude:claude-opus-4.7
…ith IFS=/ read
Replace three identical `$(echo "${git_source}" | cut -d/ -f4-5)` subshells
(in the gitverse.ru, gitee.com and github.com mirror branches) with bash-
native `IFS=/ read -r _ _ _ _gr_org _gr_repo _ <<< "${git_source}"`. Same
output: skip three leading components (scheme, empty, host), capture org
and repo, drop the rest.
Eliminates three echo+cut subshells per ref-resolution call.
Part of armbian#9400 (P2b).
Assisted-by: Claude:claude-opus-4.7
…lls with here-strings
Replace three `echo "${var}" | sha256sum | cut -d' ' -f1` forms with
`sha256sum <<< "${var}" | cut -d' ' -f1`. Verified empirically that both
forms emit identical bytes (one trailing newline in both cases, same hash);
the form-equivalence is also the reason this group was originally excluded
from the armbian#9400 P2b list — that exclusion has now been removed from armbian#9400
because the trailing-newline concern does not apply (echo without -n and
the here-string redirection both append a single \n).
Eliminates one subshell + one external `echo` invocation per call.
For `function_bodies` the in-array `[@]` splat is swapped for `[*]` so
the array is joined into a single here-string token (IFS default = space).
Empirically equivalent to the prior `echo "${arr[@]}"` output.
Part of armbian#9400 (P2b).
Assisted-by: Claude:claude-opus-4.7
Apply shellfmt's space-after-redirect (`2> /dev/null`), C-style for-loop operator spacing (`((i = 2; i < ...))`), and collapse a stray double blank line. Heredoc bodies (the `cat <<- 'EOT'` wrapper/cron scripts) are left untouched on purpose: shfmt re-indents them, which survives only because `<<-` strips leading tabs; it bloats the diff for no functional gain, so it is kept out of scope. No behavior change. Assisted-by: Claude:claude-opus-4.8
z28pro shares rock64-rk3328_defconfig. The fleet bump moved it to binman-atf-mainline, which for that defconfig (no CONFIG_ROCKCHIP_EXTERNAL_TPL) builds u-boot's mainline in-tree rk3328 TPL for DRAM init and ignores the ddrbin. On this TV box the in-tree TPL fails memory training and the board never leaves the boot ROM -> complete no-boot. (The earlier blobless/spl-blobs attempts also failed to build: "No rule to make target 'idbloader.img'" - the roc-cc/rock64 binman configs only expose u-boot-rockchip.bin.) Fix it the way mkspi and dusun-dsom-010r do: carry our own defconfig (z28pro-rk3328_defconfig = upstream rock64-rk3328 + CONFIG_ROCKCHIP_EXTERNAL_TPL=y) so binman uses the Rockchip ddrbin (passed as ROCKCHIP_TPL by binman-atf-mainline) for DRAM init instead of the in-tree TPL. DDR blob is the family rk3328 default (rk3328_ddr_333MHz_v1.16.bin). Validated on hardware: DRAM trains (DDR3 333MHz, 2048MB), SPL/BL31/u-boot boot, kernel + initrd load, boots to Linux. Signed-off-by: Igor Pecovnik <igor@armbian.com>
z28pro's DTS was a bare `#include "rk3328-rock64.dts"`, which is wrong for this
TV box: rock64 drives mmc@ff500000 (sdmmc) as a removable microSD slot, but on
the Z28 PRO that controller is wired to the onboard RTL8822BS Wi-Fi, and the
physical microSD/TF slot is on mmc@ff5f0000 (sdmmc_ext) instead. Result on the
rock64 clone: Wi-Fi dead (SDIO controller mis-driven as a card -> "voltage
select -110") and the TF slot absent from the DT entirely.
Keep the rock64 base (same RK805 PMIC, GMAC2IO gigabit, HDMI, USB - all working)
and override only the storage/wireless wiring:
- mmc@ff500000 (sdmmc) -> RTL8822BS Wi-Fi over SDIO (mmc-pwrseq, WL_REG_ON
gpio1 PC2), non-removable
- mmc@ff5f0000 (sdmmc_ext) -> the microSD/TF slot (cd-gpios gpio3 PA1, vcc_sd
power on gpio2 PA7 active-high)
- mmc@ff520000 (emmc) -> eMMC boot, unchanged
GPIO assignments cross-checked against the historical Armbian z28pro DTS and
hanwckf's rk3328-z28pro.dts (both agree). The RK3328 boot ROM cannot boot from
sdmmc_ext, so the microSD slot is storage-only - the box boots from eMMC.
Applied to 6.18 (current), 7.1 and 7.2. 6.6/6.12 keep the bare include: mainline
gained the rk3328 sdmmc_ext controller node only ~6.13, and z28pro is
current-only, so those archives are dormant.
DTB verified to compile against the 6.18 and 7.1 trees. Hardware validation of
Wi-Fi/SD-slot function pending.
Signed-off-by: Igor Pecovnik <igor@armbian.com>
Follow-up to the z28pro DTS. Hardware testing on 6.18 exposed two faults from
inheriting rock64 defaults, both now fixed and confirmed working:
- Ethernet: rock64 sets gmac2io PHY-reset to gpio1 PC2, which on the Z28 PRO
is the Wi-Fi WL_REG_ON. The GMAC and the Wi-Fi pwrseq fought over it ->
"Cannot register the MDIO bus" (-EBUSY), no eth. The board's real PHY reset
is gpio2 PC1 (per the vendor DTS); re-point it there + use the z28pro RGMII
delays. eth0 now works.
- microSD: rock64 enables spi0 (SPI-NOR) whose gpio3 pins collide with
sdmmc0ext ("pin gpio3-2 already requested by ff190000.spi"), blocking the
card slot. The Z28 PRO has no SPI flash; disable spi0. TF slot now works.
Wi-Fi (RTL8822BS on sdmmc/ff500000) is still not up: adding the RK805 32 kHz
clock + post-power-on-delay to the pwrseq got the chip responding to CMD5, but
SDIO init still times out (-110, "voltages below defined range") - a signal
voltage / rockchip rfkill-wlan-framework matter, tracked as a follow-up.
DTB verified against the patched rockchip64-6.18 dtsi; applied to 6.18/7.1/7.2.
Signed-off-by: Igor Pecovnik <igor@armbian.com>
The RTL8822BS on sdmmc (ff500000) enumerates at the 400 kHz probe but times out (-110) as soon as the bus is clocked up, at any speed or signal voltage. The 32 kHz clock (rk805 clkout2) and WL_REG_ON (gpio1 PC2) are confirmed correct against working mainline rk3328 boards, so the remaining cause is board-level (32 kHz reference routing / sdmmc0 signal integrity) and needs on-hardware debugging. Leave the node fully wired but status = "disabled" so it stops spamming mmc init retries (~1 s of boot) and is a one-line re-enable once SDIO is sorted. Does not affect the microSD slot (sdmmc_ext/ff5f0000) or eMMC boot (emmc/ff520000), which stay enabled and working. Signed-off-by: Igor Pecovnik <igor@armbian.com>
Disabling the Wi-Fi sdmmc host renumbers the eMMC (Linux names mmcblkN in probe order, not by DT alias), so a path-based root=/dev/mmcblk0p* no longer resolves and the board "cannot find rootfs" (/dev/mmcblk0 does not exist). Keep the node ENABLED - the config that boots with working ethernet + microSD - and accept the ~1 s of mmc init retries from the still-broken RTL8822BS. Wi-Fi remains a follow-up needing on-hardware debugging. This reverts commit 4bc7372. Signed-off-by: Igor Pecovnik <igor@armbian.com>
armbian#10149) The AIC8800D80 combo's BT is UART HCI on ttyS1. Its firmware (loaded over SDIO by aic8800_bsp) idles the BT core in low-power until BT_WAKE is asserted, so a plain hciattach times out waiting for HCI_Reset. Assert the wake via the btlpm sysfs knob, then attach the generic H4 line discipline. Adds aic8800-bluetooth.service (stock bluez hciattach, no vendor blob), installed and enabled by the family for boards that set SUN60IW2_UART_BT (both Orange Pi A733 boards). Validated on the Zero 3W.
Board only had the current 6.18 fork kernel. Add the edge 7.1 mainline target, list both in KERNEL_TEST_TARGET, and put the GMU and QUP firmware in the initrd so the GPU and early i2c/spi probe before rootfs. Adds SuperKali as co-maintainer. Signed-off-by: SuperKali <hello@superkali.me>
Edge was pinned to a 7.0 placeholder. Point it at 7.1 stable now that QCS6490 is fully supported upstream, and regenerate the edge kernel config. Signed-off-by: SuperKali <hello@superkali.me>
The guard skipped the aic8800 dkms from 7.1 onward. It builds fine on 7.1, so raise the cutoff to 7.2. Kernel 7.2 is untested, keep it out for now. Signed-off-by: SuperKali <hello@superkali.me>
Enable UFS, USB3, HDMI and ICE in the board DTS, fix the sc7280 UFS PHY table, add several drm/msm DP and DPU bugfixes, iris SFR logging, and the custom cdsp firmware path. Signed-off-by: SuperKali <hello@superkali.me>
* Add board: Lubancat 5IO (RK3588) * Delete the lubancat5-io dts file in kernei-7.0 * Remove the unsupported HYM8563 clock-frequency property * Drop clock-names from the ES8388 codec node. * Fix the duplicated RK806 power-control pin. * Normalize the regulator name of vcc_2v0_pldo_s3 * update lubancat-5io dts in u-boot * Remove the entire altmodes block * Delete the always-on field of vdd_npu_s0 * Fix the HDMI1 CEC, HPD, SCL, SDA pin mux error * Added lubancat-5io.dts in the 7.2 kernel.
* sunxi: mellowflyc5: add board support
This adds baseline board support for the Mellow Fly-C5 (H618), including:
- Board configurations and boot environment setup
- ATF and U-Boot patches to enable UART1 and enable eMMC in SPL
- Common family adjustments to allow overriding bootenv file
- Device tree and Ethernet controller patches (EPHY address set to 0).
Signed-off-by: Alastair D'Silva <alastair@d-silva.org>
Assisted-by: Antigravity <antigravity@google.com>
* sunxi: mellowflyc5: fix eMMC boot by backporting H616 MMC reset and limiting frequency
The H618 on-chip eMMC controller requires a reset and FIFO threshold configuration
for reliable data transfers. Backport the H616 MMC reset procedure and FIFO setup to
the U-Boot driver to enable boot functionality from the eMMC slot.
Additionally, tune the eMMC (MMC2) clock frequency limit to achieve optimal throughput
while maintaining 100% stability under 3.3V signaling (8-bit DDR mode). Sequential
reads were tested using a 200MB block read test:
| Configured Limit | Actual Clock Speed | Stability Status | Read Speed | Write Speed |
| :--- | :--- | :--- | :--- | :--- |
| 20 MHz | 20.0 MHz | Stable (0 errors) | 35.1 MB/s | — |
| 35 MHz | 33.3 MHz | Stable (0 errors) | 51.6 MB/s | — |
| 40 MHz | 37.5 MHz | Stable (0 errors) | 61.0 MB/s | 46.1 MB/s |
| 42 MHz | 37.5 MHz | Stable (0 errors) | 61.0 MB/s | 46.1 MB/s |
| 45 MHz | 42.85 MHz | Unstable (I/O errors) | 53.7 MB/s | — |
| 48 MHz | 42.85 MHz | Unstable (I/O errors) | 53.6 MB/s | — |
| 52 MHz | 50.0 MHz | Unstable (Boot fail) | Failed | — |
We set max-frequency to 40 MHz in the Linux Device Trees (configuring a stable
actual clock speed of 37.5 MHz), resulting in a 73% read throughput increase
over the initial 20 MHz limit. In U-Boot, we conservatively limit the clock
frequency to 20 MHz (f_max = 20000000) to ensure reliable early boot link-training
and initial loading.
Signed-off-by: Alastair D'Silva <alastair@d-silva.org>
Assisted-by: Antigravity <antigravity@google.com>
* arm64: dts: allwinner: Limit CPU frequency on Mellow Fly-C5 to 1.20GHz
The Device Tree configures the CPU operating performance points using the H616
common OPP table, allowing frequencies up to 1.512GHz. Frequencies above 1.20GHz
require voltages up to 1.16V to operate reliably.
However, the AXP313a PMIC vdd-cpu regulator (reg_dcdc2) is hard-capped at 1.10V
in the board configuration. When CPU load spikes and scales the frequency to
1.416GHz/1.512GHz, the voltage remains stuck at 1.10V. This severe under-volting
causes CPU instruction corruption, leading to undefined instruction oopses and
kernel panics.
We experimentally attempted to raise the regulator-max-microvolt limit to 1.30V
and set the required OPP voltages to 1.16V and 1.20V. This resulted in consistent
and immediate RCU CPU stalls and system freezes during early boot scaling. This
instability is traced to the physical limitations of the AXP313a PMIC: its DCDC2
regulator is rated for a maximum continuous current of 3.0A, which is insufficient
to sustain the transient current draw of the H618 CPU quad-cores scaling to 1.416GHz
or above at higher voltages, causing PMIC over-current protection (OCP) voltage
clipping and transient droop.
Limit the CPU maximum frequency to a stable 1.20GHz by deleting the higher OPP
nodes (opp-1320000000, opp-1416000000, and opp-1512000000) from cpu_opp_table.
Signed-off-by: Alastair D'Silva <alastair@d-silva.org>
Assisted-by: Antigravity <antigravity@google.com>
* u-boot: board: mellowflyc5: Lower DRAM clock frequency to 600MHz
The mellowflyc5 board defconfig configured the LPDDR4 DRAM clock to run
at 792MHz. Under Linux 7.0 system load, this high frequency causes signal
integrity and memory interface instability.
This DRAM clock reduction was validated through intensive testing:
1. Running static memory tests (such as memtester and stress-ng --verify)
after U-Boot completed link training can temporarily pass on an idle,
cool board.
2. However, under realistic system-wide load during early boot/reboot loops,
running at 792MHz fails within 11 to 17 cycles, resulting in:
- User-space memory corruption (e.g. __vm_enough_memory errors attempting
to allocate 256TB of virtual memory).
- Random SSH daemon connection resets (Connection reset by peer) due to SSL key
corruption.
- Complete silent kernel freezes / system bus lockups during systemd
multi-user targets initialization.
Lowering the DRAM clock frequency from 792MHz to a stable 600MHz completely
resolves all signal integrity issues and memory corruption. With this change,
the target successfully survived 100 consecutive reboot test cycles cleanly with
working wlan0 and zero memory or connection failures.
Signed-off-by: Alastair D'Silva <alastair@d-silva.org>
Assisted-by: Antigravity <antigravity@google.com>
* sunxi: mellowflyc5: Configure LPDDR4 DRAM voltage to 1.20V in U-Boot and Linux
The Mellow Fly-C5 uses LPDDR4 memory which requires a standard 1.20V supply
voltage. The default AXP313 PMIC DCDC3 (vdd-dram) voltage in U-Boot SPL is
configured to 1.10V.
Configure DCDC3 to 1.20V in both U-Boot (CONFIG_AXP_DCDC3_VOLT=1200) and the
Linux Device Tree files (reg_dcdc3) for both sunxi-6.18 and sunxi-7.0 kernels.
This ensures the DRAM operates at its spec-compliant voltage from early boot
link-training, improving signal integrity and startup training reliability.
Signed-off-by: Alastair D'Silva <alastair@d-silva.org>
Assisted-by: Antigravity <antigravity@google.com>
---------
Signed-off-by: Alastair D'Silva <alastair@d-silva.org>
This commit ports the Mellow Fly-C5 board support in U-Boot to the newer
v2026.07 branch.
What was done:
1. Removed `BOOTPATCHDIR="u-boot-sunxi"` from the board configuration file
`config/boards/mellowflyc5.csc` to inherit the family default U-Boot
directory `v2026.07-sunxi64`.
2. Deleted the legacy and incompatible U-Boot patches under
`patch/u-boot/u-boot-sunxi/board_mellowflyc5/`.
3. Created a new porting patch `001-mellowflyc5-dts-and-defconfig.patch`
under `patch/u-boot/v2026.07-sunxi64/board_mellowflyc5/` supporting
OF_UPSTREAM:
- Added the upstream-aligned device tree under
`dts/upstream/src/arm64/allwinner/sun50i-h618-mellow-fly-c5.dts`.
- Updated `configs/mellow_fly_c5_defconfig` to map all DRAM configuration
variables to the newer `DRAM_SUNXI_*` names (e.g. DRAM_SUNXI_TPR0,
DRAM_SUNXI_TPR10, etc.) and set the default device tree to
`allwinner/sun50i-h618-mellow-fly-c5`.
Why it was done:
U-Boot for the sunxi64 family has moved to `v2026.07`, which uses the
`v2026.07-sunxi64` patch directory. Keeping legacy patches in the old
`u-boot-sunxi` directory was causing build failures because the old patches
were incompatible with the newer U-Boot structure.
Captured boot serial log (compiled with uboot-swig-fix):
```
U-Boot SPL 2026.07-rc4_armbian-2026.07-rc4-S1296-P5b04-H1daf-V0a73-Bb190-R448a (Jul 12 2026 - 16:57:38 +1000)
DRAM: 1024 MiB
Trying to boot from MMC2
NOTICE: BL31: v2.12.9(debug):armbian
NOTICE: BL31: Built : 02:30:58, Jul 12 2026
NOTICE: BL31: Detected Allwinner H616 SoC (1823)
NOTICE: BL31: Found U-Boot DTB at 0x4a0b4fc8, model: Mellow Fly-C5
INFO: ARM GICv2 driver initialized
INFO: Configuring SPC Controller
INFO: Probing for PMIC on I2C:
INFO: PMIC: found AXP313
INFO: BL31: Platform setup done
INFO: BL31: Initializing runtime services
INFO: BL31: cortex_a53: CPU workaround for erratum 855873 was applied
INFO: BL31: cortex_a53: CPU workaround for erratum 1530924 was applied
INFO: PSCI: Suspend is unavailable
INFO: BL31: Preparing for EL3 exit to normal world
INFO: Entry point address = 0x4a000000
INFO: SPSR = 0x3c9
INFO: Changed devicetree.
U-Boot 2026.07-rc4_armbian-2026.07-rc4-S1296-P5b04-H1daf-V0a73-Bb190-R448a (Jul 12 2026 - 16:57:38 +1000) Allwinner Technology
CPU: Allwinner H616 (SUN50I)
Model: Mellow Fly-C5
DRAM: 1 GiB
Core: 71 devices, 23 uclasses, devicetree: separate
WDT: Not starting watchdog@30090a0
MMC: mmc@4020000: 0, mmc@4022000: 1
Loading Environment from FAT... Unable to use mmc 1:1...
In: serial
Out: serial
Err: serial
Allwinner mUSB OTG (Peripheral)
Net: using musb-hdrc, OUT ep1out IN ep1in STATUS ep2in
MAC de:ad:be:ef:00:01
HOST MAC de:ad:be:ef:00:00
RNDIS ready
eth1: usb_ether
```
Signed-off-by: Alastair D'Silva <alastair@d-silva.org>
Assisted-by: Antigravity <antigravity-ai@google.com>
This commit adds internal EMAC1 (ethernet@5030000) support to U-Boot
for the Mellow Fly-C5 board. This enables network booting (DHCP/TFTP)
out of the box.
Changes implemented:
1. Configured PA0-PA9 as RMII pins for EMAC1 in the U-Boot device tree.
2. Enabled CONFIG_SUN8I_EMAC=y in configs/mellow_fly_c5_defconfig.
3. Registered the "allwinner,sun50i-h616-internal-emac" compatible string and
variant emac_variant_h616_1 in drivers/net/sun8i_emac.c.
4. Added emac1 pin configurations and registered PA0-PA9 in drivers/pinctrl/sunxi/pinctrl-sunxi.c.
5. Enabled EPHY clock/reset, configured PWM clock and output (2MHz on PWM5/PA12)
for the reference clock in arch/arm/mach-sunxi/clock_sun50i_h6.c.
Serial output showing successful DHCP and TFTP boot:
```
U-Boot SPL 2026.07-rc4_armbian-2026.07-rc4-S1296-P1447-H832f-V0a73-Bb190-R448a (Jul 12 2026 - 08:17:34 +0000)
DRAM: 1024 MiB
...
Net: eth0: ethernet@5030000using musb-hdrc
...
=> dhcp
DHCP client bound to address 10.0.1.65 (3301 ms)
Using ethernet@5030000 device
TFTP from server 10.0.1.1; our IP address is 10.0.1.65
Filename 'boot.scr'.
Load address: 0x42000000
Loading: #
450.2 KiB/s
done
Bytes transferred = 461 (1cd hex)
```
Signed-off-by: Alastair D'Silva <alastair@d-silva.org>
Assisted-by: Antigravity <antigravity@google.com>
🚫 Missing required board assetsThis PR adds new board configuration(s). Required assets must already exist in github/armbian/armbian.github.io.
Missing items
Once the missing files are added (or a PR is opened in armbian/armbian.github.io), re-run this check. |
🚫 Missing required board assetsThis PR adds new board configuration(s). Required assets must already exist in github/armbian/armbian.github.io.
Missing items
Once the missing files are added (or a PR is opened in armbian/armbian.github.io), re-run this check. |
…efconfig Align the DCDC3 regulator vdd-dram voltage in the U-Boot device tree patch to 1.2V (1200000 microvolts) to match the hardware configuration, the mainline Linux kernel device tree, and the defconfig setting (CONFIG_AXP_DCDC3_VOLT=1200). Previously, the U-Boot device tree patch had the vdd-dram regulator configured to 1.1V, which caused a conflict with the defconfig's 1.2V setting. To verify the correct voltage, the PMIC (AXP313) registers on the physical board were queried via I2C (/dev/i2c-0) at address 0x36: - Output Control Register (0x10): 0x1f (DCDC3 enabled) - DCDC3 Voltage Register (0x15): 70 (0x46) Using the formula (500mV + sel * 10mV), this corresponds to exactly 1.2V. Signed-off-by: Alastair D'Silva <alastair@d-silva.org> Assisted-by: Antigravity <antigravity@google.com>
95d4715 to
96996b4
Compare
🚫 Missing required board assetsThis PR adds new board configuration(s). Required assets must already exist in github/armbian/armbian.github.io.
Missing items
Once the missing files are added (or a PR is opened in armbian/armbian.github.io), re-run this check. |
Unhandled Exception in EL3.and/causing secondary cpus not coming onlineAutomaticboard configs status synchroniseAutomaticboard configs status synchroniseAutomaticboard configs status synchroniseAutomaticboard configs status synchroniseAutomaticboard configs status synchroniseAutomaticboard configs status synchroniseAutomaticboard configs status synchroniseSHELLFMT_VERSIONfrom 3.13.0 to 3.13.1DEBUG_INFO_REDUCEDblocksDEBUG_INFO_BTFKPROBES+KPROBE_EVENTS-@to normalized dtc invocationAutomaticboard configs status synchroniseAutomaticboard configs status synchroniseedgeas targetsource ${SRC}/config/boards/<foo>inheritancebleedingedgebranchAutomaticboard configs status synchronisebleedingedgebranch with 7.1bleedingedge/plugin/;marker on various dtso files This is cosmetics only since kernel builds .dtso files as overlays either way. However it violates convention without.Automaticboard configs status synchroniseAutomaticboard configs status synchroniseAutomaticboard configs status synchronisekernel-dtbdoes not output whenunset BOOT_FDT_FILEis present armbian/build#8083)Automaticboard configs status synchroniseORAS_VERSIONfrom 1.3.1 to 1.3.2CONFIG_LCD_VK2C21as moduleAutomaticboard configs status synchroniseAutomaticboard configs status synchroniseAutomaticboard configs status synchroniseAutomaticboard configs status synchroniseKERNEL_BTF=noAutomaticboard configs status synchroniseAutomaticboard configs status synchroniseAutomaticboard configs status synchroniseAutomaticboard configs status synchroniseAutomaticboard configs status synchroniseAutomaticboard configs status synchronisenameto matrix items for job labelsREALTEK_PHY_HWMONdumpimage -las well asbinwalkcheck_uboot_produced_binary_fileasktree if presentkernel_extra_create_patcheskernel_extra_create_patchesto stage ask patchnoticelevel; a brocolli that also goes to GHA logsbleedingedgeto family config