The controller waits for R1b busy in hardware, but the driver programs a
fixed 1024 ms there and does not report max_busy_timeout, so erase and
cache-flush commands time out as soon as the card is busy for more than
a second:
mmc_erase: erase error -110, status 0x0
mmc1: cache flush error -110
Program the timeout from cmd->busy_timeout (bounded by the 2^15 ms field)
and report the bound as max_busy_timeout, the way sdhci and meson-mx-sdhc
do. ODROID-N2+ eMMC, 20 GiB write + delete + fstrim: 48 errors before,
0 after (two runs). Applies to 6.12, 6.18, 7.1 and 7.2.
xfce4-session/labwc are only installed when BUILD_DESKTOP=yes AND
DESKTOP_ENVIRONMENT=xfce, but the lightdm/environment.d setup and the
pixman postinst hook ran whenever BUILD_DESKTOP=yes regardless of the
selected DE. CLI-only images, and desktop images built with a
different DE (gnome, kde-plasma, ...), ended up shipping a lightdm
config pointing at a session that was never installed.
Signed-off-by: Martin Schmiedel <Martin.Schmiedel@tq-group.com>
Match the style already used elsewhere in the repo (e.g.
mba8mpxl-ras314.conf) so heredoc bodies can follow the surrounding
function's indentation instead of being forced flush-left. No change
to the generated file contents - <<- only strips the leading tabs.
Signed-off-by: Martin Schmiedel <Martin.Schmiedel@tq-group.com>
Drop the redundant board/SOM-name comment (matches the config filename)
and describe the actual hardware instead, for mba93xxla-mini and the
imx8m TQ boards (mba8mpxl, mba8mpxl-ras314, tq-smarc2-tqma8mpxs) - same
cleanup as mba93xxca. Also add the missing KERNEL_TEST_TARGET for all
four boards (current,edge - confirmed booting on both branches).
Signed-off-by: Martin Schmiedel <Martin.Schmiedel@tq-group.com>
Split imx93-7.1 into shared symbols/LCDIF-LVDS-bridge patches plus
per-board MBa93xxCA/MBa93xxLA-MINI patches (fixes MINI's LVDS overlay
on 7.1). Also enable the LDB termination resistor for MBa8MPxL's LVDS
(fixes doubled/unreadable image).
Signed-off-by: Martin Schmiedel <Martin.Schmiedel@tq-group.com>
fan0 (pwm-fan on tpm6, tacho on GPIO2_IO09) exists in the base DTS but
ships status = "disabled". tpm6 and its 12V supply (reg_pwm_fan) are
already enabled. Add an overlay that only flips fan0 to "okay", for
boards that have the fan populated.
Signed-off-by: Martin Schmiedel <Martin.Schmiedel@tq-group.com>
post_family_tweaks_bsp__mba93xxca/mba93xxla-mini forced WLR_RENDERER=pixman
by patching /usr/share/wayland-sessions/xfce-wayland.desktop in place at
postinst time. xfce4-session owns that file, so any later xfce4-session
upgrade re-unpacks it unconditionally and silently reverts the renderer
back to GLES2 - imx93 has no 3D GPU, so that leaves an unusably slow
desktop until someone notices and reapplies the patch.
Ship xfce-wayland-pixman.desktop instead: derived at postinst time from
the current xfce-wayland.desktop with only Exec= overridden, under a name
xfce4-session never owns, so it can't collide and never gets reverted by
an xfce4-session update. lightdm's default session is pointed at it.
Signed-off-by: Martin Schmiedel <Martin.Schmiedel@tq-group.com>
write_uboot_platform() reused the generic Armbian OFFSET variable (1st
partition offset in MiB) as `dd bs=1K seek=${OFFSET}` - only coincidentally
matching the actual SPL boot offset these boards need (0x8000 = 32 KiB).
Any future partition-layout change to OFFSET would silently seek to the
wrong byte offset.
Hardcode seek=32 so the two concerns vary independently.
Signed-off-by: Martin Schmiedel <Martin.Schmiedel@tq-group.com>
MBa93xxCA carries the same TQMa9352 LVDS wiring and DT labels
(&backlight_lvds, &display, &lcdif, &lvds_bridge, &media_blk_ctrl,
&tpm5) as MBa93xxLA-MINI, so the new overlay includes the existing
MBa93xxLA-MINI overlay instead of duplicating its content, keeping
the panel timing and labels in one place.
Signed-off-by: Martin Schmiedel <Martin.Schmiedel@tq-group.com>
New TQMa93xx SoM carrier board. Reuses the MBa93xxLA-MINI GPU-less
desktop setup (XFCE/labwc, CPU pixman renderer - imx93 has no 3D GPU).
DisplayPort (TC9595XBG bridge) is the board's designed primary output,
LVDS an optional add-on - but DP bridge support isn't implemented yet,
so no DEFAULT_OVERLAYS here; LVDS follows in a later commit.
Signed-off-by: Martin Schmiedel <Martin.Schmiedel@tq-group.com>
Merge the imx93 "enable DTB symbols" patch into the shared imx8m/imx93
Makefile patch, and add the MBa93xxCA display/LVDS bridge modifications
to the base DTS.
Signed-off-by: Martin Schmiedel <Martin.Schmiedel@tq-group.com>
Bump imx8m BOOTBRANCH, extend LEGACY_IMAGE_FORMAT to the new
tqma93xx_mba93xxca defconfigs, and add CONFIG_IMX_CONFIG so
Armbian's older mkimage can produce a flash.bin for MBa93xxCA
instead of falling back to the unsupported cfgout IMAGE_VERSION 2
auto-generation.
Signed-off-by: Martin Schmiedel <Martin.Schmiedel@tq-group.com>
ATF_SKIP_LDFLAGS_WL="yes" was not a substitute for
0001-fix-needed-by-armbian-build-system.patch: that patch strips the
-Wl,-prefixed --no-warn-rwx-segment flag from TF_LDFLAGS because TQ's
ATF build invokes the linker directly, while ATF_SKIP_LDFLAGS_WL only
suppresses the -Wl, prefix on our side, leaving a flag the patch never
matches. Without the patch applied, TF_LDFLAGS reaches the linker
unfiltered and produces a BL31 that hangs on i.MX93 (MBa93xxCA) right
after SPL hands off via ROM_API, before any ATF console output.
Rename ATFPATCHDIR from the imx8-only 'atf-imx8' to 'atf-tq' and set
it per-board-case in imx8m.conf/imx93.conf, since the same fix is
needed by both families.
Signed-off-by: Martin Schmiedel <Martin.Schmiedel@tq-group.com>
CONFIG_SECURITY_APPARMOR=y alone doesn't activate AppArmor: the LSM is
compiled in but never registered unless it's also listed in CONFIG_LSM.
Without it there, AppArmor stays dark at boot and any userspace tooling/
profiles that expect it (standard on Debian) are silently ineffective.
Add apparmor to CONFIG_LSM for all four affected kernel configs.
Signed-off-by: Martin Schmiedel <Martin.Schmiedel@tq-group.com>
The only dependency is the unbind fix before the feature patch, which
alphabetical order already gives. Replayed both series in the new order:
no rejects, resulting trees identical.
Same series as for 6.18, so it survives the kernel bump. The patches were
regenerated against 7.1.10 rather than copied: they apply with no fuzz,
since the sun8i_mixer_cfg rework they had to be rebased over in 6.18 has
landed upstream by now.
Verified the same way: the whole series applies with no rejects, the six
patches are clean under checkpatch --strict, and drivers/gpu/drm/sun4i,
drivers/clk/sunxi-ng and every allwinner dtb build for both architectures
with the tv-encoder node present in all 13 H5 device trees.
The H3 and H5 have a TV encoder behind a second display pipeline that
mainline describes for neither SoC, so composite output has never worked
on a mainline kernel. Add the mixer1, tcon1 and tv-encoder nodes, register
the TVE clock the H3 CCU was missing, and convert the mixer's RGB output
to the YUV the encoder wants. Nothing is on by default -- enabling the
display engine costs a running PLL on boards that have no other display --
so the output is opt-in through a new tve overlay. Split by subsystem so
the series can go upstream as it stands, with a pre-existing NULL deref in
the encoder's unbind path fixed first. Tested on an OrangePi Zero: 720x480i
on the connector, image written to /dev/fb0 comes back correct through a
capture card.
Replace the ad-hoc cat | sha256sum of the copied board BSP files with
Armbian's calculate_hash_for_files helper — the same one artifact-kernel.sh
uses for the kernel config. It hashes each file's SRC-relative path and
content, sorted and order-independent, avoiding the concatenation-boundary
ambiguity of a raw cat.
KERNELSOURCE was identical to Armbian's MAINLINE_KERNEL_SOURCE default
(the kernel.org linux-stable tree), and hardcoding it opted the kernel
fetch out of the tuna/bfsu/google mirror resolution. Drop it and let the
default apply; KERNELBRANCH stays pinned to the 6.12.103 commit, which
lives in that same stable tree.
Separately, the kernel cache key folded this extension's own source
(declare -f) but not the content of the board BSP files it copies into
the tree (sfp-led.c, leds-lp5812.*, the parent Kconfig/Makefile and the
board Kconfig patch). Editing one produced a different kernel that reused
the cached artifact. Fold their content hash in too.
opts_* changes and the ASK pin already invalidate the kernel artifact
hash — opts auto-fold into kernel_config_modifying_hashes, and the pin
via ask_modules= — and the overlay synthesis is source-hashed through
extension_hooks_to_hash. The non-opts wiring in custom_kernel_config__ask_modules
(module-source copy, Kconfig/Makefile stitching) was the one path not
covered, since custom_kernel_config is not in extension_hooks_to_hash.
Fold the function's own parsed source into the hash so pure code changes
there rebuild the kernel. declare -f is comment/whitespace-insensitive,
so comment edits do not cause spurious rebuilds.
linux-ls1046a-current.config is a family-level config shared by every
LS1046A board. ASK offload depends on licensed NXP FMan firmware, so a
future non-ASK LS1046A board may run plain mainline — and the SDK/offload
symbols only exist once this extension stages the SDK overlay. Move the
DPAA/FMan/QBMan and ASK-module symbols out of the checked-in config and
force them from the extension's opts arrays instead, keeping the family
config mainline-clean.
Kconfig defaults are not safe to rely on: FSL_DPAA_1588 defaults n,
FSL_SDK_DPA defaults n, and FSL_DPAA_ETH_MAX_BUF_COUNT defaults 128 (we
need 640), so set them explicitly via opts_y/opts_val.
depmod builds the modules.dep/aliases indexes that autoload mlan before
moal. Masking its exit with || true let dpkg report a successful install
even when indexing failed, leaving the driver unable to autoload. Drop
the mask in postinst so the failure surfaces. postrm keeps || true so
package removal still succeeds if the kernel dir is already gone.
Address CodeRabbit review:
- Fail loud if drivers/staging/fsl_qbman is absent after the 005 SDK
overlay. The post-patch wiring is the only registration path once patch
110's staging hunks are stripped, so a silently-skipped wiring would ship
a kernel with no SDK QBMan driver and no error.
- Force the SDK DPAA/FMan stack (FSL_SDK_FMAN/BMAN/QMAN) explicitly on, and
the competing mainline FSL_FMAN off, via the kernel config opts arrays,
instead of relying on Kconfig defaults. ASK_CDX depends on FSL_SDK_FMAN
(which requires !FSL_FMAN); if a future mainline enabled FSL_FMAN by
default, olddefconfig would silently drop ASK_CDX and a non-offloading
kernel would build green. Mainline FSL_DPAA_ETH depends on FSL_FMAN, so
disabling FSL_FMAN keeps it off transitively.
Address CodeRabbit review: the mwifiex compat patch guarded
set_monitor_channel's net_device parameter on 6.12.103, but the cfg80211
change was backported to the 6.12.y stable series in v6.12.101 (verified:
v6.12.100 old signature, v6.12.101 new). The old guard would select the
wrong signature on 6.12.101 and 6.12.102. Regenerate the patch at 6.12.101
and rename it version-agnostically.
The Mono Gateway DK takes an optional PCIe 88W9098 (u-blox JODY-W3)
WiFi+BT combo card. Build the NXP mlan/moal fullmac WiFi driver as a
standalone kernel-module .deb (gateway-dk-wifi) against the kernel
headers, ship it with the 9098 combo firmware, and bake it into every
image (inert when no card is present).
- gateway-dk-ask.sh: pre_customize_image__002_build_wifi fetches the
driver (nxp-imx/mwifiex) and firmware (nxp-imx/imx-firmware, sparse
checkout of just the 9098 image), builds mlan.ko/moal.ko (PCIe-9098,
cfg80211 fullmac, STA + uAP), and packages the modules + firmware +
module autoload into gateway-dk-wifi. The .deb depends on the exact
linux-image version (the prebuilt modules are vermagic-locked) and
recommends the hostapd/wpa/iw/regdb userspace.
- mwifiex-cfg80211-mainline-6.12.103.patch: the driver gates
set_monitor_channel's net_device argument on cfg80211 >= 6.13, but
stable 6.12.103 backported that one API; lower the guard so the driver
builds against the in-kernel cfg80211 (OpenWrt sidesteps this via
mac80211 backports). It is the only cfg80211 op 6.12.103 backported.
The combo firmware also carries the BT blob, so the board's DTS-declared
btnxpuart controller initializes cleanly instead of erroring. Validated on
hardware: the 9098 enumerates two phys with STA + AP interfaces.
Switch the LS1046A family off the NXP vendor kernel (tag lf-6.12.49-2.2.0)
onto stock mainline linux-6.12.y, pinned at v6.12.103. The DPAA/FMan/QBMan
SDK that mainline does not carry is fetched from NXP at the ref the ASK
release pins and synthesized into an overlay patch at build time, with the
ASK hook + fix series (010-110) staged alongside; nothing SDK-related is
committed to the tree.
- ls1046a.conf: KERNELSOURCE -> kernel.org stable, KERNELBRANCH pinned to
the exact commit the ASK patch series targets.
- gateway-dk-ask.sh: fetch the NXP SDK (fetch_from_repo, at the ref read
from ASK's pins/nxp-sdk-srcrev.inc), overlay the driver source into its
mainline locations, and synthesize two patches into userpatches for the
Armbian patcher: 005 (SDK) and 006 (board device tree). The SDK-flavour
DPAA dtsi go into a private arch/arm64/boot/dts/freescale-sdk/ dir (wired
via subdir-y) so mainline's shared freescale/ dtsi are never overwritten
and the sibling QorIQ boards are unaffected.
- Drop drivers/staging/{Makefile,Kconfig} hunks from the ASK series (the
Armbian driver harness echo-appends out-of-tree drivers to those files
before the series, breaking patch context) and re-add the fsl_qbman
wiring post-patch.
- Remove the committed 001/002/004 kernel patches: INA234 (001) and the
libbpf const-correctness fix (004) are both already in mainline 6.12.103;
the board device tree (002) now comes from ASK.
- Carry the in-tree ASK module parent Kconfig/Makefile in the BSP (ASK 1.0.0
dropped them from its root, as OpenWrt/Yocto build the modules out-of-tree).
Kernel boots on the Mono Gateway DK; DPAA/FMan hardware offload runs at 10G
line rate.
Address review on armbian-plugins.zsh:
- Load from the fixed install path $ZSH/custom/plugins instead of
$ZSH_CUSTOM, which a user may repoint elsewhere.
- Stop relying on custom-file filename order to make zsh-syntax-highlighting
last (a later custom file could add widgets after it). Defer it to a
one-shot precmd hook that fires just before the first prompt — after all
init, including the user's ~/.zshrc — then removes itself.
zsh-autosuggestions still loads immediately (it must precede highlighting).
Verified on zsh 5.9 with stub plugins: autosuggestions loads at source time,
highlighting loads on the first precmd and the hook self-removes.
Signed-off-by: Igor Pecovnik <igor@armbian.com>
The shim overwrote an explicitly empty -d '' with newline, so
`mapfile -d '' arr` split on newline instead of NUL (Bash's -d ''
semantics, used with find -print0 / sort -z). Drop the empty-to-newline
fallback: the initial __delim default already covers an omitted -d, and
zsh's `read -d ""` splits on NUL. Verified on zsh 5.9 that -d '' now
yields NUL-delimited records while newline / -d ':' / -u fd are unchanged.
Signed-off-by: Igor Pecovnik <igor@armbian.com>
Two review fixes:
1. Enable the bundled plugins for EXISTING users on upgrade. Adding them to
the per-user ~/.zshrc plugins=() only helped new users (postinst copies
.zshrc only when absent). Instead source zsh-autosuggestions and
zsh-syntax-highlighting from a package-owned custom/armbian-plugins.zsh,
which the upgrade refreshes for everyone. It sorts last among the custom
snippets, so zsh-syntax-highlighting still loads after all other widgets.
The plugins=() line is reverted to its original list.
2. mapfile/readarray: handle -u FD. The flag parser dropped -u but not its
operand, so `mapfile -u 3 arr` used the fd number as the array name and
read stdin. Parse -u and pass it to `read -u`. Verified on zsh 5.9 with
distinct data on stdin vs fd 3, plus the -t / -d / unterminated-record
regressions.
Signed-off-by: Igor Pecovnik <igor@armbian.com>
Address review feedback: the first shim always stripped the newline, took
the array name from the last argument (so a bare `mapfile` with no name
broke), ignored -d, and dropped a final record with no trailing delimiter.
Rework it to follow Bash: default the name to MAPFILE, keep the delimiter
unless -t is given, honour -d DELIM, accept-and-ignore the other flags, and
capture a final unterminated record. readarray still delegates to mapfile.
Verified under zsh 5.9: default->MAPFILE, keep-vs-strip newline, -d ':',
the unterminated-record case, empty input, and readarray delegation all
match Bash; the generated custom snippet still passes `zsh -n`.
Signed-off-by: Igor Pecovnik <igor@armbian.com>
oh-my-zsh already configures history well (HISTSIZE, dedup, share_history,
hist_verify) and completion (case-insensitive matching, menu select,
caching, colours), so there is nothing to duplicate there. The one gap it
leaves is SAVEHIST=10000 while keeping 50000 in memory. Ship a small
custom/armbian-defaults.zsh (loaded after oh-my-zsh) that raises SAVEHIST
to HISTSIZE so the full history is persisted, and adds HIST_REDUCE_BLANKS
and HIST_FIND_NO_DUPS.
Signed-off-by: Igor Pecovnik <igor@armbian.com>
The two external plugins that make zsh feel modern — fish-style history
suggestions and command-line syntax highlighting — were not shipped.
Vendor both the same way evalcache already is (fetch_from_repo, pinned to
a commit), drop them into custom/plugins, and enable them in plugins=().
zsh-syntax-highlighting is placed LAST as it requires. Their .git dirs are
stripped so they don't bloat the .deb.
Signed-off-by: Igor Pecovnik <igor@armbian.com>
The bundled oh-my-zsh was pinned to a 2023-05-21 commit — ~2.5 years of
missed fixes, completions and security updates. Bump it to a current
commit. Also pin evalcache to a commit instead of tracking branch:master,
so the package build is reproducible instead of drifting with upstream.
Signed-off-by: Igor Pecovnik <igor@armbian.com>
zsh lacks a handful of bash builtins, so bash one-liners typed at the
prompt (or sourced into an interactive shell) fail after switching the
login shell to zsh. Verified missing on zsh 5.9: complete / compgen /
compopt, mapfile / readarray (shopt/caller/bind/help too, but those don't
shim cleanly). Note this only affects interactive input — anything with a
"#!/bin/bash" shebang (all Armbian tooling, update-motd.d) runs under bash
regardless of the login shell.
Ship /etc/oh-my-zsh/custom/armbian-compat.zsh, which oh-my-zsh
auto-sources for every user ($ZSH_CUSTOM/*.zsh, default $ZSH/custom, after
compinit). It:
- runs bashcompinit, restoring the complete/compgen/compopt builtins so
a tool's bash-completion file works under zsh;
- defines mapfile/readarray shims (array name = last arg, newline
stripped) when the builtin is absent.
Delivered as a package-owned custom snippet rather than appended into each
user's ~/.zshrc, so updates ship with the package instead of drifting per
user. Generated file passes `zsh -n` and the shims were tested end to end.
Signed-off-by: Igor Pecovnik <igor@armbian.com>
The `Armbian_community_26.11.0-trunk.19_Ayn-odin2mini_resolute_current_6.18.45_kde-plasma_desktop` build found at 'https://armbian.com/boards/ayn-odin2mini' just so happens to work fine on my Ayn Odin 2 Mini, but as soon as I update it (or switch from the developer build to the stable build), audio, USB-C, and battery support all disappear.
Comparing the `dmesg` output between a working build and a broken build, I found one difference:
Success:
```
[ 1.428471] Run /init as init process
[ 1.428472] with arguments:
[ 1.428474] /init
[ 1.428474] with environment:
[ 1.428475] HOME=/
[ 1.428476] TERM=linux
(...)
[ 3.404914] EXT4-fs (mmcblk0p2): mounted filesystem 922d114c-c6a9-4c64-86cd-84cae0326d11 ro with writeback data mode. Quota mode: none.
(...)
[ 6.608309] remoteproc remoteproc0: adsp is available
[ 6.609558] remoteproc remoteproc1: cdsp is available
(...)
[ 6.829048] remoteproc remoteproc1: powering up cdsp
[ 6.833590] remoteproc remoteproc1: Booting fw image qcom/sm8550/ayn/cdsp.mbn, size 7086504
(...)
[ 6.909040] remoteproc remoteproc1: remote processor cdsp is now up
(...)
[ 7.180015] remoteproc remoteproc0: powering up adsp
(...)
[ 7.194469] remoteproc remoteproc0: Booting fw image qcom/sm8550/ayn/odin2mini/adsp.mbn, size 28379480
(...)
```
Fail:
```
[ 1.415189] Run /init as init process
[ 1.415191] with arguments:
[ 1.415192] /init
[ 1.415193] with environment:
[ 1.415193] HOME=/
[ 1.415194] TERM=linux
(...)
[ 1.685605] remoteproc remoteproc0: adsp is available
[ 1.685642] remoteproc remoteproc0: Direct firmware load for qcom/sm8550/ayn/odin2mini/adsp.mbn failed with error -2
[ 1.685645] remoteproc remoteproc0: powering up adsp
[ 1.685654] remoteproc remoteproc0: Direct firmware load for qcom/sm8550/ayn/odin2mini/adsp.mbn failed with error -2
[ 1.685655] remoteproc remoteproc0: request_firmware failed: -2
[ 1.690042] remoteproc remoteproc1: cdsp is available
[ 1.696068] remoteproc remoteproc1: powering up cdsp
[ 1.699586] remoteproc remoteproc1: Booting fw image qcom/sm8550/ayn/cdsp.mbn, size 7086504
[ 1.794079] remoteproc remoteproc1: remote processor cdsp is now up
(...)
[ 3.006954] EXT4-fs (mmcblk0p2): mounted filesystem 922d114c-c6a9-4c64-86cd-84cae0326d11 ro with writeback data mode. Quota mode: none.
```
In the successful run, `remoteproc` runs after the EXT4 filesystem is mounted, and successfully loads `qcom/sm8550/ayn/odin2mini/adsp.mbn`, whereas the failed runs `remoteproc` before the filesystem is mounted, and fails to load the firmware with a 'file not found' error code.
I am not aware of any way to delay `remoteproc`, so the alternative is load the firmware into the initramfs so that it is available before the filesystem is loaded. There is already an `initramfs-tool` hook for this, but it ignores symlinks; this is relevant because `qcom/sm8550/ayn/odin2mini/adsp.mbn` is actually a symlink to `qcom/sm8550/ayn/odin2/adsp.mbn`.
This is fixed by making `find` follow symlinks, so that the missing firmware is correctly included in the initramfs.
The per-selector image filter used a loose substring test
(candidate == *"${token}"*). Image names are
VENDOR_VERSION_Board_release_branch_kver..., where Board/release/branch are
underscore-delimited middle fields, so a short release/branch (e.g. 'sid',
'edge') could match inside another field and keep the wrong image. Anchor each
selector to a complete _-delimited field (*"_${token}_"*). Empty selectors are
still skipped and the sequential board->release->branch narrowing is unchanged.
Signed-off-by: Igor Pecovnik <igor@armbian.com>
`./compile.sh flash` without CARD_DEVICE announced the image, counted
down, then exited 0 having written nothing. Nothing downstream catches
it: write_image_to_device tests `lsblk "${device}"`, which is false for
an empty device, and its in-container fallback branch is guarded by
`[[ -n ${device} ]]`, so both branches fall through and the write is
skipped in silence. To the operator that reads as a successful flash.
Check the target up front, before the countdown, and say what to pass.
Also reject a CARD_DEVICE that is not a block device, which otherwise
took the same silent path.
Docker is not the obstacle here and the message does not mention it:
lib/functions/host/docker.sh passes CARD_DEVICE into the container when
it is set.
Signed-off-by: Igor Pecovnik <igor@armbian.com>
`./compile.sh flash` with no arguments failed even with an image sitting
in output/images:
ls: cannot access '/armbian/output/images/*__*.img': No such file or directory
cli_flash [ No image file specified. Using latest built image file found: ]
error! [ No image file to flash. ]
The lookup composed one glob out of all three of BOARD, RELEASE and
BRANCH. With none of them set that collapses to '*__*.img', which cannot
match an Armbian image: they are named <version>_<Board>_<release>_<branch>_...
with single underscores. The glob went to `ls` unquoted, so the failure
surfaced as raw ls stderr and an empty image_file, and the real message
arrived two lines later.
The same composition broke a partially specified invocation too. BOARD
and BRANCH without RELEASE produced '*Rockpi-4a__edge*.img', which also
matches nothing.
Take the comment at its word and list the directory, newest first, then
narrow by whichever of the three were actually set. find rather than a
glob, so a missing or empty output/images yields an empty list instead of
an unexpanded pattern on stderr, and the operator gets one clear error
naming what to do next.
Signed-off-by: Igor Pecovnik <igor@armbian.com>
The power button on this unit is physically shorted so the board
auto-powers-on when DC is applied; the MT6323 PMIC then sees KEY_POWER held
forever and the board reboots as soon as userspace acts on the stuck key
(same failure as frank-w/BPI-Router-Linux#35).
Disable the whole &mt6323keys node for both mt7623 kernel targets (current
6.18, edge 7.1). The MFD core skips a disabled child (mfd_add_device ->
of_device_is_available), so the mtk-pmic-keys driver never binds - the DT
equivalent of the community fix (blacklisting mtk_pmic_keys). Disabling only
the "power" child does not work: mtk_pmic_keys_probe() iterates key children
by index with for_each_child_of_node_scoped() and never checks availability.
u-boot needs no change (its BPI-R2 DT has no mt6323/keys node). Verified
on-device via the runtime DTB.
Link: https://github.com/frank-w/BPI-Router-Linux/issues/35
Signed-off-by: Igor Pecovnik <igor@armbian.com>