Merge remote-tracking branch 'upstream/master' into spark/aarch64-settings-boot-dropins
This commit is contained in:
commit
9d05b3fb06
117 files changed
+18463
-230
No files matched your search
@@ -47,18 +47,21 @@ jobs:
|
||||
-w /workspace \
|
||||
archlinux:base-devel bash -lc '
|
||||
set -euo pipefail
|
||||
pacman -Syu --noconfirm git jq python libarchive
|
||||
pacman -Syu --noconfirm git jq python libarchive neovim tmux
|
||||
python tests/oma-service-removal.py
|
||||
python tests/upstream-watch.py
|
||||
./bin/sync-upstream self-test
|
||||
./bin/sync-rebuilds --self-test
|
||||
./bin/omarchy-pkgs self-test
|
||||
./bin/omarchy-release self-test
|
||||
./tests/neovim-remote-clipboard.sh
|
||||
python tests/neovim-clipboard-tmux.py
|
||||
./tests/partial-release.sh
|
||||
./tests/published-build-plan.sh
|
||||
./tests/settings-boot-config.sh
|
||||
./tests/controller.sh
|
||||
./tests/artifact-helpers.sh
|
||||
./tests/limine-mkinitcpio-hook.sh
|
||||
pacman -S --noconfirm --quiet rclone >/dev/null
|
||||
./tests/publish-artifact.sh
|
||||
'
|
||||
@@ -170,6 +170,8 @@ These packages were already excluded from automatic AUR updates. The migration p
|
||||
|
||||
`linux-firmware-cirrus` is a deliberate hold: a self-retiring shim that ships Arch's linux-firmware-cirrus 20260910-2 payload to stable while stable's Arch snapshot is on 20260810-2 (Dell XPS 13 DX13260 / 1028:0e54 speaker firmware). It is versioned 20260810-3 so the genuine Arch package supersedes it as soon as the snapshot advances; bumping it to the Arch version would defeat that. Delete the recipe once stable's snapshot carries linux-firmware >= 20260910.
|
||||
|
||||
`m1n1-aurora` and `uboot-asahi` are deliberate holds: Apple Silicon boot code, pinned by hand like `linux-aurora`, and bumped only after a cold boot on the qualification Macs. `m1n1-aurora` pins an aurora-silicon/m1n1 commit plus a local patch. `uboot-asahi` follows asahi-alarm's recipe and patch set (asahi-alarm/PKGBUILDs), which a tag watch on AsahiLinux/u-boot cannot carry.
|
||||
|
||||
## Package-specific boundaries
|
||||
|
||||
- NVIDIA watches remain on the 580 driver branch.
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"source": "local",
|
||||
"channels": [
|
||||
"edge"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
From 375e80ec3826b54618fdd5f2db708c0f2bb936ae Mon Sep 17 00:00:00 2001
|
||||
From: Marcelo Alcantara <maralc@gmail.com>
|
||||
Date: Wed, 16 Sep 2026 00:39:04 +1000
|
||||
Subject: [PATCH] drm: re-read possible CRTCs when rescanning connectors
|
||||
|
||||
A driver can change a connector's possible CRTCs at runtime. Apple's DCP
|
||||
driver narrows a Type-C port's encoder to the display pipeline the fabric
|
||||
routed it to and relies on the following hotplug for userspace to re-read
|
||||
it. possibleCrtcs was only read when the connector was first created, so a
|
||||
rerouted port kept a stale mask and was never assigned its now-free CRTC
|
||||
until the compositor restarted.
|
||||
---
|
||||
src/backend/drm/DRM.cpp | 7 +++++++
|
||||
1 file changed, 7 insertions(+)
|
||||
|
||||
diff --git a/src/backend/drm/DRM.cpp b/src/backend/drm/DRM.cpp
|
||||
index 6618a26..b492dac 100644
|
||||
--- a/src/backend/drm/DRM.cpp
|
||||
+++ b/src/backend/drm/DRM.cpp
|
||||
@@ -1287,6 +1287,13 @@ void Aquamarine::CDRMBackend::scanConnectors() {
|
||||
} else {
|
||||
backend->log(AQ_LOG_DEBUG, std::format("drm: Connector id {} already initialized", connectorID));
|
||||
conn = *it;
|
||||
+
|
||||
+ // drivers may narrow or widen these on hotplug, e.g. when a Type-C port is rerouted to another pipeline
|
||||
+ const auto possibleCrtcs = drmModeConnectorGetPossibleCrtcs(gpu->fd, drmConn);
|
||||
+ if (possibleCrtcs && possibleCrtcs != conn->possibleCrtcs) {
|
||||
+ backend->log(AQ_LOG_DEBUG, std::format("drm: Connector {} possible CRTCs changed {:#x} -> {:#x}", conn->szName, conn->possibleCrtcs, possibleCrtcs));
|
||||
+ conn->possibleCrtcs = possibleCrtcs;
|
||||
+ }
|
||||
}
|
||||
|
||||
conn->status = drmConn->connection;
|
||||
--
|
||||
2.50.1 (Apple Git-155)
|
||||
|
||||
@@ -0,0 +1,63 @@
|
||||
# Maintainer: Caleb Maclennan <caleb@alerque.com>
|
||||
# Contributor: Aaron Blasko <blaskoazzolaaaron [at] gmail.com>
|
||||
#
|
||||
# Arch's aquamarine 0.15.1-1 plus one patch, carried on edge for Apple Silicon:
|
||||
# re-read a connector's possible CRTCs when rescanning, so a Type-C port the
|
||||
# DCP fabric reroutes to another display pipeline gets a CRTC without
|
||||
# restarting the compositor. Drop the carry once hyprwm releases the fix.
|
||||
|
||||
pkgname=aquamarine
|
||||
pkgver=0.15.1
|
||||
pkgrel=1.1
|
||||
pkgdesc='a very light linux rendering backend library'
|
||||
arch=(aarch64)
|
||||
url="https://github.com/hyprwm/$pkgname"
|
||||
license=(BSD-3-Clause)
|
||||
depends=(libgcc
|
||||
libstdc++
|
||||
glibc # libc.so libm.so
|
||||
hyprutils libhyprutils.so
|
||||
libdisplay-info libdisplay-info.so
|
||||
libdrm # libdrm.so
|
||||
libglvnd libEGL.so
|
||||
libinput # libinput.so
|
||||
mesa # libgbm.so
|
||||
opengl-driver
|
||||
pixman
|
||||
seatd libseat.so
|
||||
systemd-libs libudev.so
|
||||
wayland libwayland-client.so
|
||||
wayland-protocols)
|
||||
makedepends=(cmake
|
||||
hyprwayland-scanner)
|
||||
provides=("lib$pkgname.so")
|
||||
_archive="$pkgname-$pkgver"
|
||||
source=("$url/archive/v$pkgver/$_archive.tar.gz"
|
||||
0001-drm-re-read-possible-CRTCs-when-rescanning-connectors.patch)
|
||||
sha256sums=('2f9de98c0bd1b7b1b09c576e390a2fef436449762fb334163c414f0c300296f2'
|
||||
'50e9e38ff915b18074dc9b5dd1d07d7f24e340e99f254476d6abe578eece7864')
|
||||
|
||||
prepare() {
|
||||
cd "$_archive"
|
||||
patch -Np1 -i ../0001-drm-re-read-possible-CRTCs-when-rescanning-connectors.patch
|
||||
}
|
||||
|
||||
build() {
|
||||
cd "$_archive"
|
||||
# cc1plus needs more than 8 MiB of stack for DRM.cpp. GCC raises its own
|
||||
# limit natively, but under QEMU user-mode emulation (the aarch64 builder)
|
||||
# the guest stack is fixed at exec and setrlimit is ignored, so the compiler
|
||||
# segfaults. QEMU reads this at exec; native builds ignore it. The object
|
||||
# code is identical either way.
|
||||
export QEMU_STACK_SIZE=64M
|
||||
cmake -B build \
|
||||
-D CMAKE_INSTALL_PREFIX=/usr \
|
||||
-D CMAKE_BUILD_TYPE=Release
|
||||
cmake --build build
|
||||
}
|
||||
|
||||
package() {
|
||||
cd "$_archive"
|
||||
DESTDIR="$pkgdir" cmake --install build
|
||||
install -Dm0644 -t "$pkgdir/usr/share/licenses/$pkgname" LICENSE
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"source": "local",
|
||||
"upstream": {
|
||||
"watch": {
|
||||
"pattern": "v(?P<version>[0-9]+(?:\\.[0-9]+)*)",
|
||||
"git_tags": "https://github.com/AsahiLinux/avd-fw.git"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
# Open replacement firmware for the Apple Video Decoder.
|
||||
# Built from AsahiLinux sources, without extracting proprietary firmware.
|
||||
|
||||
pkgname=avd-fw
|
||||
pkgver=0.1
|
||||
pkgrel=1
|
||||
pkgdesc='Open replacement firmware for the Apple Video Decoder (AVD) on Apple Silicon'
|
||||
# This recipe uses the native ARM linker and serves Apple Silicon systems.
|
||||
# Restrict both builds and publication to aarch64.
|
||||
arch=('aarch64')
|
||||
url='https://github.com/AsahiLinux/avd-fw'
|
||||
license=('MIT')
|
||||
# clang cross-compiles to arm-none-eabi out of the box, so no arm-none-eabi
|
||||
# toolchain is required; llvm supplies llvm-objcopy, which meson.build looks
|
||||
# up by name to turn each linked ELF into a padded raw image.
|
||||
makedepends=('meson' 'clang' 'llvm')
|
||||
# !buildflags is load-bearing: makepkg's CFLAGS/LDFLAGS target the aarch64 host
|
||||
# and would be injected into a bare-metal Cortex-M3 build. !strip keeps makepkg
|
||||
# from running the host strip over raw firmware images.
|
||||
options=('!strip' '!debug' '!buildflags' '!lto')
|
||||
source=("$pkgname-$pkgver.tar.gz::$url/archive/refs/tags/v$pkgver.tar.gz")
|
||||
sha256sums=('2e131244275cb15c94243e41eec8a2a665ec895cfe3a818181549db991e62c67')
|
||||
|
||||
build() {
|
||||
# The cross file selects clang, pins the host machine to cortex-m3 and sets
|
||||
# libdir=lib, which lands the images in /usr/lib/firmware/apple.
|
||||
#
|
||||
# Optimization is pinned to match upstream's Makefile (-O2). Meson's default
|
||||
# buildtype is "debug" (-O0 -g), which would ship unoptimized firmware; the
|
||||
# MMIO accessors in src/util.c go through a volatile typedef, so -O2 cannot
|
||||
# elide register reads or writes.
|
||||
meson setup \
|
||||
--cross-file "$pkgname-$pkgver/llvm.ini" \
|
||||
--prefix=/usr \
|
||||
-Doptimization=2 \
|
||||
-Ddebug=false \
|
||||
"$pkgname-$pkgver" build
|
||||
|
||||
meson compile -C build
|
||||
}
|
||||
|
||||
package() {
|
||||
meson install -C build --destdir "$pkgdir"
|
||||
|
||||
# meson installs custom_target outputs 0755; these are firmware blobs, not
|
||||
# programs, and every other firmware file on the system is 0644.
|
||||
chmod 644 "$pkgdir"/usr/lib/firmware/apple/*.bin
|
||||
|
||||
install -Dm644 "$pkgname-$pkgver/LICENSE" \
|
||||
"$pkgdir/usr/share/licenses/$pkgname/LICENSE"
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"source": "local",
|
||||
"release_ring": "fast",
|
||||
"upstream": {
|
||||
"watch": {
|
||||
"debian": "https://brave-browser-apt-release.s3.brave.com/dists/stable/main/binary-amd64/Packages",
|
||||
"package": "brave-browser",
|
||||
"pattern": "(?P<version>[0-9]+(?:\\.[0-9]+)*)"
|
||||
}
|
||||
},
|
||||
"origin": {
|
||||
"aur": "brave-bin",
|
||||
"commit": "d86e5479e163dac19d7ace3de472710e6eb06eea"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
# Maintainer: brave <aur-release@brave.com>
|
||||
# Contributor: Caleb Maclennan <caleb@alerque.com>
|
||||
# Contributor: José Miguel Sarasola <jmsaraur@gmail.com>
|
||||
# Contributor: Như Bảo Trương <28810481+nhubaotruong@users.noreply.github.com>
|
||||
# Contributor: Andrés Rodríguez <hello@andres.codes>
|
||||
# Contributor: Jacob Mischka <jacob@mischka.me>
|
||||
# Contributor: Manuel Mazzuola <origin.of@gmail.com>
|
||||
# Contributor: Simón Oroño <simonorono@protonmail.com>
|
||||
# Contributor: now-im <now im 627 @ gmail . com>
|
||||
# Contributor: Giusy Digital <kurmikon at libero dot it>
|
||||
|
||||
pkgname=brave-bin
|
||||
pkgver=1.96.59
|
||||
pkgrel=1
|
||||
epoch=1
|
||||
pkgdesc='Web browser that blocks ads and trackers by default (binary release)'
|
||||
arch=(x86_64 aarch64)
|
||||
url=https://brave.com
|
||||
license=(MPL2 BSD custom:chromium)
|
||||
depends=(alsa-lib
|
||||
gtk3
|
||||
libxss
|
||||
nss
|
||||
ttf-font)
|
||||
optdepends=('cups: Printer support'
|
||||
'libgnome-keyring: Enable GNOME keyring support'
|
||||
'libnotify: Native notification support')
|
||||
provides=("${pkgname%-bin}=$pkgver" 'brave-browser')
|
||||
conflicts=("${pkgname%-bin}")
|
||||
options=(!strip)
|
||||
source=($pkgname.sh brave-browser.desktop)
|
||||
source_x86_64=(${pkgname}-${pkgver}-x86_64.zip::https://github.com/brave/brave-browser/releases/download/v${pkgver}/brave-browser-${pkgver}-linux-amd64.zip)
|
||||
source_aarch64=(${pkgname}-${pkgver}-aarch64.zip::https://github.com/brave/brave-browser/releases/download/v${pkgver}/brave-browser-${pkgver}-linux-arm64.zip)
|
||||
|
||||
noextract=(${pkgname}-${pkgver}-x86_64.zip ${pkgname}-${pkgver}-aarch64.zip)
|
||||
sha256sums=('75a87dd17b42fcc6f27adfd16c82bed1c08e9251b07d2012f8d49f7412fa1d00'
|
||||
'c07276b69c7304981525ecb022f92daf7ae125a4fb05ac3442157b50826e257a')
|
||||
sha256sums_x86_64=('ee36d0fb939ebdf1922d47d7b4cb8879507733b2a76605a31bfe9dede3297139')
|
||||
sha256sums_aarch64=('faa8a26f1e7c0c3b8632633503f82e571a798212d8e6fe9baba77f0c73509867')
|
||||
|
||||
prepare() {
|
||||
mkdir -p brave
|
||||
bsdtar -xf "$pkgname-$pkgver-$CARCH.zip" -C brave
|
||||
chmod +x brave/brave
|
||||
}
|
||||
|
||||
package() {
|
||||
install -dm0755 "$pkgdir/opt"
|
||||
cp -a brave "$pkgdir/opt/$pkgname"
|
||||
|
||||
# allow firejail users to get the suid sandbox working
|
||||
chmod 4755 "$pkgdir/opt/brave-bin/chrome-sandbox"
|
||||
|
||||
install -Dm0755 "$pkgname.sh" "$pkgdir/usr/bin/brave"
|
||||
install -Dm0644 -t "$pkgdir/usr/share/applications/" "brave-browser.desktop"
|
||||
install -Dm0644 -t "$pkgdir/usr/share/licenses/$pkgname/" brave/LICENSE
|
||||
pushd "$pkgdir/usr/"
|
||||
for size in 16x16 24x24 32x32 48x48 64x64 128x128 256x256; do
|
||||
install -Dm0644 "$pkgdir/opt/$pkgname/product_logo_${size/x*/}.png" \
|
||||
"share/icons/hicolor/$size/apps/brave-desktop.png"
|
||||
done
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-"${HOME}/.config"}"
|
||||
|
||||
CONF_FILE="${XDG_CONFIG_HOME}/brave-flags.conf"
|
||||
|
||||
if
|
||||
test -f "${CONF_FILE}"
|
||||
then
|
||||
mapfile -t CONF_LIST < "${CONF_FILE}"
|
||||
fi
|
||||
|
||||
for CONF_LINE in "${CONF_LIST[@]}"
|
||||
do
|
||||
if ! [[
|
||||
"${CONF_LINE}" =~ ^[[:space:]]*(#|$)
|
||||
]]
|
||||
then
|
||||
FLAG_LIST+=("${CONF_LINE}")
|
||||
fi
|
||||
done
|
||||
|
||||
export CHROME_VERSION_EXTRA='stable'
|
||||
|
||||
exec /opt/brave-bin/brave "${FLAG_LIST[@]}" "${@}"
|
||||
@@ -0,0 +1,224 @@
|
||||
[Desktop Entry]
|
||||
Version=1.0
|
||||
Name=Brave
|
||||
# Only KDE 4 seems to use GenericName, so we reuse the KDE strings.
|
||||
# From Ubuntu's language-pack-kde-XX-base packages, version 9.04-20090413.
|
||||
GenericName=Web Browser
|
||||
GenericName[ar]=متصفح الشبكة
|
||||
GenericName[bg]=Уеб браузър
|
||||
GenericName[ca]=Navegador web
|
||||
GenericName[cs]=WWW prohlížeč
|
||||
GenericName[da]=Browser
|
||||
GenericName[de]=Web-Browser
|
||||
GenericName[el]=Περιηγητής ιστού
|
||||
GenericName[en_GB]=Web Browser
|
||||
GenericName[es]=Navegador web
|
||||
GenericName[et]=Veebibrauser
|
||||
GenericName[fi]=WWW-selain
|
||||
GenericName[fr]=Navigateur Web
|
||||
GenericName[gu]=વેબ બ્રાઉઝર
|
||||
GenericName[he]=דפדפן אינטרנט
|
||||
GenericName[hi]=वेब ब्राउज़र
|
||||
GenericName[hu]=Webböngésző
|
||||
GenericName[it]=Browser Web
|
||||
GenericName[ja]=ウェブブラウザ
|
||||
GenericName[kn]=ಜಾಲ ವೀಕ್ಷಕ
|
||||
GenericName[ko]=웹 브라우저
|
||||
GenericName[lt]=Žiniatinklio naršyklė
|
||||
GenericName[lv]=Tīmekļa pārlūks
|
||||
GenericName[ml]=വെബ് ബ്രൌസര്
|
||||
GenericName[mr]=वेब ब्राऊजर
|
||||
GenericName[nb]=Nettleser
|
||||
GenericName[nl]=Webbrowser
|
||||
GenericName[pl]=Przeglądarka WWW
|
||||
GenericName[pt]=Navegador Web
|
||||
GenericName[pt_BR]=Navegador da Internet
|
||||
GenericName[ro]=Navigator de Internet
|
||||
GenericName[ru]=Веб-браузер
|
||||
GenericName[sl]=Spletni brskalnik
|
||||
GenericName[sv]=Webbläsare
|
||||
GenericName[ta]=இணைய உலாவி
|
||||
GenericName[th]=เว็บเบราว์เซอร์
|
||||
GenericName[tr]=Web Tarayıcı
|
||||
GenericName[uk]=Навігатор Тенет
|
||||
GenericName[zh_CN]=网页浏览器
|
||||
GenericName[zh_HK]=網頁瀏覽器
|
||||
GenericName[zh_TW]=網頁瀏覽器
|
||||
# Not translated in KDE, from Epiphany 2.26.1-0ubuntu1.
|
||||
GenericName[bn]=ওয়েব ব্রাউজার
|
||||
GenericName[fil]=Web Browser
|
||||
GenericName[hr]=Web preglednik
|
||||
GenericName[id]=Browser Web
|
||||
GenericName[or]=ଓ୍ବେବ ବ୍ରାଉଜର
|
||||
GenericName[sk]=WWW prehliadač
|
||||
GenericName[sr]=Интернет прегледник
|
||||
GenericName[te]=మహాతల అన్వేషి
|
||||
GenericName[vi]=Bộ duyệt Web
|
||||
# Gnome and KDE 3 uses Comment.
|
||||
Comment=Access the Internet
|
||||
Comment[ar]=الدخول إلى الإنترنت
|
||||
Comment[bg]=Достъп до интернет
|
||||
Comment[bn]=ইন্টারনেটটি অ্যাক্সেস করুন
|
||||
Comment[ca]=Accedeix a Internet
|
||||
Comment[cs]=Přístup k internetu
|
||||
Comment[da]=Få adgang til internettet
|
||||
Comment[de]=Internetzugriff
|
||||
Comment[el]=Πρόσβαση στο Διαδίκτυο
|
||||
Comment[en_GB]=Access the Internet
|
||||
Comment[es]=Accede a Internet.
|
||||
Comment[et]=Pääs Internetti
|
||||
Comment[fi]=Käytä internetiä
|
||||
Comment[fil]=I-access ang Internet
|
||||
Comment[fr]=Accéder à Internet
|
||||
Comment[gu]=ઇંટરનેટ ઍક્સેસ કરો
|
||||
Comment[he]=גישה אל האינטרנט
|
||||
Comment[hi]=इंटरनेट तक पहुंच स्थापित करें
|
||||
Comment[hr]=Pristup Internetu
|
||||
Comment[hu]=Internetelérés
|
||||
Comment[id]=Akses Internet
|
||||
Comment[it]=Accesso a Internet
|
||||
Comment[ja]=インターネットにアクセス
|
||||
Comment[kn]=ಇಂಟರ್ನೆಟ್ ಅನ್ನು ಪ್ರವೇಶಿಸಿ
|
||||
Comment[ko]=인터넷 연결
|
||||
Comment[lt]=Interneto prieiga
|
||||
Comment[lv]=Piekļūt internetam
|
||||
Comment[ml]=ഇന്റര്നെറ്റ് ആക്സസ് ചെയ്യുക
|
||||
Comment[mr]=इंटरनेटमध्ये प्रवेश करा
|
||||
Comment[nb]=Gå til Internett
|
||||
Comment[nl]=Verbinding maken met internet
|
||||
Comment[or]=ଇଣ୍ଟର୍ନେଟ୍ ପ୍ରବେଶ କରନ୍ତୁ
|
||||
Comment[pl]=Skorzystaj z internetu
|
||||
Comment[pt]=Aceder à Internet
|
||||
Comment[pt_BR]=Acessar a internet
|
||||
Comment[ro]=Accesaţi Internetul
|
||||
Comment[ru]=Доступ в Интернет
|
||||
Comment[sk]=Prístup do siete Internet
|
||||
Comment[sl]=Dostop do interneta
|
||||
Comment[sr]=Приступите Интернету
|
||||
Comment[sv]=Gå ut på Internet
|
||||
Comment[ta]=இணையத்தை அணுகுதல்
|
||||
Comment[te]=ఇంటర్నెట్ను ఆక్సెస్ చెయ్యండి
|
||||
Comment[th]=เข้าถึงอินเทอร์เน็ต
|
||||
Comment[tr]=İnternet'e erişin
|
||||
Comment[uk]=Доступ до Інтернету
|
||||
Comment[vi]=Truy cập Internet
|
||||
Comment[zh_CN]=访问互联网
|
||||
Comment[zh_HK]=連線到網際網路
|
||||
Comment[zh_TW]=連線到網際網路
|
||||
StartupNotify=true
|
||||
StartupWMClass=brave-browser
|
||||
TryExec=brave
|
||||
Exec=brave %U
|
||||
Terminal=false
|
||||
Icon=brave-desktop
|
||||
Type=Application
|
||||
Categories=Network;WebBrowser;
|
||||
MimeType=application/pdf;application/rdf+xml;application/rss+xml;application/xhtml+xml;application/xhtml_xml;application/xml;image/gif;image/jpeg;image/png;image/webp;text/html;text/xml;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/ipfs;x-scheme-handler/ipns;
|
||||
Actions=new-window;new-private-window;
|
||||
|
||||
[Desktop Action new-window]
|
||||
Name=New Window
|
||||
Name[am]=አዲስ መስኮት
|
||||
Name[ar]=نافذة جديدة
|
||||
Name[bg]=Нов прозорец
|
||||
Name[bn]=নতুন উইন্ডো
|
||||
Name[ca]=Finestra nova
|
||||
Name[cs]=Nové okno
|
||||
Name[da]=Nyt vindue
|
||||
Name[de]=Neues Fenster
|
||||
Name[el]=Νέο Παράθυρο
|
||||
Name[en_GB]=New Window
|
||||
Name[es]=Nueva ventana
|
||||
Name[et]=Uus aken
|
||||
Name[fa]=پنجره جدید
|
||||
Name[fi]=Uusi ikkuna
|
||||
Name[fil]=New Window
|
||||
Name[fr]=Nouvelle fenêtre
|
||||
Name[gu]=નવી વિંડો
|
||||
Name[hi]=नई विंडो
|
||||
Name[hr]=Novi prozor
|
||||
Name[hu]=Új ablak
|
||||
Name[id]=Jendela Baru
|
||||
Name[it]=Nuova finestra
|
||||
Name[iw]=חלון חדש
|
||||
Name[ja]=新規ウインドウ
|
||||
Name[kn]=ಹೊಸ ವಿಂಡೊ
|
||||
Name[ko]=새 창
|
||||
Name[lt]=Naujas langas
|
||||
Name[lv]=Jauns logs
|
||||
Name[ml]=പുതിയ വിന്ഡോ
|
||||
Name[mr]=नवीन विंडो
|
||||
Name[nl]=Nieuw venster
|
||||
Name[no]=Nytt vindu
|
||||
Name[pl]=Nowe okno
|
||||
Name[pt]=Nova janela
|
||||
Name[pt_BR]=Nova janela
|
||||
Name[ro]=Fereastră nouă
|
||||
Name[ru]=Новое окно
|
||||
Name[sk]=Nové okno
|
||||
Name[sl]=Novo okno
|
||||
Name[sr]=Нови прозор
|
||||
Name[sv]=Nytt fönster
|
||||
Name[sw]=Dirisha Jipya
|
||||
Name[ta]=புதிய சாளரம்
|
||||
Name[te]=క్రొత్త విండో
|
||||
Name[th]=หน้าต่างใหม่
|
||||
Name[tr]=Yeni Pencere
|
||||
Name[uk]=Нове вікно
|
||||
Name[vi]=Cửa sổ Mới
|
||||
Name[zh_CN]=新建窗口
|
||||
Name[zh_TW]=開新視窗
|
||||
Exec=brave
|
||||
|
||||
[Desktop Action new-private-window]
|
||||
Name=New Incognito Window
|
||||
Name[ar]=نافذة جديدة للتصفح المتخفي
|
||||
Name[bg]=Нов прозорец „инкогнито“
|
||||
Name[bn]=নতুন ছদ্মবেশী উইন্ডো
|
||||
Name[ca]=Finestra d'incògnit nova
|
||||
Name[cs]=Nové anonymní okno
|
||||
Name[da]=Nyt inkognitovindue
|
||||
Name[de]=Neues Inkognito-Fenster
|
||||
Name[el]=Νέο παράθυρο για ανώνυμη περιήγηση
|
||||
Name[en_GB]=New Incognito window
|
||||
Name[es]=Nueva ventana de incógnito
|
||||
Name[et]=Uus inkognito aken
|
||||
Name[fa]=پنجره جدید حالت ناشناس
|
||||
Name[fi]=Uusi incognito-ikkuna
|
||||
Name[fil]=Bagong Incognito window
|
||||
Name[fr]=Nouvelle fenêtre de navigation privée
|
||||
Name[gu]=નવી છુપી વિંડો
|
||||
Name[hi]=नई गुप्त विंडो
|
||||
Name[hr]=Novi anoniman prozor
|
||||
Name[hu]=Új Inkognitóablak
|
||||
Name[id]=Jendela Penyamaran baru
|
||||
Name[it]=Nuova finestra di navigazione in incognito
|
||||
Name[iw]=חלון חדש לגלישה בסתר
|
||||
Name[ja]=新しいシークレット ウィンドウ
|
||||
Name[kn]=ಹೊಸ ಅಜ್ಞಾತ ವಿಂಡೋ
|
||||
Name[ko]=새 시크릿 창
|
||||
Name[lt]=Naujas inkognito langas
|
||||
Name[lv]=Jauns inkognito režīma logs
|
||||
Name[ml]=പുതിയ വേഷ പ്രച്ഛന്ന വിന്ഡോ
|
||||
Name[mr]=नवीन गुप्त विंडो
|
||||
Name[nl]=Nieuw incognitovenster
|
||||
Name[no]=Nytt inkognitovindu
|
||||
Name[pl]=Nowe okno incognito
|
||||
Name[pt]=Nova janela de navegação anónima
|
||||
Name[pt_BR]=Nova janela anônima
|
||||
Name[ro]=Fereastră nouă incognito
|
||||
Name[ru]=Новое окно в режиме инкогнито
|
||||
Name[sk]=Nové okno inkognito
|
||||
Name[sl]=Novo okno brez beleženja zgodovine
|
||||
Name[sr]=Нови прозор за прегледање без архивирања
|
||||
Name[sv]=Nytt inkognitofönster
|
||||
Name[ta]=புதிய மறைநிலைச் சாளரம்
|
||||
Name[te]=క్రొత్త అజ్ఞాత విండో
|
||||
Name[th]=หน้าต่างใหม่ที่ไม่ระบุตัวตน
|
||||
Name[tr]=Yeni Gizli pencere
|
||||
Name[uk]=Нове вікно в режимі анонімного перегляду
|
||||
Name[vi]=Cửa sổ ẩn danh mới
|
||||
Name[zh_CN]=新建隐身窗口
|
||||
Name[zh_TW]=新增無痕式視窗
|
||||
Exec=brave --incognito
|
||||
MimeType=x-scheme-handler/unknown;x-scheme-handler/about;text/html;text/xml;application/xhtml_xml;image/webp;x-scheme-handler/http;x-scheme-handler/https;
|
||||
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"source": "local",
|
||||
"release_ring": "fast",
|
||||
"upstream": {
|
||||
"watch": {
|
||||
"debian": "https://brave-browser-apt-release.s3.brave.com/dists/stable/main/binary-amd64/Packages",
|
||||
"package": "brave-origin",
|
||||
"pattern": "(?P<version>[0-9]+(?:\\.[0-9]+)*)"
|
||||
}
|
||||
},
|
||||
"origin": {
|
||||
"aur": "brave-origin-bin",
|
||||
"commit": "f2daecf7b7576cd445094ed09c3c783619ca0eb2"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
# Maintainer: brave <aur-release@brave.com>
|
||||
|
||||
pkgname=brave-origin-bin
|
||||
pkgver=1.96.59
|
||||
pkgrel=1
|
||||
epoch=1
|
||||
pkgdesc='The minimalist browser from the makers of Brave (binary release).'
|
||||
arch=(x86_64 aarch64)
|
||||
url=https://brave.com/origin/download
|
||||
license=('MPL2')
|
||||
depends=(alsa-lib gtk3 libxss nss ttf-font)
|
||||
optdepends=('cups: Printer support'
|
||||
'libgnome-keyring: Enable GNOME keyring support'
|
||||
'libnotify: Native notification support')
|
||||
provides=("$pkgname" "${pkgname%-bin}")
|
||||
conflicts=("${pkgname%-bin}")
|
||||
options=(!strip)
|
||||
source=($pkgname.sh "${pkgname%-bin}.desktop")
|
||||
source_x86_64=("${pkgname}-${pkgver}-x86_64.zip::https://github.com/brave/brave-browser/releases/download/v${pkgver}/brave-origin-${pkgver}-linux-amd64.zip")
|
||||
source_aarch64=("${pkgname}-${pkgver}-aarch64.zip::https://github.com/brave/brave-browser/releases/download/v${pkgver}/brave-origin-${pkgver}-linux-arm64.zip")
|
||||
|
||||
noextract=("${pkgname}-${pkgver}-x86_64.zip" "${pkgname}-${pkgver}-aarch64.zip")
|
||||
sha256sums=('5ff70ee473f35c2fc7642c422c8abe20aaac0d7cc30a3292744eb9fbeafba1bd'
|
||||
'c70bc71c696b6764247070375ae111bd76c8bad9c7bda4d46e03975b95571a8a')
|
||||
sha256sums_x86_64=('ad71abea5326d15bbe813a1e9592bcf2383f2ecc083a432313ca80b4436d3797')
|
||||
sha256sums_aarch64=('68d1fb922e0ad25099081a32a7f0611f2657345726590b697eaf6bbb820848ee')
|
||||
|
||||
prepare() {
|
||||
mkdir -p brave
|
||||
bsdtar -xf "$pkgname-$pkgver-$CARCH.zip" -C brave
|
||||
chmod +x brave/brave
|
||||
}
|
||||
|
||||
package() {
|
||||
install -dm0755 "$pkgdir/opt"
|
||||
cp -a brave "$pkgdir/opt/$pkgname"
|
||||
chmod 4755 "$pkgdir/opt/$pkgname/chrome-sandbox"
|
||||
install -Dm0755 "$pkgname.sh" "$pkgdir/usr/bin/${pkgname%-bin}"
|
||||
install -Dm0644 -t "$pkgdir/usr/share/applications/" "${pkgname%-bin}.desktop"
|
||||
install -Dm0644 -t "$pkgdir/usr/share/licenses/$pkgname/" brave/LICENSE
|
||||
pushd "$pkgdir/usr/"
|
||||
for size in 16x16 24x24 32x32 48x48 64x64 128x128 256x256; do
|
||||
install -Dm0644 "$pkgdir/opt/$pkgname/product_logo_${size/x*/}.png" \
|
||||
"share/icons/hicolor/$size/apps/brave-origin.png"
|
||||
done
|
||||
}
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-"${HOME}/.config"}"
|
||||
|
||||
CONF_FILE="${XDG_CONFIG_HOME}/brave-origin-flags.conf"
|
||||
|
||||
if
|
||||
test -f "${CONF_FILE}"
|
||||
then
|
||||
mapfile -t CONF_LIST < "${CONF_FILE}"
|
||||
fi
|
||||
|
||||
for CONF_LINE in "${CONF_LIST[@]}"
|
||||
do
|
||||
if ! [[
|
||||
"${CONF_LINE}" =~ ^[[:space:]]*(#|$)
|
||||
]]
|
||||
then
|
||||
FLAG_LIST+=("${CONF_LINE}")
|
||||
fi
|
||||
done
|
||||
|
||||
export CHROME_VERSION_EXTRA='stable'
|
||||
|
||||
exec /opt/brave-origin-bin/brave-origin "${FLAG_LIST[@]}" "${@}"
|
||||
@@ -0,0 +1,222 @@
|
||||
[Desktop Entry]
|
||||
Version=1.0
|
||||
Name=Brave Origin
|
||||
# Only KDE 4 seems to use GenericName, so we reuse the KDE strings.
|
||||
# From Ubuntu's language-pack-kde-XX-base packages, version 9.04-20090413.
|
||||
GenericName=Web Browser
|
||||
GenericName[ar]=متصفح الشبكة
|
||||
GenericName[bg]=Уеб браузър
|
||||
GenericName[ca]=Navegador web
|
||||
GenericName[cs]=WWW prohlížeč
|
||||
GenericName[da]=Browser
|
||||
GenericName[de]=Web-Browser
|
||||
GenericName[el]=Περιηγητής ιστού
|
||||
GenericName[en_GB]=Web Browser
|
||||
GenericName[es]=Navegador web
|
||||
GenericName[et]=Veebibrauser
|
||||
GenericName[fi]=WWW-selain
|
||||
GenericName[fr]=Navigateur Web
|
||||
GenericName[gu]=વેબ બ્રાઉઝર
|
||||
GenericName[he]=דפדפן אינטרנט
|
||||
GenericName[hi]=वेब ब्राउज़र
|
||||
GenericName[hu]=Webböngésző
|
||||
GenericName[it]=Browser Web
|
||||
GenericName[ja]=ウェブブラウザ
|
||||
GenericName[kn]=ಜಾಲ ವೀಕ್ಷಕ
|
||||
GenericName[ko]=웹 브라우저
|
||||
GenericName[lt]=Žiniatinklio naršyklė
|
||||
GenericName[lv]=Tīmekļa pārlūks
|
||||
GenericName[ml]=വെബ് ബ്രൌസര്
|
||||
GenericName[mr]=वेब ब्राऊजर
|
||||
GenericName[nb]=Nettleser
|
||||
GenericName[nl]=Webbrowser
|
||||
GenericName[pl]=Przeglądarka WWW
|
||||
GenericName[pt]=Navegador Web
|
||||
GenericName[pt_BR]=Navegador da Internet
|
||||
GenericName[ro]=Navigator de Internet
|
||||
GenericName[ru]=Веб-браузер
|
||||
GenericName[sl]=Spletni brskalnik
|
||||
GenericName[sv]=Webbläsare
|
||||
GenericName[ta]=இணைய உலாவி
|
||||
GenericName[th]=เว็บเบราว์เซอร์
|
||||
GenericName[tr]=Web Tarayıcı
|
||||
GenericName[uk]=Навігатор Тенет
|
||||
GenericName[zh_CN]=网页浏览器
|
||||
GenericName[zh_HK]=網頁瀏覽器
|
||||
GenericName[zh_TW]=網頁瀏覽器
|
||||
# Not translated in KDE, from Epiphany 2.26.1-0ubuntu1.
|
||||
GenericName[bn]=ওয়েব ব্রাউজার
|
||||
GenericName[fil]=Web Browser
|
||||
GenericName[hr]=Web preglednik
|
||||
GenericName[id]=Browser Web
|
||||
GenericName[or]=ଓ୍ବେବ ବ୍ରାଉଜର
|
||||
GenericName[sk]=WWW prehliadač
|
||||
GenericName[sr]=Интернет прегледник
|
||||
GenericName[te]=మహాతల అన్వేషి
|
||||
GenericName[vi]=Bộ duyệt Web
|
||||
# Gnome and KDE 3 uses Comment.
|
||||
Comment=Access the Internet
|
||||
Comment[ar]=الدخول إلى الإنترنت
|
||||
Comment[bg]=Достъп до интернет
|
||||
Comment[bn]=ইন্টারনেটটি অ্যাক্সেস করুন
|
||||
Comment[ca]=Accedeix a Internet
|
||||
Comment[cs]=Přístup k internetu
|
||||
Comment[da]=Få adgang til internettet
|
||||
Comment[de]=Internetzugriff
|
||||
Comment[el]=Πρόσβαση στο Διαδίκτυο
|
||||
Comment[en_GB]=Access the Internet
|
||||
Comment[es]=Accede a Internet.
|
||||
Comment[et]=Pääs Internetti
|
||||
Comment[fi]=Käytä internetiä
|
||||
Comment[fil]=I-access ang Internet
|
||||
Comment[fr]=Accéder à Internet
|
||||
Comment[gu]=ઇંટરનેટ ઍક્સેસ કરો
|
||||
Comment[he]=גישה אל האינטרנט
|
||||
Comment[hi]=इंटरनेट तक पहुंच स्थापित करें
|
||||
Comment[hr]=Pristup Internetu
|
||||
Comment[hu]=Internetelérés
|
||||
Comment[id]=Akses Internet
|
||||
Comment[it]=Accesso a Internet
|
||||
Comment[ja]=インターネットにアクセス
|
||||
Comment[kn]=ಇಂಟರ್ನೆಟ್ ಅನ್ನು ಪ್ರವೇಶಿಸಿ
|
||||
Comment[ko]=인터넷 연결
|
||||
Comment[lt]=Interneto prieiga
|
||||
Comment[lv]=Piekļūt internetam
|
||||
Comment[ml]=ഇന്റര്നെറ്റ് ആക്സസ് ചെയ്യുക
|
||||
Comment[mr]=इंटरनेटमध्ये प्रवेश करा
|
||||
Comment[nb]=Gå til Internett
|
||||
Comment[nl]=Verbinding maken met internet
|
||||
Comment[or]=ଇଣ୍ଟର୍ନେଟ୍ ପ୍ରବେଶ କରନ୍ତୁ
|
||||
Comment[pl]=Skorzystaj z internetu
|
||||
Comment[pt]=Aceder à Internet
|
||||
Comment[pt_BR]=Acessar a internet
|
||||
Comment[ro]=Accesaţi Internetul
|
||||
Comment[ru]=Доступ в Интернет
|
||||
Comment[sk]=Prístup do siete Internet
|
||||
Comment[sl]=Dostop do interneta
|
||||
Comment[sr]=Приступите Интернету
|
||||
Comment[sv]=Gå ut på Internet
|
||||
Comment[ta]=இணையத்தை அணுகுதல்
|
||||
Comment[te]=ఇంటర్నెట్ను ఆక్సెస్ చెయ్యండి
|
||||
Comment[th]=เข้าถึงอินเทอร์เน็ต
|
||||
Comment[tr]=İnternet'e erişin
|
||||
Comment[uk]=Доступ до Інтернету
|
||||
Comment[vi]=Truy cập Internet
|
||||
Comment[zh_CN]=访问互联网
|
||||
Comment[zh_HK]=連線到網際網路
|
||||
Comment[zh_TW]=連線到網際網路
|
||||
StartupNotify=true
|
||||
StartupWMClass=brave-origin
|
||||
Exec=brave-origin %U
|
||||
Terminal=false
|
||||
Icon=brave-origin
|
||||
Type=Application
|
||||
Categories=Network;WebBrowser;
|
||||
MimeType=application/pdf;application/rdf+xml;application/rss+xml;application/xhtml+xml;application/xhtml_xml;application/xml;image/gif;image/jpeg;image/png;image/webp;text/html;text/xml;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/chromium;
|
||||
Actions=new-window;new-private-window;
|
||||
|
||||
[Desktop Action new-window]
|
||||
Name=New Window
|
||||
Name[am]=አዲስ መስኮት
|
||||
Name[ar]=نافذة جديدة
|
||||
Name[bg]=Нов прозорец
|
||||
Name[bn]=নতুন উইন্ডো
|
||||
Name[ca]=Finestra nova
|
||||
Name[cs]=Nové okno
|
||||
Name[da]=Nyt vindue
|
||||
Name[de]=Neues Fenster
|
||||
Name[el]=Νέο Παράθυρο
|
||||
Name[en_GB]=New Window
|
||||
Name[es]=Nueva ventana
|
||||
Name[et]=Uus aken
|
||||
Name[fa]=پنجره جدید
|
||||
Name[fi]=Uusi ikkuna
|
||||
Name[fil]=New Window
|
||||
Name[fr]=Nouvelle fenêtre
|
||||
Name[gu]=નવી વિંડો
|
||||
Name[hi]=नई विंडो
|
||||
Name[hr]=Novi prozor
|
||||
Name[hu]=Új ablak
|
||||
Name[id]=Jendela Baru
|
||||
Name[it]=Nuova finestra
|
||||
Name[iw]=חלון חדש
|
||||
Name[ja]=新規ウインドウ
|
||||
Name[kn]=ಹೊಸ ವಿಂಡೊ
|
||||
Name[ko]=새 창
|
||||
Name[lt]=Naujas langas
|
||||
Name[lv]=Jauns logs
|
||||
Name[ml]=പുതിയ വിന്ഡോ
|
||||
Name[mr]=नवीन विंडो
|
||||
Name[nl]=Nieuw venster
|
||||
Name[no]=Nytt vindu
|
||||
Name[pl]=Nowe okno
|
||||
Name[pt]=Nova janela
|
||||
Name[pt_BR]=Nova janela
|
||||
Name[ro]=Fereastră nouă
|
||||
Name[ru]=Новое окно
|
||||
Name[sk]=Nové okno
|
||||
Name[sl]=Novo okno
|
||||
Name[sr]=Нови прозор
|
||||
Name[sv]=Nytt fönster
|
||||
Name[sw]=Dirisha Jipya
|
||||
Name[ta]=புதிய சாளரம்
|
||||
Name[te]=క్రొత్త విండో
|
||||
Name[th]=หน้าต่างใหม่
|
||||
Name[tr]=Yeni Pencere
|
||||
Name[uk]=Нове вікно
|
||||
Name[vi]=Cửa sổ Mới
|
||||
Name[zh_CN]=新建窗口
|
||||
Name[zh_TW]=開新視窗
|
||||
Exec=brave-origin
|
||||
|
||||
[Desktop Action new-private-window]
|
||||
Name=New Incognito Window
|
||||
Name[ar]=نافذة جديدة للتصفح المتخفي
|
||||
Name[bg]=Нов прозорец „инкогнито“
|
||||
Name[bn]=নতুন ছদ্মবেশী উইন্ডো
|
||||
Name[ca]=Finestra d'incògnit nova
|
||||
Name[cs]=Nové anonymní okno
|
||||
Name[da]=Nyt inkognitovindue
|
||||
Name[de]=Neues Inkognito-Fenster
|
||||
Name[el]=Νέο παράθυρο για ανώνυμη περιήγηση
|
||||
Name[en_GB]=New Incognito window
|
||||
Name[es]=Nueva ventana de incógnito
|
||||
Name[et]=Uus inkognito aken
|
||||
Name[fa]=پنجره جدید حالت ناشناس
|
||||
Name[fi]=Uusi incognito-ikkuna
|
||||
Name[fil]=Bagong Incognito window
|
||||
Name[fr]=Nouvelle fenêtre de navigation privée
|
||||
Name[gu]=નવી છુપી વિંડો
|
||||
Name[hi]=नई गुप्त विंडो
|
||||
Name[hr]=Novi anoniman prozor
|
||||
Name[hu]=Új Inkognitóablak
|
||||
Name[id]=Jendela Penyamaran baru
|
||||
Name[it]=Nuova finestra di navigazione in incognito
|
||||
Name[iw]=חלון חדש לגלישה בסתר
|
||||
Name[ja]=新しいシークレット ウィンドウ
|
||||
Name[kn]=ಹೊಸ ಅಜ್ಞಾತ ವಿಂಡೋ
|
||||
Name[ko]=새 시크릿 창
|
||||
Name[lt]=Naujas inkognito langas
|
||||
Name[lv]=Jauns inkognito režīma logs
|
||||
Name[ml]=പുതിയ വേഷ പ്രച്ഛന്ന വിന്ഡോ
|
||||
Name[mr]=नवीन गुप्त विंडो
|
||||
Name[nl]=Nieuw incognitovenster
|
||||
Name[no]=Nytt inkognitovindu
|
||||
Name[pl]=Nowe okno incognito
|
||||
Name[pt]=Nova janela de navegação anónima
|
||||
Name[pt_BR]=Nova janela anônima
|
||||
Name[ro]=Fereastră nouă incognito
|
||||
Name[ru]=Новое окно в режиме инкогнито
|
||||
Name[sk]=Nové okno inkognito
|
||||
Name[sl]=Novo okno brez beleženja zgodovine
|
||||
Name[sr]=Нови прозор за прегледање без архивирања
|
||||
Name[sv]=Nytt inkognitofönster
|
||||
Name[ta]=புதிய மறைநிலைச் சாளரம்
|
||||
Name[te]=క్రొత్త అజ్ఞాత విండో
|
||||
Name[th]=หน้าต่างใหม่ที่ไม่ระบุตัวตน
|
||||
Name[tr]=Yeni Gizli pencere
|
||||
Name[uk]=Нове вікно в режимі анонімного перегляду
|
||||
Name[vi]=Cửa sổ ẩn danh mới
|
||||
Name[zh_CN]=新建隐身窗口
|
||||
Name[zh_TW]=新增無痕式視窗
|
||||
Exec=brave-origin --incognito
|
||||
@@ -2,32 +2,52 @@
|
||||
|
||||
pkgname=cursor-bin
|
||||
pkgver=3.21.16
|
||||
pkgrel=2
|
||||
pkgrel=3
|
||||
pkgdesc='AI-first coding environment'
|
||||
arch=('x86_64')
|
||||
arch=('x86_64' 'aarch64')
|
||||
url="https://www.cursor.com"
|
||||
license=('LicenseRef-Cursor_EULA')
|
||||
# upstream uses Electron newer than internal VSCode
|
||||
_electron=electron42
|
||||
depends=(xdg-utils ripgrep $_electron nodejs
|
||||
'gcc-libs' 'hicolor-icon-theme' 'libxkbfile')
|
||||
depends=(xdg-utils gcc-libs hicolor-icon-theme libxkbfile)
|
||||
depends_x86_64=(ripgrep $_electron nodejs)
|
||||
# ARM retains bundled Electron because electron42 is unavailable in ALARM.
|
||||
depends_aarch64=(
|
||||
alsa-lib at-spi2-core ca-certificates cairo curl dbus expat glib2 glibc gtk3
|
||||
libcups libsecret libx11 libxcb libxcomposite libxdamage libxext libxfixes
|
||||
libxkbcommon libxrandr mesa nspr nss pango systemd-libs which
|
||||
)
|
||||
options=(!strip !debug) # Don't break ext of VSCode
|
||||
_commit=8ae78e8eee1e63479c7e0504b664bc0a80c6800f
|
||||
source=("https://downloads.cursor.com/production/${_commit}/linux/x64/deb/amd64/deb/cursor_${pkgver}_amd64.deb"
|
||||
source_x86_64=("https://downloads.cursor.com/production/${_commit}/linux/x64/deb/amd64/deb/cursor_${pkgver}_amd64.deb"
|
||||
"https://gitlab.archlinux.org/archlinux/packaging/packages/code/-/raw/main/code."{sh,mjs}
|
||||
rg.sh)
|
||||
sha512sums=('032c86a5d51f154ce36b1a0bf34aa06b2d117666b4372a787ea3117fc0b2b1686e952c721388f2eaf7787f2e0581378c98608048126f7470df2e85e9dbd75ca4' '937299c6cb6be2f8d25f7dbc95cf77423875c5f8353b8bd6cd7cc8e5603cbf8405b14dbf8bd615db2e3b36ed680fc8e1909410815f7f8587b7267a699e00ab37' '793f9ff6306e3992ac89802d98110cba288ea1181a901467333293b7d76182ef9792c2a39ff49d9347a18a174b1f42bc58862091dff583f4146c2704eea28033' 'e79fe7659f59d1ae02fc68816399bfd31587315df6cdb6ccf1d0ca76f7cdc692c2a42b30591c0091147bd97ef14b1c7745dc26bd7cb3ea6bba45698e5044fa2a')
|
||||
noextract=(cursor_${pkgver}_amd64.deb) # avoid double tarball
|
||||
sha512sums_x86_64=('032c86a5d51f154ce36b1a0bf34aa06b2d117666b4372a787ea3117fc0b2b1686e952c721388f2eaf7787f2e0581378c98608048126f7470df2e85e9dbd75ca4' '937299c6cb6be2f8d25f7dbc95cf77423875c5f8353b8bd6cd7cc8e5603cbf8405b14dbf8bd615db2e3b36ed680fc8e1909410815f7f8587b7267a699e00ab37' '793f9ff6306e3992ac89802d98110cba288ea1181a901467333293b7d76182ef9792c2a39ff49d9347a18a174b1f42bc58862091dff583f4146c2704eea28033' 'e79fe7659f59d1ae02fc68816399bfd31587315df6cdb6ccf1d0ca76f7cdc692c2a42b30591c0091147bd97ef14b1c7745dc26bd7cb3ea6bba45698e5044fa2a')
|
||||
source_aarch64=("https://downloads.cursor.com/production/${_commit}/linux/arm64/deb/arm64/deb/cursor_${pkgver}_arm64.deb")
|
||||
sha512sums_aarch64=('88a163c130e7ee8d9f29b93ccf1258e9f5eb0138d4de5d2333f5bc2992c0a4d0c3a72e8f5912b2e9ac9819a8d758de8e7249cd33bdf3ac631271001ca92700f7')
|
||||
noextract=(cursor_${pkgver}_amd64.deb cursor_${pkgver}_arm64.deb) # avoid double tarball
|
||||
_app=usr/share/cursor/resources/app
|
||||
package() {
|
||||
# Exclude electron
|
||||
bsdtar -xOf ${noextract[0]} data.tar.xz | tar -xJf - -C "$pkgdir" \
|
||||
--exclude 'usr/share/cursor/[^r]*' --exclude 'usr/share/cursor/*.pak'
|
||||
local deb="cursor_${pkgver}_amd64.deb"
|
||||
local -a excludes=(--exclude 'usr/share/cursor/[^r]*' --exclude 'usr/share/cursor/*.pak')
|
||||
if [[ "$CARCH" == aarch64 ]]; then
|
||||
deb="cursor_${pkgver}_arm64.deb"
|
||||
# Keep bundled Electron; omit Debian's AppArmor and sysctl settings.
|
||||
excludes=(--exclude './etc')
|
||||
fi
|
||||
bsdtar -xOf "${srcdir}/${deb}" data.tar.xz | tar -xJf - -C "$pkgdir" "${excludes[@]}"
|
||||
cd "$pkgdir"
|
||||
# Disable Cursor's bundled updater; Omarchy manages updates via pacman (#238).
|
||||
sed -i '/^[[:space:]]*"\(backupUpdateUrl\|updateUrl\)":/d' \
|
||||
"${_app}/product.json"
|
||||
mv usr/share/zsh/{vendor-completions,site-functions}
|
||||
if [[ "$CARCH" == aarch64 ]]; then
|
||||
install -d usr/bin
|
||||
ln -s /usr/share/cursor/bin/cursor usr/bin/cursor
|
||||
# Use Electron's unprivileged namespace sandbox.
|
||||
chmod 0755 usr/share/cursor/chrome-sandbox
|
||||
return
|
||||
fi
|
||||
ln -sf /usr/bin/node ${_app}/resources/helpers/node
|
||||
install -Dm755 "${srcdir}/rg.sh" ${_app}/node_modules/@vscode/ripgrep/bin/rg
|
||||
ln -sf /usr/bin/xdg-open ${_app}/node_modules/open/xdg-open
|
||||
|
||||
@@ -15,19 +15,15 @@ pkgver=10.0.401
|
||||
_runtimever=10.0.12
|
||||
_sdkver=$pkgver
|
||||
_short_ver=10.0
|
||||
pkgrel=1
|
||||
arch=('x86_64' 'armv7h' 'aarch64')
|
||||
pkgrel=2
|
||||
arch=('aarch64')
|
||||
url='https://www.microsoft.com/net/core'
|
||||
license=('MIT')
|
||||
options=('staticlibs')
|
||||
options=('staticlibs' '!debug')
|
||||
source=('dotnet.sh')
|
||||
source_armv7h=("https://builds.dotnet.microsoft.com/dotnet/Sdk/${_sdkver}/dotnet-sdk-${_sdkver}-linux-arm.tar.gz")
|
||||
source_aarch64=("https://builds.dotnet.microsoft.com/dotnet/Sdk/${_sdkver}/dotnet-sdk-${_sdkver}-linux-arm64.tar.gz")
|
||||
source_x86_64=("https://builds.dotnet.microsoft.com/dotnet/Sdk/${_sdkver}/dotnet-sdk-${_sdkver}-linux-x64.tar.gz")
|
||||
sha512sums=('768151c7179fb6a126b3de9cae01e363e8894f6fab384b1e2c5066c2adca4578638983b1b62aea10dd18045e6d6e8f8ea13280481134de94f004a118919b2c06')
|
||||
sha512sums_armv7h=('94a8a52862ca9f0de1075a468d6e4e307a1d4463098a9e8266e66939709a812b0126e212cce7e8c6feae6b078d86c8b77e088814a0e32531edb0da0a1ce90c11')
|
||||
sha512sums_aarch64=('58ace73ced6b4360754689a686bdfb8a317f4da6cb8bb416dbc7d0ba9f47e43e3c09f5eb1f1a1cfaacbd10df9558da4882bf2a5e195d6ab56a02c1f9f76102ed')
|
||||
sha512sums_x86_64=('51c8b999af9e8dd9998c9edc5944e19a90788862068acd38694e098889054ce8c23d4f0c5cccfa16bf187d044562359e5ee69a9f8ad0bbe913ba90311fbce25b')
|
||||
|
||||
# Keep each split package's notices usable when installed independently.
|
||||
_install_license() {
|
||||
@@ -110,12 +106,8 @@ package_dotnet-targeting-pack-bin() {
|
||||
provides=(dotnet-targeting-pack=${_runtimever} dotnet-targeting-pack-${_short_ver})
|
||||
conflicts=(dotnet-targeting-pack=${_runtimever} dotnet-targeting-pack-${_short_ver})
|
||||
|
||||
if [ $CARCH = 'x86_64' ]; then msarch=x64;
|
||||
elif [ $CARCH = 'armv7h' ]; then msarch=arm;
|
||||
elif [ $CARCH = 'aarch64' ]; then msarch=arm64; fi
|
||||
|
||||
install -dm 755 "${pkgdir}"/usr/share/{dotnet,dotnet/packs,licenses}
|
||||
cp -dr --no-preserve='ownership' packs/Microsoft.NETCore.App.{Host.linux-${msarch},Ref} "${pkgdir}"/usr/share/dotnet/packs/
|
||||
cp -dr --no-preserve='ownership' packs/Microsoft.NETCore.App.{Host.linux-arm64,Ref} "${pkgdir}"/usr/share/dotnet/packs/
|
||||
_install_license
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
[google-chrome]
|
||||
source = "apt"
|
||||
mirror = "https://dl.google.com/linux/chrome/deb/"
|
||||
pkg = "google-chrome-stable"
|
||||
suite = "stable"
|
||||
repo = "main"
|
||||
strip_release = true
|
||||
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"source": "local",
|
||||
"release_ring": "fast",
|
||||
"upstream": {
|
||||
"watch": {
|
||||
"debian": "https://dl.google.com/linux/chrome/deb/dists/stable/main/binary-amd64/Packages",
|
||||
"package": "google-chrome-stable",
|
||||
"pattern": "(?P<version>[0-9]+(?:\\.[0-9]+)*)-1"
|
||||
}
|
||||
},
|
||||
"origin": {
|
||||
"aur": "google-chrome",
|
||||
"commit": "6bd49a411277b3f9bcc9e58ce0c579292db75804"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
# Maintainer: Christian Heusel <christian@heusel.eu>
|
||||
# Contributor: Knut Ahlers <knut at ahlers dot me>
|
||||
# Contributor: Det <nimetonmaili g-mail>
|
||||
# Contributor: t3ddy, Lex Rivera aka x-demon, ruario, Abdullah
|
||||
|
||||
# Check for new Linux releases in: http://googlechromereleases.blogspot.com/search/label/Stable%20updates
|
||||
# or use: $ curl -sSf https://dl.google.com/linux/chrome/deb/dists/stable/main/binary-amd64/Packages | grep -A1 "Package: google-chrome-stable" | awk '/Version/{print $2}' | cut -d '-' -f1
|
||||
|
||||
pkgname=google-chrome
|
||||
pkgver=154.0.8037.57
|
||||
pkgrel=1
|
||||
pkgdesc="The popular web browser by Google (Stable Channel)"
|
||||
arch=(
|
||||
'x86_64'
|
||||
'aarch64'
|
||||
)
|
||||
url="https://www.google.com/chrome"
|
||||
license=('custom:chrome')
|
||||
depends=(
|
||||
'alsa-lib'
|
||||
'gtk3'
|
||||
'libcups'
|
||||
'libxss'
|
||||
'libxtst'
|
||||
'nss'
|
||||
'ttf-liberation'
|
||||
'xdg-utils'
|
||||
)
|
||||
optdepends=(
|
||||
'pipewire: WebRTC desktop sharing under Wayland'
|
||||
'kdialog: for file dialogs in KDE'
|
||||
'gnome-keyring: for storing passwords in GNOME keyring'
|
||||
'kwallet: for storing passwords in KWallet'
|
||||
)
|
||||
options=('!emptydirs' '!strip')
|
||||
install=$pkgname.install
|
||||
_channel=stable
|
||||
source=('eula_text.html'
|
||||
"google-chrome-$_channel.sh")
|
||||
sha512sums=('a225555c06b7c32f9f2657004558e3f996c981481dbb0d3cd79b1d59fa3f05d591af88399422d3ab29d9446c103e98d567aeafe061d9550817ab6e7eb0498396'
|
||||
'de02b498a4b5b93e21622c8dba57befe795d733a04656be911cc38e28bfef0e20470450f44be523bbde8d4de28f79c10434846ca01fc2a2f4e67707b79332f94')
|
||||
sha512sums_x86_64=('503bfdac8639dddeb44c339b37a295383a5a766e47204b26f4e3e11b550937a1e1c1b0c41d63c3bcbbcf26795d53a2b731385065c9245fb5509f33e59cff6864')
|
||||
sha512sums_aarch64=('b409cd701801d0e1c204c4eede536d9439a481db5b5ab6e475016f8845cfc3d47ae656412fac6e0988072d05037f3a94a4059ac2b0534b6f283471b8778bf6c3')
|
||||
|
||||
source_x86_64=("https://dl.google.com/linux/chrome/deb/pool/main/g/google-chrome-${_channel}/google-chrome-${_channel}_${pkgver}-1_amd64.deb")
|
||||
source_aarch64=("https://dl.google.com/linux/chrome/deb/pool/main/g/google-chrome-${_channel}/google-chrome-${_channel}_${pkgver}-1_arm64.deb")
|
||||
|
||||
package() {
|
||||
bsdtar -xf data.tar.xz -C "$pkgdir/"
|
||||
|
||||
# Launcher
|
||||
install -m755 google-chrome-$_channel.sh "$pkgdir"/usr/bin/google-chrome-$_channel
|
||||
|
||||
# Icons
|
||||
for i in 16x16 24x24 32x32 48x48 64x64 128x128 256x256; do
|
||||
install -Dm644 "$pkgdir"/opt/google/chrome/product_logo_${i/x*/}.png \
|
||||
"$pkgdir"/usr/share/icons/hicolor/$i/apps/google-chrome.png
|
||||
done
|
||||
|
||||
# License
|
||||
install -Dm644 eula_text.html "$pkgdir"/usr/share/licenses/google-chrome/eula_text.html
|
||||
install -Dm644 "$pkgdir"/opt/google/chrome/WidevineCdm/LICENSE \
|
||||
"$pkgdir"/usr/share/licenses/google-chrome-$_channel/WidevineCdm-LICENSE.txt
|
||||
|
||||
# Fix the Chrome desktop entry
|
||||
sed -i \
|
||||
-e "/Exec=/i\StartupWMClass=Google-chrome" \
|
||||
-e "s/x-scheme-handler\/ftp;\?//g" \
|
||||
"$pkgdir"/usr/share/applications/google-chrome.desktop
|
||||
|
||||
# Remove the Debian Cron job, duplicate product logos and menu directory
|
||||
rm -r \
|
||||
"$pkgdir"/etc/cron.daily/ \
|
||||
"$pkgdir"/opt/google/chrome/cron/ \
|
||||
"$pkgdir"/opt/google/chrome/product_logo_*.png
|
||||
}
|
||||
@@ -0,0 +1,901 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="no-js consumer" data-country="us" lang="en">
|
||||
<head>
|
||||
|
||||
<script>
|
||||
var a=location.href.match(/platform=(win8|win|mac|linux|cros|ios)/),b=window.navigator.userAgent;document.documentElement.id=a&&a[1]||(-1<b.indexOf("Windows NT 6.2")?"win8":-1<b.indexOf("iPad")?"ios":-1<b.indexOf("Windows")?"win":-1<b.indexOf("Mac")?"mac":-1<b.indexOf("CrOS")?"cros":"linux");
|
||||
if(-1<b.indexOf("MSIE")){var c=-1<b.indexOf("MSIE 6")?" lt-ie10 lt-ie9 lt-ie8 lt-ie7 ie6":-1<b.indexOf("MSIE 7")?" lt-ie10 lt-ie9 lt-ie8 ie7":-1<b.indexOf("MSIE 8")?" lt-ie10 lt-ie9 ie8":-1<b.indexOf("MSIE 9")?" lt-ie10 ie9":-1<b.indexOf("MSIE 10")?" ie10":"";""!==c&&(document.documentElement.className+=c)}if(-1<b.indexOf("Windows NT 5.1")||-1<b.indexOf("Windows NT 5.2"))document.documentElement.className+=" winXP";
|
||||
</script>
|
||||
<script src="//www.gstatic.com/external_hosted/modernizr/modernizr.js">
|
||||
</script>
|
||||
<meta charset="utf-8">
|
||||
<meta content="initial-scale=1, minimum-scale=1, width=device-width" name="viewport">
|
||||
<meta content="View the full Terms of Service agreement for Google Chrome" name="description">
|
||||
<title>
|
||||
Google Chrome Terms of Service
|
||||
</title>
|
||||
<link href="https://plus.google.com/100585555255542998765" rel="publisher">
|
||||
<link href="//www.google.com/images/icons/product/chrome-32.png" rel="icon" type="image/ico">
|
||||
<link href="https://www.google.com/chrome/browser/privacy/eula_text.html" rel="canonical">
|
||||
<style>
|
||||
body {
|
||||
font-family: Arial;
|
||||
font-size: 13px;
|
||||
}
|
||||
</style>
|
||||
<script src="//www.google.com/js/gweb/analytics/autotrack.js">
|
||||
</script>
|
||||
<script>
|
||||
new gweb.analytics.AutoTrack({
|
||||
profile: 'UA-26908291-1'
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body class="" id="grid">
|
||||
<div class="browser-eula" id="main">
|
||||
<div class="compact">
|
||||
<h2>
|
||||
Google Chrome Terms of Service
|
||||
</h2>
|
||||
<p>
|
||||
These Terms of Service apply to the executable code version of Google Chrome. Source code
|
||||
for Google Chrome is available free of charge under open source software license
|
||||
agreements at http://code.google.com/chromium/terms.html.
|
||||
</p>
|
||||
<p>
|
||||
<strong>1. Your relationship with Google</strong>
|
||||
</p>
|
||||
<p>
|
||||
1.1 Your use of Google’s products, software, services and web sites (referred to
|
||||
collectively as the “Services” in this document and excluding any services provided to
|
||||
you by Google under a separate written agreement) is subject to the terms of a legal
|
||||
agreement between you and Google. “Google” means Google Inc., whose principal place of
|
||||
business is at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States. This
|
||||
document explains how the agreement is made up, and sets out some of the terms of that
|
||||
agreement.
|
||||
</p>
|
||||
<p>
|
||||
1.2 Unless otherwise agreed in writing with Google, your agreement with Google will
|
||||
always include, at a minimum, the terms and conditions set out in this document. These
|
||||
are referred to below as the “Universal Terms”. Open source software licenses for Google
|
||||
Chrome source code constitute separate written agreements. To the limited extent that the
|
||||
open source software licenses expressly supersede these Universal Terms, the open source
|
||||
licenses govern your agreement with Google for the use of Google Chrome or specific
|
||||
included components of Google Chrome.
|
||||
</p>
|
||||
<p>
|
||||
1.3 Your agreement with Google will also include the terms set forth below in the Google
|
||||
Chrome Additional Terms of Service and terms of any Legal Notices applicable to the
|
||||
Services, in addition to the Universal Terms. All of these are referred to below as the
|
||||
“Additional Terms”. Where Additional Terms apply to a Service, these will be accessible
|
||||
for you to read either within, or through your use of, that Service.
|
||||
</p>
|
||||
<p>
|
||||
1.4 The Universal Terms, together with the Additional Terms, form a legally binding
|
||||
agreement between you and Google in relation to your use of the Services. It is important
|
||||
that you take the time to read them carefully. Collectively, this legal agreement is
|
||||
referred to below as the “Terms”.
|
||||
</p>
|
||||
<p>
|
||||
1.5 If there is any contradiction between what the Additional Terms say and what the
|
||||
Universal Terms say, then the Additional Terms shall take precedence in relation to that
|
||||
Service.
|
||||
</p>
|
||||
<p>
|
||||
<strong>2. Accepting the Terms</strong>
|
||||
</p>
|
||||
<p>
|
||||
2.1 In order to use the Services, you must first agree to the Terms. You may not use the
|
||||
Services if you do not accept the Terms.
|
||||
</p>
|
||||
<p>
|
||||
2.2 You can accept the Terms by:
|
||||
</p>
|
||||
<p>
|
||||
(A) clicking to accept or agree to the Terms, where this option is made available to you
|
||||
by Google in the user interface for any Service; or
|
||||
</p>
|
||||
<p>
|
||||
(B) by actually using the Services. In this case, you understand and agree that Google
|
||||
will treat your use of the Services as acceptance of the Terms from that point onwards.
|
||||
</p>
|
||||
<p>
|
||||
<strong>3. Language of the Terms</strong>
|
||||
</p>
|
||||
<p>
|
||||
3.1 Where Google has provided you with a translation of the English language version of
|
||||
the Terms, then you agree that the translation is provided for your convenience only and
|
||||
that the English language versions of the Terms will govern your relationship with
|
||||
Google.
|
||||
</p>
|
||||
<p>
|
||||
3.2 If there is any contradiction between what the English language version of the Terms
|
||||
says and what a translation says, then the English language version shall take
|
||||
precedence.
|
||||
</p>
|
||||
<p>
|
||||
<strong>4. Provision of the Services by Google</strong>
|
||||
</p>
|
||||
<p>
|
||||
4.1 Google has subsidiaries and affiliated legal entities around the world (“Subsidiaries
|
||||
and Affiliates”). Sometimes, these companies will be providing the Services to you on
|
||||
behalf of Google itself. You acknowledge and agree that Subsidiaries and Affiliates will
|
||||
be entitled to provide the Services to you.
|
||||
</p>
|
||||
<p>
|
||||
4.2 Google is constantly innovating in order to provide the best possible experience for
|
||||
its users. You acknowledge and agree that the form and nature of the Services which
|
||||
Google provides may change from time to time without prior notice to you.
|
||||
</p>
|
||||
<p>
|
||||
4.3 As part of this continuing innovation, you acknowledge and agree that Google may stop
|
||||
(permanently or temporarily) providing the Services (or any features within the Services)
|
||||
to you or to users generally at Google’s sole discretion, without prior notice to you.
|
||||
You may stop using the Services at any time. You do not need to specifically inform
|
||||
Google when you stop using the Services.
|
||||
</p>
|
||||
<p>
|
||||
4.4 You acknowledge and agree that if Google disables access to your account, you may be
|
||||
prevented from accessing the Services, your account details or any files or other content
|
||||
which is contained in your account.
|
||||
</p>
|
||||
<p>
|
||||
<strong>5. Use of the Services by you</strong>
|
||||
</p>
|
||||
<p>
|
||||
5.1 You agree to use the Services only for purposes that are permitted by (a) the Terms
|
||||
and (b) any applicable law, regulation or generally accepted practices or guidelines in
|
||||
the relevant jurisdictions (including any laws regarding the export of data or software
|
||||
to and from the United States or other relevant countries).
|
||||
</p>
|
||||
<p>
|
||||
5.2 You agree that you will not engage in any activity that interferes with or disrupts
|
||||
the Services (or the servers and networks which are connected to the Services).
|
||||
</p>
|
||||
<p>
|
||||
5.3 Unless you have been specifically permitted to do so in a separate agreement with
|
||||
Google, you agree that you will not reproduce, duplicate, copy, sell, trade or resell the
|
||||
Services for any purpose.
|
||||
</p>
|
||||
<p>
|
||||
5.4 You agree that you are solely responsible for (and that Google has no responsibility
|
||||
to you or to any third party for) any breach of your obligations under the Terms and for
|
||||
the consequences (including any loss or damage which Google may suffer) of any such
|
||||
breach.
|
||||
</p>
|
||||
<p>
|
||||
<strong>6. Privacy and your personal information</strong>
|
||||
</p>
|
||||
<p>
|
||||
6.1 For information about Google’s data protection practices, please read Google’s
|
||||
privacy policy at http://www.google.com/privacy.html and at
|
||||
http://www.google.com/chrome/intl/en/privacy.html. This policy explains how Google treats
|
||||
your personal information, and protects your privacy, when you use the Services.
|
||||
</p>
|
||||
<p>
|
||||
6.2 You agree to the use of your data in accordance with Google’s privacy policies.
|
||||
</p>
|
||||
<p>
|
||||
<strong>7. Content in the Services</strong>
|
||||
</p>
|
||||
<p>
|
||||
7.1 You understand that all information (such as data files, written text, computer
|
||||
software, music, audio files or other sounds, photographs, videos or other images) which
|
||||
you may have access to as part of, or through your use of, the Services are the sole
|
||||
responsibility of the person from which such content originated. All such information is
|
||||
referred to below as the “Content.”
|
||||
</p>
|
||||
<p>
|
||||
7.2 You should be aware that Content presented to you as part of the Services, including
|
||||
but not limited to advertisements in the Services and sponsored Content within the
|
||||
Services may be protected by intellectual property rights which are owned by the sponsors
|
||||
or advertisers who provide that Content to Google (or by other persons or companies on
|
||||
their behalf). You may not modify, rent, lease, loan, sell, distribute or create
|
||||
derivative works based on this Content (either in whole or in part) unless you have been
|
||||
specifically told that you may do so by Google or by the owners of that Content, in a
|
||||
separate agreement.
|
||||
</p>
|
||||
<p>
|
||||
7.3 Google reserves the right (but shall have no obligation) to pre-screen, review, flag,
|
||||
filter, modify, refuse or remove any or all Content from any Service. For some of the
|
||||
Services, Google may provide tools to filter out explicit sexual content. These tools
|
||||
include the SafeSearch preference settings (see
|
||||
https://support.google.com/websearch/answer/510?hl=en). In addition, there are
|
||||
commercially available services and software to limit access to material that you may
|
||||
find objectionable.
|
||||
</p>
|
||||
<p>
|
||||
7.4 You understand that by using the Services you may be exposed to Content that you may
|
||||
find offensive, indecent or objectionable and that, in this respect, you use the Services
|
||||
at your own risk.
|
||||
</p>
|
||||
<p>
|
||||
7.5 You agree that you are solely responsible for (and that Google has no responsibility
|
||||
to you or to any third party for) any Content that you create, transmit or display while
|
||||
using the Services and for the consequences of your actions (including any loss or damage
|
||||
which Google may suffer) by doing so.
|
||||
</p>
|
||||
<p>
|
||||
<strong>8. Proprietary rights</strong>
|
||||
</p>
|
||||
<p>
|
||||
8.1 You acknowledge and agree that Google (or Google’s licensors) own all legal right,
|
||||
title and interest in and to the Services, including any intellectual property rights
|
||||
which subsist in the Services (whether those rights happen to be registered or not, and
|
||||
wherever in the world those rights may exist).
|
||||
</p>
|
||||
<p>
|
||||
8.2 Unless you have agreed otherwise in writing with Google, nothing in the Terms gives
|
||||
you a right to use any of Google’s trade names, trade marks, service marks, logos, domain
|
||||
names, and other distinctive brand features.
|
||||
</p>
|
||||
<p>
|
||||
8.3 If you have been given an explicit right to use any of these brand features in a
|
||||
separate written agreement with Google, then you agree that your use of such features
|
||||
shall be in compliance with that agreement, any applicable provisions of the Terms, and
|
||||
Google's brand feature use guidelines as updated from time to time. These guidelines can
|
||||
be viewed online at http://www.google.com/permissions/guidelines.html (or such other URL
|
||||
as Google may provide for this purpose from time to time).
|
||||
</p>
|
||||
<p>
|
||||
8.4 Google acknowledges and agrees that it obtains no right, title or interest from you
|
||||
(or your licensors) under these Terms in or to any Content that you submit, post,
|
||||
transmit or display on, or through, the Services, including any intellectual property
|
||||
rights which subsist in that Content (whether those rights happen to be registered or
|
||||
not, and wherever in the world those rights may exist). Unless you have agreed otherwise
|
||||
in writing with Google, you agree that you are responsible for protecting and enforcing
|
||||
those rights and that Google has no obligation to do so on your behalf.
|
||||
</p>
|
||||
<p>
|
||||
8.5 You agree that you shall not remove, obscure, or alter any proprietary rights notices
|
||||
(including copyright and trade mark notices) which may be affixed to or contained within
|
||||
the Services.
|
||||
</p>
|
||||
<p>
|
||||
8.6 Unless you have been expressly authorized to do so in writing by Google, you agree
|
||||
that in using the Services, you will not use any trade mark, service mark, trade name,
|
||||
logo of any company or organization in a way that is likely or intended to cause
|
||||
confusion about the owner or authorized user of such marks, names or logos.
|
||||
</p>
|
||||
<p>
|
||||
<strong>9. License from Google</strong>
|
||||
</p>
|
||||
<p>
|
||||
9.1 Google gives you a personal, worldwide, royalty-free, non-assignable and
|
||||
non-exclusive license to use the software provided to you by Google as part of the
|
||||
Services as provided to you by Google (referred to as the “Software” below). This license
|
||||
is for the sole purpose of enabling you to use and enjoy the benefit of the Services as
|
||||
provided by Google, in the manner permitted by the Terms.
|
||||
</p>
|
||||
<p>
|
||||
9.2 Subject to section 1.2, you may not (and you may not permit anyone else to) copy,
|
||||
modify, create a derivative work of, reverse engineer, decompile or otherwise attempt to
|
||||
extract the source code of the Software or any part thereof, unless this is expressly
|
||||
permitted or required by law, or unless you have been specifically told that you may do
|
||||
so by Google, in writing.
|
||||
</p>
|
||||
<p>
|
||||
9.3 Subject to section 1.2, unless Google has given you specific written permission to do
|
||||
so, you may not assign (or grant a sub-license of) your rights to use the Software, grant
|
||||
a security interest in or over your rights to use the Software, or otherwise transfer any
|
||||
part of your rights to use the Software.
|
||||
</p>
|
||||
<p>
|
||||
<strong>10. Content license from you</strong>
|
||||
</p>
|
||||
<p>
|
||||
10.1 You retain copyright and any other rights you already hold in Content which you
|
||||
submit, post or display on or through, the Services.
|
||||
</p>
|
||||
<p>
|
||||
<strong>11. Software updates</strong>
|
||||
</p>
|
||||
<p>
|
||||
11.1 The Software which you use may automatically download and install updates from time
|
||||
to time from Google. These updates are designed to improve, enhance and further develop
|
||||
the Services and may take the form of bug fixes, enhanced functions, new software modules
|
||||
and completely new versions. You agree to receive such updates (and permit Google to
|
||||
deliver these to you) as part of your use of the Services.
|
||||
</p>
|
||||
<p>
|
||||
<strong>12. Ending your relationship with Google</strong>
|
||||
</p>
|
||||
<p>
|
||||
12.1 The Terms will continue to apply until terminated by either you or Google as set out
|
||||
below.
|
||||
</p>
|
||||
<p>
|
||||
12.2 Google may at any time, terminate its legal agreement with you if:
|
||||
</p>
|
||||
<p>
|
||||
(A) you have breached any provision of the Terms (or have acted in manner which clearly
|
||||
shows that you do not intend to, or are unable to comply with the provisions of the
|
||||
Terms); or
|
||||
</p>
|
||||
<p>
|
||||
(B) Google is required to do so by law (for example, where the provision of the Services
|
||||
to you is, or becomes, unlawful); or
|
||||
</p>
|
||||
<p>
|
||||
(C) the partner with whom Google offered the Services to you has terminated its
|
||||
relationship with Google or ceased to offer the Services to you; or
|
||||
</p>
|
||||
<p>
|
||||
(D) Google is transitioning to no longer providing the Services to users in the country
|
||||
in which you are resident or from which you use the service; or
|
||||
</p>
|
||||
<p>
|
||||
(E) the provision of the Services to you by Google is, in Google’s opinion, no longer
|
||||
commercially viable.
|
||||
</p>
|
||||
<p>
|
||||
12.3 Nothing in this Section shall affect Google’s rights regarding provision of Services
|
||||
under Section 4 of the Terms.
|
||||
</p>
|
||||
<p>
|
||||
12.4 When these Terms come to an end, all of the legal rights, obligations and
|
||||
liabilities that you and Google have benefited from, been subject to (or which have
|
||||
accrued over time whilst the Terms have been in force) or which are expressed to continue
|
||||
indefinitely, shall be unaffected by this cessation, and the provisions of paragraph 19.7
|
||||
shall continue to apply to such rights, obligations and liabilities indefinitely.
|
||||
</p>
|
||||
<p>
|
||||
<strong>13. EXCLUSION OF WARRANTIES</strong>
|
||||
</p>
|
||||
<p>
|
||||
13.1 NOTHING IN THESE TERMS, INCLUDING SECTIONS 13 AND 14, SHALL EXCLUDE OR LIMIT
|
||||
GOOGLE’S WARRANTY OR LIABILITY FOR LOSSES WHICH MAY NOT BE LAWFULLY EXCLUDED OR LIMITED
|
||||
BY APPLICABLE LAW. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF CERTAIN WARRANTIES OR
|
||||
CONDITIONS OR THE LIMITATION OR EXCLUSION OF LIABILITY FOR LOSS OR DAMAGE CAUSED BY
|
||||
NEGLIGENCE, BREACH OF CONTRACT OR BREACH OF IMPLIED TERMS, OR INCIDENTAL OR CONSEQUENTIAL
|
||||
DAMAGES. ACCORDINGLY, ONLY THE LIMITATIONS WHICH ARE LAWFUL IN YOUR JURISDICTION WILL
|
||||
APPLY TO YOU AND OUR LIABILITY WILL BE LIMITED TO THE MAXIMUM EXTENT PERMITTED BY LAW.
|
||||
</p>
|
||||
<p>
|
||||
13.2 YOU EXPRESSLY UNDERSTAND AND AGREE THAT YOUR USE OF THE SERVICES IS AT YOUR SOLE
|
||||
RISK AND THAT THE SERVICES ARE PROVIDED "AS IS" AND “AS AVAILABLE.”
|
||||
</p>
|
||||
<p>
|
||||
13.3 IN PARTICULAR, GOOGLE, ITS SUBSIDIARIES AND AFFILIATES, AND ITS LICENSORS DO NOT
|
||||
REPRESENT OR WARRANT TO YOU THAT:
|
||||
</p>
|
||||
<p>
|
||||
(A) YOUR USE OF THE SERVICES WILL MEET YOUR REQUIREMENTS,
|
||||
</p>
|
||||
<p>
|
||||
(B) YOUR USE OF THE SERVICES WILL BE UNINTERRUPTED, TIMELY, SECURE OR FREE FROM ERROR,
|
||||
</p>
|
||||
<p>
|
||||
(C) ANY INFORMATION OBTAINED BY YOU AS A RESULT OF YOUR USE OF THE SERVICES WILL BE
|
||||
ACCURATE OR RELIABLE, AND
|
||||
</p>
|
||||
<p>
|
||||
(D) THAT DEFECTS IN THE OPERATION OR FUNCTIONALITY OF ANY SOFTWARE PROVIDED TO YOU AS
|
||||
PART OF THE SERVICES WILL BE CORRECTED.
|
||||
</p>
|
||||
<p>
|
||||
13.4 ANY MATERIAL DOWNLOADED OR OTHERWISE OBTAINED THROUGH THE USE OF THE SERVICES IS
|
||||
DONE AT YOUR OWN DISCRETION AND RISK AND THAT YOU WILL BE SOLELY RESPONSIBLE FOR ANY
|
||||
DAMAGE TO YOUR COMPUTER SYSTEM OR OTHER DEVICE OR LOSS OF DATA THAT RESULTS FROM THE
|
||||
DOWNLOAD OF ANY SUCH MATERIAL.
|
||||
</p>
|
||||
<p>
|
||||
13.5 NO ADVICE OR INFORMATION, WHETHER ORAL OR WRITTEN, OBTAINED BY YOU FROM GOOGLE OR
|
||||
THROUGH OR FROM THE SERVICES SHALL CREATE ANY WARRANTY NOT EXPRESSLY STATED IN THE TERMS.
|
||||
</p>
|
||||
<p>
|
||||
13.6 GOOGLE FURTHER EXPRESSLY DISCLAIMS ALL WARRANTIES AND CONDITIONS OF ANY KIND,
|
||||
WHETHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO THE IMPLIED WARRANTIES AND
|
||||
CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
|
||||
</p>
|
||||
<p>
|
||||
<strong>14. LIMITATION OF LIABILITY</strong>
|
||||
</p>
|
||||
<p>
|
||||
14.1 SUBJECT TO OVERALL PROVISION IN PARAGRAPH 13.1 ABOVE, YOU EXPRESSLY UNDERSTAND AND
|
||||
AGREE THAT GOOGLE, ITS SUBSIDIARIES AND AFFILIATES, AND ITS LICENSORS SHALL NOT BE LIABLE
|
||||
TO YOU FOR:
|
||||
</p>
|
||||
<p>
|
||||
(A) ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL CONSEQUENTIAL OR EXEMPLARY DAMAGES WHICH
|
||||
MAY BE INCURRED BY YOU, HOWEVER CAUSED AND UNDER ANY THEORY OF LIABILITY.. THIS SHALL
|
||||
INCLUDE, BUT NOT BE LIMITED TO, ANY LOSS OF PROFIT (WHETHER INCURRED DIRECTLY OR
|
||||
INDIRECTLY), ANY LOSS OF GOODWILL OR BUSINESS REPUTATION, ANY LOSS OF DATA SUFFERED, COST
|
||||
OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR OTHER INTANGIBLE LOSS;
|
||||
</p>
|
||||
<p>
|
||||
(B) ANY LOSS OR DAMAGE WHICH MAY BE INCURRED BY YOU, INCLUDING BUT NOT LIMITED TO LOSS OR
|
||||
DAMAGE AS A RESULT OF:
|
||||
</p>
|
||||
<p>
|
||||
(I) ANY RELIANCE PLACED BY YOU ON THE COMPLETENESS, ACCURACY OR EXISTENCE OF ANY
|
||||
ADVERTISING, OR AS A RESULT OF ANY RELATIONSHIP OR TRANSACTION BETWEEN YOU AND ANY
|
||||
ADVERTISER OR SPONSOR WHOSE ADVERTISING APPEARS ON THE SERVICES;
|
||||
</p>
|
||||
<p>
|
||||
(II) ANY CHANGES WHICH GOOGLE MAY MAKE TO THE SERVICES, OR FOR ANY PERMANENT OR TEMPORARY
|
||||
CESSATION IN THE PROVISION OF THE SERVICES (OR ANY FEATURES WITHIN THE SERVICES);
|
||||
</p>
|
||||
<p>
|
||||
(III) THE DELETION OF, CORRUPTION OF, OR FAILURE TO STORE, ANY CONTENT AND OTHER
|
||||
COMMUNICATIONS DATA MAINTAINED OR TRANSMITTED BY OR THROUGH YOUR USE OF THE SERVICES;
|
||||
</p>
|
||||
<p>
|
||||
(IV) YOUR FAILURE TO PROVIDE GOOGLE WITH ACCURATE ACCOUNT INFORMATION;
|
||||
</p>
|
||||
<p>
|
||||
(V) YOUR FAILURE TO KEEP YOUR PASSWORD OR ACCOUNT DETAILS SECURE AND CONFIDENTIAL;
|
||||
</p>
|
||||
<p>
|
||||
14.2 THE LIMITATIONS ON GOOGLE’S LIABILITY TO YOU IN PARAGRAPH 14.1 ABOVE SHALL APPLY
|
||||
WHETHER OR NOT GOOGLE HAS BEEN ADVISED OF OR SHOULD HAVE BEEN AWARE OF THE POSSIBILITY OF
|
||||
ANY SUCH LOSSES ARISING.
|
||||
</p>
|
||||
<p>
|
||||
<strong>15. Copyright and trade mark policies</strong>
|
||||
</p>
|
||||
<p>
|
||||
15.1 It is Google’s policy to respond to notices of alleged copyright infringement that
|
||||
comply with applicable international intellectual property law (including, in the United
|
||||
States, the Digital Millennium Copyright Act) and to terminating the accounts of repeat
|
||||
infringers. Details of Google’s policy can be found at http://www.google.com/dmca.html.
|
||||
</p>
|
||||
<p>
|
||||
15.2 Google operates a trade mark complaints procedure in respect of Google’s advertising
|
||||
business, details of which can be found at http://www.google.com/tm_complaint.html.
|
||||
</p>
|
||||
<p>
|
||||
<strong>16. Advertisements</strong>
|
||||
</p>
|
||||
<p>
|
||||
16.1 Some of the Services are supported by advertising revenue and may display
|
||||
advertisements and promotions. These advertisements may be targeted to the content of
|
||||
information stored on the Services, queries made through the Services or other
|
||||
information.
|
||||
</p>
|
||||
<p>
|
||||
16.2 The manner, mode and extent of advertising by Google on the Services are subject to
|
||||
change without specific notice to you.
|
||||
</p>
|
||||
<p>
|
||||
16.3 In consideration for Google granting you access to and use of the Services, you
|
||||
agree that Google may place such advertising on the Services.
|
||||
</p>
|
||||
<p>
|
||||
<strong>17. Other content</strong>
|
||||
</p>
|
||||
<p>
|
||||
17.1 The Services may include hyperlinks to other web sites or content or resources.
|
||||
Google may have no control over any web sites or resources which are provided by
|
||||
companies or persons other than Google.
|
||||
</p>
|
||||
<p>
|
||||
17.2 You acknowledge and agree that Google is not responsible for the availability of any
|
||||
such external sites or resources, and does not endorse any advertising, products or other
|
||||
materials on or available from such web sites or resources.
|
||||
</p>
|
||||
<p>
|
||||
17.3 You acknowledge and agree that Google is not liable for any loss or damage which may
|
||||
be incurred by you as a result of the availability of those external sites or resources,
|
||||
or as a result of any reliance placed by you on the completeness, accuracy or existence
|
||||
of any advertising, products or other materials on, or available from, such web sites or
|
||||
resources.
|
||||
</p>
|
||||
<p>
|
||||
<strong>18. Changes to the Terms</strong>
|
||||
</p>
|
||||
<p>
|
||||
18.1 Google may make changes to the Universal Terms or Additional Terms from time to
|
||||
time. When these changes are made, Google will make a new copy of the Universal Terms
|
||||
available at http://www.google.com/chrome/intl/en/eula_text.html and any new Additional
|
||||
Terms will be made available to you from within, or through, the affected Services.
|
||||
</p>
|
||||
<p>
|
||||
18.2 You understand and agree that if you use the Services after the date on which the
|
||||
Universal Terms or Additional Terms have changed, Google will treat your use as
|
||||
acceptance of the updated Universal Terms or Additional Terms.
|
||||
</p>
|
||||
<p>
|
||||
<strong>19. General legal terms</strong>
|
||||
</p>
|
||||
<p>
|
||||
19.1 Sometimes when you use the Services, you may (as a result of, or in connection with
|
||||
your use of the Services) use a service or download a piece of software, or purchase
|
||||
goods, which are provided by another person or company. Your use of these other services,
|
||||
software or goods may be subject to separate terms between you and the company or person
|
||||
concerned. If so, the Terms do not affect your legal relationship with these other
|
||||
companies or individuals.
|
||||
</p>
|
||||
<p>
|
||||
19.2 The Terms constitute the whole legal agreement between you and Google and govern
|
||||
your use of the Services (but excluding any services which Google may provide to you
|
||||
under a separate written agreement), and completely replace any prior agreements between
|
||||
you and Google in relation to the Services.
|
||||
</p>
|
||||
<p>
|
||||
19.3 You agree that Google may provide you with notices, including those regarding
|
||||
changes to the Terms, by email, regular mail, or postings on the Services.
|
||||
</p>
|
||||
<p>
|
||||
19.4 You agree that if Google does not exercise or enforce any legal right or remedy
|
||||
which is contained in the Terms (or which Google has the benefit of under any applicable
|
||||
law), this will not be taken to be a formal waiver of Google’s rights and that those
|
||||
rights or remedies will still be available to Google.
|
||||
</p>
|
||||
<p>
|
||||
19.5 If any court of law, having the jurisdiction to decide on this matter, rules that
|
||||
any provision of these Terms is invalid, then that provision will be removed from the
|
||||
Terms without affecting the rest of the Terms. The remaining provisions of the Terms will
|
||||
continue to be valid and enforceable.
|
||||
</p>
|
||||
<p>
|
||||
19.6 You acknowledge and agree that each member of the group of companies of which Google
|
||||
is the parent shall be third party beneficiaries to the Terms and that such other
|
||||
companies shall be entitled to directly enforce, and rely upon, any provision of the
|
||||
Terms which confers a benefit on (or rights in favor of) them. Other than this, no other
|
||||
person or company shall be third party beneficiaries to the Terms.
|
||||
</p>
|
||||
<p>
|
||||
19.7 The Terms, and your relationship with Google under the Terms, shall be governed by
|
||||
the laws of the State of California without regard to its conflict of laws provisions.
|
||||
You and Google agree to submit to the exclusive jurisdiction of the courts located within
|
||||
the county of Santa Clara, California to resolve any legal matter arising from the Terms.
|
||||
Notwithstanding this, you agree that Google shall still be allowed to apply for
|
||||
injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.
|
||||
</p>
|
||||
<p>
|
||||
<strong>20. Additional Terms for Extensions for Google Chrome</strong>
|
||||
</p>
|
||||
<p>
|
||||
20.1 These terms in this section apply if you install extensions on your copy of Google
|
||||
Chrome. Extensions are small software programs, developed by Google or third parties,
|
||||
that can modify and enhance the functionality of Google Chrome. Extensions may have
|
||||
greater privileges to access your browser or your computer than regular webpages,
|
||||
including the ability to read and modify your private data.
|
||||
</p>
|
||||
<p>
|
||||
20.2 From time to time, Google Chrome may check with remote servers (hosted by Google or
|
||||
by third parties) for available updates to extensions, including but not limited to bug
|
||||
fixes or enhanced functionality. You agree that such updates will be automatically
|
||||
requested, downloaded, and installed without further notice to you.
|
||||
</p>
|
||||
<p>
|
||||
20.3 From time to time, Google may discover an extension that violates Google developer
|
||||
terms or other legal agreements, laws, regulations or policies. Google Chrome will
|
||||
periodically download a list of such extensions from Google’s servers. You agree that
|
||||
Google may remotely disable or remove any such extension from user systems in its sole
|
||||
discretion.
|
||||
</p>
|
||||
<p>
|
||||
<strong>21. Additional Terms for Enterprise Use</strong>
|
||||
</p>
|
||||
<p>
|
||||
21.1 If you are a business entity, then the individual accepting on behalf of the entity
|
||||
(for the avoidance of doubt, for business entities, in these Terms, "you" means the
|
||||
entity) represents and warrants that he or she has the authority to act on your behalf,
|
||||
that you represent that you are duly authorized to do business in the country or
|
||||
countries where you operate, and that your employees, officers, representatives, and
|
||||
other agents accessing the Service are duly authorized to access Google Chrome and to
|
||||
legally bind you to these Terms.
|
||||
</p>
|
||||
<p>
|
||||
21.2 Subject to the Terms, and in addition to the license grant in Section 9, Google
|
||||
grants you a non-exclusive, non-transferable license to reproduce, distribute, install,
|
||||
and use Google Chrome solely on machines intended for use by your employees, officers,
|
||||
representatives, and agents in connection with your business entity, and provided that
|
||||
their use of Google Chrome will be subject to the Terms.
|
||||
</p>
|
||||
<p>
|
||||
August 12, 2010
|
||||
</p><br>
|
||||
<hr>
|
||||
<br>
|
||||
<h2>
|
||||
Google Chrome Additional Terms of Service
|
||||
</h2>
|
||||
<p>
|
||||
<strong>MPEGLA</strong>
|
||||
</p>
|
||||
<p>
|
||||
THIS PRODUCT IS LICENSED UNDER THE AVC PATENT PORTFOLIO LICENSE FOR THE PERSONAL AND
|
||||
NON-COMMERCIAL USE OF A CONSUMER TO (i) ENCODE VIDEO IN COMPLIANCE WITH THE AVC STANDARD
|
||||
( “AVC VIDEO”) AND/OR (ii) DECODE AVC VIDEO THAT WAS ENCODED BY A CONSUMER ENGAGED IN A
|
||||
PERSONAL AND NON-COMMERCIAL ACTIVITY AND/OR WAS OBTAINED FROM A VIDEO PARTNER LICENSED TO
|
||||
PROVIDE AVC VIDEO. NO LICENSE IS GRANTED OR SHALL BE IMPLIED FOR ANY OTHER USE.
|
||||
ADDITIONAL INFORMATION MAY BE OBTAINED FROM MPEG LA, L.L.C. SEE HTTP://WWW.MPEGLA.COM.
|
||||
</p>
|
||||
<p>
|
||||
<strong>Adobe</strong>
|
||||
</p>
|
||||
<p>
|
||||
Google Chrome may include one or more components provided by Adobe Systems Incorporated
|
||||
and Adobe Software Ireland Limited (collectively “Adobe”). Your use of the Adobe software
|
||||
as provided by Google (“Adobe Software”) is subject to the following additional terms
|
||||
(the “Adobe Terms”). You, the entity receiving the Adobe Software, will be hereinafter
|
||||
referred to as “Sublicensee.”
|
||||
</p>
|
||||
<p>
|
||||
1. License Restrictions.
|
||||
</p>
|
||||
<p>
|
||||
(a) Flash Player, Version 10.x is designed only as a browser plug-in. Sublicensee may not
|
||||
modify or distribute this Adobe Software for use as anything but a browser plug-in for
|
||||
playing back content on a web page. For example, Sublicensee will not modify this Adobe
|
||||
Software in order to allow interoperation with applications that run outside of the
|
||||
browser (e.g., standalone applications, widgets, device UI).
|
||||
</p>
|
||||
<p>
|
||||
(b) Sublicensee will not expose any APIs of the Flash Player, Version 10.x through a
|
||||
browser plug-in interface in such a way that allows such extension to be used to playback
|
||||
content from a web page as a stand-alone application.
|
||||
</p>
|
||||
<p>
|
||||
(c) The Chrome-Reader Software may not be used to render any PDF or EPUB documents that
|
||||
utilize digital rights management protocols or systems other than Adobe DRM.
|
||||
</p>
|
||||
<p>
|
||||
(d) Adobe DRM must be enabled in the Chrome-Reader Software for all Adobe DRM protected
|
||||
PDF and EPUB documents.
|
||||
</p>
|
||||
<p>
|
||||
(e) The Chrome-Reader Software may not, other than as explicitly permitted by the
|
||||
technical specifications, disable any capabilities provided by Adobe in the Adobe
|
||||
Software, including but not limited to, support for PDF and EPUB formats and Adobe DRM.
|
||||
</p>
|
||||
<p>
|
||||
2. Electronic Transmission. Sublicensee may allow the download of the Adobe Software from
|
||||
a web site, the Internet, an intranet, or similar technology (an, “Electronic
|
||||
Transmissions”) provided that Sublicensee agrees that any distributions of the Adobe
|
||||
Software by Sublicensee, including those on CD-ROM, DVD-ROM or other storage media and
|
||||
Electronic Transmissions, if expressly permitted, shall be subject to reasonable security
|
||||
measures to prevent unauthorized use. With relation to Electronic Transmissions approved
|
||||
hereunder, Sublicensee agrees to employ any reasonable use restrictions set by Adobe,
|
||||
including those related to security and/or the restriction of distribution to end users
|
||||
of the Sublicensee Product.
|
||||
</p>
|
||||
<p>
|
||||
3. EULA and Distribution Terms.
|
||||
</p>
|
||||
<p>
|
||||
(a) Sublicensee shall ensure that the Adobe Software is distributed to end users under an
|
||||
enforceable end user license agreement, in favor of Sublicensee and its suppliers
|
||||
containing at least each of the following minimum terms (the “End-User License”): (i) a
|
||||
prohibition against distribution and copying, (ii) a prohibition against modifications
|
||||
and derivative works, (iii) a prohibition against decompiling, reverse engineering,
|
||||
disassembling, and otherwise reducing the Adobe Software to a human-perceivable form,
|
||||
(iv) a provision indicating ownership of Sublicensee Product (as defined in Section 8) by
|
||||
Sublicensee and its licensors, (v) a disclaimer of indirect, special, incidental,
|
||||
punitive, and consequential damages, and (vi) other industry standard disclaimers and
|
||||
limitations, including, as applicable: a disclaimer of all applicable statutory
|
||||
warranties, to the full extent allowed by law.
|
||||
</p>
|
||||
<p>
|
||||
(b) Sublicensee shall ensure that the Adobe Software is distributed to Sublicensee’s
|
||||
distributors under an enforceable distribution license agreement, in favor of Sublicensee
|
||||
and its suppliers containing terms as protective of Adobe as the Adobe Terms.
|
||||
</p>
|
||||
<p>
|
||||
4. Opensource. Sublicensee will not directly or indirectly grant, or purport to grant, to
|
||||
any third party any rights or immunities under Adobe’s intellectual property or
|
||||
proprietary rights that will subject such intellectual property to an open source license
|
||||
or scheme in which there is or could be interpreted to be a requirement that as a
|
||||
condition of use, modification and/or distribution, the Adobe Software be: (i) disclosed
|
||||
or distributed in source code form; (ii) licensed for the purpose of making derivative
|
||||
works; or (iii) redistributable at no charge. For clarification purposes, the foregoing
|
||||
restriction does not preclude Sublicensee from distributing, and Sublicensee will
|
||||
distribute the Adobe Software as bundled with the Google Software, without charge.
|
||||
</p>
|
||||
<p>
|
||||
5. Additional Terms. With respect to any update, upgrade, new versions of the Adobe
|
||||
Software (collectively “Upgrades”) provided to Sublicenses, Adobe reserves the right to
|
||||
require additional terms and conditions applicable solely to the Upgrade and future
|
||||
versions thereof, and solely to the extent that such restrictions are imposed by Adobe on
|
||||
all licensees of such Upgrade. If Sublicensee does not agree to such additional terms or
|
||||
conditions, Sublicensee will have no license rights with respect to such Upgrade, and
|
||||
Sublicensee’s license rights with respect to the Adobe Software will terminate
|
||||
automatically on the 90th day from the date such additional terms are made available to
|
||||
Sublicensee.
|
||||
</p>
|
||||
<p>
|
||||
6. Proprietary Rights Notices. Sublicensee shall not, and shall require its distributors
|
||||
not to, delete or in any manner alter the copyright notices, trademarks, logos or related
|
||||
notices, or other proprietary rights notices of Adobe (and its licensors, if any)
|
||||
appearing on or within the Adobe Software or accompanying materials.
|
||||
</p>
|
||||
<p>
|
||||
7. Technical Requirements. Sublicensee and its distributors may only distribute Adobe
|
||||
Software and/or Upgrade on devices that (i) meet the technical specifications posted on
|
||||
http://www.adobe.com/mobile/licensees, (or a successor web site thereto), and (ii) has
|
||||
been verified by Adobe as set forth below.
|
||||
</p>
|
||||
<p>
|
||||
8. Verification and Update. Sublicensee must submit to Adobe each Sublicensee product
|
||||
(and each version thereof) containing the Adobe Software and/or Upgrade (“Sublicensee
|
||||
Product”) that do not meet the Device Verification exemption criteria to be communicated
|
||||
by Google, for Adobe to verify. Sublicensee shall pay for each submission made by
|
||||
Sublicensee by procuring verification packages at Adobe’s then-current terms set forth at
|
||||
http://flashmobile.adobe.com/. Sublicensee Product that has not passed verification may
|
||||
not be distributed. Verification will be accomplished in accordance with Adobe’s
|
||||
then-current process described at http://flashmobile.adobe.com/ (“Verification”).
|
||||
</p>
|
||||
<p>
|
||||
9. Profiles and Device Central. Sublicensee will be prompted to enter certain profile
|
||||
information about the Sublicensee Products either as part of the Verification process or
|
||||
some other method, and Sublicensee will provide such information, to Adobe. Adobe may (i)
|
||||
use such profile information as reasonably necessary to verify the Sublicensee Product
|
||||
(if such product is subject to Verification), and (ii) display such profile information
|
||||
in “Adobe Device Intelligence system,” located at
|
||||
https://devices.adobe.com/partnerportal/, and made available through Adobe’s authoring
|
||||
and development tools and services to enable developers and end users to see how content
|
||||
or applications are displayed in Sublicensee Products (e.g. how video images appear in
|
||||
certain phones).
|
||||
</p>
|
||||
<p>
|
||||
10. Export. Sublicensee acknowledges that the laws and regulations of the United States
|
||||
restrict the export and re-export of commodities and technical data of United States
|
||||
origin, which may include the Adobe Software. Sublicensee agrees that it will not export
|
||||
or re-export the Adobe Software, without the appropriate United States and foreign
|
||||
governmental clearances, if any.
|
||||
</p>
|
||||
<p>
|
||||
11. Technology Pass-through Terms.
|
||||
</p>
|
||||
<p>
|
||||
(a) Except pursuant to applicable permissions or agreements therefor, from or with the
|
||||
applicable parties, Sublicensees shall not use and shall not allow the use of, the Adobe
|
||||
Software for the encoding or decoding of mp3 audio only (.mp3) data on any non-pc device
|
||||
(e.g., mobile phone or set-top box), nor may the mp3 encoders or decoders contained in
|
||||
the Adobe Software be used or accessed by any product other than the Adobe Software. The
|
||||
Adobe Software may be used for the encoding or decoding of MP3 data contained within a
|
||||
swf or flv file, which contains video, picture or other data. Sublicensee shall
|
||||
acknowledge that use of the Adobe Software for non-PC devices, as described in the
|
||||
prohibitions in this section, may require the payment of licensing royalties or other
|
||||
amounts to third parties who may hold intellectual property rights related to the MP3
|
||||
technology and that Adobe nor Sublicensee has not paid any royalties or other amounts on
|
||||
account of third party intellectual property rights for such use. If Sublicensee requires
|
||||
an MP3 encoder or decoder for such use, Sublicensee is responsible for obtaining the
|
||||
necessary intellectual property license, including any applicable patent rights.
|
||||
</p>
|
||||
<p>
|
||||
(b) Sublicensee will not use, copy, reproduce and modify (i) the On2 source code
|
||||
(provided hereunder as a component of the Source Code) as necessary to enable the Adobe
|
||||
Software to decode video in the Flash video file format (.flv or .f4v), and (ii) the
|
||||
Sorenson Spark source code (provided hereunder as a component of the Source Code) for the
|
||||
limited purpose of making bug fixes and performance enhancements to the Adobe Software.
|
||||
All codecs provided with the Adobe Software may only be used and distributed as an
|
||||
integrated part of the Adobe Software and may not be accessed by any other application,
|
||||
including other Google applications.
|
||||
</p>
|
||||
<p>
|
||||
(c) The Source Code may be provided with an AAC codec and/or HE-AAC codec (“the AAC
|
||||
Codec”). Use of the AAC Codec is conditioned on Sublicensee obtaining a proper patent
|
||||
license covering necessary patents as provided by VIA Licensing, for end products on or
|
||||
in which the AAC Codec will be used. Sublicensee acknowledges and agrees that Adobe is
|
||||
not providing a patent license for an AAC Codec under this Agreement to Sublicensee or
|
||||
its sublicensees.
|
||||
</p>
|
||||
<p>
|
||||
(d) THE SOURCE CODE MAY CONTAIN CODE LICENSED UNDER THE AVC PATENT PORTFOLIO LICENSE FOR
|
||||
THE PERSONAL NON-COMMERCIAL USE OF A CONSUMER TO (i) ENCODE VIDEO IN COMPLIANCE WITH THE
|
||||
AVC STANDARD ("AVC VIDEO") AND/OR (ii) DECODE AVC VIDEO THAT WAS ENCODED BY A CONSUMER
|
||||
ENGAGED IN A PERSONAL NON-COMMERCIAL ACTIVITY AND/OR WAS OBTAINED FROM A VIDEO PROVIDER
|
||||
LICENSED TO PROVIDE AVC VIDEO. NO LICENSE IS GRANTED OR WILL BE IMPLIED FOR ANY OTHER
|
||||
USE. ADDITIONAL INFORMATION MAY BE OBTAINED FROM MPEG LA, L.L.C. See
|
||||
http://www.mpegla.com
|
||||
</p>
|
||||
<p>
|
||||
12. Update. Sublicensee will not circumvent Google’s or Adobe’s efforts to update the
|
||||
Adobe Software in all Sublicensee’s products incorporating the Adobe Software as bundled
|
||||
with the Google Software (“Sublicensee Products”).
|
||||
</p>
|
||||
<p>
|
||||
13. Attribution and Proprietary Notices. Sublicensee will list the Adobe Software in
|
||||
publicly available Sublicensee Product specifications and include appropriate Adobe
|
||||
Software branding (specifically excluding the Adobe corporate logo) on the Sublicensee
|
||||
Product packaging or marketing materials in a manner consistent with branding of other
|
||||
third party products contained within the Sublicensee Product.
|
||||
</p>
|
||||
<p>
|
||||
14. No Warranty. THE ADOBE SOFTWARE IS MADE AVAILABLE TO SUBLICENSEE FOR USE AND
|
||||
REPRODUCTION “AS IS” AND ADOBE MAKES NO WARRANTY AS TO ITS USE OR PERFORMANCE. ADOBE AND
|
||||
ITS SUPPLIERS DO NOT AND CANNOT WARRANT THE PERFORMANCE OR RESULTS OBTAINED BY USING THE
|
||||
ADOBE SOFTWARE. EXCEPT FOR ANY WARRANTY, CONDITION, REPRESENTATION OR TERM TO THE EXTENT
|
||||
TO WHICH THE SAME CANNOT OR MAY NOT BE EXCLUDED OR LIMITED BY LAW APPLICABLE TO
|
||||
SUBLICENSEEIN SUBLICENSEE’S JURISDICTION, ADOBE AND ITS SUPPLIERS MAKE NO WARRANTIES,
|
||||
CONDITIONS, REPRESENTATIONS, OR TERMS (EXPRESS OR IMPLIED WHETHER BY STATUTE, COMMON LAW,
|
||||
CUSTOM, USAGE OR OTHERWISE) AS TO ANY MATTER INCLUDING WITHOUT LIMITATION NONINFRINGEMENT
|
||||
OF THIRD PARTY RIGHTS, MERCHANTABILITY, INTEGRATION, SATISFACTORY QUALITY, OR FITNESS FOR
|
||||
ANY PARTICULAR PURPOSE. SUBLICENSEE AGREES THAT SUBLICENSEE SHALL NOT MAKE ANY WARRANTY,
|
||||
EXPRESS OR IMPLIED, ON BEHALF OF ADOBE.
|
||||
</p>
|
||||
<p>
|
||||
15. Limitation of Liability. IN NO EVENT WILL ADOBE OR ITS SUPPLIERS BE LIABLE TO
|
||||
SUBLICENSEE FOR ANY DAMAGES, CLAIMS OR COSTS WHATSOEVER OR ANY CONSEQUENTIAL, INDIRECT,
|
||||
OR INCIDENTAL DAMAGES, OR ANY LOST PROFITS OR LOST SAVINGS, EVEN IF AN ADOBE
|
||||
REPRESENTATIVE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS
|
||||
OR FOR ANY CLAIM BY ANY THIRD PARTY. THE FOREGOING LIMITATIONS AND EXCLUSIONS APPLY TO
|
||||
THE EXTENT PERMITTED BY APPLICABLE LAW IN SUBLICENSEE’S JURISDICTION. ADOBE’S AGGREGATE
|
||||
LIABILITY AND THAT OF ITS SUPPLIERS UNDER OR IN CONNECTION WITH THIS AGREEMENT SHALL BE
|
||||
LIMITED TO ONE THOUSAND DOLLARS (US$1,000). Nothing contained in this Agreement limits
|
||||
Adobe’s liability to Sublicensee in the event of death or personal injury resulting from
|
||||
Adobe’s negligence or for the tort of deceit (fraud). Adobe is acting on behalf of its
|
||||
suppliers for the purpose of disclaiming, excluding and/or limiting obligations,
|
||||
warranties and liability as provided in this Agreement, but in no other respects and for
|
||||
no other purpose.
|
||||
</p>
|
||||
<p>
|
||||
16. Content Protection Terms
|
||||
</p>
|
||||
<p>
|
||||
(a) Definitions.
|
||||
</p>
|
||||
<p>
|
||||
“Compliance and Robustness Rules” means the document setting forth compliance and
|
||||
robustness rules for the Adobe Software located at http://www.adobe.com/mobile/licensees,
|
||||
or a successor web site thereto.
|
||||
</p>
|
||||
<p>
|
||||
“Content Protection Functions” means those aspects of the Adobe Software that are
|
||||
designed to ensure compliance with the Compliance and Robustness Rules, and to prevent
|
||||
playback, copying, modification, redistribution or other actions with respect to digital
|
||||
content distributed for consumption by users of the Adobe Software when such actions are
|
||||
not authorized by the owners of such digital content or its licensed distributors.
|
||||
</p>
|
||||
<p>
|
||||
“Content Protection Code” means code within certain designated versions of the Adobe
|
||||
Software that enables certain Content Protection Functions.
|
||||
</p>
|
||||
<p>
|
||||
“Key” means a cryptographic value contained in the Adobe Software for use in decrypting
|
||||
digital content.
|
||||
</p>
|
||||
<p>
|
||||
(b) License Restrictions. Sublicensee’s right to exercise the licenses with respect to
|
||||
the Adobe Software is subject to the following additional restrictions and obligations.
|
||||
Sublicensee will ensure that Sublicensee’s customers comply with these restrictions and
|
||||
obligations to the same extent imposed on Sublicensee with respect to the Adobe Software;
|
||||
any failure by Sublicensee’s customers to comply with these additional restrictions and
|
||||
obligations shall be treated as a material breach by Sublicensee.
|
||||
</p>
|
||||
<p>
|
||||
b.1. Sublicensee and customers may only distribute the Adobe Software that meets the
|
||||
Robustness and Compliance Rules as so confirmed by Sublicensee during the verification
|
||||
process described above in the Adobe Terms.
|
||||
</p>
|
||||
<p>
|
||||
b.2. Sublicensee shall not (i) circumvent the Content Protection Functions of either the
|
||||
Adobe Software or any related Adobe Software that is used to encrypt or decrypt digital
|
||||
content for authorized consumption by users of the Adobe Software, or (ii) develop or
|
||||
distribute products that are designed to circumvent the Content Protection Functions of
|
||||
either the Adobe Software or any Adobe Software that is used to encrypt or decrypt
|
||||
digital content for authorized consumption by users of the Adobe Software.
|
||||
</p>
|
||||
<p>
|
||||
(c) The Keys are hereby designated as Adobe’s Confidential Information, and Sublicensee
|
||||
will, with respect to the Keys, adhere to Adobe’s Source Code Handling Procedure (to be
|
||||
provided by Adobe upon request).
|
||||
</p>
|
||||
<p>
|
||||
(d) Injunctive Relief. Sublicensee agrees that a breach of this Agreement may compromise
|
||||
the Content Protection Functions of the Adobe Software and may cause unique and lasting
|
||||
harm to the interests of Adobe and owners of digital content that rely on such Content
|
||||
Protection Functions, and that monetary damages may be inadequate to compensate fully for
|
||||
such harm. Therefore, Sublicensee further agrees that Adobe may be entitled to seek
|
||||
injunctive relief to prevent or limit the harm caused by any such breach, in addition to
|
||||
monetary damages.
|
||||
</p>
|
||||
<p>
|
||||
17. Intended Third-party Beneficiary. Adobe Systems Incorporated and Adobe Software
|
||||
Ireland Limited are the intended third-party beneficiaries of Google’s agreement with
|
||||
Sublicensee with respect to the Adobe Software, including but not limited to, the Adobe
|
||||
Terms. Sublicensee agrees, notwithstanding anything to the contrary in its agreement with
|
||||
Google, that Google may disclose Sublicensee’s identity to Adobe and certify in writing
|
||||
that Sublicensee has entered into a license agreement with Google which includes the
|
||||
Adobe Terms. Sublicensee must have an agreement with each of its licensees, and if such
|
||||
licensees are allowed to redistribute the Adobe Software, such agreement will include the
|
||||
Adobe Terms.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,11 @@
|
||||
#!/bin/bash
|
||||
|
||||
XDG_CONFIG_HOME=${XDG_CONFIG_HOME:-~/.config}
|
||||
|
||||
# Allow users to override command-line options
|
||||
if [[ -f $XDG_CONFIG_HOME/chrome-flags.conf ]]; then
|
||||
CHROME_USER_FLAGS="$(grep -v '^#' $XDG_CONFIG_HOME/chrome-flags.conf)"
|
||||
fi
|
||||
|
||||
# Launch
|
||||
exec /opt/google/chrome/google-chrome $CHROME_USER_FLAGS "$@"
|
||||
@@ -0,0 +1,14 @@
|
||||
# Colored makepkg-like functions
|
||||
note() {
|
||||
printf "${_blue}==>${_yellow} NOTE:${_bold} %s${_all_off}\n" "$1"
|
||||
}
|
||||
|
||||
_all_off="$(tput sgr0)"
|
||||
_bold="${_all_off}$(tput bold)"
|
||||
_blue="${_bold}$(tput setaf 4)"
|
||||
_yellow="${_bold}$(tput setaf 3)"
|
||||
|
||||
post_install() {
|
||||
note "Custom flags should be put directly in: ~/.config/chrome-flags.conf"
|
||||
note "The launcher is called: 'google-chrome-stable'"
|
||||
}
|
||||
@@ -1,3 +1,12 @@
|
||||
{
|
||||
"source": "local"
|
||||
"source": "local",
|
||||
"upstream": {
|
||||
"git_tags": "https://github.com/omacom/hype.git",
|
||||
"tag_pattern": "v{pkgver}",
|
||||
"sources": {
|
||||
"any": [
|
||||
"https://github.com/omacom/hype/archive/refs/tags/{tag}.tar.gz"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
# Maintainer: David Heinemeier Hansson <david@hey.com>
|
||||
|
||||
pkgname=hype
|
||||
pkgver=0.4.1
|
||||
pkgver=0.4.2
|
||||
pkgrel=1
|
||||
pkgdesc='Simple Markdown presentations with a visual slide editor'
|
||||
arch=('x86_64' 'aarch64')
|
||||
@@ -24,7 +24,7 @@ depends=(
|
||||
)
|
||||
makedepends=('gcc' 'make')
|
||||
source=("$pkgname-$pkgver.tar.gz::$url/archive/refs/tags/v$pkgver.tar.gz")
|
||||
sha256sums=('0724a9d18df7657b50dff21ffe3dec1c107e9191a9e9fd5ad40b56ed9d5d6f51')
|
||||
sha256sums=('eff1a0d8ff04eca8602aeaf0284d1792c0a881f00ecddafe7578ba5ada33cd64')
|
||||
|
||||
build() {
|
||||
cd "$srcdir/$pkgname-$pkgver"
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"source": "local",
|
||||
"upstream": {
|
||||
"watch": {
|
||||
"git_tags": "https://github.com/sofus13/libva-v4l2_request.git",
|
||||
"pattern": "(?P<version>[0-9]+(?:\\.[0-9]+)*)"
|
||||
}
|
||||
},
|
||||
"rebuild_on": [
|
||||
"libva"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
# VA-API driver with Apple Video Decoder fixes from the sofus13 fork.
|
||||
# The asahi alias lets libva discover it on Apple Silicon.
|
||||
|
||||
_fork=sofus13
|
||||
pkgname=libva-v4l2_request-avd
|
||||
pkgver=1.3
|
||||
pkgrel=1
|
||||
pkgdesc='VA-API driver for V4L2 stateless decoders, with Apple Video Decoder (AVD) support'
|
||||
arch=('aarch64')
|
||||
url="https://github.com/$_fork/libva-v4l2_request"
|
||||
license=('GPL-3.0-or-later')
|
||||
# The driver is a dlopen()ed plugin: it links only libc and exports the VA
|
||||
# backend entry point (__vaDriverInit_1_24), so libva is a runtime rather than
|
||||
# a link-time dependency -- and that symbol is versioned, so this needs a
|
||||
# rebuild whenever libva's driver ABI is bumped. libdrm is only used for
|
||||
# drm_fourcc.h constants at compile time.
|
||||
depends=('glibc' 'libva')
|
||||
makedepends=('meson' 'libdrm')
|
||||
provides=('libva-v4l2_request')
|
||||
conflicts=('libva-v4l2_request')
|
||||
install="$pkgname.install"
|
||||
source=("$pkgname-$pkgver.tar.gz::$url/archive/refs/tags/$pkgver.tar.gz")
|
||||
sha256sums=('3670a1712f9f0a5a61bd44a781eba81dd9b2e0fd8271417ca8a9fbbed9dccfe9')
|
||||
|
||||
build() {
|
||||
# driverdir is left unset so meson takes it from libva's pkg-config
|
||||
# (/usr/lib/dri); the codec set is decided by configure-time checks against
|
||||
# the kernel uapi headers, so linux-api-headers governs what gets built in.
|
||||
# Plain meson rather than arch-meson: the latter lives in devtools, which is
|
||||
# not a safe assumption outside a clean chroot. buildtype=plain hands the
|
||||
# compiler makepkg's own CFLAGS/LDFLAGS, which is what arch-meson does too.
|
||||
meson setup \
|
||||
--prefix=/usr \
|
||||
--buildtype=plain \
|
||||
--wrap-mode=nodownload \
|
||||
"libva-v4l2_request-$pkgver" build
|
||||
meson compile -C build
|
||||
}
|
||||
|
||||
package() {
|
||||
meson install -C build --destdir "$pkgdir"
|
||||
|
||||
# libva picks its driver from the DRM driver name of the render node, which
|
||||
# on Apple Silicon is "asahi", so it looks for asahi_drv_video.so. Nothing
|
||||
# else ships that name (mesa provides no VA driver for asahi), so aliasing it
|
||||
# here makes every VA-API application find the decoder with no environment
|
||||
# variable at all. If mesa ever ships its own asahi_drv_video.so this will
|
||||
# collide and pacman will say so at install time.
|
||||
ln -sf v4l2_request_drv_video.so "$pkgdir/usr/lib/dri/asahi_drv_video.so"
|
||||
|
||||
install -Dm644 "libva-v4l2_request-$pkgver/COPYING" \
|
||||
"$pkgdir/usr/share/licenses/$pkgname/COPYING"
|
||||
install -Dm644 "libva-v4l2_request-$pkgver/README" \
|
||||
"$pkgdir/usr/share/doc/$pkgname/README"
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
post_install() {
|
||||
cat <<'MSG'
|
||||
==> This package installs itself as asahi_drv_video.so as well, which is the
|
||||
name libva looks for on Apple Silicon, so VA-API applications should pick
|
||||
the decoder up with no configuration.
|
||||
|
||||
If something does not, select it explicitly for the session:
|
||||
|
||||
LIBVA_DRIVER_NAME=v4l2_request
|
||||
|
||||
==> Check with: vainfo
|
||||
==> mpv: mpv --hwdec=vaapi video.mp4
|
||||
==> Firefox: additionally needs MOZ_DISABLE_RDD_SANDBOX=1, because the RDD
|
||||
sandbox blocks the /dev/video* and /dev/media* access this
|
||||
driver requires. That weakens Firefox's media sandbox.
|
||||
MSG
|
||||
}
|
||||
|
||||
post_upgrade() {
|
||||
post_install
|
||||
}
|
||||
@@ -3,14 +3,16 @@ _pkgname="limine-entry-tool"
|
||||
pkgname="limine-mkinitcpio-hook"
|
||||
_gradle_version=9.7.1
|
||||
pkgver=1.39.0
|
||||
pkgrel=1
|
||||
pkgrel=2
|
||||
pkgdesc="Install kernels for the Limine bootloader."
|
||||
arch=('x86_64' 'aarch64')
|
||||
url="https://gitlab.com/Zesko/limine-entry-tool"
|
||||
source=("${_pkgname}::git+${url}.git#tag=${pkgver}")
|
||||
source_x86_64=("https://github.com/graalvm/graalvm-ce-builds/releases/download/graal-25.2.4/graalvm-community-jdk-25i2-25.0.4_linux-x64_bin.tar.gz")
|
||||
source_aarch64=("https://github.com/graalvm/graalvm-ce-builds/releases/download/graal-25.2.4/graalvm-community-jdk-25i2-25.0.4_linux-aarch64_bin.tar.gz"
|
||||
"https://services.gradle.org/distributions/gradle-${_gradle_version}-bin.zip")
|
||||
"https://services.gradle.org/distributions/gradle-${_gradle_version}-bin.zip"
|
||||
"limine-apple-gate"
|
||||
"mkinitcpio-install.hook")
|
||||
license=("GPL3")
|
||||
provides=('limine-entry-tool')
|
||||
options=(!debug !strip)
|
||||
@@ -34,7 +36,9 @@ conflicts=('limine-entry-tool')
|
||||
sha256sums=('6c4affb6fb6367a1222f7d0c54957a3142781d7894bbf61b1a274bd153e5d869')
|
||||
sha256sums_x86_64=('3f4a89de8eaa96f2ed677f09957c7e872cd8467aad3537f8b5394c1b8c4b942e')
|
||||
sha256sums_aarch64=('22286f7ecd21b9aedb3226b9bf797469e1bd3eefc491e12ef3dd49b452d230b7'
|
||||
'acd53f1edaf02f1a8ff99879f8a34b302661a057d9b063ae9e35b552f804d20a')
|
||||
'acd53f1edaf02f1a8ff99879f8a34b302661a057d9b063ae9e35b552f804d20a'
|
||||
'199fa2122e4a20ed80e6cf5df235b4e50739593803522bfa65700b1ef242b9ce'
|
||||
'9fc607e81d2f09aa0dfd313805277af92977535bd222f1e86caf5fbb28138cb4')
|
||||
|
||||
prepare() {
|
||||
[[ -d "${_graalvm_version}" ]] && rm -rf "${_graalvm_version}"
|
||||
@@ -77,4 +81,58 @@ package() {
|
||||
# limine hook symlinks
|
||||
ln -sf /usr/bin/limine-reset-enroll "$pkgdir/etc/boot/hooks/pre.d/10-limine-reset-enroll"
|
||||
ln -sf /usr/bin/limine-enroll-config "$pkgdir/etc/boot/hooks/post.d/90-limine-enroll-config"
|
||||
|
||||
if [[ $CARCH == aarch64 ]]; then
|
||||
_apple_silicon_hooks
|
||||
fi
|
||||
}
|
||||
|
||||
# An Apple Silicon Mac boots GRUB until Omarchy activates Limine, and keeps
|
||||
# the kernel and initramfs that mkinitcpio's presets install under /boot
|
||||
# after that too (GRUB, the boot check and the snapshot tools read them).
|
||||
# The aarch64 hooks and mkinitcpio wrapper run through limine-apple-gate,
|
||||
# which leaves every other machine as upstream ships it. On a Mac:
|
||||
# - Limine's kernel and removal hooks wait until Limine is active;
|
||||
# - mkinitcpio's own kernel hook, which Limine's takes over by name, runs from
|
||||
# a copy of mkinitcpio 42's (mkinitcpio-install.hook: keep its triggers in
|
||||
# step with mkinitcpio's), just before Limine's;
|
||||
# - Limine's EFI deploy hook stays out: omarchy-mac-boot puts Limine in
|
||||
# U-Boot's EFI/BOOT/BOOTAA64.EFI slot;
|
||||
# - the wrapper is plain mkinitcpio: it would run limine-mkinitcpio after
|
||||
# every preset build, mkinitcpio's kernel hook included.
|
||||
_apple_silicon_hooks() {
|
||||
local scripts=/usr/share/libalpm/scripts
|
||||
local gate=$scripts/limine-apple-gate
|
||||
local hooks="$pkgdir/usr/share/libalpm/hooks"
|
||||
local kernel_hook="$pkgdir/etc/pacman.d/hooks/90-mkinitcpio-install.hook"
|
||||
local mac_hook="$hooks/90-mkinitcpio-apple-install.hook"
|
||||
local wrapper="$pkgdir/usr/local/bin/mkinitcpio"
|
||||
|
||||
install -Dm755 "$srcdir/limine-apple-gate" "$pkgdir$gate"
|
||||
install -Dm644 "$srcdir/mkinitcpio-install.hook" "$mac_hook"
|
||||
sed -i -e 's|^Description = .*|Description = Updating linux initcpios under /boot (Apple Silicon)...|' \
|
||||
-e "s|^Exec = $scripts/mkinitcpio install\$|Exec = $gate --mac $scripts/mkinitcpio install|" "$mac_hook"
|
||||
sed -i "s|^Exec = $scripts/limine-mkinitcpio-|Exec = $gate $scripts/limine-mkinitcpio-|" \
|
||||
"$kernel_hook" "$hooks/60-limine-mkinitcpio-remove-pre.hook" "$hooks/90-limine-mkinitcpio-remove-post.hook"
|
||||
sed -i "s|^Exec = /usr/bin/limine-install\$|Exec = $gate --not-mac /usr/bin/limine-install|" "$hooks/80-limine-efi-deploy.hook"
|
||||
sed -i "1a $gate --mac \\&\\& exec /usr/bin/mkinitcpio \"\$@\"" "$wrapper"
|
||||
|
||||
local expected=(
|
||||
"$mac_hook|Exec = $gate --mac $scripts/mkinitcpio install"
|
||||
"$kernel_hook|Exec = $gate $scripts/limine-mkinitcpio-install"
|
||||
"$hooks/60-limine-mkinitcpio-remove-pre.hook|Exec = $gate $scripts/limine-mkinitcpio-remove pre"
|
||||
"$hooks/90-limine-mkinitcpio-remove-post.hook|Exec = $gate $scripts/limine-mkinitcpio-remove post"
|
||||
"$hooks/80-limine-efi-deploy.hook|Exec = $gate --not-mac /usr/bin/limine-install"
|
||||
)
|
||||
local entry
|
||||
for entry in "${expected[@]}"; do
|
||||
[[ $(grep '^Exec = ' "${entry%%|*}") == "${entry#*|}" ]] || {
|
||||
echo "${entry%%|*}: expected '${entry#*|}'" >&2
|
||||
return 1
|
||||
}
|
||||
done
|
||||
[[ $(sed -n 1,2p "$wrapper") == $'#!/usr/bin/env bash\n'"$gate --mac && exec /usr/bin/mkinitcpio \"\$@\"" ]] || {
|
||||
echo "the mkinitcpio wrapper does not start with the Apple Silicon gate" >&2
|
||||
return 1
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
#!/bin/bash
|
||||
# The aarch64 package runs its pacman hooks and its mkinitcpio wrapper through
|
||||
# this, so that only an Apple Silicon Mac behaves differently from upstream:
|
||||
#
|
||||
# limine-apple-gate COMMAND... COMMAND, except on a Mac that has not activated Limine
|
||||
# limine-apple-gate --mac COMMAND... COMMAND on a Mac only
|
||||
# limine-apple-gate --not-mac COMMAND... COMMAND everywhere but a Mac
|
||||
# limine-apple-gate --mac succeeds on a Mac only
|
||||
#
|
||||
# A Mac boots GRUB until Omarchy activates Limine: the gate
|
||||
# /var/lib/omarchy/limine.enabled and the /etc/default/limine the activation
|
||||
# writes, the same test as omarchy-mac-limine-active. A command that does not
|
||||
# run reads the targets pacman streams to it and succeeds quietly.
|
||||
|
||||
gate=/var/lib/omarchy/limine.enabled
|
||||
limine_default=/etc/default/limine
|
||||
compatible=(/proc/device-tree/compatible /sys/firmware/devicetree/base/compatible)
|
||||
|
||||
# Fixtures fake the machine for an unprivileged caller only; as root, which
|
||||
# pacman hooks always are, the live system decides.
|
||||
if ((EUID != 0)); then
|
||||
gate=${OMARCHY_LIMINE_GATE:-$gate}
|
||||
limine_default=${OMARCHY_LIMINE_DEFAULT:-$limine_default}
|
||||
if [[ -n ${OMARCHY_PROC_ROOT:-}${OMARCHY_SYS_ROOT:-} ]]; then
|
||||
compatible=()
|
||||
[[ -z ${OMARCHY_PROC_ROOT:-} ]] || compatible+=("$OMARCHY_PROC_ROOT/device-tree/compatible")
|
||||
[[ -z ${OMARCHY_SYS_ROOT:-} ]] || compatible+=("$OMARCHY_SYS_ROOT/firmware/devicetree/base/compatible")
|
||||
fi
|
||||
fi
|
||||
|
||||
# m1n1 names every Apple Silicon Mac "apple,<model>" in the root node's
|
||||
# NUL-separated compatible list, as omarchy-hw-platform reads it.
|
||||
is_mac() {
|
||||
local source
|
||||
for source in "${compatible[@]}"; do
|
||||
[[ -r $source ]] && tr '\0' '\n' <"$source" | grep -q '^apple,' && return 0
|
||||
done
|
||||
return 1
|
||||
}
|
||||
|
||||
# pacman writes NeedsTargets to a socket and fails the write if the hook has
|
||||
# gone; hooks without NeedsTargets get no stdin at all.
|
||||
pass() {
|
||||
if [[ -S /dev/stdin || -p /dev/stdin ]]; then
|
||||
cat >/dev/null
|
||||
fi
|
||||
exit 0
|
||||
}
|
||||
|
||||
mode=limine
|
||||
case ${1:-} in
|
||||
--mac | --not-mac)
|
||||
mode=${1#--}
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
|
||||
if (($# == 0)); then
|
||||
[[ $mode == mac ]] && { is_mac; exit; }
|
||||
echo "usage: limine-apple-gate [--mac|--not-mac] COMMAND [ARG]..." >&2
|
||||
exit 2
|
||||
fi
|
||||
|
||||
case $mode in
|
||||
mac) is_mac || pass ;;
|
||||
not-mac) ! is_mac || pass ;;
|
||||
limine) ! is_mac || [[ -e $gate && -f $limine_default ]] || pass ;;
|
||||
esac
|
||||
exec "$@"
|
||||
@@ -0,0 +1,38 @@
|
||||
[Trigger]
|
||||
Type = Path
|
||||
Operation = Install
|
||||
Operation = Upgrade
|
||||
Operation = Remove
|
||||
Target = usr/lib/initcpio/*
|
||||
Target = usr/lib/firmware/*
|
||||
Target = usr/lib/modules/*/extramodules/
|
||||
Target = usr/src/*/dkms.conf
|
||||
Target = usr/lib/systemd/systemd
|
||||
Target = usr/lib/systemd/systemd-udevd
|
||||
Target = usr/bin/cryptsetup
|
||||
Target = usr/bin/lvm
|
||||
Target = usr/bin/mdadm
|
||||
Target = usr/bin/pdata_tools
|
||||
Target = usr/lib/libcryptsetup.so
|
||||
Target = usr/lib/libp11-kit.so
|
||||
Target = usr/lib/libpcsclite.so
|
||||
Target = usr/lib/modprobe.d/
|
||||
|
||||
[Trigger]
|
||||
Type = Path
|
||||
Operation = Install
|
||||
Operation = Upgrade
|
||||
Target = usr/lib/modules/*/vmlinuz
|
||||
|
||||
[Trigger]
|
||||
Type = Package
|
||||
Operation = Install
|
||||
Operation = Upgrade
|
||||
Target = mkinitcpio
|
||||
Target = mkinitcpio-git
|
||||
|
||||
[Action]
|
||||
Description = Updating linux initcpios...
|
||||
When = PostTransaction
|
||||
Exec = /usr/share/libalpm/scripts/mkinitcpio install
|
||||
NeedsTargets
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"source": "local",
|
||||
"skip_build": true,
|
||||
"channels": ["edge"]
|
||||
}
|
||||
@@ -0,0 +1,226 @@
|
||||
# AArch64 Apple Silicon (Aurora Silicon)
|
||||
# Based on the asahi-alarm linux-asahi package by Jos Dehaes and Matthias Kurz.
|
||||
#
|
||||
# Aurora Silicon maintain a fork of the Asahi kernel carrying DisplayPort
|
||||
# alt-mode and USB4 support for external monitors, variable refresh rate, and
|
||||
# the ISP and AOP drivers. Those changes touch device trees, the type-C stack
|
||||
# and DRM, so they cannot ship as a module: this is a whole alternative kernel
|
||||
# for Macs on the Omarchy edge channel. It reaches rc and stable only after
|
||||
# cold-boot qualification on M1 and M2.
|
||||
|
||||
_auroraver=7.1.12
|
||||
_aurorarel=2
|
||||
pkgrel=10
|
||||
|
||||
# Immutable pin on aurora-silicon/linux (branch aurora-wip). Every bump is a
|
||||
# PR that moves _commit and the archive checksum; the pinned commit is cold-boot
|
||||
# qualified on MacBook Pro 14" M1 Pro (j314s) and 16" M2 Max (j416c) first.
|
||||
_commit=2439016d2e8d3a0d8aebcd243f29604a91f201c9
|
||||
|
||||
_m1n1_version=1.6.1
|
||||
|
||||
pkgbase=linux-aurora
|
||||
_srcname=linux-${_commit}
|
||||
_kernelname=${pkgbase#linux}
|
||||
_desc="AArch64 Apple Silicon (Aurora kernel)"
|
||||
pkgver="${_auroraver}.aurora${_aurorarel}"
|
||||
arch=('aarch64')
|
||||
url="https://github.com/aurora-silicon/linux"
|
||||
license=('GPL2')
|
||||
|
||||
makedepends=(
|
||||
base-devel bc dtc kmod libelf pahole cpio perl rustup rust-bindgen tar xz xmlto python
|
||||
)
|
||||
options=('!strip')
|
||||
source=(
|
||||
https://github.com/aurora-silicon/linux/archive/${_commit}.tar.gz
|
||||
config # the main kernel config file
|
||||
rust-toolchain.toml
|
||||
)
|
||||
sha256sums=('6347354537148120fc5448afcb8671a558ce336f731c70690cd88062a903f84d'
|
||||
'4228006ad9c5fcc2237b91b3fd1f70934d23e6d8bdb012faf5a763e042a6edee'
|
||||
'2a95563bb9f5b216cc3c170a17e9471448bc63a7084bdd67df23d074939b366c')
|
||||
|
||||
# Kbuild takes ARCH literally and knows arm64, not aarch64.
|
||||
export ARCH=arm64
|
||||
export KBUILD_BUILD_HOST=archlinux
|
||||
export KBUILD_BUILD_USER=$pkgbase
|
||||
export KBUILD_BUILD_TIMESTAMP="$(date -Ru${SOURCE_DATE_EPOCH:+d @$SOURCE_DATE_EPOCH})"
|
||||
|
||||
prepare() {
|
||||
cd $_srcname
|
||||
|
||||
echo "Setting version..."
|
||||
echo "-$_aurorarel-$pkgrel" > localversion.10-pkgrel
|
||||
|
||||
local src
|
||||
for src in "${source[@]}"; do
|
||||
src="${src%%::*}"
|
||||
src="${src##*/}"
|
||||
[[ $src = *.patch ]] || continue
|
||||
echo "Applying patch $src..."
|
||||
patch -Np1 < "../$src"
|
||||
done
|
||||
|
||||
echo "Pinning the Rust toolchain..."
|
||||
cp ../rust-toolchain.toml .
|
||||
|
||||
echo "Creating build directories..."
|
||||
mkdir -p build/base
|
||||
|
||||
echo "Setting config (base)..."
|
||||
cp ../config build/base/.config
|
||||
make olddefconfig prepare O=$PWD/build/base
|
||||
diff -u ../config build/base/.config || :
|
||||
make -s kernelrelease O=$PWD/build/base > build/base/version
|
||||
|
||||
echo "Prepared $pkgbase version $(<build/base/version)"
|
||||
}
|
||||
|
||||
build() {
|
||||
cd $_srcname
|
||||
echo "Building base..."
|
||||
make all O=$PWD/build/base -j $(nproc)
|
||||
}
|
||||
|
||||
_package_kernel() {
|
||||
pkgdesc="The $pkgdesc kernel and modules"
|
||||
depends=(coreutils kmod initramfs $2 "m1n1>=$_m1n1_version")
|
||||
optdepends=('crda: to set the correct wireless channels of your country'
|
||||
'linux-firmware: firmware images needed for some devices')
|
||||
# No generic linux provide: on a shared aarch64 repository it would compete
|
||||
# with linux-aarch64 for any dependency on linux.
|
||||
provides=(WIREGUARD-MODULE linux-asahi=${pkgver})
|
||||
conflicts=(linux-asahi)
|
||||
|
||||
local kernver="$(<$O/version)"
|
||||
local modulesdir="$pkgdir/usr/lib/modules/$kernver"
|
||||
|
||||
echo "Installing boot image..."
|
||||
# systemd expects to find the kernel here to allow hibernation
|
||||
# https://github.com/systemd/systemd/commit/edda44605f06a41fb86b7ab8128dcf99161d2344
|
||||
install -Dm644 "$O"/arch/arm64/boot/Image "$modulesdir/vmlinuz"
|
||||
|
||||
# Used by mkinitcpio to name the kernel
|
||||
echo "$1" | install -Dm644 /dev/stdin "$modulesdir/pkgbase"
|
||||
|
||||
echo "Installing modules..."
|
||||
make O="$O" INSTALL_MOD_PATH="$pkgdir/usr" INSTALL_MOD_STRIP=1 modules_install
|
||||
|
||||
echo "Installing device trees..."
|
||||
install -Dt "$modulesdir/dtbs" "$O"/arch/arm64/boot/dts/apple/*.dtb
|
||||
|
||||
# remove build and source links
|
||||
rm -f "$modulesdir"/{source,build}
|
||||
}
|
||||
|
||||
_package() {
|
||||
cd $_srcname
|
||||
export O="$PWD/build/base"
|
||||
_package_kernel "$pkgbase"
|
||||
}
|
||||
|
||||
_package-headers() {
|
||||
pkgdesc="Headers and scripts for building modules for the $pkgdesc kernel"
|
||||
depends=(pahole)
|
||||
provides=(linux-asahi-headers=${pkgver})
|
||||
conflicts=(linux-asahi-headers)
|
||||
|
||||
KARCH=arm64
|
||||
|
||||
cd $_srcname
|
||||
O=build/base
|
||||
local builddir="$pkgdir/usr/lib/modules/$(<${O}/version)/build"
|
||||
|
||||
echo "Installing build files..."
|
||||
install -Dt "$builddir" -m644 $O/.config Makefile $O/Module.symvers $O/System.map \
|
||||
localversion.* $O/version $O/vmlinux
|
||||
install -Dt "$builddir/kernel" -m644 kernel/Makefile
|
||||
cp -t "$builddir" -a scripts $O/scripts
|
||||
|
||||
# required when STACK_VALIDATION is enabled
|
||||
#install -Dt "$builddir/tools/objtool" tools/objtool/objtool
|
||||
|
||||
# required when DEBUG_INFO_BTF_MODULES is enabled
|
||||
install -Dt "$builddir/tools/bpf/resolve_btfids" $O/tools/bpf/resolve_btfids/resolve_btfids
|
||||
|
||||
echo "Installing headers..."
|
||||
cp -t "$builddir" -a include $O/include
|
||||
|
||||
install -Dt "${builddir}/arch/${KARCH}" -m644 arch/${KARCH}/Makefile
|
||||
install -Dt "${builddir}/arch/${KARCH}/kernel" -m644 $O/arch/${KARCH}/kernel/asm-offsets.s
|
||||
cp -t "${builddir}/arch/${KARCH}" -a arch/${KARCH}/include $O/arch/${KARCH}/include
|
||||
|
||||
install -Dt "$builddir/drivers/md" -m644 drivers/md/*.h
|
||||
install -Dt "$builddir/net/mac80211" -m644 net/mac80211/*.h
|
||||
|
||||
# https://bugs.archlinux.org/task/13146
|
||||
install -Dt "$builddir/drivers/media/i2c" -m644 drivers/media/i2c/msp3400-driver.h
|
||||
|
||||
# https://bugs.archlinux.org/task/20402
|
||||
install -Dt "$builddir/drivers/media/usb/dvb-usb" -m644 drivers/media/usb/dvb-usb/*.h
|
||||
install -Dt "$builddir/drivers/media/dvb-frontends" -m644 drivers/media/dvb-frontends/*.h
|
||||
install -Dt "$builddir/drivers/media/tuners" -m644 drivers/media/tuners/*.h
|
||||
|
||||
# https://bugs.archlinux.org/task/71392
|
||||
install -Dt "$builddir/drivers/iio/common/hid-sensors" -m644 drivers/iio/common/hid-sensors/*.h
|
||||
|
||||
echo "Installing KConfig files..."
|
||||
find . -name 'Kconfig*' -exec install -Dm644 {} "$builddir/{}" \;
|
||||
|
||||
echo "Installing unstripped VDSO..."
|
||||
make O="$O" INSTALL_MOD_PATH="$pkgdir/usr" vdso_install link=
|
||||
|
||||
echo "Removing unneeded architectures..."
|
||||
local arch
|
||||
for arch in "$builddir"/arch/*/; do
|
||||
[[ $arch = */${KARCH}/ ]] && continue
|
||||
echo "Removing $(basename "$arch")"
|
||||
rm -r "$arch"
|
||||
done
|
||||
|
||||
echo "Removing documentation..."
|
||||
rm -r "$builddir/Documentation"
|
||||
|
||||
echo "Removing broken symlinks..."
|
||||
find -L "$builddir" -type l -printf 'Removing %P\n' -delete
|
||||
|
||||
echo "Removing loose objects..."
|
||||
find "$builddir" -type f -name '*.o' -printf 'Removing %P\n' -delete
|
||||
|
||||
echo "Removing cmd files..."
|
||||
find "$builddir" -type f -name '*.cmd' -printf 'Removing %P\n' -delete
|
||||
|
||||
echo "Stripping build tools..."
|
||||
local file
|
||||
while read -rd '' file; do
|
||||
case "$(file --no-sandbox -bi "$file")" in
|
||||
application/x-sharedlib\;*) # Libraries (.so)
|
||||
strip -v $STRIP_SHARED "$file" ;;
|
||||
application/x-archive\;*) # Libraries (.a)
|
||||
strip -v $STRIP_STATIC "$file" ;;
|
||||
application/x-executable\;*) # Binaries
|
||||
strip -v $STRIP_BINARIES "$file" ;;
|
||||
application/x-pie-executable\;*) # Relocatable binaries
|
||||
strip -v $STRIP_SHARED "$file" ;;
|
||||
esac
|
||||
done < <(find "$builddir" -type f -perm -u+x ! -name vmlinux -print0)
|
||||
|
||||
echo "Stripping vmlinux..."
|
||||
strip -v $STRIP_STATIC "$builddir/vmlinux"
|
||||
|
||||
echo "Adding symlink..."
|
||||
mkdir -p "$pkgdir/usr/src"
|
||||
ln -sr "$builddir" "$pkgdir/usr/src/$pkgbase"
|
||||
|
||||
}
|
||||
|
||||
pkgname=("$pkgbase" "$pkgbase-headers")
|
||||
for _p in "${pkgname[@]}"; do
|
||||
eval "package_$_p() {
|
||||
$(declare -f "_package${_p#$pkgbase}")
|
||||
_package${_p#$pkgbase}
|
||||
}"
|
||||
done
|
||||
|
||||
# vim:set ts=8 sts=2 sw=2 et:
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,4 @@
|
||||
[toolchain]
|
||||
channel = "1.93.1"
|
||||
components = ["rustc", "cargo", "rust-src"]
|
||||
targets = ["aarch64-unknown-linux-gnu"]
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"source": "local",
|
||||
"channels": ["edge"],
|
||||
"sync": false
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
# m1n1 for linux-aurora. Aurora's device trees name the USB4 aliases
|
||||
# usb4-N-acio, usb4-N-nhi and usb4-N-pcie-adapter; m1n1 v1.6.1 only looks up
|
||||
# the usb4_N_* names, so without the alias fallback the USB4 tunables are
|
||||
# never applied. The Asahi m1n1 stays with linux-asahi.
|
||||
pkgname=m1n1-aurora
|
||||
pkgver=1.6.1.aurora1
|
||||
pkgrel=3
|
||||
pkgdesc='Omarchy Aurora m1n1 with compatible USB4 tunable aliases'
|
||||
arch=('aarch64')
|
||||
url='https://github.com/aurora-silicon/m1n1'
|
||||
license=('MIT' 'CC0-1.0' 'OFL-1.1-RFN' 'Zlib' 'BSD-2-Clause OR GPL-2.0-or-later' 'BSD-3-Clause OR GPL-2.0-or-later' 'MIT OR Apache-2.0')
|
||||
provides=("m1n1=$pkgver")
|
||||
conflicts=('m1n1')
|
||||
makedepends=('clang' 'lld' 'llvm' 'rustup' 'make' 'patch')
|
||||
options=('!strip' '!debug')
|
||||
_commit=06a4601a351ebfd1abb6abba9a44c34e40d94776
|
||||
source=("m1n1-${_commit}.tar.gz::https://github.com/aurora-silicon/m1n1/archive/${_commit}.tar.gz"
|
||||
aurora-cio-aliases.patch
|
||||
bootlogo_48.bin
|
||||
bootlogo_128.bin
|
||||
bootlogo_256.bin
|
||||
)
|
||||
sha256sums=('9d6972d3edaff856e985f2b1feb64fcf9b42fc5eecda7be64a242b49bbbe636d'
|
||||
'4345a4e431642c4316595bdf023bc67d5c72e0374f3c8d59be81318710138f32'
|
||||
'6668050653645711ad7523fe2abeb4cbe85a92c875f3eec754b6db23cea2191c'
|
||||
'b19cb017645c7a9068ea0be9b6bb394131d7ca11b28093cf6caa1ffca74b0a4e'
|
||||
'9c659b392aacfa31c62c638003d2257abfdbe17919b5c90cde4c4e62f87addab')
|
||||
|
||||
prepare() {
|
||||
cd "m1n1-$_commit"
|
||||
patch -p1 < "$srcdir/aurora-cio-aliases.patch"
|
||||
for size in 48 128 256; do
|
||||
cp "$srcdir/bootlogo_$size.bin" "data/bootlogo_$size.bin"
|
||||
done
|
||||
rustup toolchain install 1.89.0 --profile minimal --target aarch64-unknown-none-softfloat
|
||||
}
|
||||
|
||||
build() {
|
||||
cd "m1n1-$_commit"
|
||||
RUSTUP_TOOLCHAIN=1.89.0 make RELEASE=1 USE_CLANG=1 ARCH=aarch64-linux-gnu \
|
||||
M1N1_VERSION_TAG=v1.6.1-omarchy.aurora1
|
||||
}
|
||||
|
||||
package() {
|
||||
# asahi-scripts (update-m1n1 and its pacman hook) only exists in the
|
||||
# asahi-alarm repository, which the builder does not configure. Declared
|
||||
# here so makepkg does not try to install it at build time.
|
||||
depends=('asahi-scripts>=20260127.1')
|
||||
|
||||
cd "m1n1-$_commit"
|
||||
install -Dm644 build/m1n1.bin "$pkgdir/usr/lib/asahi-boot/m1n1.bin"
|
||||
install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
|
||||
install -m644 3rdparty_licenses/* "$pkgdir/usr/share/licenses/$pkgname/"
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
# m1n1-aurora
|
||||
|
||||
m1n1 v1.6.1 from aurora-silicon/m1n1 (06a4601a351ebfd1abb6abba9a44c34e40d94776) with RC, NHI and PCIe adapter alias fallbacks for the USB4 tunables, plus the Omarchy boot logos. Aurora's device trees name those aliases `usb4-N-acio`, `usb4-N-nhi` and `usb4-N-pcie-adapter`; stock m1n1 only looks up the `usb4_N_*` names. Latest Aurora m1n1 main is not qualified.
|
||||
|
||||
## Pairing with linux-aurora
|
||||
|
||||
- It provides `m1n1=1.6.1.aurora1`, which satisfies linux-aurora's `m1n1>=1.6.1`, and conflicts with asahi-alarm's `m1n1`. pacman prefers a package literally named `m1n1` over a provider, so an Aurora transaction names `m1n1-aurora` explicitly and accepts its conflict with `m1n1` (`--ask 4` under `--noconfirm`).
|
||||
- It owns `/usr/lib/asahi-boot/m1n1.bin`. asahi-scripts' `95-m1n1-install.hook` runs `update-m1n1` when that file, `/usr/lib/modules/*/dtbs/*` or U-Boot changes. `update-m1n1` writes m1n1, the device trees and gzipped U-Boot into `m1n1/boot.bin` on the system ESP. asahi-alarm's default takes the device trees from the newest `/lib/modules/*-ARCH/dtbs`, which is where linux-aurora installs its Apple DTBs. `/etc/default/update-m1n1` overrides are left alone.
|
||||
- Raising linux-aurora's `_m1n1_version` above 1.6.1 needs an m1n1-aurora whose provided version satisfies it, released first.
|
||||
|
||||
## Qualification
|
||||
|
||||
Each bump is cold-boot qualified on the M1 Pro and M2 Max: package installation, the hook rebuilding `boot.bin`, the logo, physical boot and two external displays. A successful build is not hardware acceptance.
|
||||
@@ -0,0 +1,28 @@
|
||||
diff --git a/src/kboot.c b/src/kboot.c
|
||||
index a5bd4f1..1089666 100644
|
||||
--- a/src/kboot.c
|
||||
+++ b/src/kboot.c
|
||||
@@ -1249,17 +1249,23 @@ static int dt_set_acio_tunables(void)
|
||||
|
||||
memset(fdt_alias, 0, sizeof(fdt_alias));
|
||||
snprintf(fdt_alias, sizeof(fdt_alias), "usb4_%d_rc", i);
|
||||
+ if (!fdt_get_alias(dt, fdt_alias))
|
||||
+ snprintf(fdt_alias, sizeof(fdt_alias), "usb4-%d-acio", i);
|
||||
dt_copy_acio_tunables(adt_path, fdt_alias, usb4_rc_tunables,
|
||||
sizeof(usb4_rc_tunables) / sizeof(*usb4_rc_tunables));
|
||||
|
||||
memset(fdt_alias, 0, sizeof(fdt_alias));
|
||||
snprintf(fdt_alias, sizeof(fdt_alias), "usb4_%d_pcie_adapter", i);
|
||||
+ if (!fdt_get_alias(dt, fdt_alias))
|
||||
+ snprintf(fdt_alias, sizeof(fdt_alias), "usb4-%d-pcie-adapter", i);
|
||||
dt_copy_acio_tunables(adt_path, fdt_alias, usb4_pcie_adapter_tunables,
|
||||
sizeof(usb4_pcie_adapter_tunables) /
|
||||
sizeof(*usb4_pcie_adapter_tunables));
|
||||
|
||||
memset(fdt_alias, 0, sizeof(fdt_alias));
|
||||
snprintf(fdt_alias, sizeof(fdt_alias), "usb4_%d_nhi", i);
|
||||
+ if (!fdt_get_alias(dt, fdt_alias))
|
||||
+ snprintf(fdt_alias, sizeof(fdt_alias), "usb4-%d-nhi", i);
|
||||
dt_copy_acio_tunables(adt_path, fdt_alias, usb4_nhi_tunables,
|
||||
sizeof(usb4_nhi_tunables) / sizeof(*usb4_nhi_tunables));
|
||||
dt_copy_usb4_drom(adt_path, fdt_alias);
|
||||
Binary file not shown.
@@ -0,0 +1 @@
|
||||
榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻j�榻jLine truncated
|
||||
Binary file not shown.
@@ -0,0 +1,4 @@
|
||||
[microsoft-edge-stable-bin]
|
||||
source = "regex"
|
||||
url = "https://packages.microsoft.com/repos/edge/dists/stable/main/binary-amd64/Packages"
|
||||
regex = "(?s)Package: microsoft-edge-stable\\n.*?Version: ([0-9.]+)-"
|
||||
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"source": "local",
|
||||
"release_ring": "fast",
|
||||
"upstream": {
|
||||
"watch": {
|
||||
"debian": "https://packages.microsoft.com/repos/edge/dists/stable/main/binary-amd64/Packages",
|
||||
"package": "microsoft-edge-stable",
|
||||
"pattern": "(?P<version>[0-9]+(?:\\.[0-9]+)*)-1"
|
||||
}
|
||||
},
|
||||
"origin": {
|
||||
"aur": "microsoft-edge-stable-bin",
|
||||
"commit": "4f6358224df9e58ad9ef84980505d1ead732f8dc"
|
||||
}
|
||||
}
|
||||
BIN
Binary file not shown.
@@ -0,0 +1,74 @@
|
||||
|
||||
# Maintainer: Peter Jung <ptr1337@archlinux.org>
|
||||
# Contributor: Aakash Hemadri <aakashhemadri123@gmail.com>
|
||||
# Contributor: Nicolas Narvaez <nicomix1006@gmail.com>
|
||||
# Contributor: Luna Jernberg <droidbittin@gmail.com>
|
||||
# Contributor: EsauPR
|
||||
# Contributor: nowy
|
||||
|
||||
pkgname=microsoft-edge-stable-bin
|
||||
_pkgname=microsoft-edge
|
||||
_pkgshortname=msedge
|
||||
_channel=stable
|
||||
pkgver=154.0.4258.37
|
||||
pkgrel=2
|
||||
pkgdesc="A browser that combines a minimal design with sophisticated technology to make the web faster, safer, and easier"
|
||||
arch=('x86_64')
|
||||
url="https://www.microsoftedgeinsider.com/en-us/download"
|
||||
license=('Licenseref-custom')
|
||||
provides=('microsoft-edge-stable' 'edge-stable')
|
||||
conflicts=('microsoft-edge-stable' 'edge-stable' 'edge-stable-bin' 'edge')
|
||||
depends=('gtk3' 'libcups' 'nss' 'alsa-lib' 'libxtst' 'libdrm' 'mesa' 'libxml2')
|
||||
makedepends=('imagemagick')
|
||||
optdepends=(
|
||||
'libpipewire: WebRTC desktop sharing under Wayland'
|
||||
'kdialog: for file dialogs in KDE'
|
||||
'gnome-keyring: for storing passwords in GNOME keyring'
|
||||
'kwallet: for storing passwords in KWallet'
|
||||
'libunity: for download progress on KDE'
|
||||
'ttf-liberation: fix fonts for some PDFs - CRBug #369991'
|
||||
'xdg-utils'
|
||||
)
|
||||
options=(!strip !zipman !emptydirs)
|
||||
source=("https://packages.microsoft.com/repos/edge/pool/main/m/microsoft-edge-stable/${_pkgname}-${_channel}_${pkgver}-1_amd64.deb"
|
||||
"microsoft-edge-stable.sh"
|
||||
"Microsoft Standard Application License Terms - Standalone (free) Use Terms.pdf")
|
||||
sha256sums=('c6fa2974733991321b46c4064b785cdec5a14d8cddd182bc5fda057e37e7603d'
|
||||
'dc3765d2de6520b13f105b8001aa0e40291bc9457ac508160b23eea8811e26af'
|
||||
'edf2ed596eb068f168287fc76aa713ad5e0afb59f0a0a47a4f29c0c124ade15e')
|
||||
|
||||
package() {
|
||||
bsdtar -xf data.tar.xz -C "$pkgdir/"
|
||||
|
||||
# suid sandbox
|
||||
chmod 4755 "${pkgdir}/opt/microsoft/${_pkgshortname}/msedge-sandbox"
|
||||
|
||||
# 256 and 24 are proper colored icons
|
||||
for res in 128 64 48 32; do
|
||||
magick "${pkgdir}/opt/microsoft/${_pkgshortname}/product_logo_256.png" \
|
||||
-resize ${res}x${res} \
|
||||
"${pkgdir}/opt/microsoft/${_pkgshortname}/product_logo_${res}.png"
|
||||
done
|
||||
for res in 22 16; do
|
||||
magick "${pkgdir}/opt/microsoft/${_pkgshortname}/product_logo_24.png" \
|
||||
-resize ${res}x${res} \
|
||||
"${pkgdir}/opt/microsoft/${_pkgshortname}/product_logo_${res}.png"
|
||||
done
|
||||
|
||||
# install icons
|
||||
for res in 16 24 32 48 64 128 256; do
|
||||
install -Dm644 "${pkgdir}/opt/microsoft/${_pkgshortname}/product_logo_${res}.png" \
|
||||
"${pkgdir}/usr/share/icons/hicolor/${res}x${res}/apps/${_pkgname}.png"
|
||||
done
|
||||
|
||||
# User flag aware launcher
|
||||
install -m755 microsoft-edge-stable.sh "${pkgdir}/usr/bin/microsoft-edge-stable"
|
||||
# License
|
||||
install -Dm644 'Microsoft Standard Application License Terms - Standalone (free) Use Terms.pdf' "${pkgdir}/usr/share/licenses/${_pkgname}/LICENSE.pdf"
|
||||
rm "${pkgdir}/opt/microsoft/${_pkgshortname}"/product_logo_*.png
|
||||
|
||||
# Remove the Debian cron job, which installs an apt keyring pacman doesn't track
|
||||
rm -r \
|
||||
"${pkgdir}/etc/cron.daily/" \
|
||||
"${pkgdir}/opt/microsoft/${_pkgshortname}/cron/"
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
# Colored makepkg-like functions
|
||||
msg_blue() {
|
||||
printf "${blue}==>${bold} $1${all_off}\n"
|
||||
}
|
||||
|
||||
note() {
|
||||
printf "${blue}==>${yellow} NOTE:${bold} $1${all_off}\n"
|
||||
}
|
||||
|
||||
all_off="$(tput sgr0)"
|
||||
bold="${all_off}$(tput bold)"
|
||||
blue="${bold}$(tput setaf 4)"
|
||||
yellow="${bold}$(tput setaf 3)"
|
||||
|
||||
post_install() {
|
||||
note "Custom flags should be put directly in: ~/.config/microsoft-edge-stable-flags.conf"
|
||||
note "The launcher is called: 'microsoft-edge-stable'"
|
||||
}
|
||||
|
||||
post_upgrade() {
|
||||
post_install
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
#!/usr/bin/env sh
|
||||
# Launches MS Edge with flags specified in $XDG_CONFIG_HOME/microsoft-edge-beta-flags.conf
|
||||
|
||||
# Make script fail if `cat` fails for some reason
|
||||
set -e
|
||||
|
||||
# Set default value if variable is unset/null
|
||||
XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-${HOME}/.config}"
|
||||
|
||||
# Attempt to read a config file if it exists
|
||||
if [ -r "${XDG_CONFIG_HOME}/microsoft-edge-stable-flags.conf" ]; then
|
||||
EDGE_USER_FLAGS="$(cat "$XDG_CONFIG_HOME/microsoft-edge-stable-flags.conf")"
|
||||
fi
|
||||
|
||||
exec /opt/microsoft/msedge/microsoft-edge $EDGE_USER_FLAGS "$@"
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"source": "local"
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
python3 "$(dirname "$0")/../upstream.py"
|
||||
@@ -0,0 +1,103 @@
|
||||
# Maintainer: Shun Li <riverscn@gmail.com>
|
||||
# Extracted from omacom/omarchy-pkgs PR #240, revision dcef132b2df11bb762e233ea8c6af3110f079b67.
|
||||
|
||||
pkgname=obsidian
|
||||
pkgver=1.13.7
|
||||
pkgrel=2
|
||||
pkgdesc='Knowledge base on top of a local folder of plain-text Markdown files'
|
||||
arch=('aarch64')
|
||||
url='https://obsidian.md/'
|
||||
license=('custom')
|
||||
depends=(
|
||||
'alsa-lib'
|
||||
'at-spi2-core'
|
||||
'cairo'
|
||||
'dbus'
|
||||
'expat'
|
||||
'fontconfig'
|
||||
'gcc-libs'
|
||||
'glib2'
|
||||
'glibc'
|
||||
'gtk3'
|
||||
'hicolor-icon-theme'
|
||||
'libcups'
|
||||
'libnotify'
|
||||
'libsecret'
|
||||
'libx11'
|
||||
'libxcb'
|
||||
'libxcomposite'
|
||||
'libxdamage'
|
||||
'libxext'
|
||||
'libxfixes'
|
||||
'libxkbcommon'
|
||||
'libxrandr'
|
||||
'mesa'
|
||||
'nspr'
|
||||
'nss'
|
||||
'pango'
|
||||
'systemd-libs'
|
||||
'xdg-utils'
|
||||
)
|
||||
provides=('obsidian')
|
||||
conflicts=('obsidian-appimage' 'obsidian-bin')
|
||||
options=('!debug' '!strip')
|
||||
checkdepends=('python')
|
||||
source=('obsidian.desktop' 'upstream.py' 'test-upstream.py')
|
||||
source_aarch64=(
|
||||
"obsidian-${pkgver}-arm64.tar.gz::https://github.com/obsidianmd/obsidian-releases/releases/download/v${pkgver}/obsidian-${pkgver}-arm64.tar.gz"
|
||||
)
|
||||
sha256sums=('42ecb332c900a01b2a6db0a70b4cc8c0553e863aee72894b23ed20a6289b131c'
|
||||
'd2933bdc97d9ba55986d710114512e0eb105e1cc549cef4aa7416cb333e0a9b8'
|
||||
'7213e4e691c53e184b0f037478ac6758fe44adad7a984fc1daef7fd17c31d5d8')
|
||||
sha256sums_aarch64=('98aac34d1f132a35cf506fc3fa196d595dcdeefdebd44b0cc5faaa7a1a210de2')
|
||||
|
||||
check() {
|
||||
python test-upstream.py
|
||||
}
|
||||
|
||||
package() {
|
||||
local source_dir="$srcdir/obsidian-${pkgver}-arm64"
|
||||
local install_dir="$pkgdir/opt/obsidian"
|
||||
|
||||
install -d "$install_dir"
|
||||
cp -a --no-preserve=ownership "$source_dir/." "$install_dir/"
|
||||
|
||||
# The official ARM64 archive currently carries two x86_64-only addons.
|
||||
# Remove only an unusable x86_64 payload; retain it automatically if the
|
||||
# vendor starts shipping an AArch64 build in a later release.
|
||||
local addon machine
|
||||
for addon in \
|
||||
resources/app.asar.unpacked/node_modules/btime/binding.node \
|
||||
resources/app.asar.unpacked/node_modules/get-fonts/binding.node; do
|
||||
[[ -f "$install_dir/$addon" ]] || continue
|
||||
machine=$(readelf -h "$install_dir/$addon" |
|
||||
sed -n 's/^[[:space:]]*Machine:[[:space:]]*//p')
|
||||
case "$machine" in
|
||||
AArch64) ;;
|
||||
'Advanced Micro Devices X86-64') rm -f "$install_dir/$addon" ;;
|
||||
*) error "Unexpected Obsidian addon architecture: $addon ($machine)"; return 1 ;;
|
||||
esac
|
||||
done
|
||||
|
||||
find "$install_dir" -type d -exec chmod 755 {} +
|
||||
find "$install_dir" -type f -exec chmod 644 {} +
|
||||
chmod 755 \
|
||||
"$install_dir/chrome_crashpad_handler" \
|
||||
"$install_dir/obsidian" \
|
||||
"$install_dir/obsidian-cli"
|
||||
# Chromium sandboxes through unprivileged user namespaces, which Arch-family
|
||||
# kernels allow; a setuid-root helper is not needed.
|
||||
chmod 755 "$install_dir/chrome-sandbox"
|
||||
|
||||
install -d "$pkgdir/usr/bin"
|
||||
ln -s /opt/obsidian/obsidian "$pkgdir/usr/bin/obsidian"
|
||||
ln -s /opt/obsidian/obsidian-cli "$pkgdir/usr/bin/obsidian-cli"
|
||||
install -Dm644 "$srcdir/obsidian.desktop" \
|
||||
"$pkgdir/usr/share/applications/obsidian.desktop"
|
||||
install -Dm644 "$install_dir/resources/icon.png" \
|
||||
"$pkgdir/usr/share/icons/hicolor/512x512/apps/obsidian.png"
|
||||
install -Dm644 "$install_dir/LICENSE.electron.txt" \
|
||||
"$pkgdir/usr/share/licenses/$pkgname/LICENSE.electron.txt"
|
||||
install -Dm644 "$install_dir/LICENSES.chromium.html" \
|
||||
"$pkgdir/usr/share/licenses/$pkgname/LICENSES.chromium.html"
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
# Obsidian on ARM
|
||||
|
||||
This is the canonical `obsidian` package, extracted from omacom/omarchy-pkgs #240 at `dcef132b2df11bb762e233ea8c6af3110f079b67`. It repackages the official ARM64 desktop tarball and preserves the original contributor attribution and Electron/Chromium license files.
|
||||
|
||||
The package owns the installed application bundle and Electron runtime. `chrome-sandbox` is installed without setuid: Chromium's sandbox uses unprivileged user namespaces, which Arch-family kernels allow. A system that disables them must re-enable them rather than launch Obsidian with `--no-sandbox`. Obsidian's user-controlled in-app updater may separately update application code; no updater-disabling patch is applied. See https://obsidian.md/help/updates.
|
||||
|
||||
The package-local upstream hook selects stable desktop releases containing the exact ARM64 tarball, ignoring mobile-only tags. Missing SHA256 metadata on the selected desktop release fails rather than silently selecting an older installer. The offline tests in `test-upstream.py` run in the package's `check()`; run them directly with `python pkgbuilds/obsidian/test-upstream.py`. Upstream's scheduled sync opens or updates its normal review PR; maintainers need GitHub PR notifications enabled and should monitor failed sync runs too.
|
||||
|
||||
This package conflicts with `obsidian-appimage` and `obsidian-bin`. It does not automatically remove them or migrate users. Adoption in Omarchy Mac requires a separate change to the existing ARM preinstall/removal mappings. Do not modify vaults or user configuration as part of the package transaction.
|
||||
|
||||
Before this draft is ready, validate clean ARM installation, desktop/CLI paths, native payload architecture and opening/editing a disposable vault in a disposable GUI session. Existing AppImage operation does not validate this tarball package. The two named vendor x86-only addons are removed; any newly introduced foreign executable requires review.
|
||||
@@ -0,0 +1,10 @@
|
||||
[Desktop Entry]
|
||||
Name=Obsidian
|
||||
Comment=Knowledge base on top of a local folder of Markdown files
|
||||
Exec=obsidian %U
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Icon=obsidian
|
||||
StartupWMClass=obsidian
|
||||
MimeType=x-scheme-handler/obsidian;
|
||||
Categories=Office;
|
||||
@@ -0,0 +1,47 @@
|
||||
#!/usr/bin/python3
|
||||
import importlib.util
|
||||
from pathlib import Path
|
||||
import unittest
|
||||
|
||||
path = Path(__file__).with_name('upstream.py')
|
||||
spec = importlib.util.spec_from_file_location('obsidian_upstream', path)
|
||||
module = importlib.util.module_from_spec(spec)
|
||||
spec.loader.exec_module(module)
|
||||
|
||||
|
||||
def release(version, **extra):
|
||||
return dict(tag_name='v' + version, draft=False, prerelease=False,
|
||||
published_at='2026-09-23T00:00:00Z', assets=[{
|
||||
'name': f'obsidian-{version}-arm64.tar.gz',
|
||||
'digest': 'sha256:' + 'a' * 64,
|
||||
'browser_download_url': f'https://github.com/obsidianmd/obsidian-releases/releases/download/v{version}/obsidian-{version}-arm64.tar.gz'
|
||||
}], **extra)
|
||||
|
||||
|
||||
class DesktopReleaseTests(unittest.TestCase):
|
||||
def test_mobile_only_and_preview_ignored(self):
|
||||
mobile = release('2.0.0'); mobile['assets'] = [{'name': 'Obsidian.apk'}]
|
||||
preview = release('3.0.0'); preview['prerelease'] = True
|
||||
draft = release('4.0.0'); draft['draft'] = True
|
||||
self.assertEqual(module.select([mobile, preview, draft, release('1.13.7')])['pkgver'], '1.13.7')
|
||||
|
||||
def test_numeric_version_order(self):
|
||||
self.assertEqual(module.select([release('1.9.0'), release('1.13.7')])['pkgver'], '1.13.7')
|
||||
|
||||
def test_bad_newest_digest_fails_without_falling_back(self):
|
||||
newest = release('2.0.0'); newest['assets'][0]['digest'] = None
|
||||
with self.assertRaises(ValueError):
|
||||
module.select([release('1.13.7'), newest])
|
||||
|
||||
def test_changed_url_rejected(self):
|
||||
row = release('1.13.7'); row['assets'][0]['browser_download_url'] = 'https://example.org/foreign'
|
||||
with self.assertRaises(ValueError): module.select([row])
|
||||
|
||||
def test_missing_or_duplicate_installer_rejected(self):
|
||||
with self.assertRaises(ValueError): module.select([])
|
||||
row = release('1.13.7'); row['assets'] *= 2
|
||||
with self.assertRaises(ValueError): module.select([row])
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
@@ -0,0 +1,45 @@
|
||||
#!/usr/bin/python3
|
||||
"""Report the newest stable ARM desktop installer, ignoring mobile-only tags."""
|
||||
import json
|
||||
import re
|
||||
import subprocess
|
||||
|
||||
|
||||
def select(releases):
|
||||
if not isinstance(releases, list):
|
||||
raise ValueError('Expected a GitHub release list')
|
||||
candidates = []
|
||||
for release in releases:
|
||||
if release.get('draft') or release.get('prerelease'):
|
||||
continue
|
||||
match = re.fullmatch(r'v([0-9]+(?:\.[0-9]+)*)', release.get('tag_name', ''))
|
||||
if not match:
|
||||
continue
|
||||
version = match[1]
|
||||
assets = [a for a in release.get('assets', [])
|
||||
if a.get('name') == f'obsidian-{version}-arm64.tar.gz']
|
||||
if not assets:
|
||||
continue
|
||||
if len(assets) != 1:
|
||||
raise ValueError('Duplicate desktop installer')
|
||||
candidates.append((tuple(map(int, version.split('.'))), version, release, assets[0]))
|
||||
if not candidates:
|
||||
raise ValueError('No stable ARM desktop installer found')
|
||||
_, version, release, asset = max(candidates, key=lambda row: row[0])
|
||||
digest = asset.get('digest') or ''
|
||||
if not re.fullmatch(r'sha256:[0-9a-f]{64}', digest):
|
||||
raise ValueError('Selected desktop installer lacks its SHA256 digest')
|
||||
expected = f'https://github.com/obsidianmd/obsidian-releases/releases/download/v{version}/obsidian-{version}-arm64.tar.gz'
|
||||
if asset.get('browser_download_url') != expected:
|
||||
raise ValueError('Unexpected desktop installer URL')
|
||||
return {'pkgver': version, 'published_at': release['published_at'],
|
||||
'sha256sums': {'aarch64': [digest[7:]]}}
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
response = subprocess.check_output([
|
||||
'curl', '--proto', '=https', '--proto-redir', '=https', '-fsSL',
|
||||
'--retry', '3', '--max-time', '60',
|
||||
'https://api.github.com/repos/obsidianmd/obsidian-releases/releases?per_page=100'
|
||||
], text=True)
|
||||
print(json.dumps(select(json.loads(response))))
|
||||
@@ -0,0 +1 @@
|
||||
{ "source": "local", "channels": ["edge"] }
|
||||
@@ -0,0 +1,62 @@
|
||||
# Maintainer: Marcelo Alcantara <maralc@gmail.com>
|
||||
# Recipe from maralcbr/omarchy-pkgs asahi-quattro pkgbuilds/omarchy-mac-boot
|
||||
# (20260921-10 at 0a55baeddecf59687c32b4bd4e1dee743605c183); the payload now
|
||||
# builds from packages/omarchy-mac/boot in omacom/omarchy-mac.
|
||||
|
||||
pkgname=omarchy-mac-boot
|
||||
# pkgver is the UTC commit date of _commit, so it sorts above the fork's
|
||||
# 20260921-N. Reset pkgrel to 1 when pkgver changes; bump it to re-pin or
|
||||
# rebuild on the same day.
|
||||
pkgver=20260925
|
||||
pkgrel=4
|
||||
pkgdesc='Apple Silicon boot support for Omarchy: initramfs, in-place encryption, first boot and Limine activation'
|
||||
arch=('aarch64')
|
||||
groups=('omarchy-platform-apple-silicon')
|
||||
url='https://github.com/omacom/omarchy-mac'
|
||||
license=('MIT')
|
||||
makedepends=('git')
|
||||
provides=('omarchy-apple-boot' 'omarchy-first-boot')
|
||||
conflicts=('omarchy-apple-boot' 'omarchy-first-boot')
|
||||
replaces=('omarchy-apple-boot' 'omarchy-first-boot')
|
||||
install=omarchy-mac-boot.install
|
||||
# An exact omarchy-mac commit, never a branch.
|
||||
_commit=84352fdb8fd03d149682ac54466b1a1add176f84
|
||||
source=("omarchy-mac::git+https://github.com/omacom/omarchy-mac.git#commit=${_commit}")
|
||||
sha256sums=('06514d03eef7e8468277ae97c3258bc595f307aa0cf3356d3f71cfb6b0d14fe2')
|
||||
|
||||
prepare() {
|
||||
# Tests and staging must not be able to read the surrounding desktop source.
|
||||
rm -rf "$srcdir/boot"
|
||||
cp -a "$srcdir/omarchy-mac/packages/omarchy-mac/boot" "$srcdir/boot"
|
||||
[[ $(git -C "$srcdir/omarchy-mac" rev-parse HEAD) == "$_commit" ]]
|
||||
[[ $(TZ=UTC0 git -C "$srcdir/omarchy-mac" show -s --format=%cd --date=format-local:%Y%m%d HEAD) == "$pkgver" ]]
|
||||
}
|
||||
|
||||
check() {
|
||||
"$srcdir/boot/test/all"
|
||||
}
|
||||
|
||||
package() {
|
||||
# Runtime-only, so the builder stages and tests the payload without the
|
||||
# desktop or a boot chain. 1.39.0-2 is the first limine-mkinitcpio-hook that
|
||||
# leaves a Mac's /boot to mkinitcpio until Limine is activated.
|
||||
depends=('omarchy' 'limine' 'limine-mkinitcpio-hook>=1.39.0-2' 'limine-snapper-sync' 'asahi-scripts'
|
||||
'bash' 'binutils' 'btrfs-progs' 'coreutils' 'cpio' 'cryptsetup' 'diffutils' 'gawk' 'gnupg' 'grep'
|
||||
'gum' 'gzip' 'kbd' 'mkinitcpio' 'sed' 'systemd' 'util-linux')
|
||||
|
||||
"$srcdir/boot/install" "$pkgdir"
|
||||
# Once the source drops its own Plymouth fragment (omacom/omarchy-mac#544),
|
||||
# the Apple drop-ins build on omarchy-settings' HOOKS baseline
|
||||
# (/etc/mkinitcpio.conf.d/00-omarchy-hooks.conf, omacom/omarchy-mac#536), and
|
||||
# an older settings package leaves Plymouth out of the Mac initramfs. A
|
||||
# settings version cannot say so (quattro candidates sort below stock
|
||||
# releases, and omarchy pins its settings exactly), so the settings packages
|
||||
# that ship the baseline provide it by name.
|
||||
[[ -e $pkgdir/etc/mkinitcpio.conf.d/93-omarchy-mac-plymouth.conf ]] ||
|
||||
depends+=('omarchy-mkinitcpio-hooks-baseline')
|
||||
printf '%s\n' "$_commit" | install -Dm644 /dev/stdin "$pkgdir/usr/share/omarchy-mac/boot-source-revision"
|
||||
|
||||
# Administrator-editable: every /etc file and the initramfs helpers an image
|
||||
# may rewrite.
|
||||
mapfile -t backup < <(cd "$pkgdir" && find etc usr/lib/omarchy/initcpio -type f | sort)
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
# omarchy-mac-boot
|
||||
|
||||
Apple Silicon boot support for Omarchy: the Mac mkinitcpio drop-ins and initcpio hooks, in-place LUKS conversion in the initramfs, vendor firmware in early boot, first boot of a Mac image, the Limine activation gate and the boot check. The source is `packages/omarchy-mac/boot/` in omacom/omarchy-mac, with its own tests. The recipe pins an exact omarchy-mac commit, copies that directory away from the surrounding desktop tree in `prepare()`, runs its `test/all` in `check()` and stages the package with its `install` script. The recipe itself holds only metadata, `backup=` and the pacman scriptlet.
|
||||
|
||||
It follows the fork recipe in maralcbr/omarchy-pkgs (`asahi-quattro`, `pkgbuilds/omarchy-mac-boot` at 20260921-10), which carried the payload as files in the recipe.
|
||||
|
||||
## Scope
|
||||
|
||||
The package is aarch64-only and published to edge only. It widens to rc and stable only after M1 and M2 cold-boot qualification. It carries the Apple platform tag, `groups=('omarchy-platform-apple-silicon')`, which omarchy-settings' pacman platform guard uses to keep it off other machines once that guard ships (omacom/omarchy-mac#539, `docs/platform-guard.md`). Its only provides are the retired Apple-only names, and nothing generic depends on it or on them, so nothing generic can pull it onto non-Apple aarch64 machines. Its one Apple-only dependency, `asahi-scripts`, comes from the asahi-alarm repository that only the Apple profile configures.
|
||||
|
||||
It requires `limine-mkinitcpio-hook` 1.39.0-2 or newer: that is the first build whose hooks leave a Mac's `/boot` to mkinitcpio until Limine is activated. With an older hook, Limine's kernel hook replaces mkinitcpio's by name, and this package's `limine-ready` gate stops it on a Mac that still boots GRUB, so a kernel update would never reach `/boot`.
|
||||
|
||||
## HOOKS baseline
|
||||
|
||||
From the source that drops the boot package's own Plymouth fragment (omacom/omarchy-mac#544), the Apple drop-ins build on omarchy-settings' HOOKS baseline, `/etc/mkinitcpio.conf.d/00-omarchy-hooks.conf` (omacom/omarchy-mac#536). With an older settings package the Mac initramfs loses Plymouth at the passphrase prompt. A settings version cannot express this: quattro candidate builds sort below stock releases, and `omarchy` pins its settings version exactly. So when the staged payload has no `93-omarchy-mac-plymouth.conf`, `package()` adds a dependency on the name `omarchy-mkinitcpio-hooks-baseline`. Every settings package that ships the baseline on aarch64 (`omarchy-settings`, `omarchy-settings-dev`, candidate builds) must `provide` that name. Until one does, such a build of this package cannot be installed: it fails outright rather than silently booting without Plymouth.
|
||||
|
||||
## Publish order
|
||||
|
||||
A new pin publishes on merge, so check what the pinned source needs first:
|
||||
|
||||
- **Settings baseline.** A pin that includes omacom/omarchy-mac#544 (no `93-omarchy-mac-plymouth.conf`) needs omarchy-settings with the HOOKS baseline (omacom/omarchy-mac#542) published on aarch64, and providing `omarchy-mkinitcpio-hooks-baseline`. Publish that first; otherwise this build cannot be installed.
|
||||
- **Update verification.** A pin that includes omacom/omarchy-mac#543 (`/usr/lib/omarchy/mac-boot/update-verify`) must publish before any runtime that carries #543. Otherwise that runtime blocks every update on Macs whose `omarchy-mac-boot` predates it.
|
||||
- **Reset and key-slot entrypoints.** A pin that includes omacom/omarchy-mac#552 (`reset-prepare`, `reset-verify`, `reset-commit`, `reset-rollback`) and #553 (`luks-slots`) must publish before any runtime that carries them. That runtime's `omarchy-lifecycle-dispatch` requires them on Apple Silicon, so otherwise factory reset, owner setup and `omarchy-drive-password` on the system disk fail on Macs whose `omarchy-mac-boot` predates them.
|
||||
|
||||
## Transition
|
||||
|
||||
- It provides, conflicts with and replaces `omarchy-apple-boot` and `omarchy-first-boot`. The scriptlet moves a pending `omarchy-first-boot` marker to `omarchy-mac-first-boot`, drops the replaced unit's dangling enable link and points at a customised `90-omarchy-asahi.conf.pacsave`.
|
||||
- `pkgver` is the UTC commit date of the pin, so any pin from `20260925` on upgrades the fork's `20260921-10` on mx-mac Macs. The files the fork shipped that the source no longer does (the image finalize tools, the upstream ARM repository key and the GRUB snapshot-menu hook) are removed by that upgrade.
|
||||
- `backup=` covers every `/etc` file and `/usr/lib/omarchy/initcpio`. It includes `/etc/default/update-m1n1`, which pins update-m1n1's device-tree order to the C locale. On a Mac that already has its own unowned copy, pacman keeps it and installs the shipped one as `.pacnew`. The snapshot restore hooks in `/etc/boot/hooks` are symlinks to `/usr/bin/omarchy-mac-snapshot-check`, not files, so they stay out of it.
|
||||
|
||||
## Updates
|
||||
|
||||
Updates are reviewed pins, never a branch:
|
||||
|
||||
1. Set `_commit` to the full omarchy-mac SHA and `pkgver` to its UTC commit date (`TZ=UTC0 git show -s --format=%cd --date=format-local:%Y%m%d <sha>`); `prepare()` checks both.
|
||||
2. Reset `pkgrel` to 1 when `pkgver` changes; bump it for a second pin on the same date or a rebuild.
|
||||
3. Refresh `sha256sums` with `makepkg -g`.
|
||||
@@ -0,0 +1,48 @@
|
||||
_omarchy_mac_boot_asahi_pacsave_notice() {
|
||||
local pacsave=/etc/mkinitcpio.conf.d/90-omarchy-asahi.conf.pacsave
|
||||
local shipped=/etc/mkinitcpio.conf.d/90-omarchy-mac.conf
|
||||
|
||||
[[ -f $pacsave && -f $shipped ]] || return 0
|
||||
cmp -s "$pacsave" "$shipped" && return 0
|
||||
|
||||
cat <<EOF
|
||||
==> omarchy-mac-boot: a customized 90-omarchy-asahi.conf was preserved as:
|
||||
$pacsave
|
||||
The active mkinitcpio drop-in is now:
|
||||
$shipped
|
||||
Merge any remaining local changes into the new file.
|
||||
EOF
|
||||
}
|
||||
|
||||
_omarchy_mac_boot_migrate_legacy_first_boot() {
|
||||
local legacy=/var/lib/omarchy/first-boot/pending
|
||||
local successor=/var/lib/omarchy/mac-first-boot/pending
|
||||
|
||||
[[ -e $legacy ]] || return 0
|
||||
install -Dm644 /dev/null "$successor"
|
||||
rm -f "$legacy"
|
||||
systemctl --no-reload enable omarchy-mac-first-boot.service 2>/dev/null || {
|
||||
install -d /etc/systemd/system/multi-user.target.wants
|
||||
ln -sfr /usr/lib/systemd/system/omarchy-mac-first-boot.service \
|
||||
/etc/systemd/system/multi-user.target.wants/omarchy-mac-first-boot.service
|
||||
}
|
||||
}
|
||||
|
||||
post_install() {
|
||||
_omarchy_mac_boot_asahi_pacsave_notice
|
||||
_omarchy_mac_boot_migrate_legacy_first_boot
|
||||
_omarchy_mac_boot_drop_legacy_wants
|
||||
}
|
||||
|
||||
_omarchy_mac_boot_drop_legacy_wants() {
|
||||
# The replaced omarchy-first-boot left its preset-enabled link behind.
|
||||
local link=/etc/systemd/system/multi-user.target.wants/omarchy-first-boot.service
|
||||
[[ -L $link && ! -e $link ]] && rm -f "$link"
|
||||
return 0
|
||||
}
|
||||
|
||||
post_upgrade() {
|
||||
_omarchy_mac_boot_asahi_pacsave_notice
|
||||
_omarchy_mac_boot_migrate_legacy_first_boot
|
||||
_omarchy_mac_boot_drop_legacy_wants
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
{ "source": "local", "channels": ["edge"] }
|
||||
@@ -0,0 +1,42 @@
|
||||
# Maintainer: Scott Jones <scottajones@gmail.com>
|
||||
# Ported from omarchy-mac/omarchy-pkgs-aarch64 pkgbuilds/omarchy-mac at 02ed7b250f7edcf7c5f748acaf7b21ef0a764e9d.
|
||||
|
||||
pkgname=omarchy-mac
|
||||
# pkgver matches packages/omarchy-mac/version at _commit. Bump pkgrel to re-pin
|
||||
# or rebuild the same add-on version; reset it to 1 when pkgver increases.
|
||||
pkgver=0.1.0
|
||||
pkgrel=5
|
||||
pkgdesc='Apple Silicon configuration and support services for Omarchy'
|
||||
arch=('aarch64')
|
||||
url='https://github.com/omacom/omarchy-mac'
|
||||
license=('MIT')
|
||||
makedepends=('git' 'findutils')
|
||||
checkdepends=('diffutils' 'python' 'systemd')
|
||||
# An exact quattro-upstream commit, never a branch.
|
||||
_commit=b4a79d83d1144c4de90b29a2d8b4090090d7a9d8
|
||||
source=("omarchy-mac::git+https://github.com/omacom/omarchy-mac.git#commit=${_commit}")
|
||||
sha256sums=('93676ce29791a29efe3b098fd8d129fa2248cd32d04253d9520a5b4c0697be6f')
|
||||
|
||||
prepare() {
|
||||
# Tests and staging must not be able to read the surrounding desktop source.
|
||||
rm -rf "$srcdir/addon"
|
||||
cp -a "$srcdir/omarchy-mac/packages/omarchy-mac" "$srcdir/addon"
|
||||
[[ $(<"$srcdir/addon/version") == "$pkgver" ]]
|
||||
[[ $(git -C "$srcdir/omarchy-mac" rev-parse HEAD) == "$_commit" ]]
|
||||
}
|
||||
|
||||
check() {
|
||||
"$srcdir/addon/test/all"
|
||||
}
|
||||
|
||||
package() {
|
||||
# Runtime-only: the builder does not need the Omarchy desktop to stage or
|
||||
# test the add-on.
|
||||
depends=('omarchy' 'bash' 'coreutils' 'diffutils' 'grep' 'sed' 'gawk' 'systemd' 'pciutils' 'kmod'
|
||||
'networkmanager' 'iwd' 'python' 'pipewire' 'pipewire-pulse' 'libpulse' 'wireplumber')
|
||||
|
||||
"$srcdir/addon/install" "$pkgdir"
|
||||
install -Dm644 "$srcdir/addon/README.md" "$pkgdir/usr/share/doc/$pkgname/README.md"
|
||||
install -Dm644 "$srcdir/addon/ORIGINS.md" "$pkgdir/usr/share/doc/$pkgname/ORIGINS.md"
|
||||
printf '%s\n' "$_commit" >"$pkgdir/usr/share/omarchy-mac/source-revision"
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
# omarchy-mac
|
||||
|
||||
Apple Silicon runtime support for Omarchy: Wi-Fi resume recovery, the headset microphone mapping, the notch modprobe default and the NetworkManager Wi-Fi backend. The source is `packages/omarchy-mac/` in omacom/omarchy-mac, with its own version and tests. The recipe pins an exact `quattro-upstream` commit and packages only that directory; `prepare()` copies it away from the surrounding desktop tree before `check()` runs its tests.
|
||||
|
||||
Ported from Scott Jones's recipe in omarchy-mac/omarchy-pkgs-aarch64 (`pkgbuilds/omarchy-mac` at `02ed7b250f7edcf7c5f748acaf7b21ef0a764e9d`). It supersedes the unpublished `omarchy-settings-asahi` recipe.
|
||||
|
||||
## Scope
|
||||
|
||||
The package is aarch64-only and published to edge only. It widens to rc and stable only after M1 and M2 cold-boot qualification. It depends on the generic `omarchy` package and has no `provides`, so nothing generic can pull it onto non-Apple aarch64 machines. It ships no kernel, boot, installer or trust configuration; those belong to `omarchy-mac-boot`.
|
||||
|
||||
Installing the package enables no services, but its vendor configuration applies on the next service start or module load: the iwd Wi-Fi backend for NetworkManager, the `appledrm` notch option and the WirePlumber headset microphone policy. `omarchy-mac-setup-system` and `omarchy-mac-setup-user` enable the Wi-Fi resume and microphone units, and they exit unless `omarchy-hw-apple-silicon` reports Apple Silicon. Stock Omarchy does not yet ship that detector or call these entrypoints, so on a stock install the units stay disabled until the platform detector and profile work lands.
|
||||
|
||||
Runtime dependencies are declared in `package()`, so the builder stages and tests the add-on without installing the desktop.
|
||||
|
||||
## Updates
|
||||
|
||||
Updates are reviewed pins, never a branch. To release a change to the add-on:
|
||||
|
||||
1. Set `_commit` to the full `quattro-upstream` SHA and `pkgver` to `packages/omarchy-mac/version` at that commit.
|
||||
2. Reset `pkgrel` to 1 when `pkgver` increases; bump it to re-pin or rebuild the same version.
|
||||
3. Refresh `sha256sums` with `makepkg -g`.
|
||||
|
||||
Desktop-only commits on `quattro-upstream` do not need a new pin. `0.1.0-5` sorts above the `0.1.0-4.<run>` candidates the collaboration builder produced for test images.
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"source": "local",
|
||||
"min_release_age": "24h",
|
||||
"upstream": {
|
||||
"github": "jankeesvw/omarchy-meeting-recorder",
|
||||
"digests": true,
|
||||
"assets": {
|
||||
"x86_64": "omarchy-meeting-recorder-{pkgver}-x86_64-linux.tar.gz"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
# Maintainer: Jankees van Woezik <mail@jankeesvw.com>
|
||||
|
||||
pkgname=omarchy-meeting-recorder-bin
|
||||
_name=omarchy-meeting-recorder
|
||||
pkgver=1.0.2
|
||||
pkgrel=1
|
||||
pkgdesc="Meeting Recorder for Omarchy: record the mic and the computer audio, transcribed on your own machine with speakers, chapters and a player"
|
||||
arch=('x86_64')
|
||||
url="https://github.com/jankeesvw/omarchy-meeting-recorder"
|
||||
license=('MIT')
|
||||
depends=('gtk4' 'libadwaita' 'glib2' 'pango' 'cairo' 'graphene' 'libgcc' 'libstdc++' 'glibc' 'libpulse' 'ffmpeg')
|
||||
optdepends=('quickshell: the bar widget, part of every Omarchy install'
|
||||
'perl-file-mimeinfo: open .meeting-recorder files with xdg-open, not only from Nautilus')
|
||||
provides=("$_name")
|
||||
conflicts=("$_name")
|
||||
install="$_name.install"
|
||||
options=('!debug')
|
||||
source_x86_64=("$url/releases/download/v$pkgver/$_name-$pkgver-x86_64-linux.tar.gz")
|
||||
sha256sums_x86_64=('78746ecc90366f12f308801637b98fc5e5b844bb28ba413e50ed3efe5c24079f')
|
||||
|
||||
package() {
|
||||
cd "$_name-$pkgver"
|
||||
install -Dm755 "$_name" "$pkgdir/usr/bin/$_name"
|
||||
install -Dm644 "data/$_name.desktop" "$pkgdir/usr/share/applications/$_name.desktop"
|
||||
install -Dm644 "data/$_name.xml" "$pkgdir/usr/share/mime/packages/$_name.xml"
|
||||
# The bar widget, to link into ~/.config/omarchy/plugins (see the install message).
|
||||
install -Dm644 plugin/manifest.json "$pkgdir/usr/share/$_name/plugin/manifest.json"
|
||||
install -Dm644 plugin/Widget.qml "$pkgdir/usr/share/$_name/plugin/Widget.qml"
|
||||
install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
|
||||
install -Dm644 README.md "$pkgdir/usr/share/doc/$pkgname/README.md"
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
post_install() {
|
||||
cat <<'MSG'
|
||||
Meeting Recorder is installed; open it from the launcher.
|
||||
|
||||
The first time you open it, it offers to put its widget in the bar
|
||||
(a live waveform while you record).
|
||||
|
||||
Optional, per user:
|
||||
|
||||
A floating window, in ~/.config/hypr (Omarchy Quattro, Lua):
|
||||
o.window("^com\\.jankeesvw\\.OmarchyMeetingRecorder$", { float = true })
|
||||
o.window("^com\\.jankeesvw\\.OmarchyMeetingRecorder$", { size = { 480, 700 } })
|
||||
o.window("^com\\.jankeesvw\\.OmarchyMeetingRecorder$", { center = true })
|
||||
|
||||
The speech model (about 1.6 GB) is downloaded on first use, or taken from
|
||||
voxtype when it already has it.
|
||||
MSG
|
||||
}
|
||||
|
||||
post_upgrade() {
|
||||
:
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
# Maintainer: Ryan Hughes <ryan@omarchy.org>
|
||||
pkgname=omarchy-nvim
|
||||
pkgver=2026.9.21
|
||||
pkgrel=1
|
||||
pkgrel=2
|
||||
pkgdesc="Pre-built LazyVim configuration with cached plugins"
|
||||
arch=('any')
|
||||
url="https://github.com/LazyVim/LazyVim"
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
-- Clipboard for sessions whose yanks may need to reach another machine:
|
||||
-- every copy is emitted as OSC 52 (inside tmux this becomes a tmux buffer,
|
||||
-- rebroadcast to every attached client, local or SSH). Paste prefers the
|
||||
-- local Wayland clipboard when one is available, so content copied in other
|
||||
-- apps remains pasteable; without a display, paste is an OSC 52 query that
|
||||
-- tmux (or the terminal) answers.
|
||||
-- Copies reach the local Wayland clipboard and attached terminals. Reads use
|
||||
-- Wayland or tmux's buffer, falling back to this Neovim's last copy. Never query
|
||||
-- the terminal with OSC 52: support for writes does not imply permission to read,
|
||||
-- and an unanswered query blocks ordinary paste for ten seconds. To insert new
|
||||
-- text from the host when no readable clipboard exists, use terminal paste.
|
||||
local M = {}
|
||||
|
||||
local function proc_lines(pid, file)
|
||||
@@ -54,10 +53,20 @@ function M.setup()
|
||||
and vim.fn.executable("wl-copy") == 1
|
||||
and vim.fn.executable("wl-paste") == 1
|
||||
|
||||
local has_tmux = in_tmux and vim.fn.executable("tmux") == 1
|
||||
local last_copy = {}
|
||||
|
||||
local function tmux_export_enabled()
|
||||
local setting = vim.fn.systemlist({ "tmux", "show-options", "-sv", "set-clipboard" })
|
||||
return vim.v.shell_error == 0 and (setting[1] == "on" or setting[1] == "external")
|
||||
end
|
||||
|
||||
local function copy(register)
|
||||
local emit = osc52.copy(register)
|
||||
|
||||
return function(lines)
|
||||
return function(lines, regtype)
|
||||
last_copy[register] = { vim.deepcopy(lines), regtype }
|
||||
|
||||
if has_wayland then
|
||||
local cmd = { "wl-copy", "--sensitive", "--type", "text/plain" }
|
||||
if register == "*" then
|
||||
@@ -67,24 +76,68 @@ function M.setup()
|
||||
end
|
||||
|
||||
if vim.g.omarchy_remote_clipboard_osc52 ~= false then
|
||||
if has_tmux and register == "+" then
|
||||
-- tmux ignores zero-byte loads. Record the current buffer's identity
|
||||
-- instead: all Neovim instances see empty until a new buffer arrives,
|
||||
-- without deleting the user's shared tmux clipboard history.
|
||||
if #lines == 0 or (#lines == 1 and lines[1] == "") then
|
||||
vim.fn.system({ "tmux", "set-option", "-sF", "@omarchy-nvim-cleared-buffer", "#{buffer_name}" })
|
||||
return
|
||||
end
|
||||
-- Let tmux emit OSC 52, avoiding its input parser's payload size limit.
|
||||
-- Explicit -w bypasses set-clipboard, so honor the user's policy first.
|
||||
local cmd = { "tmux", "load-buffer" }
|
||||
if tmux_export_enabled() then
|
||||
cmd[#cmd + 1] = "-w"
|
||||
end
|
||||
cmd[#cmd + 1] = "-"
|
||||
vim.fn.system(cmd, lines)
|
||||
if vim.v.shell_error == 0 then
|
||||
return
|
||||
end
|
||||
end
|
||||
emit(lines)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function paste(register)
|
||||
if not has_wayland then
|
||||
return osc52.paste(register)
|
||||
end
|
||||
|
||||
return function()
|
||||
local cmd = { "wl-paste", "--no-newline" }
|
||||
if register == "*" then
|
||||
cmd[#cmd + 1] = "--primary"
|
||||
local cmd
|
||||
-- tmux's buffer is shared between Neovim instances on the server. Over
|
||||
-- SSH, prefer it to the remote machine's unrelated graphical clipboard.
|
||||
if has_tmux and register == "+" and (in_ssh or not has_wayland)
|
||||
and vim.g.omarchy_remote_clipboard_osc52 ~= false then
|
||||
local buffers = vim.fn.systemlist({ "tmux", "display-message", "-p",
|
||||
"#{buffer_name}\n#{@omarchy-nvim-cleared-buffer}" })
|
||||
if vim.v.shell_error ~= 0 then
|
||||
return vim.deepcopy(last_copy[register] or { {}, "v" })
|
||||
end
|
||||
if not buffers[1] or buffers[1] == "" or buffers[1] == buffers[2] then
|
||||
return { {}, "v" }
|
||||
end
|
||||
-- Pin the buffer selected above: a concurrent copy must not change
|
||||
-- which payload we read after checking its identity against the marker.
|
||||
cmd = { "tmux", "save-buffer", "-b", buffers[1], "-" }
|
||||
elseif has_wayland then
|
||||
cmd = { "wl-paste", "--no-newline" }
|
||||
if register == "*" then
|
||||
cmd[#cmd + 1] = "--primary"
|
||||
end
|
||||
end
|
||||
|
||||
local lines = vim.fn.systemlist(cmd, "", 1)
|
||||
return vim.v.shell_error == 0 and lines or {}
|
||||
if cmd then
|
||||
local lines = vim.fn.systemlist(cmd, "", 1)
|
||||
if vim.v.shell_error == 0 then
|
||||
-- An empty clipboard is valid; only failed reads use the fallback.
|
||||
if last_copy[register] and vim.deep_equal(lines, last_copy[register][1]) then
|
||||
return vim.deepcopy(last_copy[register])
|
||||
end
|
||||
return lines
|
||||
end
|
||||
end
|
||||
|
||||
return vim.deepcopy(last_copy[register] or { {}, "v" })
|
||||
end
|
||||
end
|
||||
|
||||
@@ -94,6 +147,12 @@ function M.setup()
|
||||
paste = { ["+"] = paste("+"), ["*"] = paste("*") },
|
||||
cache_enabled = 0,
|
||||
}
|
||||
|
||||
-- LazyVim clears this over SSH. Users can opt out before setup or override
|
||||
-- the option afterward in config/options.lua.
|
||||
if vim.g.omarchy_remote_clipboard_sync ~= false then
|
||||
vim.opt.clipboard:append("unnamedplus")
|
||||
end
|
||||
end
|
||||
|
||||
return M
|
||||
@@ -1,7 +1,7 @@
|
||||
# Maintainer: Ryan Hughes <ryan@omarchy.org>
|
||||
pkgname='omarchy-settings-dev'
|
||||
pkgver=4.0.0.r2153.g9c5482c
|
||||
pkgrel=2
|
||||
pkgver=4.0.0.r847.g4de185b
|
||||
pkgrel=3
|
||||
_pkgver_base=4.0.0
|
||||
_pkgver_base_tag=v3.8.2
|
||||
pkgdesc='Omarchy user defaults, /etc/skel content, fonts, plymouth theme, and support helpers (quattro branch tip)'
|
||||
@@ -356,6 +356,21 @@ EOF
|
||||
install -Dm755 default/systemd/system-sleep/unmount-fuse \
|
||||
"$pkgdir/usr/lib/systemd/system-sleep/unmount-fuse"
|
||||
|
||||
# Pacman platform guard: refuses packages tagged for another hardware
|
||||
# platform. It ships here, not in omarchy, so it is resident before the
|
||||
# runtime and any hardware package install; the hook, the script it runs and
|
||||
# the script's own copy of the platform detector travel together (omarchy
|
||||
# keeps /usr/bin/omarchy-hw-platform). Conditional until the pinned source
|
||||
# carries them.
|
||||
if [[ -f default/libalpm/hooks/00-omarchy-platform-guard.hook ]]; then
|
||||
install -Dm644 default/libalpm/hooks/00-omarchy-platform-guard.hook \
|
||||
"$pkgdir/usr/share/libalpm/hooks/00-omarchy-platform-guard.hook"
|
||||
install -Dm755 default/libalpm/scripts/omarchy-platform-guard \
|
||||
"$pkgdir/usr/share/libalpm/scripts/omarchy-platform-guard"
|
||||
install -Dm755 bin/omarchy-hw-platform \
|
||||
"$pkgdir/usr/share/libalpm/scripts/omarchy-hw-platform"
|
||||
fi
|
||||
|
||||
# Branding assets (logos, icons).
|
||||
install -Dm644 logo.txt "$pkgdir/usr/share/omarchy/logo.txt"
|
||||
install -Dm644 logo.svg "$pkgdir/usr/share/omarchy/logo.svg"
|
||||
|
||||
@@ -354,6 +354,21 @@ EOF
|
||||
install -Dm755 default/systemd/system-sleep/unmount-fuse \
|
||||
"$pkgdir/usr/lib/systemd/system-sleep/unmount-fuse"
|
||||
|
||||
# Pacman platform guard: refuses packages tagged for another hardware
|
||||
# platform. It ships here, not in omarchy, so it is resident before the
|
||||
# runtime and any hardware package install; the hook, the script it runs and
|
||||
# the script's own copy of the platform detector travel together (omarchy
|
||||
# keeps /usr/bin/omarchy-hw-platform). Conditional until the pinned source
|
||||
# carries them.
|
||||
if [[ -f default/libalpm/hooks/00-omarchy-platform-guard.hook ]]; then
|
||||
install -Dm644 default/libalpm/hooks/00-omarchy-platform-guard.hook \
|
||||
"$pkgdir/usr/share/libalpm/hooks/00-omarchy-platform-guard.hook"
|
||||
install -Dm755 default/libalpm/scripts/omarchy-platform-guard \
|
||||
"$pkgdir/usr/share/libalpm/scripts/omarchy-platform-guard"
|
||||
install -Dm755 bin/omarchy-hw-platform \
|
||||
"$pkgdir/usr/share/libalpm/scripts/omarchy-hw-platform"
|
||||
fi
|
||||
|
||||
# Branding assets (logos, icons).
|
||||
install -Dm644 logo.txt "$pkgdir/usr/share/omarchy/logo.txt"
|
||||
install -Dm644 logo.svg "$pkgdir/usr/share/omarchy/logo.svg"
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
pkgname=omarchy-steam-fex
|
||||
pkgver=1.0.0
|
||||
pkgrel=2
|
||||
pkgrel=3
|
||||
pkgdesc='Steam launcher with login workarounds for Apple Silicon using muvm and FEX'
|
||||
arch=('aarch64')
|
||||
url='https://github.com/omacom/omarchy-pkgs/tree/master/pkgbuilds/omarchy-steam-fex'
|
||||
license=('MIT')
|
||||
checkdepends=('python')
|
||||
source=('omarchy-launch-steam' 'LICENSE' 'test-launcher.py')
|
||||
sha256sums=('d89559ef88b3589e7d972b44a4a29e418605542f44f2756afd24ed3ce3227609'
|
||||
sha256sums=('37ad2e8a863e90c2b3248f22d93b548c6070f396f631ad39cefc4745478515b4'
|
||||
'717ba1949502290f8e47688ae2e323acd06c8ca47aec9f7596b15f678c1af4a2'
|
||||
'1d31b9ed09292b79dc86d9d4b3fff01d19e8210fdc5e3b13e78b846671808ed5')
|
||||
'fbab0f88ecdf3238bfb95a1523eef7de2ded2928c91c90e4e06435696dd86cdb')
|
||||
|
||||
check() {
|
||||
python test-launcher.py
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
The launcher runs Steam through `muvm` and `FEXBash` with the CEF occlusion workaround. Once Steam's client files are present, it also disables bootstrap verification and repair and patches the Steam UI network initialization block that can leave login waiting indefinitely. Initial bootstrap keeps the normal bootstrap flags. If the FEX launcher is unavailable, it falls back to `steam`.
|
||||
|
||||
`omarchy-launch-steam --prepare` writes the current user's desktop override with `Exec=omarchy-launch-steam %U` and applies the same UI patch. Each matching chunk is backed up as `.omarchy-bak` before its first patch; existing backups are preserved, and already-patched and unrecognized chunks are left unchanged. The regex depends on Valve's client code and may need updating when that code changes.
|
||||
`omarchy-launch-steam --prepare` creates the current user's desktop override with `Exec=omarchy-launch-steam %U` if it is missing, and applies the same UI patch. Existing overrides and symlinks are preserved on preparation and launch. If an existing override uses a different command, edit its `Exec` entry to use `omarchy-launch-steam %U` when you want this launcher. Each matching chunk is backed up as `.omarchy-bak` before its first patch; existing backups are preserved. The regex matches the original network initialization block, so a patched block is not changed again. An unrelated connected-state assignment elsewhere in the chunk does not suppress the fix. The regex depends on Valve's client code and may need updating when that code changes.
|
||||
|
||||
Only the launcher and license are installed. Steam's system desktop entry and downloaded client files remain outside this package's ownership; preparation runs as the desktop user, never in a package installation hook. A downstream Omarchy package that already owns the launcher must release that path before this package is installed, or in the same upgrade transaction.
|
||||
|
||||
@@ -14,4 +14,4 @@ Runtime dependencies are declared in `package()` so assembling the scripts does
|
||||
python pkgbuilds/omarchy-steam-fex/test-launcher.py
|
||||
```
|
||||
|
||||
The launcher was extracted from [omarchy-mx-mac commit 5e8e1188](https://github.com/scottjones/omarchy-mx-mac/commit/5e8e1188e39fae70cf4f7bda1a1d85d66eccae51), credited to Scott Jones, dl-alexandre, and Santeri Hernejärvi. The extraction replaces `omarchy-cmd-present` with `command -v`, removing the dependency on Omarchy itself. The launcher matches the version published in [omarchy-pkgs-aarch64](https://github.com/omarchy-mac/omarchy-pkgs-aarch64/tree/main/pkgbuilds/omarchy-steam-fex).
|
||||
The launcher was extracted from [omarchy-mx-mac commit 5e8e1188](https://github.com/scottjones/omarchy-mx-mac/commit/5e8e1188e39fae70cf4f7bda1a1d85d66eccae51), credited to Scott Jones, dl-alexandre, and Santeri Hernejärvi. The extraction replaces `omarchy-cmd-present` with `command -v`, removing the dependency on Omarchy itself. Subsequent fixes preserve user desktop overrides and avoid false positives when checking whether the network block needs patching.
|
||||
@@ -10,6 +10,9 @@ steam_root="$HOME/.local/share/Steam"
|
||||
|
||||
write_steam_desktop() {
|
||||
local app_dir="$HOME/.local/share/applications"
|
||||
# This is a user-owned override. Create it once without replacing existing
|
||||
# customizations, including a symlink managed by the user.
|
||||
[[ -e $app_dir/steam.desktop || -L $app_dir/steam.desktop ]] && return 0
|
||||
mkdir -p "$app_dir"
|
||||
cat >"$app_dir/steam.desktop" <<'EOF'
|
||||
[Desktop Entry]
|
||||
@@ -63,8 +66,8 @@ replacement = (
|
||||
|
||||
for path in sorted(steamui.glob("chunk~*.js")):
|
||||
text = path.read_text(errors="replace")
|
||||
if "m_bIsConnectedToANetwork=!0" in text and "RegisterForDeviceChanges" in text:
|
||||
continue
|
||||
# The exact original block no longer matches after replacement. A generic
|
||||
# connected-state assignment elsewhere in the chunk is not a patch marker.
|
||||
updated, count = pattern.subn(replacement, text, count=1)
|
||||
if count != 1:
|
||||
continue
|
||||
|
||||
@@ -143,6 +143,45 @@ class SteamLauncherTests(unittest.TestCase):
|
||||
self.assertEqual(path.read_text(), content)
|
||||
self.assertFalse(path.with_suffix('.js.omarchy-bak').exists())
|
||||
|
||||
def test_unrelated_connected_state_does_not_skip_original_block(self):
|
||||
original = 'other.m_bIsConnectedToANetwork=!0;' + ORIGINAL
|
||||
path = self.chunk(original)
|
||||
self.run_launcher('--prepare')
|
||||
self.assertIn('catch(e){}', path.read_text())
|
||||
self.assertTrue(path.read_text().startswith('other.m_bIsConnectedToANetwork=!0;'))
|
||||
self.assertEqual(path.with_suffix('.js.omarchy-bak').read_text(), original)
|
||||
patched, modified = path.read_bytes(), path.stat().st_mtime_ns
|
||||
self.run_launcher('--prepare')
|
||||
self.assertEqual(path.read_bytes(), patched)
|
||||
self.assertEqual(path.stat().st_mtime_ns, modified)
|
||||
|
||||
def test_existing_desktop_override_is_preserved_during_prepare_and_launch(self):
|
||||
self.client_ready()
|
||||
self.chunk()
|
||||
self.desktop.parent.mkdir(parents=True)
|
||||
customized = '[Desktop Entry]\nName=My Steam\nExec=my-steam-wrapper %U\nX-User-Setting=keep\n'
|
||||
self.desktop.write_text(customized)
|
||||
modified = self.desktop.stat().st_mtime_ns
|
||||
for args in [('--prepare',), ()]:
|
||||
self.run_launcher(*args)
|
||||
self.assertEqual(self.desktop.read_text(), customized)
|
||||
self.assertEqual(self.desktop.stat().st_mtime_ns, modified)
|
||||
|
||||
def test_existing_desktop_symlink_is_preserved_even_with_missing_target(self):
|
||||
self.desktop.parent.mkdir(parents=True)
|
||||
target = self.user_home / 'custom-steam.desktop'
|
||||
self.desktop.symlink_to(target)
|
||||
self.run_launcher('--prepare')
|
||||
self.assertTrue(self.desktop.is_symlink())
|
||||
self.assertFalse(target.exists())
|
||||
|
||||
def test_repeated_prepare_does_not_rewrite_created_desktop_override(self):
|
||||
self.run_launcher('--prepare')
|
||||
original, modified = self.desktop.read_bytes(), self.desktop.stat().st_mtime_ns
|
||||
self.run_launcher('--prepare')
|
||||
self.assertEqual(self.desktop.read_bytes(), original)
|
||||
self.assertEqual(self.desktop.stat().st_mtime_ns, modified)
|
||||
|
||||
def test_only_first_matching_block_is_patched(self):
|
||||
path = self.chunk(ORIGINAL + ORIGINAL)
|
||||
self.run_launcher('--prepare')
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
{
|
||||
"source": "local",
|
||||
"channels": ["edge"],
|
||||
"upstream": {
|
||||
"watch": {
|
||||
"github": "tcballard/omarchy-task-manager",
|
||||
"pattern": "v(?P<version>[0-9]+\\.[0-9]+\\.[0-9]+)",
|
||||
"allow_prerelease": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"release_ring": "fast"
|
||||
}
|
||||
@@ -1,29 +1,18 @@
|
||||
# Canonical recipe. scripts/package-source.sh fills the release source checksum.
|
||||
# Maintainer: Tom Ballard (tcballard)
|
||||
pkgname=omarchy-task-manager
|
||||
pkgver=0.0.3
|
||||
pkgrel=3
|
||||
pkgver=0.1.1
|
||||
pkgrel=1
|
||||
url='https://github.com/tcballard/omarchy-task-manager'
|
||||
pkgdesc='Floating native task manager for Omarchy (preview)'
|
||||
pkgdesc='Floating native task manager for Omarchy'
|
||||
arch=('x86_64')
|
||||
license=('MIT')
|
||||
depends=('qt6-base' 'qt6-declarative' 'qt6-wayland' 'qt6-svg' 'hicolor-icon-theme' 'gcc-libs' 'glibc' 'glib2' 'systemd' 'coreutils')
|
||||
optdepends=('gdb: live process core dumps' 'nvidia-utils: NVIDIA device telemetry')
|
||||
makedepends=('cmake' 'ninja' 'rust' 'cargo')
|
||||
checkdepends=('python' 'desktop-file-utils')
|
||||
source=("$url/releases/download/v$pkgver/$pkgname-$pkgver.tar.gz"
|
||||
"pause-resume-test.patch"
|
||||
"worker-shutdown.patch")
|
||||
sha256sums=('cc3e24a0bb8fad2b7ce0d4fb780aa774d32b53b8de924b488b55674bdb936c85'
|
||||
'ce191fc8dc7e4f7018193aa4982d58fd463f66b37e3129b3acce46b7a1c9a89e'
|
||||
'1142aaedf8739bf2ed1cb823a03ed7e406d7ff59d7dfb72748815cc81cfda96b')
|
||||
|
||||
# Backport upstream PR #11 (sample observation) and PR #12 (worker shutdown).
|
||||
prepare() {
|
||||
cd "$srcdir/$pkgname-$pkgver"
|
||||
patch -Np1 -i "$srcdir/pause-resume-test.patch"
|
||||
patch -Np1 -i "$srcdir/worker-shutdown.patch"
|
||||
}
|
||||
source=("$url/releases/download/v$pkgver/$pkgname-$pkgver.tar.gz")
|
||||
sha256sums=('172fcf67770d3a67783907d5451c8e5f2fb38992d4ee2ea8a397a59d15b4b1c0')
|
||||
|
||||
build() {
|
||||
cmake -S "$srcdir/$pkgname-$pkgver" -B build -G Ninja \
|
||||
|
||||
@@ -1,63 +0,0 @@
|
||||
diff --git a/tests/bridge_test.cpp b/tests/bridge_test.cpp
|
||||
index bab79f2..9bed7be 100644
|
||||
--- a/tests/bridge_test.cpp
|
||||
+++ b/tests/bridge_test.cpp
|
||||
@@ -79,37 +79,53 @@ private slots:
|
||||
const auto before = bridge.history().size();
|
||||
QTest::qWait(1100);
|
||||
QCOMPARE(bridge.history().size(), before);
|
||||
- QSignalSpy samples(&bridge, &Bridge::snapshotChanged);
|
||||
+ // Capture at emission: QTRY processes events, so another timer sample can
|
||||
+ // replace bridge.snapshot() before the waiting assertion runs.
|
||||
+ QVariantList samples;
|
||||
+ QList<int> historySizes;
|
||||
+ QObject sampleObserver; // Disconnect before the captured lists are destroyed.
|
||||
+ connect(&bridge, &Bridge::snapshotChanged, &sampleObserver, [&] {
|
||||
+ samples.append(bridge.snapshot());
|
||||
+ historySizes.append(bridge.history().size());
|
||||
+ });
|
||||
bridge.setPaused(false);
|
||||
QTRY_VERIFY_WITH_TIMEOUT(samples.count() > 0, 8000);
|
||||
- QVERIFY(!bridge.snapshot()
|
||||
+ QVERIFY(!samples.first().toMap()
|
||||
.value("system")
|
||||
.toMap()
|
||||
.value("continuous")
|
||||
.toBool());
|
||||
- QCOMPARE(bridge.history().size(), 1);
|
||||
+ QCOMPARE(historySizes.first(), 1);
|
||||
bridge.active(false);
|
||||
QTest::qWait(600);
|
||||
samples.clear();
|
||||
+ historySizes.clear();
|
||||
bridge.active(true);
|
||||
QTRY_VERIFY_WITH_TIMEOUT(samples.count() > 0, 8000);
|
||||
- QVERIFY(!bridge.snapshot()
|
||||
+ QVERIFY(!samples.first().toMap()
|
||||
.value("system")
|
||||
.toMap()
|
||||
.value("continuous")
|
||||
.toBool());
|
||||
QTRY_VERIFY_WITH_TIMEOUT(!bridge.busy(), 8000);
|
||||
samples.clear();
|
||||
+ historySizes.clear();
|
||||
bridge.refresh();
|
||||
QVERIFY(bridge.busy());
|
||||
bridge.setPaused(true);
|
||||
bridge.setPaused(false);
|
||||
QTRY_VERIFY_WITH_TIMEOUT(samples.count() > 0, 8000);
|
||||
- QVERIFY(!bridge.snapshot()
|
||||
+ QVERIFY(!samples.first().toMap()
|
||||
.value("system")
|
||||
.toMap()
|
||||
.value("continuous")
|
||||
.toBool());
|
||||
+ QCOMPARE(historySizes.first(), 1);
|
||||
+ // Keep automatic refresh enabled. The baseline must be followed by a
|
||||
+ // continuous sample; inspecting only the latest snapshot misses this order.
|
||||
+ QTRY_VERIFY_WITH_TIMEOUT(samples.count() >= 2, 8000);
|
||||
+ QVERIFY(samples.at(1).toMap().value("system").toMap()
|
||||
+ .value("continuous").toBool());
|
||||
QTRY_VERIFY_WITH_TIMEOUT(!bridge.busy(), 8000);
|
||||
QVERIFY(bridge.prepareManagement({{"category", "startup"}}).isEmpty());
|
||||
QVERIFY(
|
||||
@@ -1,90 +0,0 @@
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index c940e5e..d1cd40f 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -29,7 +29,8 @@ if(BUILD_TESTING)
|
||||
target_include_directories(bridge-test PRIVATE ui)
|
||||
target_link_libraries(bridge-test PRIVATE Qt6::Core Qt6::Gui Qt6::Test)
|
||||
add_dependencies(bridge-test core)
|
||||
- add_test(NAME bridge COMMAND bridge-test)
|
||||
+ add_test(NAME bridge COMMAND bridge-test -nocrashhandler)
|
||||
+ set_tests_properties(bridge PROPERTIES TIMEOUT 60)
|
||||
endif()
|
||||
if(BUILD_TESTING)
|
||||
qt_add_executable(ui-test tests/ui_test.cpp ui/bridge.cpp ui/bridge.h)
|
||||
@@ -37,5 +38,6 @@ if(BUILD_TESTING)
|
||||
qt_add_resources(ui-test test_qml PREFIX "/" FILES ${TASK_MANAGER_QML})
|
||||
target_link_libraries(ui-test PRIVATE Qt6::Core Qt6::Gui Qt6::Quick Qt6::Qml Qt6::QuickControls2 Qt6::Test)
|
||||
add_dependencies(ui-test core)
|
||||
- add_test(NAME ui COMMAND ui-test)
|
||||
+ add_test(NAME ui COMMAND ui-test -nocrashhandler)
|
||||
+ set_tests_properties(ui PROPERTIES TIMEOUT 60)
|
||||
endif()
|
||||
diff --git a/tests/bridge_test.cpp b/tests/bridge_test.cpp
|
||||
index 9bed7be..d6737a4 100644
|
||||
--- a/tests/bridge_test.cpp
|
||||
+++ b/tests/bridge_test.cpp
|
||||
@@ -3,9 +3,46 @@
|
||||
#include <QSignalSpy>
|
||||
#include <QTemporaryDir>
|
||||
#include <QTest>
|
||||
+#include <memory>
|
||||
+#include <signal.h>
|
||||
class BridgeTest : public QObject {
|
||||
Q_OBJECT
|
||||
private slots:
|
||||
+ void shutdownDoesNotPublish_data() {
|
||||
+ QTest::addColumn<bool>("inFlight");
|
||||
+ QTest::addColumn<bool>("stopped");
|
||||
+ QTest::newRow("idle") << false << false;
|
||||
+ QTest::newRow("sample-in-flight") << true << false;
|
||||
+ QTest::newRow("stopped-worker") << true << true;
|
||||
+ }
|
||||
+ void shutdownDoesNotPublish() {
|
||||
+ QFETCH(bool, inFlight);
|
||||
+ QFETCH(bool, stopped);
|
||||
+ auto bridge = std::make_unique<Bridge>();
|
||||
+ QTRY_VERIFY_WITH_TIMEOUT(!bridge->snapshot().isEmpty(), 8000);
|
||||
+ bridge->m_timer.stop();
|
||||
+ QTRY_VERIFY_WITH_TIMEOUT(!bridge->busy(), 8000);
|
||||
+ // Stop only the disposable worker owned by this bridge, forcing shutdown
|
||||
+ // through terminate/kill rather than the normal stdin-EOF exit.
|
||||
+ if (stopped) {
|
||||
+ const auto workerPid = bridge->m_worker.processId();
|
||||
+ QVERIFY(workerPid > 0);
|
||||
+ QCOMPARE(::kill(workerPid, SIGSTOP), 0);
|
||||
+ }
|
||||
+ if (inFlight) {
|
||||
+ bridge->refresh();
|
||||
+ QVERIFY(bridge->busy());
|
||||
+ }
|
||||
+ QSignalSpy snapshots(bridge.get(), &Bridge::snapshotChanged);
|
||||
+ QSignalSpy statuses(bridge.get(), &Bridge::statusChanged);
|
||||
+ QSignalSpy busy(bridge.get(), &Bridge::busyChanged);
|
||||
+ // Closing the app must not publish late samples or worker-exit errors while
|
||||
+ // its bridge and UI are being destroyed. Spies outlive the bridge on purpose.
|
||||
+ bridge.reset();
|
||||
+ QCOMPARE(snapshots.count(), 0);
|
||||
+ QCOMPARE(statuses.count(), 0);
|
||||
+ QCOMPARE(busy.count(), 0);
|
||||
+ }
|
||||
void inspectionErrorsAndDismissal() {
|
||||
Bridge bridge;
|
||||
QTRY_VERIFY_WITH_TIMEOUT(!bridge.snapshot().isEmpty(), 8000);
|
||||
diff --git a/ui/bridge.cpp b/ui/bridge.cpp
|
||||
index 86b5b47..b1fb303 100644
|
||||
--- a/ui/bridge.cpp
|
||||
+++ b/ui/bridge.cpp
|
||||
@@ -82,7 +82,12 @@ Bridge::Bridge(QObject *p) : QObject(p), m_rows(this) {
|
||||
m_clock.start();
|
||||
}
|
||||
Bridge::~Bridge() {
|
||||
+ // waitForFinished() can emit readyRead/error/finished synchronously. Quiesce
|
||||
+ // callbacks before waiting, including if QProcess outlives our final wait and
|
||||
+ // emits from its destructor after the other Bridge members are gone.
|
||||
m_timer.stop();
|
||||
+ m_timeout.stop();
|
||||
+ m_worker.disconnect(this);
|
||||
m_worker.closeWriteChannel();
|
||||
if (!m_worker.waitForFinished(600)) {
|
||||
m_worker.terminate();
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"source": "local"
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
# aarch64-only build: Arch Linux ARM builds qemu without the static user-mode
|
||||
# binaries, so the Omarchy default set (qemu-user-static-binfmt, used for
|
||||
# foreign-architecture containers) repackages Debian's statically linked
|
||||
# qemu-user build. On x86_64 both packages come from the Arch extra repository.
|
||||
|
||||
pkgbase=qemu-user-static
|
||||
pkgname=('qemu-user-static' 'qemu-user-static-binfmt')
|
||||
# One-time epoch moves from upstream-only to full Debian revision ordering.
|
||||
# pkgver records Debian epoch.upstream.revision. Updates are reviewed pins:
|
||||
# bump _debver, pkgver, _snapshot and the checksum together.
|
||||
epoch=1
|
||||
pkgver=1.10.0.13+ds.0+deb13u1
|
||||
_debver=1:10.0.13+ds-0+deb13u1
|
||||
_snapshot=02b553a4532192bc999d15408d1e56d7b254906f
|
||||
pkgrel=1
|
||||
pkgdesc="A generic and open source machine emulator and virtualizer - static user-mode emulation"
|
||||
arch=('aarch64')
|
||||
url="https://www.qemu.org"
|
||||
license=('GPL-2.0-only' 'LGPL-2.1-only')
|
||||
source=("qemu-binfmt-conf.sh")
|
||||
# Debian removes superseded pool files. Pin the official archive snapshot so
|
||||
# the same checksum-verified binary remains rebuildable. _snapshot is the
|
||||
# content-addressed snapshot SHA1; SHA256 below remains the integrity check.
|
||||
source_aarch64=("qemu-user_${pkgver}_arm64.deb::https://snapshot.debian.org/file/$_snapshot")
|
||||
sha256sums=('5e12ef484b8364e1ba7bae4acda837d2e6320ffbeb7fab341034124553cdb137')
|
||||
sha256sums_aarch64=('c73711af02b97cd5e2667e735d9c06890c57165517110ca4e646c95a7083158d')
|
||||
noextract=("qemu-user_${pkgver}_arm64.deb")
|
||||
|
||||
prepare() {
|
||||
mkdir -p deb
|
||||
bsdtar -C deb -xf "qemu-user_${pkgver}_arm64.deb" data.tar.xz
|
||||
bsdtar -C deb -xf deb/data.tar.xz ./usr/bin ./usr/share/doc/qemu-user/copyright
|
||||
}
|
||||
|
||||
package_qemu-user-static() {
|
||||
pkgdesc="A generic and open source machine emulator and virtualizer - static user-mode emulation"
|
||||
depends=('glibc')
|
||||
optdepends=('qemu-user-static-binfmt: binary format rules for foreign-architecture binaries')
|
||||
provides=('qemu-user-static')
|
||||
conflicts=('qemu-user-static-bin')
|
||||
|
||||
install -dm755 "$pkgdir/usr/bin"
|
||||
local binary
|
||||
for binary in deb/usr/bin/qemu-*; do
|
||||
install -Dm755 "$binary" "$pkgdir/usr/bin/$(basename "$binary")-static"
|
||||
done
|
||||
install -Dm644 deb/usr/share/doc/qemu-user/copyright "$pkgdir/usr/share/licenses/$pkgname/copyright"
|
||||
}
|
||||
|
||||
package_qemu-user-static-binfmt() {
|
||||
pkgdesc="Binary format rules for the static QEMU user-mode emulators"
|
||||
depends=('qemu-user-static')
|
||||
provides=('qemu-user-binfmt-provider')
|
||||
conflicts=('qemu-user-binfmt-provider' 'binfmt-qemu-static')
|
||||
|
||||
install -dm755 "$pkgdir/usr/lib/binfmt.d"
|
||||
# HOST_ARCH keeps the native architecture out of the rule set regardless
|
||||
# of the build host, so the package is identical under native and QEMU builds.
|
||||
# --ignore-family keeps 32-bit ARM: the script groups it with aarch64, but
|
||||
# Apple Silicon cannot execute AArch32 natively.
|
||||
HOST_ARCH=aarch64 sh "$srcdir/qemu-binfmt-conf.sh" \
|
||||
--systemd ALL \
|
||||
--exportdir "$pkgdir/usr/lib/binfmt.d/" \
|
||||
--qemu-path /usr/bin \
|
||||
--qemu-suffix -static \
|
||||
--persistent yes \
|
||||
--preserve-argv0 yes \
|
||||
--ignore-family yes
|
||||
local conf
|
||||
for conf in "$pkgdir"/usr/lib/binfmt.d/*.conf; do
|
||||
mv "$conf" "${conf%.conf}-static.conf"
|
||||
done
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
# ARM static QEMU
|
||||
|
||||
This aarch64-only split recipe provides qemu-user-static and qemu-user-static-binfmt using Debian’s static ARM64 binaries. It preserves Marcelo’s recipe, imported through omarchy-mac/omarchy-pkgs-aarch64#61, including licensing and binfmt behavior. It does not change x86 packages or the build workers.
|
||||
|
||||
## Updates
|
||||
|
||||
Updates are reviewed pins, not automatic. To move to a new Debian 13 revision, update `_debver`, `pkgver` (Debian epoch.upstream.revision), `_snapshot` (the snapshot.debian.org SHA1 of the ARM64 `qemu-user` archive) and `sha256sums_aarch64` together, and confirm both Debian ordering and `vercmp` advance. A one-time Arch epoch of 1 moves away from the previous upstream-only version.
|
||||
|
||||
## binfmt rules
|
||||
|
||||
The rules are generated with `--ignore-family yes`, so 32-bit ARM binaries are registered even though the script groups them with aarch64; Apple Silicon has no AArch32 execution. Native aarch64 stays excluded. Rules use the persistent and preserve-argv0 flags and never the credential flag.
|
||||
@@ -0,0 +1,442 @@
|
||||
#!/bin/sh
|
||||
# Enable automatic program execution by the kernel.
|
||||
|
||||
qemu_target_list="i386 i486 alpha arm armeb sparc sparc32plus sparc64 \
|
||||
ppc ppc64 ppc64le m68k mips mipsel mipsn32 mipsn32el mips64 mips64el \
|
||||
sh4 sh4eb s390x aarch64 aarch64_be hppa riscv32 riscv64 xtensa xtensaeb \
|
||||
microblaze microblazeel or1k x86_64 hexagon loongarch64"
|
||||
|
||||
i386_magic='\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x03\x00'
|
||||
i386_mask='\xff\xff\xff\xff\xff\xfe\xfe\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff'
|
||||
i386_family=i386
|
||||
|
||||
i486_magic='\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x06\x00'
|
||||
i486_mask='\xff\xff\xff\xff\xff\xfe\xfe\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff'
|
||||
i486_family=i386
|
||||
|
||||
x86_64_magic='\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x3e\x00'
|
||||
x86_64_mask='\xff\xff\xff\xff\xff\xfe\xfe\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff'
|
||||
x86_64_family=i386
|
||||
|
||||
alpha_magic='\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x26\x90'
|
||||
alpha_mask='\xff\xff\xff\xff\xff\xfe\xfe\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff'
|
||||
alpha_family=alpha
|
||||
|
||||
arm_magic='\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00'
|
||||
arm_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff'
|
||||
arm_family=arm
|
||||
|
||||
armeb_magic='\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28'
|
||||
armeb_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff'
|
||||
armeb_family=armeb
|
||||
|
||||
sparc_magic='\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x02'
|
||||
sparc_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff'
|
||||
sparc_family=sparc
|
||||
|
||||
sparc32plus_magic='\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x12'
|
||||
sparc32plus_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff'
|
||||
sparc32plus_family=sparc
|
||||
|
||||
sparc64_magic='\x7fELF\x02\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x2b'
|
||||
sparc64_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff'
|
||||
sparc64_family=sparc
|
||||
|
||||
ppc_magic='\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x14'
|
||||
ppc_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff'
|
||||
ppc_family=ppc
|
||||
|
||||
ppc64_magic='\x7fELF\x02\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x15'
|
||||
ppc64_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff'
|
||||
ppc64_family=ppc
|
||||
|
||||
ppc64le_magic='\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x15\x00'
|
||||
ppc64le_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\x00'
|
||||
ppc64le_family=ppcle
|
||||
|
||||
m68k_magic='\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x04'
|
||||
m68k_mask='\xff\xff\xff\xff\xff\xff\xfe\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff'
|
||||
m68k_family=m68k
|
||||
|
||||
# FIXME: We could use the other endianness on a MIPS host.
|
||||
|
||||
mips_magic='\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
mips_mask='\xff\xff\xff\xff\xff\xff\xff\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20'
|
||||
mips_family=mips
|
||||
|
||||
mipsel_magic='\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
mipsel_mask='\xff\xff\xff\xff\xff\xff\xff\x00\x00\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00'
|
||||
mipsel_family=mips
|
||||
|
||||
mipsn32_magic='\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20'
|
||||
mipsn32_mask='\xff\xff\xff\xff\xff\xff\xff\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20'
|
||||
mipsn32_family=mips
|
||||
|
||||
mipsn32el_magic='\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00'
|
||||
mipsn32el_mask='\xff\xff\xff\xff\xff\xff\xff\x00\x00\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00'
|
||||
mipsn32el_family=mips
|
||||
|
||||
mips64_magic='\x7fELF\x02\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08'
|
||||
mips64_mask='\xff\xff\xff\xff\xff\xff\xff\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff'
|
||||
mips64_family=mips
|
||||
|
||||
mips64el_magic='\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08\x00'
|
||||
mips64el_mask='\xff\xff\xff\xff\xff\xff\xff\x00\x00\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff'
|
||||
mips64el_family=mips
|
||||
|
||||
sh4_magic='\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x2a\x00'
|
||||
sh4_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff'
|
||||
sh4_family=sh4
|
||||
|
||||
sh4eb_magic='\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x2a'
|
||||
sh4eb_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff'
|
||||
sh4eb_family=sh4
|
||||
|
||||
s390x_magic='\x7fELF\x02\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x16'
|
||||
s390x_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff'
|
||||
s390x_family=s390x
|
||||
|
||||
aarch64_magic='\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xb7\x00'
|
||||
aarch64_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff'
|
||||
aarch64_family=arm
|
||||
|
||||
aarch64_be_magic='\x7fELF\x02\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xb7'
|
||||
aarch64_be_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff'
|
||||
aarch64_be_family=armeb
|
||||
|
||||
hppa_magic='\x7f\x45\x4c\x46\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x0f'
|
||||
hppa_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff'
|
||||
hppa_family=hppa
|
||||
|
||||
riscv32_magic='\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xf3\x00'
|
||||
riscv32_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff'
|
||||
riscv32_family=riscv
|
||||
|
||||
riscv64_magic='\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xf3\x00'
|
||||
riscv64_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff'
|
||||
riscv64_family=riscv
|
||||
|
||||
xtensa_magic='\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x5e\x00'
|
||||
xtensa_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff'
|
||||
xtensa_family=xtensa
|
||||
|
||||
xtensaeb_magic='\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x5e'
|
||||
xtensaeb_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff'
|
||||
xtensaeb_family=xtensaeb
|
||||
|
||||
microblaze_magic='\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xba\xab'
|
||||
microblaze_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff'
|
||||
microblaze_family=microblaze
|
||||
|
||||
microblazeel_magic='\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xab\xba'
|
||||
microblazeel_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff'
|
||||
microblazeel_family=microblazeel
|
||||
|
||||
or1k_magic='\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x5c'
|
||||
or1k_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff'
|
||||
or1k_family=or1k
|
||||
|
||||
hexagon_magic='\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xa4\x00'
|
||||
hexagon_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff'
|
||||
hexagon_family=hexagon
|
||||
|
||||
loongarch64_magic='\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x02\x01'
|
||||
loongarch64_mask='\xff\xff\xff\xff\xff\xff\xff\xfc\x00\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff'
|
||||
loongarch64_family=loongarch
|
||||
|
||||
# Converts the name of a host CPU architecture to the corresponding QEMU
|
||||
# target.
|
||||
#
|
||||
# FIXME: This can probably be simplified a lot by dropping most entries.
|
||||
# Remember that the script is only used on Linux, so we only need to
|
||||
# handle the strings Linux uses to report the host CPU architecture.
|
||||
qemu_normalize() {
|
||||
cpu="$1"
|
||||
case "$cpu" in
|
||||
i[3-6]86)
|
||||
echo "i386"
|
||||
;;
|
||||
amd64)
|
||||
echo "x86_64"
|
||||
;;
|
||||
powerpc)
|
||||
echo "ppc"
|
||||
;;
|
||||
ppc64el)
|
||||
echo "ppc64le"
|
||||
;;
|
||||
armel|armhf|armv[4-9]*l)
|
||||
echo "arm"
|
||||
;;
|
||||
armv[4-9]*b)
|
||||
echo "armeb"
|
||||
;;
|
||||
arm64)
|
||||
echo "aarch64"
|
||||
;;
|
||||
*)
|
||||
echo "$cpu"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
usage() {
|
||||
cat <<EOF
|
||||
Usage: qemu-binfmt-conf.sh [--qemu-path PATH][--debian][--systemd CPU]
|
||||
[--help][--credential yes|no][--exportdir PATH]
|
||||
[--persistent yes|no][--qemu-suffix SUFFIX]
|
||||
[--preserve-argv0 yes|no]
|
||||
|
||||
Configure binfmt_misc to use qemu interpreter
|
||||
|
||||
--help: display this usage
|
||||
--qemu-path: set path to qemu interpreter ($QEMU_PATH)
|
||||
--qemu-suffix: add a suffix to the default interpreter name
|
||||
--debian: don't write into /proc,
|
||||
instead generate update-binfmts templates
|
||||
--systemd: don't write into /proc,
|
||||
instead generate file for systemd-binfmt.service
|
||||
for the given CPU. If CPU is "ALL", generate a
|
||||
file for all known cpus
|
||||
--exportdir: define where to write configuration files
|
||||
(default: $SYSTEMDDIR or $DEBIANDIR)
|
||||
--credential: if yes, credential and security tokens are
|
||||
calculated according to the binary to interpret
|
||||
--persistent: if yes, the interpreter is loaded when binfmt is
|
||||
configured and remains in memory. All future uses
|
||||
are cloned from the open file.
|
||||
--ignore-family: if yes, it is assumed that the host CPU (e.g. riscv64)
|
||||
can't natively run programs targeting a CPU that is
|
||||
part of the same family (e.g. riscv32).
|
||||
--preserve-argv0 preserve argv[0]
|
||||
|
||||
To import templates with update-binfmts, use :
|
||||
|
||||
sudo update-binfmts --importdir ${EXPORTDIR:-$DEBIANDIR} --import qemu-CPU
|
||||
|
||||
To remove interpreter, use :
|
||||
|
||||
sudo update-binfmts --package qemu-CPU --remove qemu-CPU $QEMU_PATH
|
||||
|
||||
With systemd, binfmt files are loaded by systemd-binfmt.service
|
||||
|
||||
The environment variable HOST_ARCH allows to override 'uname' to generate
|
||||
configuration files for a different architecture than the current one.
|
||||
|
||||
where CPU is one of:
|
||||
|
||||
$qemu_target_list
|
||||
|
||||
EOF
|
||||
}
|
||||
|
||||
qemu_check_access() {
|
||||
if [ ! -w "$1" ] ; then
|
||||
echo "ERROR: cannot write to $1" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
qemu_check_bintfmt_misc() {
|
||||
# load the binfmt_misc module
|
||||
if [ ! -d /proc/sys/fs/binfmt_misc ]; then
|
||||
if ! /sbin/modprobe binfmt_misc ; then
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
if [ ! -f /proc/sys/fs/binfmt_misc/register ]; then
|
||||
if ! mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc ; then
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
qemu_check_access /proc/sys/fs/binfmt_misc/register
|
||||
}
|
||||
|
||||
installed_dpkg() {
|
||||
dpkg --status "$1" > /dev/null 2>&1
|
||||
}
|
||||
|
||||
qemu_check_debian() {
|
||||
if [ ! -e /etc/debian_version ] ; then
|
||||
echo "WARNING: your system is not a Debian based distro" 1>&2
|
||||
elif ! installed_dpkg binfmt-support ; then
|
||||
echo "WARNING: package binfmt-support is needed" 1>&2
|
||||
fi
|
||||
qemu_check_access "$EXPORTDIR"
|
||||
}
|
||||
|
||||
qemu_check_systemd() {
|
||||
if ! systemctl -q is-enabled systemd-binfmt.service ; then
|
||||
echo "WARNING: systemd-binfmt.service is missing or disabled" 1>&2
|
||||
fi
|
||||
qemu_check_access "$EXPORTDIR"
|
||||
}
|
||||
|
||||
qemu_generate_register() {
|
||||
flags=""
|
||||
if [ "$CREDENTIAL" = "yes" ] ; then
|
||||
flags="OC"
|
||||
fi
|
||||
if [ "$PERSISTENT" = "yes" ] ; then
|
||||
flags="${flags}F"
|
||||
fi
|
||||
if [ "$PRESERVE_ARG0" = "yes" ] ; then
|
||||
flags="${flags}P"
|
||||
fi
|
||||
|
||||
echo ":qemu-$cpu:M::$magic:$mask:$qemu:$flags"
|
||||
}
|
||||
|
||||
qemu_register_interpreter() {
|
||||
echo "Setting $qemu as binfmt interpreter for $cpu"
|
||||
qemu_generate_register > /proc/sys/fs/binfmt_misc/register
|
||||
}
|
||||
|
||||
qemu_generate_systemd() {
|
||||
echo "Setting $qemu as binfmt interpreter for $cpu for systemd-binfmt.service"
|
||||
qemu_generate_register > "$EXPORTDIR/qemu-$cpu.conf"
|
||||
}
|
||||
|
||||
qemu_generate_debian() {
|
||||
cat > "$EXPORTDIR/qemu-$cpu" <<EOF
|
||||
package qemu-$cpu
|
||||
interpreter $qemu
|
||||
magic $magic
|
||||
mask $mask
|
||||
credentials $CREDENTIAL
|
||||
preserve $PRESERVE_ARG0
|
||||
fix_binary $PERSISTENT
|
||||
EOF
|
||||
}
|
||||
|
||||
qemu_set_binfmts() {
|
||||
# probe cpu type
|
||||
host_cpu=$(qemu_normalize ${HOST_ARCH:-$(uname -m)})
|
||||
host_family=$(eval echo \$${host_cpu}_family)
|
||||
|
||||
if [ "$host_family" = "" ] ; then
|
||||
echo "INTERNAL ERROR: unknown host cpu $host_cpu" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# register the interpreter for each cpu except for the native one
|
||||
|
||||
for cpu in ${qemu_target_list} ; do
|
||||
magic=$(eval echo \$${cpu}_magic)
|
||||
mask=$(eval echo \$${cpu}_mask)
|
||||
family=$(eval echo \$${cpu}_family)
|
||||
|
||||
target="$cpu"
|
||||
if [ "$cpu" = "i486" ] ; then
|
||||
target="i386"
|
||||
fi
|
||||
|
||||
qemu="$QEMU_PATH/qemu-$target$QEMU_SUFFIX"
|
||||
|
||||
if [ "$magic" = "" ] || [ "$mask" = "" ] || [ "$family" = "" ] ; then
|
||||
echo "INTERNAL ERROR: unknown cpu $cpu" 1>&2
|
||||
continue
|
||||
fi
|
||||
|
||||
if [ "$host_family" = "$family" ] ; then
|
||||
# When --ignore-family is used, we have to generate rules even
|
||||
# for targets that are in the same family as the host CPU. The
|
||||
# only exception is of course when the CPU types exactly match
|
||||
if [ "$target" = "$host_cpu" ] || [ "$IGNORE_FAMILY" = "no" ] ; then
|
||||
continue
|
||||
fi
|
||||
fi
|
||||
|
||||
$BINFMT_SET
|
||||
done
|
||||
}
|
||||
|
||||
CHECK=qemu_check_bintfmt_misc
|
||||
BINFMT_SET=qemu_register_interpreter
|
||||
|
||||
SYSTEMDDIR="/etc/binfmt.d"
|
||||
DEBIANDIR="/usr/share/binfmts"
|
||||
|
||||
QEMU_PATH=/usr/local/bin
|
||||
CREDENTIAL=no
|
||||
PERSISTENT=no
|
||||
PRESERVE_ARG0=no
|
||||
QEMU_SUFFIX=""
|
||||
IGNORE_FAMILY=no
|
||||
|
||||
_longopts="debian,systemd:,qemu-path:,qemu-suffix:,exportdir:,help,credential:,\
|
||||
persistent:,preserve-argv0:,ignore-family:"
|
||||
options=$(getopt -o ds:Q:S:e:hc:p:g:F:i: -l ${_longopts} -- "$@")
|
||||
eval set -- "$options"
|
||||
|
||||
while true ; do
|
||||
case "$1" in
|
||||
-d|--debian)
|
||||
CHECK=qemu_check_debian
|
||||
BINFMT_SET=qemu_generate_debian
|
||||
EXPORTDIR=${EXPORTDIR:-$DEBIANDIR}
|
||||
;;
|
||||
-s|--systemd)
|
||||
CHECK=qemu_check_systemd
|
||||
BINFMT_SET=qemu_generate_systemd
|
||||
EXPORTDIR=${EXPORTDIR:-$SYSTEMDDIR}
|
||||
shift
|
||||
# check given cpu is in the supported CPU list
|
||||
if [ "$1" != "ALL" ] ; then
|
||||
for cpu in ${qemu_target_list} ; do
|
||||
if [ "$cpu" = "$1" ] ; then
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
if [ "$cpu" = "$1" ] ; then
|
||||
qemu_target_list="$1"
|
||||
else
|
||||
echo "ERROR: unknown CPU \"$1\"" 1>&2
|
||||
usage
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
-Q|--qemu-path)
|
||||
shift
|
||||
QEMU_PATH="$1"
|
||||
;;
|
||||
-F|--qemu-suffix)
|
||||
shift
|
||||
QEMU_SUFFIX="$1"
|
||||
;;
|
||||
-e|--exportdir)
|
||||
shift
|
||||
EXPORTDIR="$1"
|
||||
;;
|
||||
-h|--help)
|
||||
usage
|
||||
exit 1
|
||||
;;
|
||||
-c|--credential)
|
||||
shift
|
||||
CREDENTIAL="$1"
|
||||
;;
|
||||
-p|--persistent)
|
||||
shift
|
||||
PERSISTENT="$1"
|
||||
;;
|
||||
-g|--preserve-argv0)
|
||||
shift
|
||||
PRESERVE_ARG0="$1"
|
||||
;;
|
||||
-i|--ignore-family)
|
||||
shift
|
||||
IGNORE_FAMILY="$1"
|
||||
;;
|
||||
*)
|
||||
break
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
$CHECK
|
||||
qemu_set_binfmts
|
||||
@@ -1,3 +1,9 @@
|
||||
{
|
||||
"source": "local"
|
||||
"source": "local",
|
||||
"upstream": {
|
||||
"watch": {
|
||||
"github": "omacom/ttfx",
|
||||
"pattern": "v(?P<version>[0-9]+(?:\\.[0-9]+)*)"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,18 +1,20 @@
|
||||
# Maintainer: David Heinemeier Hansson <david@hey.com>
|
||||
|
||||
pkgname=ttfx
|
||||
pkgver=0.3.3
|
||||
pkgver=0.4.0
|
||||
pkgrel=1
|
||||
pkgdesc="Terminal text effects as a single static binary — Rust port of terminaltexteffects"
|
||||
arch=('x86_64' 'aarch64')
|
||||
url="https://github.com/omacom-io/ttfx"
|
||||
url="https://github.com/omacom/ttfx"
|
||||
license=('MIT')
|
||||
depends=('gcc-libs' 'glibc')
|
||||
makedepends=('cargo')
|
||||
# the x86-64 assembly engine; without NASM the build falls back to pure Rust
|
||||
makedepends_x86_64=('nasm')
|
||||
options=('!debug')
|
||||
|
||||
source=("$pkgname-$pkgver.tar.gz::$url/archive/refs/tags/v$pkgver.tar.gz")
|
||||
sha256sums=('d040da0da2f4a952a367fa3d934ac25999265405f1d2a9f0475625e41211fa7d')
|
||||
sha256sums=('90a057971973917a45ae1cb2fc795cfaea33afc265180ba4a963172daf9f64ee')
|
||||
|
||||
prepare() {
|
||||
cd "$pkgname-$pkgver"
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"source": "local",
|
||||
"channels": ["edge"],
|
||||
"sync": false
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
From b8ea3cebde98866b7cbb4e8f9bb6dfdee529a549 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Robinson <pbrobinson@gmail.com>
|
||||
Date: Wed, 27 Aug 2025 00:23:28 +0100
|
||||
Subject: [PATCH] Allwinner: fix booting on a number of devices
|
||||
|
||||
Revert "sunxi: enable MMU_PGPROT proper page table protection"
|
||||
|
||||
This reverts commit 16cfccda4dbf0b53473b8212897f5c63bfbeb6e1.
|
||||
---
|
||||
arch/arm/Kconfig | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
|
||||
index 40368abc297..b8be270e4d7 100644
|
||||
--- a/arch/arm/Kconfig
|
||||
+++ b/arch/arm/Kconfig
|
||||
@@ -1207,7 +1207,6 @@ config ARCH_SUNXI
|
||||
select DM_SPI_FLASH if SPI && MTD
|
||||
select DM_KEYBOARD
|
||||
select DM_SERIAL
|
||||
- select MMU_PGPROT if ARM64
|
||||
select OF_BOARD_SETUP
|
||||
select OF_CONTROL
|
||||
select PINCTRL
|
||||
--
|
||||
2.51.0
|
||||
|
||||
@@ -0,0 +1,738 @@
|
||||
From patchwork Mon Jul 6 17:21:47 2026
|
||||
Content-Type: text/plain; charset="utf-8"
|
||||
MIME-Version: 1.0
|
||||
Content-Transfer-Encoding: 7bit
|
||||
X-Patchwork-Submitter: Torsten Duwe <duwe@lst.de>
|
||||
X-Patchwork-Id: 2265604
|
||||
Return-Path: <u-boot-bounces@lists.denx.de>
|
||||
X-Original-To: incoming@patchwork.ozlabs.org
|
||||
Delivered-To: patchwork-incoming@legolas.ozlabs.org
|
||||
Authentication-Results: legolas.ozlabs.org;
|
||||
spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de
|
||||
(client-ip=85.214.62.61; helo=phobos.denx.de;
|
||||
envelope-from=u-boot-bounces@lists.denx.de; receiver=patchwork.ozlabs.org)
|
||||
Received: from phobos.denx.de (phobos.denx.de [85.214.62.61])
|
||||
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
|
||||
key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)
|
||||
(No client certificate requested)
|
||||
by legolas.ozlabs.org (Postfix) with ESMTPS id 4gvB431Qwzz1xqc
|
||||
for <incoming@patchwork.ozlabs.org>; Tue, 07 Jul 2026 03:21:55 +1000 (AEST)
|
||||
Received: from h2850616.stratoserver.net (localhost [IPv6:::1])
|
||||
by phobos.denx.de (Postfix) with ESMTP id 179C084942;
|
||||
Mon, 6 Jul 2026 19:21:52 +0200 (CEST)
|
||||
Authentication-Results: phobos.denx.de;
|
||||
dmarc=fail (p=none dis=none) header.from=lst.de
|
||||
Authentication-Results: phobos.denx.de;
|
||||
spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de
|
||||
Received: by phobos.denx.de (Postfix, from userid 109)
|
||||
id 82ADE8490A; Mon, 6 Jul 2026 19:21:51 +0200 (CEST)
|
||||
X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de
|
||||
X-Spam-Level:
|
||||
X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,
|
||||
RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
|
||||
autolearn_force=no version=3.4.2
|
||||
Received: from verein.lst.de (verein.lst.de [213.95.11.211])
|
||||
(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
|
||||
(No client certificate requested)
|
||||
by phobos.denx.de (Postfix) with ESMTPS id 9F24C846B4
|
||||
for <u-boot@lists.denx.de>; Mon, 6 Jul 2026 19:21:49 +0200 (CEST)
|
||||
Authentication-Results: phobos.denx.de;
|
||||
dmarc=fail (p=none dis=none) header.from=lst.de
|
||||
Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=duwe@lst.de
|
||||
Received: by verein.lst.de (Postfix, from userid 2005)
|
||||
id C934268B05; Mon, 6 Jul 2026 19:21:47 +0200 (CEST)
|
||||
In-Reply-To: <20260706172028.C148E68BEB@verein.lst.de>
|
||||
References: <20260706172028.C148E68BEB@verein.lst.de>
|
||||
Subject: [PATCH v2 1/4] core: Skip parent device nodes without a DT reference
|
||||
when looking for dma-ranges
|
||||
To: Neil Armstrong <neil.armstrong@linaro.org>,
|
||||
Andrew Goodbody <andrew.goodbody@linaro.org>, Bin Meng <bmeng.cn@gmail.com>,
|
||||
Simon Glass <sjg@chromium.org>
|
||||
Cc: Tom Rini <trini@konsulko.com>, Matthias Brugger <mbrugger@suse.com>,
|
||||
Peter Robinson <pbrobinson@gmail.com>,
|
||||
Mattijs Korpershoek <mkorpershoek@kernel.org>,
|
||||
Marek Vasut <marek.vasut+renesas@mailbox.org>,
|
||||
Heiko Schocher <hs@nabladev.com>, Svyatoslav Ryhel <clamor95@gmail.com>,
|
||||
"Lucien.Jheng" <lucienzx159@gmail.com>, Rasmus Villemoes <ravi@prevas.dk>,
|
||||
Martin Schwan <m.schwan@phytec.de>,
|
||||
"Markus Schneider-Pargmann (TI.com)" <msp@baylibre.com>,
|
||||
Prashant Kamble <prashant.kamble223@gmail.com>,
|
||||
Denis Mukhin <dmukhin@ford.com>, Sughosh Ganu <sughosh.ganu@arm.com>,
|
||||
u-boot@lists.denx.de
|
||||
Message-Id: <20260706172147.C934268B05@verein.lst.de>
|
||||
Date: Mon, 6 Jul 2026 19:21:47 +0200 (CEST)
|
||||
From: duwe@lst.de (Torsten Duwe)
|
||||
X-BeenThere: u-boot@lists.denx.de
|
||||
X-Mailman-Version: 2.1.39
|
||||
Precedence: list
|
||||
List-Id: U-Boot discussion <u-boot.lists.denx.de>
|
||||
List-Unsubscribe: <https://lists.denx.de/options/u-boot>,
|
||||
<mailto:u-boot-request@lists.denx.de?subject=unsubscribe>
|
||||
List-Archive: <https://lists.denx.de/pipermail/u-boot/>
|
||||
List-Post: <mailto:u-boot@lists.denx.de>
|
||||
List-Help: <mailto:u-boot-request@lists.denx.de?subject=help>
|
||||
List-Subscribe: <https://lists.denx.de/listinfo/u-boot>,
|
||||
<mailto:u-boot-request@lists.denx.de?subject=subscribe>
|
||||
Errors-To: u-boot-bounces@lists.denx.de
|
||||
Sender: "U-Boot" <u-boot-bounces@lists.denx.de>
|
||||
X-Virus-Scanned: clamav-milter 0.103.8 at phobos.denx.de
|
||||
X-Virus-Status: Clean
|
||||
|
||||
From: Torsten Duwe <duwe@suse.de>
|
||||
|
||||
If a device node got created dynamically, there is no guarantee that the
|
||||
parent node has an associated device tree node which could specify dma
|
||||
constraints. Especially PCI(e) enumeration adds intermediate "bus nodes",
|
||||
also dynamically.
|
||||
|
||||
Try harder to find the correct configuration by walking up the tree until
|
||||
a DT association is found.
|
||||
|
||||
Suggested-by: Neil Armstrong <neil.armstrong@linaro.org>
|
||||
Signed-off-by: Torsten Duwe <duwe@suse.de>
|
||||
Reviewed-by: Peter Robinson <pbrobinson@gmail.com>
|
||||
Tested-by: Peter Robinson <pbrobinson@gmail.com>
|
||||
---
|
||||
drivers/core/device.c | 14 +++++++++++++-
|
||||
1 file changed, 13 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/core/device.c b/drivers/core/device.c
|
||||
index d365204ba11..b6d00cf4714 100644
|
||||
--- a/drivers/core/device.c
|
||||
+++ b/drivers/core/device.c
|
||||
@@ -459,7 +459,19 @@ static int device_get_dma_constraints(struct udevice *dev)
|
||||
u64 size = 0;
|
||||
int ret;
|
||||
|
||||
- if (!CONFIG_IS_ENABLED(DM_DMA) || !parent || !dev_has_ofnode(parent))
|
||||
+ if (!CONFIG_IS_ENABLED(DM_DMA) || !parent)
|
||||
+ return 0;
|
||||
+
|
||||
+ /* Look for the first node in the parent chain */
|
||||
+ while (parent) {
|
||||
+ if (dev_has_ofnode(parent))
|
||||
+ break;
|
||||
+
|
||||
+ parent = dev_get_parent(parent);
|
||||
+ }
|
||||
+
|
||||
+ /* No parents have a node, bail out */
|
||||
+ if (!parent)
|
||||
return 0;
|
||||
|
||||
/*
|
||||
|
||||
From patchwork Mon Jul 6 17:21:50 2026
|
||||
Content-Type: text/plain; charset="utf-8"
|
||||
MIME-Version: 1.0
|
||||
Content-Transfer-Encoding: 7bit
|
||||
X-Patchwork-Submitter: Torsten Duwe <duwe@lst.de>
|
||||
X-Patchwork-Id: 2265605
|
||||
Return-Path: <u-boot-bounces@lists.denx.de>
|
||||
X-Original-To: incoming@patchwork.ozlabs.org
|
||||
Delivered-To: patchwork-incoming@legolas.ozlabs.org
|
||||
Authentication-Results: legolas.ozlabs.org;
|
||||
spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de
|
||||
(client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de;
|
||||
envelope-from=u-boot-bounces@lists.denx.de; receiver=patchwork.ozlabs.org)
|
||||
Received: from phobos.denx.de (phobos.denx.de
|
||||
[IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01])
|
||||
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
|
||||
key-exchange x25519)
|
||||
(No client certificate requested)
|
||||
by legolas.ozlabs.org (Postfix) with ESMTPS id 4gvB481pfXz1xqc
|
||||
for <incoming@patchwork.ozlabs.org>; Tue, 07 Jul 2026 03:22:00 +1000 (AEST)
|
||||
Received: from h2850616.stratoserver.net (localhost [IPv6:::1])
|
||||
by phobos.denx.de (Postfix) with ESMTP id 9A59684994;
|
||||
Mon, 6 Jul 2026 19:21:55 +0200 (CEST)
|
||||
Authentication-Results: phobos.denx.de;
|
||||
dmarc=fail (p=none dis=none) header.from=lst.de
|
||||
Authentication-Results: phobos.denx.de;
|
||||
spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de
|
||||
Received: by phobos.denx.de (Postfix, from userid 109)
|
||||
id EB7D384979; Mon, 6 Jul 2026 19:21:53 +0200 (CEST)
|
||||
X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de
|
||||
X-Spam-Level:
|
||||
X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,
|
||||
RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
|
||||
autolearn_force=no version=3.4.2
|
||||
Received: from verein.lst.de (verein.lst.de [213.95.11.211])
|
||||
(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
|
||||
(No client certificate requested)
|
||||
by phobos.denx.de (Postfix) with ESMTPS id EE61C846B4
|
||||
for <u-boot@lists.denx.de>; Mon, 6 Jul 2026 19:21:51 +0200 (CEST)
|
||||
Authentication-Results: phobos.denx.de;
|
||||
dmarc=fail (p=none dis=none) header.from=lst.de
|
||||
Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=duwe@lst.de
|
||||
Received: by verein.lst.de (Postfix, from userid 2005)
|
||||
id 464E868BEB; Mon, 6 Jul 2026 19:21:50 +0200 (CEST)
|
||||
In-Reply-To: <20260706172028.C148E68BEB@verein.lst.de>
|
||||
References: <20260706172028.C148E68BEB@verein.lst.de>
|
||||
Subject: [PATCH v2 2/4] test: Add a unit test in phys_to_bus for dynamically
|
||||
created device nodes
|
||||
To: Neil Armstrong <neil.armstrong@linaro.org>,
|
||||
Andrew Goodbody <andrew.goodbody@linaro.org>, Bin Meng <bmeng.cn@gmail.com>,
|
||||
Simon Glass <sjg@chromium.org>
|
||||
Cc: Tom Rini <trini@konsulko.com>, Matthias Brugger <mbrugger@suse.com>,
|
||||
Peter Robinson <pbrobinson@gmail.com>,
|
||||
Mattijs Korpershoek <mkorpershoek@kernel.org>,
|
||||
Marek Vasut <marek.vasut+renesas@mailbox.org>,
|
||||
Heiko Schocher <hs@nabladev.com>, Svyatoslav Ryhel <clamor95@gmail.com>,
|
||||
"Lucien.Jheng" <lucienzx159@gmail.com>, Rasmus Villemoes <ravi@prevas.dk>,
|
||||
Martin Schwan <m.schwan@phytec.de>,
|
||||
"Markus Schneider-Pargmann (TI.com)" <msp@baylibre.com>,
|
||||
Prashant Kamble <prashant.kamble223@gmail.com>,
|
||||
Denis Mukhin <dmukhin@ford.com>, Sughosh Ganu <sughosh.ganu@arm.com>,
|
||||
u-boot@lists.denx.de
|
||||
Message-Id: <20260706172150.464E868BEB@verein.lst.de>
|
||||
Date: Mon, 6 Jul 2026 19:21:50 +0200 (CEST)
|
||||
From: duwe@lst.de (Torsten Duwe)
|
||||
X-BeenThere: u-boot@lists.denx.de
|
||||
X-Mailman-Version: 2.1.39
|
||||
Precedence: list
|
||||
List-Id: U-Boot discussion <u-boot.lists.denx.de>
|
||||
List-Unsubscribe: <https://lists.denx.de/options/u-boot>,
|
||||
<mailto:u-boot-request@lists.denx.de?subject=unsubscribe>
|
||||
List-Archive: <https://lists.denx.de/pipermail/u-boot/>
|
||||
List-Post: <mailto:u-boot@lists.denx.de>
|
||||
List-Help: <mailto:u-boot-request@lists.denx.de?subject=help>
|
||||
List-Subscribe: <https://lists.denx.de/listinfo/u-boot>,
|
||||
<mailto:u-boot-request@lists.denx.de?subject=subscribe>
|
||||
Errors-To: u-boot-bounces@lists.denx.de
|
||||
Sender: "U-Boot" <u-boot-bounces@lists.denx.de>
|
||||
X-Virus-Scanned: clamav-milter 0.103.8 at phobos.denx.de
|
||||
X-Virus-Status: Clean
|
||||
|
||||
From: Torsten Duwe <duwe@suse.de>
|
||||
|
||||
In order to test whether device_get_dma_constraints() is now able to skip
|
||||
device nodes without a DT association, temporarily remove those on 2 newly-
|
||||
created nodes.
|
||||
|
||||
Signed-off-by: Torsten Duwe <duwe@suse.de>
|
||||
---
|
||||
|
||||
This test indeed makes a different whether the previous change is
|
||||
applied or not, but *only* reliably for the non-flat-tree case (!?).
|
||||
On the flat tree, it always fails after (reverse) applying it.
|
||||
|
||||
Either the previous patch is incomplete, or, more likely, the test
|
||||
assumptions here are not all valid. Suggestions welcome (especially
|
||||
how to create device nodes from a device tree without a reference to
|
||||
their origin ;-)
|
||||
|
||||
---
|
||||
arch/sandbox/dts/test.dts | 9 +++++++++
|
||||
test/dm/phys2bus.c | 25 ++++++++++++++++++++++++-
|
||||
2 files changed, 33 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/arch/sandbox/dts/test.dts b/arch/sandbox/dts/test.dts
|
||||
index 0887de4333b..1d92e85c739 100644
|
||||
--- a/arch/sandbox/dts/test.dts
|
||||
+++ b/arch/sandbox/dts/test.dts
|
||||
@@ -656,6 +656,15 @@
|
||||
subnode@0 {
|
||||
compatible = "denx,u-boot-fdt-test";
|
||||
};
|
||||
+ bus@7 {
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <1>;
|
||||
+ compatible = "denx,u-boot-test-bus";
|
||||
+
|
||||
+ subnode@8 {
|
||||
+ compatible = "denx,u-boot-fdt-test";
|
||||
+ };
|
||||
+ };
|
||||
};
|
||||
|
||||
mmio-bus@1 {
|
||||
diff --git a/test/dm/phys2bus.c b/test/dm/phys2bus.c
|
||||
index 67f33904943..858ed5410e2 100644
|
||||
--- a/test/dm/phys2bus.c
|
||||
+++ b/test/dm/phys2bus.c
|
||||
@@ -15,7 +15,8 @@
|
||||
|
||||
static int dm_test_phys_to_bus(struct unit_test_state *uts)
|
||||
{
|
||||
- struct udevice *dev;
|
||||
+ struct udevice *dev, *pdev;
|
||||
+ ofnode psave, nsave;
|
||||
ofnode node;
|
||||
|
||||
node = ofnode_path("/mmio-bus@0");
|
||||
@@ -31,6 +32,29 @@ static int dm_test_phys_to_bus(struct unit_test_state *uts)
|
||||
ut_asserteq_addr((void*)0x1003ffffULL, (void*)dev_phys_to_bus(dev, 0x3ffff));
|
||||
ut_asserteq_addr((void*)0x3ffffULL, (void*)(ulong)dev_bus_to_phys(dev, 0x1003ffff));
|
||||
|
||||
+#if CONFIG_IS_ENABLED(OF_REAL)
|
||||
+ /* dma-ranges are on the grandparent bus node,
|
||||
+ * OF nodes neither here nor at parent
|
||||
+ */
|
||||
+ node = ofnode_path("/mmio-bus@0/bus@7");
|
||||
+ ut_assert(ofnode_valid(node));
|
||||
+ ut_assertok(uclass_get_device_by_ofnode(UCLASS_TEST_BUS, node, &pdev));
|
||||
+
|
||||
+ /* pretend the devices were discovered dynamically and have no OF node */
|
||||
+ psave = pdev->node_;
|
||||
+ pdev->node_.np = NULL;
|
||||
+ node = ofnode_path("/mmio-bus@0/bus@7/subnode@8");
|
||||
+ ut_assert(ofnode_valid(node));
|
||||
+ nsave = dev->node_;
|
||||
+ dev->node_.np = NULL;
|
||||
+ ut_assertok(uclass_get_device_by_ofnode(UCLASS_TEST_FDT, node, &dev));
|
||||
+
|
||||
+ ut_asserteq_addr((void *)0x1003ffffULL, (void *)dev_phys_to_bus(dev, 0x3ffff));
|
||||
+ ut_asserteq_addr((void *)0x3ffffULL, (void *)(ulong)dev_bus_to_phys(dev, 0x1003ffff));
|
||||
+
|
||||
+ pdev->node_ = psave;
|
||||
+ dev->node_ = nsave;
|
||||
+#endif
|
||||
return 0;
|
||||
}
|
||||
DM_TEST(dm_test_phys_to_bus, UTF_SCAN_PDATA | UTF_SCAN_FDT);
|
||||
|
||||
From patchwork Mon Jul 6 17:21:52 2026
|
||||
Content-Type: text/plain; charset="utf-8"
|
||||
MIME-Version: 1.0
|
||||
Content-Transfer-Encoding: 7bit
|
||||
X-Patchwork-Submitter: Torsten Duwe <duwe@lst.de>
|
||||
X-Patchwork-Id: 2265606
|
||||
Return-Path: <u-boot-bounces@lists.denx.de>
|
||||
X-Original-To: incoming@patchwork.ozlabs.org
|
||||
Delivered-To: patchwork-incoming@legolas.ozlabs.org
|
||||
Authentication-Results: legolas.ozlabs.org;
|
||||
spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de
|
||||
(client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de;
|
||||
envelope-from=u-boot-bounces@lists.denx.de; receiver=patchwork.ozlabs.org)
|
||||
Received: from phobos.denx.de (phobos.denx.de
|
||||
[IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01])
|
||||
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
|
||||
key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)
|
||||
(No client certificate requested)
|
||||
by legolas.ozlabs.org (Postfix) with ESMTPS id 4gvB4H70Bdz1xqc
|
||||
for <incoming@patchwork.ozlabs.org>; Tue, 07 Jul 2026 03:22:07 +1000 (AEST)
|
||||
Received: from h2850616.stratoserver.net (localhost [IPv6:::1])
|
||||
by phobos.denx.de (Postfix) with ESMTP id 00AF0849BA;
|
||||
Mon, 6 Jul 2026 19:21:57 +0200 (CEST)
|
||||
Authentication-Results: phobos.denx.de;
|
||||
dmarc=fail (p=none dis=none) header.from=lst.de
|
||||
Authentication-Results: phobos.denx.de;
|
||||
spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de
|
||||
Received: by phobos.denx.de (Postfix, from userid 109)
|
||||
id 25F8F849BA; Mon, 6 Jul 2026 19:21:56 +0200 (CEST)
|
||||
X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de
|
||||
X-Spam-Level:
|
||||
X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,
|
||||
RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
|
||||
autolearn_force=no version=3.4.2
|
||||
Received: from verein.lst.de (verein.lst.de [213.95.11.211])
|
||||
(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
|
||||
(No client certificate requested)
|
||||
by phobos.denx.de (Postfix) with ESMTPS id 06F20846B4
|
||||
for <u-boot@lists.denx.de>; Mon, 6 Jul 2026 19:21:54 +0200 (CEST)
|
||||
Authentication-Results: phobos.denx.de;
|
||||
dmarc=fail (p=none dis=none) header.from=lst.de
|
||||
Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=duwe@lst.de
|
||||
Received: by verein.lst.de (Postfix, from userid 2005)
|
||||
id 5257168BFE; Mon, 6 Jul 2026 19:21:52 +0200 (CEST)
|
||||
In-Reply-To: <20260706172028.C148E68BEB@verein.lst.de>
|
||||
References: <20260706172028.C148E68BEB@verein.lst.de>
|
||||
Subject: [PATCH v2 3/4] nvme: Fix missing address translation for PCIe inbound
|
||||
access
|
||||
To: Neil Armstrong <neil.armstrong@linaro.org>,
|
||||
Andrew Goodbody <andrew.goodbody@linaro.org>, Bin Meng <bmeng.cn@gmail.com>,
|
||||
Simon Glass <sjg@chromium.org>
|
||||
Cc: Tom Rini <trini@konsulko.com>, Matthias Brugger <mbrugger@suse.com>,
|
||||
Peter Robinson <pbrobinson@gmail.com>,
|
||||
Mattijs Korpershoek <mkorpershoek@kernel.org>,
|
||||
Marek Vasut <marek.vasut+renesas@mailbox.org>,
|
||||
Heiko Schocher <hs@nabladev.com>, Svyatoslav Ryhel <clamor95@gmail.com>,
|
||||
"Lucien.Jheng" <lucienzx159@gmail.com>, Rasmus Villemoes <ravi@prevas.dk>,
|
||||
Martin Schwan <m.schwan@phytec.de>,
|
||||
"Markus Schneider-Pargmann (TI.com)" <msp@baylibre.com>,
|
||||
Prashant Kamble <prashant.kamble223@gmail.com>,
|
||||
Denis Mukhin <dmukhin@ford.com>, Sughosh Ganu <sughosh.ganu@arm.com>,
|
||||
u-boot@lists.denx.de
|
||||
Message-Id: <20260706172152.5257168BFE@verein.lst.de>
|
||||
Date: Mon, 6 Jul 2026 19:21:52 +0200 (CEST)
|
||||
From: duwe@lst.de (Torsten Duwe)
|
||||
X-BeenThere: u-boot@lists.denx.de
|
||||
X-Mailman-Version: 2.1.39
|
||||
Precedence: list
|
||||
List-Id: U-Boot discussion <u-boot.lists.denx.de>
|
||||
List-Unsubscribe: <https://lists.denx.de/options/u-boot>,
|
||||
<mailto:u-boot-request@lists.denx.de?subject=unsubscribe>
|
||||
List-Archive: <https://lists.denx.de/pipermail/u-boot/>
|
||||
List-Post: <mailto:u-boot@lists.denx.de>
|
||||
List-Help: <mailto:u-boot-request@lists.denx.de?subject=help>
|
||||
List-Subscribe: <https://lists.denx.de/listinfo/u-boot>,
|
||||
<mailto:u-boot-request@lists.denx.de?subject=subscribe>
|
||||
Errors-To: u-boot-bounces@lists.denx.de
|
||||
Sender: "U-Boot" <u-boot-bounces@lists.denx.de>
|
||||
X-Virus-Scanned: clamav-milter 0.103.8 at phobos.denx.de
|
||||
X-Virus-Status: Clean
|
||||
|
||||
From: Torsten Duwe <duwe@suse.de>
|
||||
|
||||
U-Boot currently does not account for PCIe bridges with a non-zero
|
||||
inbound access offset when talking NVMe, it only works on platforms
|
||||
where this offset happens to be zero.
|
||||
|
||||
This patch enhances the NVMe driver with the ability to also handle
|
||||
these cases. It also removes the unused function nvme_get_features().
|
||||
|
||||
Signed-off-by: Torsten Duwe <duwe@suse.de>
|
||||
Reviewed-by: Peter Robinson <pbrobinson@gmail.com>
|
||||
Tested-by: Peter Robinson <pbrobinson@gmail.com>
|
||||
---
|
||||
I tried to consistently use uintptr_t when doing arithmetic on pointers
|
||||
and dma_addr_t to hold, well, DMA addresses ;)
|
||||
|
||||
nvme_get_features mentions it's unused; so far it causes fruitless
|
||||
maintenance work and causes dead extra bytes in das U-Boot binary.
|
||||
It hasn't been neccessary for 9 years; one can revive it from git
|
||||
once needed.
|
||||
|
||||
---
|
||||
drivers/nvme/nvme.c | 71 +++++++++++++++++----------------------------
|
||||
drivers/nvme/nvme.h | 3 ++
|
||||
2 files changed, 29 insertions(+), 45 deletions(-)
|
||||
|
||||
diff --git a/drivers/nvme/nvme.c b/drivers/nvme/nvme.c
|
||||
index 147a104149e..54284c0242b 100644
|
||||
--- a/drivers/nvme/nvme.c
|
||||
+++ b/drivers/nvme/nvme.c
|
||||
@@ -8,10 +8,10 @@
|
||||
#include <bootdev.h>
|
||||
#include <cpu_func.h>
|
||||
#include <dm.h>
|
||||
-#include <errno.h>
|
||||
#include <log.h>
|
||||
#include <malloc.h>
|
||||
#include <memalign.h>
|
||||
+#include <phys2bus.h>
|
||||
#include <time.h>
|
||||
#include <dm/device-internal.h>
|
||||
#include <linux/compat.h>
|
||||
@@ -101,6 +101,8 @@ static int nvme_setup_prps(struct nvme_dev *dev, u64 *prp2,
|
||||
printf("Error: malloc prp_pool fail\n");
|
||||
return -ENOMEM;
|
||||
}
|
||||
+ dev->prp_pool_dma = dev_phys_to_bus(dev->udev,
|
||||
+ (uintptr_t)dev->prp_pool);
|
||||
dev->prp_entry_num = num_pages * (prps_per_page - 1) + 1;
|
||||
}
|
||||
|
||||
@@ -108,8 +110,10 @@ static int nvme_setup_prps(struct nvme_dev *dev, u64 *prp2,
|
||||
i = 0;
|
||||
while (nprps) {
|
||||
if ((i == (prps_per_page - 1)) && nprps > 1) {
|
||||
- *(prp_pool + i) = cpu_to_le64((ulong)prp_pool +
|
||||
- page_size);
|
||||
+ dma_addr_t prp_pool_dma =
|
||||
+ dev_phys_to_bus(dev->udev, (uintptr_t)prp_pool);
|
||||
+ *(prp_pool + i) = cpu_to_le64(prp_pool_dma +
|
||||
+ page_size);
|
||||
i = 0;
|
||||
prp_pool = (u64 *)((uintptr_t)prp_pool + page_size);
|
||||
}
|
||||
@@ -117,7 +121,7 @@ static int nvme_setup_prps(struct nvme_dev *dev, u64 *prp2,
|
||||
dma_addr += page_size;
|
||||
nprps--;
|
||||
}
|
||||
- *prp2 = (ulong)dev->prp_pool;
|
||||
+ *prp2 = dev->prp_pool_dma;
|
||||
|
||||
flush_dcache_range((ulong)dev->prp_pool, (ulong)dev->prp_pool +
|
||||
num_pages * page_size);
|
||||
@@ -258,11 +262,15 @@ static struct nvme_queue *nvme_alloc_queue(struct nvme_dev *dev,
|
||||
nvmeq->cqes = (void *)memalign(4096, NVME_CQ_ALLOCATION);
|
||||
if (!nvmeq->cqes)
|
||||
goto free_nvmeq;
|
||||
+ nvmeq->cq_dma_addr = dev_phys_to_bus(dev->udev,
|
||||
+ (uintptr_t)nvmeq->cqes);
|
||||
memset((void *)nvmeq->cqes, 0, NVME_CQ_SIZE(depth));
|
||||
|
||||
nvmeq->sq_cmds = (void *)memalign(4096, NVME_SQ_SIZE(depth));
|
||||
if (!nvmeq->sq_cmds)
|
||||
goto free_queue;
|
||||
+ nvmeq->sq_dma_addr = dev_phys_to_bus(dev->udev,
|
||||
+ (uintptr_t)nvmeq->sq_cmds);
|
||||
memset((void *)nvmeq->sq_cmds, 0, NVME_SQ_SIZE(depth));
|
||||
|
||||
nvmeq->dev = dev;
|
||||
@@ -410,8 +416,8 @@ static int nvme_configure_admin_queue(struct nvme_dev *dev)
|
||||
dev->ctrl_config |= NVME_CC_IOSQES | NVME_CC_IOCQES;
|
||||
|
||||
writel(aqa, &dev->bar->aqa);
|
||||
- nvme_writeq((ulong)nvmeq->sq_cmds, &dev->bar->asq);
|
||||
- nvme_writeq((ulong)nvmeq->cqes, &dev->bar->acq);
|
||||
+ nvme_writeq(nvmeq->sq_dma_addr, &dev->bar->asq);
|
||||
+ nvme_writeq(nvmeq->cq_dma_addr, &dev->bar->acq);
|
||||
|
||||
result = nvme_enable_ctrl(dev);
|
||||
if (result)
|
||||
@@ -437,7 +443,7 @@ static int nvme_alloc_cq(struct nvme_dev *dev, u16 qid,
|
||||
|
||||
memset(&c, 0, sizeof(c));
|
||||
c.create_cq.opcode = nvme_admin_create_cq;
|
||||
- c.create_cq.prp1 = cpu_to_le64((ulong)nvmeq->cqes);
|
||||
+ c.create_cq.prp1 = cpu_to_le64(nvmeq->cq_dma_addr);
|
||||
c.create_cq.cqid = cpu_to_le16(qid);
|
||||
c.create_cq.qsize = cpu_to_le16(nvmeq->q_depth - 1);
|
||||
c.create_cq.cq_flags = cpu_to_le16(flags);
|
||||
@@ -454,7 +460,7 @@ static int nvme_alloc_sq(struct nvme_dev *dev, u16 qid,
|
||||
|
||||
memset(&c, 0, sizeof(c));
|
||||
c.create_sq.opcode = nvme_admin_create_sq;
|
||||
- c.create_sq.prp1 = cpu_to_le64((ulong)nvmeq->sq_cmds);
|
||||
+ c.create_sq.prp1 = cpu_to_le64(nvmeq->sq_dma_addr);
|
||||
c.create_sq.sqid = cpu_to_le16(qid);
|
||||
c.create_sq.qsize = cpu_to_le16(nvmeq->q_depth - 1);
|
||||
c.create_sq.sq_flags = cpu_to_le16(flags);
|
||||
@@ -464,13 +470,13 @@ static int nvme_alloc_sq(struct nvme_dev *dev, u16 qid,
|
||||
}
|
||||
|
||||
int nvme_identify(struct nvme_dev *dev, unsigned nsid,
|
||||
- unsigned cns, dma_addr_t dma_addr)
|
||||
+ unsigned cns, dma_addr_t cpu_addr)
|
||||
{
|
||||
struct nvme_command c;
|
||||
u32 page_size = dev->page_size;
|
||||
+ dma_addr_t dma_addr = dev_phys_to_bus(dev->udev, cpu_addr);
|
||||
int offset = dma_addr & (page_size - 1);
|
||||
int length = sizeof(struct nvme_id_ctrl);
|
||||
- dma_addr_t orig_dma_addr = dma_addr;
|
||||
int ret;
|
||||
|
||||
memset(&c, 0, sizeof(c));
|
||||
@@ -488,49 +494,22 @@ int nvme_identify(struct nvme_dev *dev, unsigned nsid,
|
||||
|
||||
c.identify.cns = cpu_to_le32(cns);
|
||||
|
||||
- nvme_invalidate_cache_aligned((uintptr_t)orig_dma_addr,
|
||||
+ nvme_invalidate_cache_aligned((uintptr_t)cpu_addr,
|
||||
sizeof(struct nvme_id_ctrl));
|
||||
|
||||
ret = nvme_submit_admin_cmd(dev, &c, NULL);
|
||||
if (!ret)
|
||||
- nvme_invalidate_cache_aligned((uintptr_t)orig_dma_addr,
|
||||
+ nvme_invalidate_cache_aligned((uintptr_t)cpu_addr,
|
||||
sizeof(struct nvme_id_ctrl));
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
-int nvme_get_features(struct nvme_dev *dev, unsigned fid, unsigned nsid,
|
||||
- dma_addr_t dma_addr, u32 *result)
|
||||
-{
|
||||
- struct nvme_command c;
|
||||
- int ret;
|
||||
-
|
||||
- memset(&c, 0, sizeof(c));
|
||||
- c.features.opcode = nvme_admin_get_features;
|
||||
- c.features.nsid = cpu_to_le32(nsid);
|
||||
- c.features.prp1 = cpu_to_le64(dma_addr);
|
||||
- c.features.fid = cpu_to_le32(fid);
|
||||
-
|
||||
- ret = nvme_submit_admin_cmd(dev, &c, result);
|
||||
-
|
||||
- /*
|
||||
- * TODO: Add some cache invalidation when a DMA buffer is involved
|
||||
- * in the request, here and before the command gets submitted. The
|
||||
- * buffer size varies by feature, also some features use a different
|
||||
- * field in the command packet to hold the buffer address.
|
||||
- * Section 5.21.1 (Set Features command) in the NVMe specification
|
||||
- * details the buffer requirements for each feature.
|
||||
- *
|
||||
- * At the moment there is no user of this function.
|
||||
- */
|
||||
-
|
||||
- return ret;
|
||||
-}
|
||||
-
|
||||
int nvme_set_features(struct nvme_dev *dev, unsigned fid, unsigned dword11,
|
||||
- dma_addr_t dma_addr, u32 *result)
|
||||
+ dma_addr_t cpu_addr, u32 *result)
|
||||
{
|
||||
struct nvme_command c;
|
||||
+ dma_addr_t dma_addr = dev_phys_to_bus(dev->udev, cpu_addr);
|
||||
|
||||
memset(&c, 0, sizeof(c));
|
||||
c.features.opcode = nvme_admin_set_features;
|
||||
@@ -769,7 +748,7 @@ static ulong nvme_blk_rw(struct udevice *udev, lbaint_t blknr,
|
||||
u64 prp2;
|
||||
u64 total_len = blkcnt << desc->log2blksz;
|
||||
u64 temp_len = total_len;
|
||||
- uintptr_t temp_buffer = (uintptr_t)buffer;
|
||||
+ uintptr_t dma_addr = dev_phys_to_bus(udev, (uintptr_t)buffer);
|
||||
|
||||
u64 slba = blknr;
|
||||
u16 lbas = 1 << (dev->max_transfer_shift - ns->lba_shift);
|
||||
@@ -797,19 +776,19 @@ static ulong nvme_blk_rw(struct udevice *udev, lbaint_t blknr,
|
||||
}
|
||||
|
||||
if (nvme_setup_prps(dev, &prp2,
|
||||
- lbas << ns->lba_shift, temp_buffer))
|
||||
+ lbas << ns->lba_shift, dma_addr))
|
||||
return -EIO;
|
||||
c.rw.slba = cpu_to_le64(slba);
|
||||
slba += lbas;
|
||||
c.rw.length = cpu_to_le16(lbas - 1);
|
||||
- c.rw.prp1 = cpu_to_le64(temp_buffer);
|
||||
+ c.rw.prp1 = cpu_to_le64(dma_addr);
|
||||
c.rw.prp2 = cpu_to_le64(prp2);
|
||||
status = nvme_submit_sync_cmd(dev->queues[NVME_IO_Q],
|
||||
&c, NULL, IO_TIMEOUT);
|
||||
if (status)
|
||||
break;
|
||||
temp_len -= (u32)lbas << ns->lba_shift;
|
||||
- temp_buffer += lbas << ns->lba_shift;
|
||||
+ dma_addr += lbas << ns->lba_shift;
|
||||
}
|
||||
|
||||
if (read)
|
||||
@@ -884,6 +863,8 @@ int nvme_init(struct udevice *udev)
|
||||
printf("Error: %s: Out of memory!\n", udev->name);
|
||||
goto free_queue;
|
||||
}
|
||||
+
|
||||
+ ndev->prp_pool_dma = dev_phys_to_bus(udev, (uintptr_t)ndev->prp_pool);
|
||||
ndev->prp_entry_num = MAX_PRP_POOL >> 3;
|
||||
|
||||
ret = nvme_setup_io_queues(ndev);
|
||||
diff --git a/drivers/nvme/nvme.h b/drivers/nvme/nvme.h
|
||||
index bc1d612dde4..7c6ed4d9b55 100644
|
||||
--- a/drivers/nvme/nvme.h
|
||||
+++ b/drivers/nvme/nvme.h
|
||||
@@ -619,6 +619,7 @@ struct nvme_dev {
|
||||
u32 page_size;
|
||||
u8 vwc;
|
||||
u64 *prp_pool;
|
||||
+ uintptr_t prp_pool_dma;
|
||||
u32 prp_entry_num;
|
||||
u32 nn;
|
||||
};
|
||||
@@ -637,7 +638,9 @@ enum nvme_queue_id {
|
||||
struct nvme_queue {
|
||||
struct nvme_dev *dev;
|
||||
struct nvme_command *sq_cmds;
|
||||
+ dma_addr_t sq_dma_addr;
|
||||
struct nvme_completion *cqes;
|
||||
+ dma_addr_t cq_dma_addr;
|
||||
u32 __iomem *q_db;
|
||||
u16 q_depth;
|
||||
s16 cq_vector;
|
||||
|
||||
From patchwork Mon Jul 6 17:21:54 2026
|
||||
Content-Type: text/plain; charset="utf-8"
|
||||
MIME-Version: 1.0
|
||||
Content-Transfer-Encoding: 7bit
|
||||
X-Patchwork-Submitter: Torsten Duwe <duwe@lst.de>
|
||||
X-Patchwork-Id: 2265607
|
||||
Return-Path: <u-boot-bounces@lists.denx.de>
|
||||
X-Original-To: incoming@patchwork.ozlabs.org
|
||||
Delivered-To: patchwork-incoming@legolas.ozlabs.org
|
||||
Authentication-Results: legolas.ozlabs.org;
|
||||
spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de
|
||||
(client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de;
|
||||
envelope-from=u-boot-bounces@lists.denx.de; receiver=patchwork.ozlabs.org)
|
||||
Received: from phobos.denx.de (phobos.denx.de
|
||||
[IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01])
|
||||
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
|
||||
key-exchange x25519)
|
||||
(No client certificate requested)
|
||||
by legolas.ozlabs.org (Postfix) with ESMTPS id 4gvB4R378Lz1xqc
|
||||
for <incoming@patchwork.ozlabs.org>; Tue, 07 Jul 2026 03:22:15 +1000 (AEST)
|
||||
Received: from h2850616.stratoserver.net (localhost [IPv6:::1])
|
||||
by phobos.denx.de (Postfix) with ESMTP id 3FDAE8490A;
|
||||
Mon, 6 Jul 2026 19:21:59 +0200 (CEST)
|
||||
Authentication-Results: phobos.denx.de;
|
||||
dmarc=fail (p=none dis=none) header.from=lst.de
|
||||
Authentication-Results: phobos.denx.de;
|
||||
spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de
|
||||
Received: by phobos.denx.de (Postfix, from userid 109)
|
||||
id 17F418490A; Mon, 6 Jul 2026 19:21:58 +0200 (CEST)
|
||||
X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de
|
||||
X-Spam-Level:
|
||||
X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,
|
||||
RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
|
||||
autolearn_force=no version=3.4.2
|
||||
Received: from verein.lst.de (verein.lst.de [213.95.11.211])
|
||||
(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
|
||||
(No client certificate requested)
|
||||
by phobos.denx.de (Postfix) with ESMTPS id 1D593849A4
|
||||
for <u-boot@lists.denx.de>; Mon, 6 Jul 2026 19:21:56 +0200 (CEST)
|
||||
Authentication-Results: phobos.denx.de;
|
||||
dmarc=fail (p=none dis=none) header.from=lst.de
|
||||
Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=duwe@lst.de
|
||||
Received: by verein.lst.de (Postfix, from userid 2005)
|
||||
id B506B68CFE; Mon, 6 Jul 2026 19:21:54 +0200 (CEST)
|
||||
In-Reply-To: <20260706172028.C148E68BEB@verein.lst.de>
|
||||
References: <20260706172028.C148E68BEB@verein.lst.de>
|
||||
Subject: [PATCH v2 4/4] configs: enable NVMe
|
||||
To: Neil Armstrong <neil.armstrong@linaro.org>,
|
||||
Andrew Goodbody <andrew.goodbody@linaro.org>, Bin Meng <bmeng.cn@gmail.com>,
|
||||
Simon Glass <sjg@chromium.org>
|
||||
Cc: Tom Rini <trini@konsulko.com>, Matthias Brugger <mbrugger@suse.com>,
|
||||
Peter Robinson <pbrobinson@gmail.com>,
|
||||
Mattijs Korpershoek <mkorpershoek@kernel.org>,
|
||||
Marek Vasut <marek.vasut+renesas@mailbox.org>,
|
||||
Heiko Schocher <hs@nabladev.com>, Svyatoslav Ryhel <clamor95@gmail.com>,
|
||||
"Lucien.Jheng" <lucienzx159@gmail.com>, Rasmus Villemoes <ravi@prevas.dk>,
|
||||
Martin Schwan <m.schwan@phytec.de>,
|
||||
"Markus Schneider-Pargmann (TI.com)" <msp@baylibre.com>,
|
||||
Prashant Kamble <prashant.kamble223@gmail.com>,
|
||||
Denis Mukhin <dmukhin@ford.com>, Sughosh Ganu <sughosh.ganu@arm.com>,
|
||||
u-boot@lists.denx.de
|
||||
Message-Id: <20260706172154.B506B68CFE@verein.lst.de>
|
||||
Date: Mon, 6 Jul 2026 19:21:54 +0200 (CEST)
|
||||
From: duwe@lst.de (Torsten Duwe)
|
||||
X-BeenThere: u-boot@lists.denx.de
|
||||
X-Mailman-Version: 2.1.39
|
||||
Precedence: list
|
||||
List-Id: U-Boot discussion <u-boot.lists.denx.de>
|
||||
List-Unsubscribe: <https://lists.denx.de/options/u-boot>,
|
||||
<mailto:u-boot-request@lists.denx.de?subject=unsubscribe>
|
||||
List-Archive: <https://lists.denx.de/pipermail/u-boot/>
|
||||
List-Post: <mailto:u-boot@lists.denx.de>
|
||||
List-Help: <mailto:u-boot-request@lists.denx.de?subject=help>
|
||||
List-Subscribe: <https://lists.denx.de/listinfo/u-boot>,
|
||||
<mailto:u-boot-request@lists.denx.de?subject=subscribe>
|
||||
Errors-To: u-boot-bounces@lists.denx.de
|
||||
Sender: "U-Boot" <u-boot-bounces@lists.denx.de>
|
||||
X-Virus-Scanned: clamav-milter 0.103.8 at phobos.denx.de
|
||||
X-Virus-Status: Clean
|
||||
|
||||
From: Torsten Duwe <duwe@suse.de>
|
||||
|
||||
Enable NVMe in the Raspberry Pi 64-Bit default config and scan for devices.
|
||||
|
||||
Signed-off-by: Torsten Duwe <duwe@suse.de>
|
||||
Reviewed-by: Peter Robinson <pbrobinson@gmail.com>
|
||||
Tested-by: Peter Robinson <pbrobinson@gmail.com>
|
||||
---
|
||||
configs/rpi_arm64_defconfig | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/configs/rpi_arm64_defconfig b/configs/rpi_arm64_defconfig
|
||||
index cdcf05ea6db..fb0fdce1d7f 100644
|
||||
--- a/configs/rpi_arm64_defconfig
|
||||
+++ b/configs/rpi_arm64_defconfig
|
||||
@@ -16,7 +16,7 @@ CONFIG_BOOTSTD_DEFAULTS=y
|
||||
CONFIG_OF_BOARD_SETUP=y
|
||||
CONFIG_FDT_SIMPLEFB=y
|
||||
CONFIG_USE_PREBOOT=y
|
||||
-CONFIG_PREBOOT="pci enum; usb start;"
|
||||
+CONFIG_PREBOOT="pci enum; usb start; nvme scan;"
|
||||
CONFIG_SYS_PBSIZE=1049
|
||||
# CONFIG_DISPLAY_CPUINFO is not set
|
||||
# CONFIG_DISPLAY_BOARDINFO is not set
|
||||
@@ -44,6 +44,7 @@ CONFIG_MMC_SDHCI_SDMA=y
|
||||
CONFIG_MMC_SDHCI_BCM2835=y
|
||||
CONFIG_MMC_SDHCI_BCMSTB=y
|
||||
CONFIG_BCMGENET=y
|
||||
+CONFIG_NVME_PCI=y
|
||||
CONFIG_PCI_BRCMSTB=y
|
||||
CONFIG_PINCTRL=y
|
||||
# CONFIG_PINCTRL_GENERIC is not set
|
||||
@@ -0,0 +1,50 @@
|
||||
From 4ee5ba36570d94ce27e4023f15b8b3a6b8b9daf9 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Robinson <pbrobinson@gmail.com>
|
||||
Date: Mon, 13 Oct 2025 21:41:13 +0100
|
||||
Subject: [PATCH] config: JetsonTX2: Fix upstream device tree naming
|
||||
|
||||
The upstream naming for the Jetson TX2 is p2771-0000 so fix
|
||||
the device tree name so the firmware will find the right
|
||||
name on disk.
|
||||
|
||||
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
|
||||
---
|
||||
arch/arm/dts/Makefile | 2 +-
|
||||
.../{tegra186-p2771-0000-500.dts => tegra186-p2771-0000.dts} | 0
|
||||
configs/p2771-0000-500_defconfig | 2 +-
|
||||
3 files changed, 2 insertions(+), 2 deletions(-)
|
||||
rename arch/arm/dts/{tegra186-p2771-0000-500.dts => tegra186-p2771-0000.dts} (100%)
|
||||
|
||||
diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
|
||||
index 7c8cf3a5a1d..86a7b4fda35 100644
|
||||
--- a/arch/arm/dts/Makefile
|
||||
+++ b/arch/arm/dts/Makefile
|
||||
@@ -134,7 +134,7 @@ dtb-$(CONFIG_ARCH_TEGRA) += \
|
||||
tegra124-venice2.dtb \
|
||||
tegra124-xiaomi-mocha.dtb \
|
||||
tegra186-p2771-0000-000.dtb \
|
||||
- tegra186-p2771-0000-500.dtb \
|
||||
+ tegra186-p2771-0000.dtb \
|
||||
tegra210-p2371-0000.dtb \
|
||||
tegra210-p2371-2180.dtb \
|
||||
tegra210-p2571.dtb \
|
||||
diff --git a/arch/arm/dts/tegra186-p2771-0000-500.dts b/arch/arm/dts/tegra186-p2771-0000.dts
|
||||
similarity index 100%
|
||||
rename from arch/arm/dts/tegra186-p2771-0000-500.dts
|
||||
rename to arch/arm/dts/tegra186-p2771-0000.dts
|
||||
diff --git a/configs/p2771-0000-500_defconfig b/configs/p2771-0000-500_defconfig
|
||||
index 42043277e2d..e1e5c47ddfa 100644
|
||||
--- a/configs/p2771-0000-500_defconfig
|
||||
+++ b/configs/p2771-0000-500_defconfig
|
||||
@@ -7,7 +7,7 @@ CONFIG_TEXT_BASE=0x80080000
|
||||
CONFIG_NR_DRAM_BANKS=1026
|
||||
CONFIG_ENV_SIZE=0x2000
|
||||
CONFIG_ENV_OFFSET=0xFFFFE000
|
||||
-CONFIG_DEFAULT_DEVICE_TREE="tegra186-p2771-0000-500"
|
||||
+CONFIG_DEFAULT_DEVICE_TREE="tegra186-p2771-0000"
|
||||
CONFIG_SYS_BOOTM_LEN=0x800000
|
||||
CONFIG_SYS_LOAD_ADDR=0x80080000
|
||||
CONFIG_TEGRA186=y
|
||||
--
|
||||
2.51.0
|
||||
|
||||
@@ -0,0 +1,164 @@
|
||||
# Omarchy's uboot-asahi: asahi-alarm's uboot-asahi (asahi-alarm/PKGBUILDs)
|
||||
# with a silent console, no banner, no logo and no boot delay, so the Mac
|
||||
# boots straight to the boot menu and the splash without U-Boot's text.
|
||||
#
|
||||
# Same name as asahi-alarm's, and nothing generic depends on it: it is only
|
||||
# installed when named, or as an upgrade of an installed uboot-asahi.
|
||||
# pacman takes a package from the first repository that carries its name:
|
||||
# with [omarchy] ahead of [asahi-alarm] this build is installed and kept even
|
||||
# after asahi-alarm moves on; with [asahi-alarm] ahead it is installed only as
|
||||
# omarchy/uboot-asahi, kept over their build at the same pkgver, and replaced
|
||||
# by a newer one. Keep pkgver and the patch set in step with asahi-alarm's and
|
||||
# pkgrel above theirs. No epoch, which would outrank every future asahi-alarm
|
||||
# release.
|
||||
|
||||
pkgname=uboot-asahi
|
||||
_ver=2026.07
|
||||
_asahirel=2
|
||||
|
||||
pkgver=${_ver}.asahi${_asahirel}
|
||||
pkgrel=4
|
||||
pkgdesc='U-Boot for Apple Silicon Macs (Omarchy build: silent console)'
|
||||
_commit_id=asahi-v${_ver}-${_asahirel}
|
||||
_srcname=u-boot-${_commit_id}
|
||||
arch=('aarch64')
|
||||
url='http://asahilinux.org'
|
||||
license=('MIT' 'GPL2')
|
||||
makedepends=( bc imagemagick )
|
||||
source=(
|
||||
"u-boot-${_commit_id}.tar.gz::https://github.com/AsahiLinux/u-boot/archive/${_commit_id}.tar.gz"
|
||||
'disable-VBE-by-default.patch'
|
||||
'enable-bootmenu-by-default.patch'
|
||||
'uefi-distro-load-FDT-from-any-partition-on-boot-device.patch'
|
||||
'uefi-Add-all-options-for-EFI-System-Partitions.patch'
|
||||
'uefi-initial-find_fdt_location-for-finding-the-DT-on-disk.patch'
|
||||
'uefi-enable-SetVariableRT-with-volotile-storage.patch'
|
||||
'uefi-enable-https-boot-by-default.patch'
|
||||
'pylibfdt-Replace-removed-SWIG-Python-2-compatibility-macros.patch'
|
||||
'USB-PD-TCPM-improvements.patch'
|
||||
'rockchip-Enable-preboot-start-for-pci-usb.patch'
|
||||
'rockchip-rk3568-nanopi-r5-Drop-duplicated-extra-sdhc.patch'
|
||||
'rockchip-rk356x-Stop-overriding-sdhci-mmc-aliases.patch'
|
||||
'p3450-fix-board.patch'
|
||||
'JetsonTX2-Fix-upstream-device-tree-naming.patch'
|
||||
'Allwinner-fix-booting-on-a-number-of-devices.patch'
|
||||
'Fix-NVMe-not-only-on-Raspberry-Pi-5.patch'
|
||||
'raspberrypi-Add-quirk-for-RPi5-2Gb-rev-1.0.patch'
|
||||
'openssl-no-engine.patch'
|
||||
'quiet-console.patch'
|
||||
)
|
||||
sha256sums=('ff36bacdeb91c2bb911ce6fdd198fb1a943c47a6931f986cecd22443b04c1b06'
|
||||
'501fe48668729525520253228945dc728c9bf2d9f0a41744711ca51a060e9c7b'
|
||||
'9d1796f8c1492bb50c13f865b4bc6854f825218836e55ce36e348c4dd77caa74'
|
||||
'0f980cf61fab268a6aa2440408548d3874aee1de6eb6e3be291690b1d2eb6904'
|
||||
'16904a97fc62bba84bde3a18885156b8c202c366bb6a0e0dd54414c016695876'
|
||||
'32d966701ebd7675092c1fd991e2444a0a1d08d83a10f34c88e05a3c19b41834'
|
||||
'c77853d6c25b11b7ffca8d522e03bf8e1305b8637e27c5074ddeef3a22956bbf'
|
||||
'f9106baa633f742f7fff396b5335a9c0ead4fa7416cdfd2fea743c1da433960d'
|
||||
'1a152c1ddc46316ec94aa19be40b96e1e8bab71a82f1e11ca59c9f5ec86808a5'
|
||||
'3dd92f1f51fccfbb1ceae701db68a6ae42916ddc2d4645b3a61486b582721a54'
|
||||
'3ee57dcf7d36351de5905dadf41803cf2994bba40d77f4fe5e3fcd9131ddb54e'
|
||||
'064e51eabf34d04cfade37115d3fd76c4e8005973faf4dedf410f0b5bbd1ea18'
|
||||
'4aa93c1c3ae7fe20e844505d521b921b9649dae03b74ad847ebd6318f02f71a2'
|
||||
'9cf3e7694efd82a0fe6725069b12971a4f32d05e4e9862089cbf1779a7d2df7c'
|
||||
'77aff72eb2319d3a80e0ccb63bdfb7d1c503c91fb515acc9525d029b25bb1fdc'
|
||||
'0bb2e47484d67935f1ef6107433f51747211a143f549b4ba60081a143026fb22'
|
||||
'300ed1bd17136bed9ff2528dcdc029396e6c373c0606653dc7905625bb8511a7'
|
||||
'dbc08bd374f299d92fc0e9022e37a1629055675bc874a904c1eefe5fb9699e2f'
|
||||
'3ede37fd744d60d934a7d5186f0bcd13d67ae9a48d973283356bbe7451d337e4'
|
||||
'9c3db1a504c5eeac54fadb1dadb45ac5ea36316c39fadb73836102ac4bf125f0')
|
||||
b2sums=('8041a979068ea00ac8402dcf35b34277907e497b2de060edf43a1960abddcfb5449d963334eb2a8c9f9a869452be55bf4c728dbda7c381892a145de72f3a59aa'
|
||||
'8fcba2b6c098125fc6ddee33b634af35bc6a8ae93c4f9cf3698f3f4455f97e22c6d8630c60776710770128f73377d2a9364c70dab6705707c1f3223e7493ce14'
|
||||
'79709278b47f8e21e7376031c3dc472070c5b18b29b48eefc9d3a4d97b69104eae9325ed8fff8e7a509a89727c8335c90345807d72afacee069557e46ff5724c'
|
||||
'34bebf1fe1126ff03d31abaca5908036268c231a77beebbe683cca3f80a4add12faf0e0ed27975c5fa1ba2a9994395ad0ee8115e9ecb8d3686975602981bf136'
|
||||
'b4ede5b7eced7a3459a169f5d49712647cc7cc3aec9935eea6283522245b6c3cc300ed8fb81be0dd942dddefd3bda49530270ec3f9215d2f9a52efa4c3bc5ba9'
|
||||
'b1cca3b2f31a1ab50f5fb637122d24593c23f99d773abba5a145d8701471dcb159de2bed937ea4a40b57501efb442c2ac5a2d49ab595f8b111320b11a182e710'
|
||||
'2a61869cdefd59715d8d860e4860d52a6e3fc33f2b8511c5d6f78c68f7dda00195b29bf9a213668a3eedf445958b923bc7051fc38c6965c3b7803266cae16bb2'
|
||||
'4bb6155f1db7a9df5e735cf353d5c1cc04525b5a2cd06fba93d3046a216a7210a6d0e1bf3e2deb07bbb58391d47804208e6e12b724000d68df9c5de5d2c52aae'
|
||||
'faa1ee756bda5714c31105b40fded40167c31d8458bc2b460dda06ad42fec60b7a71ed32a26fb036f744c8496641e3f271a39fd85f4de3ad86f1b8e9efec2dd1'
|
||||
'6cf5a8fe4631a60247df626e4fea6efadad4d2ccf62dd30330fa0a98546deee17a394d8b7fef8fa5446311f01c05a303f88818a4ffa6b49810c5ec06fae1aa46'
|
||||
'06c2d9f2d1b9285faf10245a325bb3937f6c98170f069e9517bf1662c0f3f4ea8499c911169c60e474a97c54b74d96297ccf0268edb0a3e602f7d0302668484d'
|
||||
'3905954cb92f54a9b1f479515a1f8b949b2692eeabad1955ec2c013bf920e2c79a2008408fc569f246c1184443baea4c96a63226cd32afd1149b681adb5b07d4'
|
||||
'ab734d11f811c467bad6e417700c67188dd82593e636172ac75f36aded39eea095b7a432ab7b4d377d4bb5e824a99592fb99017b7437b6f9bfeeb1cf962f35a6'
|
||||
'828275a8cdda2df5ef0698f12871cb24bcd758373d43907120495eb094fc1ddf6e25414384a52c56f2c5629a2b1702571fd368c02f1ae67ae25a2d59c0a850f3'
|
||||
'08bd592cc066e2dc9216228384a6c1d650860479ae3fa8fbe4ac0b6cf8596a25e5c11bbb52a19e3c35a4de279b4746e30e376ba4273f0121c2889d7ebc6a938d'
|
||||
'b018ec8f631f9ec15bb054f85b526fb4b4bb04b954ef9a038a6c9fd1230bbbb5af8d82b04d30c220820cb5f35c77ad1e3763835244da93486f3261fe12d1f06a'
|
||||
'338e2cd0b3e36f523ec7bbc59b91418fd5b6ec73588a510f488168a579de83d2b3978bb7ad641ed3a0a931e1e1555b43a2cd59f63da389545afca1579df4f256'
|
||||
'd63591d50862f07faf35e0adb52d73c669b4c29d046585878dcd4142faa049dd84088a9f21d34159f7103971b2b443d33f8a28ed77f4265f0e9d976bd66334f8'
|
||||
'81a2b3b089267d636cc60f23a0f4f82ba36ecb5e210c84c7cbdf2af1b764e0c40ba3b22fec26bc7c8eab052cfa30893aac4b3c76b9a56d763841b8f7821820de'
|
||||
'451006bb05bf4107347267dfb62b670d25d8991dcdb93c23221eca876bc8a2f9af7dc9e76e2c675aa44a34ef1a86deb00c128bf57f4096301f5a235ebfd69ca7')
|
||||
|
||||
prepare() {
|
||||
cd "${srcdir}/$_srcname"
|
||||
|
||||
cat ../disable-VBE-by-default.patch | patch -p1 -s --fuzz=0 --no-backup-if-mismatch -f
|
||||
cat ../enable-bootmenu-by-default.patch | patch -p1 -s --fuzz=0 --no-backup-if-mismatch -f
|
||||
cat ../uefi-distro-load-FDT-from-any-partition-on-boot-device.patch | patch -p1 -s --fuzz=0 --no-backup-if-mismatch -f
|
||||
cat ../uefi-Add-all-options-for-EFI-System-Partitions.patch | patch -p1 -s --fuzz=0 --no-backup-if-mismatch -f
|
||||
cat ../uefi-initial-find_fdt_location-for-finding-the-DT-on-disk.patch | patch -p1 -s --fuzz=0 --no-backup-if-mismatch -f
|
||||
cat ../uefi-enable-SetVariableRT-with-volotile-storage.patch | patch -p1 -s --fuzz=0 --no-backup-if-mismatch -f
|
||||
cat ../uefi-enable-https-boot-by-default.patch | patch -p1 -s --fuzz=0 --no-backup-if-mismatch -f
|
||||
cat ../pylibfdt-Replace-removed-SWIG-Python-2-compatibility-macros.patch | patch -p1 -s --fuzz=0 --no-backup-if-mismatch -f
|
||||
cat ../USB-PD-TCPM-improvements.patch | patch -p1 -s --fuzz=0 --no-backup-if-mismatch -f
|
||||
cat ../rockchip-Enable-preboot-start-for-pci-usb.patch | patch -p1 -s --fuzz=0 --no-backup-if-mismatch -f
|
||||
cat ../rockchip-rk3568-nanopi-r5-Drop-duplicated-extra-sdhc.patch | patch -p1 -s --fuzz=0 --no-backup-if-mismatch -f
|
||||
cat ../rockchip-rk356x-Stop-overriding-sdhci-mmc-aliases.patch | patch -p1 -s --fuzz=0 --no-backup-if-mismatch -f
|
||||
cat ../p3450-fix-board.patch | patch -p1 -s --fuzz=0 --no-backup-if-mismatch -f
|
||||
cat ../JetsonTX2-Fix-upstream-device-tree-naming.patch | patch -p1 -s --fuzz=0 --no-backup-if-mismatch -f
|
||||
cat ../Allwinner-fix-booting-on-a-number-of-devices.patch | patch -p1 -s --fuzz=0 --no-backup-if-mismatch -f
|
||||
cat ../Fix-NVMe-not-only-on-Raspberry-Pi-5.patch | patch -p1 -s --fuzz=0 --no-backup-if-mismatch -f
|
||||
cat ../raspberrypi-Add-quirk-for-RPi5-2Gb-rev-1.0.patch | patch -p1 -s --fuzz=0 --no-backup-if-mismatch -f
|
||||
cat ../openssl-no-engine.patch | patch -p1 -s --fuzz=0 --no-backup-if-mismatch -f
|
||||
cat ../quiet-console.patch | patch -p1 -s --fuzz=0 --no-backup-if-mismatch -f
|
||||
|
||||
make apple_m1_defconfig
|
||||
scripts/config --file .config \
|
||||
-e OF_UPSTREAM_BUILD_VENDOR \
|
||||
--set-str OF_UPSTREAM_VENDOR apple
|
||||
# Silent console: nothing on the panel or the serial port from U-Boot
|
||||
# itself (the banner, the environment load, the bootflow scan). The
|
||||
# environment's silent=1 applies from relocation on; the console stays
|
||||
# muted until that environment is read. The kernel's console is not
|
||||
# touched, and the U-Boot logo is not drawn. No boot delay: with nothing
|
||||
# shown there is nothing to interrupt.
|
||||
scripts/config --file .config \
|
||||
-e SILENT_CONSOLE \
|
||||
-e SILENT_CONSOLE_UPDATE_ON_SET \
|
||||
-e SILENT_CONSOLE_UPDATE_ON_RELOC \
|
||||
-e SILENT_CONSOLE_UNTIL_ENV \
|
||||
-e SILENT_U_BOOT_ONLY \
|
||||
-d VIDEO_LOGO \
|
||||
--set-val BOOTDELAY 0
|
||||
make olddefconfig
|
||||
}
|
||||
|
||||
build() {
|
||||
cd "${srcdir}/$_srcname"
|
||||
make
|
||||
}
|
||||
|
||||
package() {
|
||||
cd "${srcdir}"
|
||||
|
||||
tgtdir="$pkgdir/usr/lib/asahi-boot"
|
||||
dtbdir="$_srcname/dts/upstream/src/arm64/apple"
|
||||
|
||||
install -Dt "$tgtdir" -m644 "$_srcname/u-boot-nodtb.bin"
|
||||
install -d "$tgtdir/dtb"
|
||||
|
||||
# Exclude known non-Apple-Silicon DT families:
|
||||
# t7000: A8-based iPhone 6 / 6 Plus
|
||||
# t7001: A8X-based iPad Air 2
|
||||
# t8010: A10-based iPhone 7 / 7 Plus, iPad 6 / 7, iPod touch 7
|
||||
# t8011: A10X-based Apple TV 4K (1st gen), iPad Pro 10.5 / 12.9 (2nd gen)
|
||||
# t8012: T2-based Intel Macs
|
||||
# t8015: A11-based iPhone 8 / 8 Plus / X
|
||||
find "$dtbdir" -maxdepth 1 -type f -name 't*.dtb' \
|
||||
! -name 't7000-*.dtb' \
|
||||
! -name 't7001-*.dtb' \
|
||||
! -name 't8010-*.dtb' \
|
||||
! -name 't8011-*.dtb' \
|
||||
! -name 't8012-*.dtb' \
|
||||
! -name 't8015-*.dtb' \
|
||||
-exec install -m644 -t "$tgtdir/dtb" {} +
|
||||
}
|
||||
@@ -0,0 +1,717 @@
|
||||
From patchwork Wed Feb 26 18:44:44 2025
|
||||
Content-Type: text/plain; charset="utf-8"
|
||||
MIME-Version: 1.0
|
||||
Content-Transfer-Encoding: 7bit
|
||||
X-Patchwork-Submitter: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
X-Patchwork-Id: 2052544
|
||||
X-Patchwork-Delegate: marek.vasut@gmail.com
|
||||
Return-Path: <u-boot-bounces@lists.denx.de>
|
||||
X-Original-To: incoming@patchwork.ozlabs.org
|
||||
Delivered-To: patchwork-incoming@legolas.ozlabs.org
|
||||
Authentication-Results: legolas.ozlabs.org;
|
||||
dkim=pass (2048-bit key;
|
||||
unprotected) header.d=collabora.com header.i=@collabora.com
|
||||
header.a=rsa-sha256 header.s=mail header.b=IthL1Z+m;
|
||||
dkim-atps=neutral
|
||||
Authentication-Results: legolas.ozlabs.org;
|
||||
spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de
|
||||
(client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de;
|
||||
envelope-from=u-boot-bounces@lists.denx.de; receiver=patchwork.ozlabs.org)
|
||||
Received: from phobos.denx.de (phobos.denx.de
|
||||
[IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01])
|
||||
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
|
||||
key-exchange X25519 server-signature ECDSA (secp384r1))
|
||||
(No client certificate requested)
|
||||
by legolas.ozlabs.org (Postfix) with ESMTPS id 4Z33M03Hhjz1yCp
|
||||
for <incoming@patchwork.ozlabs.org>; Thu, 27 Feb 2025 05:45:32 +1100 (AEDT)
|
||||
Received: from h2850616.stratoserver.net (localhost [IPv6:::1])
|
||||
by phobos.denx.de (Postfix) with ESMTP id BFF7680FF0;
|
||||
Wed, 26 Feb 2025 19:45:16 +0100 (CET)
|
||||
Authentication-Results: phobos.denx.de;
|
||||
dmarc=pass (p=none dis=none) header.from=collabora.com
|
||||
Authentication-Results: phobos.denx.de;
|
||||
spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de
|
||||
Authentication-Results: phobos.denx.de;
|
||||
dkim=pass (2048-bit key;
|
||||
unprotected) header.d=collabora.com header.i=@collabora.com
|
||||
header.b="IthL1Z+m";
|
||||
dkim-atps=neutral
|
||||
Received: by phobos.denx.de (Postfix, from userid 109)
|
||||
id 7614F810F9; Wed, 26 Feb 2025 19:45:13 +0100 (CET)
|
||||
X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de
|
||||
X-Spam-Level:
|
||||
X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,
|
||||
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED,
|
||||
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.2
|
||||
Received: from bali.collaboradmins.com (bali.collaboradmins.com
|
||||
[IPv6:2a01:4f8:201:9162::2])
|
||||
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits))
|
||||
(No client certificate requested)
|
||||
by phobos.denx.de (Postfix) with ESMTPS id 2173180FDE
|
||||
for <u-boot@lists.denx.de>; Wed, 26 Feb 2025 19:45:08 +0100 (CET)
|
||||
Authentication-Results: phobos.denx.de;
|
||||
dmarc=pass (p=none dis=none) header.from=collabora.com
|
||||
Authentication-Results: phobos.denx.de;
|
||||
spf=pass smtp.mailfrom=sebastian.reichel@collabora.com
|
||||
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com;
|
||||
s=mail; t=1740595507;
|
||||
bh=Fnp6a8opSCXiH5NJdu5uivbBBZF3pe1CXyluh8+n8/c=;
|
||||
h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
|
||||
b=IthL1Z+mDeIRy9MWEa0lGyJWuHk/Pu+yUpLly7RG6NIpC0lCgla3ssiy2x+8/G+bz
|
||||
DWjrKUMxgWtqfjfffRiKEJZ6Z2sAXJ1ePvDmMtbGoolWSrzsV2+cWh0byYrEBuVBe9
|
||||
Vp0ye7gJ4Wt610s4QHa4xoYcm7h9KGmE3IEjb+XYFv1HMJIOoACl04BwkLctza1KBr
|
||||
XlIqC+snvRP/yQxa2+6RYGXgQD5JnJxCM1orXVIJxyyJxTzb3XgNir60Gb4HI9724H
|
||||
LDZy0Hq7NQ1zF0h1yVUOklDotw17isbNoI4K3JCExR+r7GsdESsGY6cwAbZY71iWlf
|
||||
OsSSrV6TZtAMg==
|
||||
Received: from jupiter.universe (dyndsl-091-249-076-032.ewe-ip-backbone.de
|
||||
[91.249.76.32])
|
||||
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
|
||||
key-exchange X25519 server-signature RSA-PSS (4096 bits))
|
||||
(No client certificate requested) (Authenticated sender: sre)
|
||||
by bali.collaboradmins.com (Postfix) with ESMTPSA id A18CC17E0881;
|
||||
Wed, 26 Feb 2025 19:45:07 +0100 (CET)
|
||||
Received: by jupiter.universe (Postfix, from userid 1000)
|
||||
id 32E35480034; Wed, 26 Feb 2025 19:45:07 +0100 (CET)
|
||||
From: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
To: Marek Vasut <marex@denx.de>, u-boot@lists.denx.de,
|
||||
Jonas Karlman <jonas@kwiboo.se>, Soeren Moch <smoch@web.de>
|
||||
Cc: Tim Harvey <tharvey@gateworks.com>,
|
||||
Philipp Tomsich <philipp.tomsich@vrull.eu>,
|
||||
Anand Moon <linux.amoon@gmail.com>, Maxim Kiselev <bigunclemax@gmail.com>,
|
||||
Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Subject: [PATCH v2 1/4] usb: tcpm: improve handling of some power-supplies
|
||||
Date: Wed, 26 Feb 2025 19:44:44 +0100
|
||||
Message-ID: <20250226184506.64114-2-sebastian.reichel@collabora.com>
|
||||
X-Mailer: git-send-email 2.47.2
|
||||
In-Reply-To: <20250226184506.64114-1-sebastian.reichel@collabora.com>
|
||||
References: <20250226184506.64114-1-sebastian.reichel@collabora.com>
|
||||
MIME-Version: 1.0
|
||||
X-BeenThere: u-boot@lists.denx.de
|
||||
X-Mailman-Version: 2.1.39
|
||||
Precedence: list
|
||||
List-Id: U-Boot discussion <u-boot.lists.denx.de>
|
||||
List-Unsubscribe: <https://lists.denx.de/options/u-boot>,
|
||||
<mailto:u-boot-request@lists.denx.de?subject=unsubscribe>
|
||||
List-Archive: <https://lists.denx.de/pipermail/u-boot/>
|
||||
List-Post: <mailto:u-boot@lists.denx.de>
|
||||
List-Help: <mailto:u-boot-request@lists.denx.de?subject=help>
|
||||
List-Subscribe: <https://lists.denx.de/listinfo/u-boot>,
|
||||
<mailto:u-boot-request@lists.denx.de?subject=subscribe>
|
||||
Errors-To: u-boot-bounces@lists.denx.de
|
||||
Sender: "U-Boot" <u-boot-bounces@lists.denx.de>
|
||||
X-Virus-Scanned: clamav-milter 0.103.8 at phobos.denx.de
|
||||
X-Virus-Status: Clean
|
||||
|
||||
When the Rock 5B is booted with the current TCPM with its power supplied
|
||||
by a "Cambrionix PDSync-C4" port it reaches the power-supply ready state.
|
||||
Once that has happened the hub starts sending GetSinkCap messages, but
|
||||
U-Boot already stopped processing PD messages. After retrying a bunch of
|
||||
times the hub instead sends soft resets. Since U-Boot will also not
|
||||
react to them, the USB hub will follow-up with a hard reset and that
|
||||
cuts off the supply voltage.
|
||||
|
||||
Since the state machine is already prepared to handle GetSinkCap
|
||||
messages, try to avoid this by handling incoming messages for another
|
||||
50ms after reaching the ready state.
|
||||
|
||||
Fixes: 1db4c0ac77e3 ("usb: tcpm: add core framework")
|
||||
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
---
|
||||
drivers/usb/tcpm/tcpm.c | 31 ++++++++++++++++++++++++++-----
|
||||
1 file changed, 26 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/drivers/usb/tcpm/tcpm.c b/drivers/usb/tcpm/tcpm.c
|
||||
index 0aee57cb2f4a..b754b4dcd0b5 100644
|
||||
--- a/drivers/usb/tcpm/tcpm.c
|
||||
+++ b/drivers/usb/tcpm/tcpm.c
|
||||
@@ -2229,6 +2229,17 @@ static int tcpm_port_init(struct udevice *dev)
|
||||
return 0;
|
||||
}
|
||||
|
||||
+static inline void tcpm_poll_one_event(struct udevice *dev)
|
||||
+{
|
||||
+ const struct dm_tcpm_ops *drvops = dev_get_driver_ops(dev);
|
||||
+ struct tcpm_port *port = dev_get_uclass_plat(dev);
|
||||
+
|
||||
+ drvops->poll_event(dev);
|
||||
+ port->poll_event_cnt++;
|
||||
+ udelay(500);
|
||||
+ tcpm_check_and_run_delayed_work(dev);
|
||||
+}
|
||||
+
|
||||
static void tcpm_poll_event(struct udevice *dev)
|
||||
{
|
||||
const struct dm_tcpm_ops *drvops = dev_get_driver_ops(dev);
|
||||
@@ -2242,15 +2253,25 @@ static void tcpm_poll_event(struct udevice *dev)
|
||||
(port->state == SNK_READY || port->state == SRC_READY))
|
||||
break;
|
||||
|
||||
- drvops->poll_event(dev);
|
||||
- port->poll_event_cnt++;
|
||||
- udelay(500);
|
||||
- tcpm_check_and_run_delayed_work(dev);
|
||||
+ tcpm_poll_one_event(dev);
|
||||
}
|
||||
|
||||
- if (port->state != SNK_READY && port->state != SRC_READY)
|
||||
+ /*
|
||||
+ * Some power-supplies send GetSinkCap shortly after they are ready.
|
||||
+ * If they do not receive a response after a few retries they will issue
|
||||
+ * a soft-reset followed by a hard reset, which kills the board power.
|
||||
+ * Let's poll for 50ms after reaching the ready state to check if the
|
||||
+ * power-supply wants something from us.
|
||||
+ */
|
||||
+ if (port->state == SNK_READY) {
|
||||
+ port->poll_event_cnt = 0;
|
||||
+
|
||||
+ while (port->poll_event_cnt < 100)
|
||||
+ tcpm_poll_one_event(dev);
|
||||
+ } else {
|
||||
dev_warn(dev, "TCPM: exit in state %s\n",
|
||||
tcpm_states[port->state]);
|
||||
+ }
|
||||
|
||||
/*
|
||||
* At this time, call the callback function of the respective pd chip
|
||||
|
||||
From patchwork Wed Feb 26 18:44:45 2025
|
||||
Content-Type: text/plain; charset="utf-8"
|
||||
MIME-Version: 1.0
|
||||
Content-Transfer-Encoding: 7bit
|
||||
X-Patchwork-Submitter: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
X-Patchwork-Id: 2052546
|
||||
X-Patchwork-Delegate: marek.vasut@gmail.com
|
||||
Return-Path: <u-boot-bounces@lists.denx.de>
|
||||
X-Original-To: incoming@patchwork.ozlabs.org
|
||||
Delivered-To: patchwork-incoming@legolas.ozlabs.org
|
||||
Authentication-Results: legolas.ozlabs.org;
|
||||
dkim=pass (2048-bit key;
|
||||
unprotected) header.d=collabora.com header.i=@collabora.com
|
||||
header.a=rsa-sha256 header.s=mail header.b=hgX6o5vZ;
|
||||
dkim-atps=neutral
|
||||
Authentication-Results: legolas.ozlabs.org;
|
||||
spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de
|
||||
(client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de;
|
||||
envelope-from=u-boot-bounces@lists.denx.de; receiver=patchwork.ozlabs.org)
|
||||
Received: from phobos.denx.de (phobos.denx.de
|
||||
[IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01])
|
||||
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
|
||||
key-exchange X25519 server-signature ECDSA (secp384r1))
|
||||
(No client certificate requested)
|
||||
by legolas.ozlabs.org (Postfix) with ESMTPS id 4Z33MJ5sFGz1yCp
|
||||
for <incoming@patchwork.ozlabs.org>; Thu, 27 Feb 2025 05:45:48 +1100 (AEDT)
|
||||
Received: from h2850616.stratoserver.net (localhost [IPv6:::1])
|
||||
by phobos.denx.de (Postfix) with ESMTP id 69A29811C5;
|
||||
Wed, 26 Feb 2025 19:45:17 +0100 (CET)
|
||||
Authentication-Results: phobos.denx.de;
|
||||
dmarc=pass (p=none dis=none) header.from=collabora.com
|
||||
Authentication-Results: phobos.denx.de;
|
||||
spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de
|
||||
Authentication-Results: phobos.denx.de;
|
||||
dkim=pass (2048-bit key;
|
||||
unprotected) header.d=collabora.com header.i=@collabora.com
|
||||
header.b="hgX6o5vZ";
|
||||
dkim-atps=neutral
|
||||
Received: by phobos.denx.de (Postfix, from userid 109)
|
||||
id 832B180FB9; Wed, 26 Feb 2025 19:45:14 +0100 (CET)
|
||||
X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de
|
||||
X-Spam-Level:
|
||||
X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,
|
||||
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED,
|
||||
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
|
||||
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.2
|
||||
Received: from bali.collaboradmins.com (bali.collaboradmins.com
|
||||
[148.251.105.195])
|
||||
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits))
|
||||
(No client certificate requested)
|
||||
by phobos.denx.de (Postfix) with ESMTPS id 2178380FF0
|
||||
for <u-boot@lists.denx.de>; Wed, 26 Feb 2025 19:45:08 +0100 (CET)
|
||||
Authentication-Results: phobos.denx.de;
|
||||
dmarc=pass (p=none dis=none) header.from=collabora.com
|
||||
Authentication-Results: phobos.denx.de;
|
||||
spf=pass smtp.mailfrom=sebastian.reichel@collabora.com
|
||||
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com;
|
||||
s=mail; t=1740595507;
|
||||
bh=H/gQCZCWVmLNRIaBLvWsE35SaDMWvta2+rTkymkHQJE=;
|
||||
h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
|
||||
b=hgX6o5vZwM72CR2hgo76tgo2eE00qHM7oNja381ACl8gIUUVioy8RTeqXtum89tBf
|
||||
aIwKm/oNQNvGxy92pX5/1Jg/MwYZKS8jDukz6ZgsLKu22rJXf58FFoV095AcEkUMB2
|
||||
lrO4KJgFW/x1FK8GmSVSXXH+iUYJLkzsfZKgHKoQYHZcVXJRgFjHR5ytGKsA/fq4el
|
||||
7Wrx3lmLNjL7fYlDF5AyY+Wl6hqzjDq58nFedXHv8TEHx6fzfB0IBzOL/F8bGqVcyy
|
||||
lal7bjJvMPoA9zfgIC77R1neWktg5FSro75YciSRSj9lmMNCmESnSPCgsZ4wBW0V6f
|
||||
ppD77gOtjDfLQ==
|
||||
Received: from jupiter.universe (dyndsl-091-249-076-032.ewe-ip-backbone.de
|
||||
[91.249.76.32])
|
||||
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
|
||||
key-exchange X25519 server-signature RSA-PSS (4096 bits))
|
||||
(No client certificate requested) (Authenticated sender: sre)
|
||||
by bali.collaboradmins.com (Postfix) with ESMTPSA id 9725D17E087F;
|
||||
Wed, 26 Feb 2025 19:45:07 +0100 (CET)
|
||||
Received: by jupiter.universe (Postfix, from userid 1000)
|
||||
id 34511480037; Wed, 26 Feb 2025 19:45:07 +0100 (CET)
|
||||
From: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
To: Marek Vasut <marex@denx.de>, u-boot@lists.denx.de,
|
||||
Jonas Karlman <jonas@kwiboo.se>, Soeren Moch <smoch@web.de>
|
||||
Cc: Tim Harvey <tharvey@gateworks.com>,
|
||||
Philipp Tomsich <philipp.tomsich@vrull.eu>,
|
||||
Anand Moon <linux.amoon@gmail.com>, Maxim Kiselev <bigunclemax@gmail.com>,
|
||||
Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Subject: [PATCH v2 2/4] usb: tcpm: avoid resets for missing source capability
|
||||
messages
|
||||
Date: Wed, 26 Feb 2025 19:44:45 +0100
|
||||
Message-ID: <20250226184506.64114-3-sebastian.reichel@collabora.com>
|
||||
X-Mailer: git-send-email 2.47.2
|
||||
In-Reply-To: <20250226184506.64114-1-sebastian.reichel@collabora.com>
|
||||
References: <20250226184506.64114-1-sebastian.reichel@collabora.com>
|
||||
MIME-Version: 1.0
|
||||
X-BeenThere: u-boot@lists.denx.de
|
||||
X-Mailman-Version: 2.1.39
|
||||
Precedence: list
|
||||
List-Id: U-Boot discussion <u-boot.lists.denx.de>
|
||||
List-Unsubscribe: <https://lists.denx.de/options/u-boot>,
|
||||
<mailto:u-boot-request@lists.denx.de?subject=unsubscribe>
|
||||
List-Archive: <https://lists.denx.de/pipermail/u-boot/>
|
||||
List-Post: <mailto:u-boot@lists.denx.de>
|
||||
List-Help: <mailto:u-boot-request@lists.denx.de?subject=help>
|
||||
List-Subscribe: <https://lists.denx.de/listinfo/u-boot>,
|
||||
<mailto:u-boot-request@lists.denx.de?subject=subscribe>
|
||||
Errors-To: u-boot-bounces@lists.denx.de
|
||||
Sender: "U-Boot" <u-boot-bounces@lists.denx.de>
|
||||
X-Virus-Scanned: clamav-milter 0.103.8 at phobos.denx.de
|
||||
X-Virus-Status: Clean
|
||||
|
||||
The current TCPM code implements source capability message handling
|
||||
according to the USB-PD specification. Unfortunately some USB PD
|
||||
sources do not properly follow the specification and do not send
|
||||
source capability messages after a soft reset when they already
|
||||
negotiated a specific contract before. The currently implemented way
|
||||
(and what is described in the specificiation) to resolve this problem
|
||||
is triggering a hard reset.
|
||||
|
||||
But a hard reset is fatal on batteryless platforms powered via USB-C PD,
|
||||
since that removes VBUS for some time. Since this is triggered at boot
|
||||
time, the system may get stuck in a boot loop.
|
||||
|
||||
For example I noticed the following behaviour on a Radxa Rock 5B
|
||||
combined with an affected power-supply:
|
||||
|
||||
1. The system is booted up with current code
|
||||
2. A reboot is requested
|
||||
3. U-Boot TCPM / fusb302 driver sends soft reset and waits for the
|
||||
source capability message
|
||||
4. No new source capability message is send by the power-supply
|
||||
after the soft reset
|
||||
5. U-Boot sends a hard reset
|
||||
6. The board resets, but the fusb302 registers are not reset. This
|
||||
is because of a hardware glitch. The serial pins are high when
|
||||
no data is exchanged. Apparently the RK3588 has protection diodes,
|
||||
which leak some voltage into the power-domain. The Rock 5B serial
|
||||
pins and the fusb302 are using the same 3.3V power domain and the
|
||||
leaked voltage is enough to keep the fusb302 registers alive.
|
||||
7. After the hard reset the power-supply sends another source capability
|
||||
message, which is auto-acked by fusb302 (because the register state
|
||||
is kept) even though the U-Boot driver has not yet probed. Once the
|
||||
U-Boot driver probes it sends another soft reset and waits for a new
|
||||
source capability message, which never arrives.
|
||||
|
||||
Fortunately the affected power-supplies (I have two setups showing this
|
||||
behaviour) support sending a source capability message when explicitly
|
||||
being asked. Thus an easy workaround to handle this is deviating from
|
||||
the USB-PD specification and sending a Get_Source_Cap message and
|
||||
waiting some time longer before doing the hard reset.
|
||||
|
||||
Note, that I recently added the same workaround to the Linux kernel
|
||||
with a slightly different rationale (since it needs to take over from
|
||||
U-Boot).
|
||||
|
||||
Fixes: 1db4c0ac77e3 ("usb: tcpm: add core framework")
|
||||
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
---
|
||||
drivers/usb/tcpm/tcpm-internal.h | 1 +
|
||||
drivers/usb/tcpm/tcpm.c | 32 +++++++++++++++++++++++++++++---
|
||||
2 files changed, 30 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/drivers/usb/tcpm/tcpm-internal.h b/drivers/usb/tcpm/tcpm-internal.h
|
||||
index 561442090027..4861f4d13866 100644
|
||||
--- a/drivers/usb/tcpm/tcpm-internal.h
|
||||
+++ b/drivers/usb/tcpm/tcpm-internal.h
|
||||
@@ -30,6 +30,7 @@
|
||||
S(SNK_DISCOVERY_DEBOUNCE), \
|
||||
S(SNK_DISCOVERY_DEBOUNCE_DONE), \
|
||||
S(SNK_WAIT_CAPABILITIES), \
|
||||
+ S(SNK_WAIT_CAPABILITIES_TIMEOUT), \
|
||||
S(SNK_NEGOTIATE_CAPABILITIES), \
|
||||
S(SNK_TRANSITION_SINK), \
|
||||
S(SNK_TRANSITION_SINK_VBUS), \
|
||||
diff --git a/drivers/usb/tcpm/tcpm.c b/drivers/usb/tcpm/tcpm.c
|
||||
index b754b4dcd0b5..786d92fa4c6f 100644
|
||||
--- a/drivers/usb/tcpm/tcpm.c
|
||||
+++ b/drivers/usb/tcpm/tcpm.c
|
||||
@@ -1424,7 +1424,8 @@ static inline enum tcpm_state hard_reset_state(struct tcpm_port *port)
|
||||
return ERROR_RECOVERY;
|
||||
if (port->pwr_role == TYPEC_SOURCE)
|
||||
return SRC_UNATTACHED;
|
||||
- if (port->state == SNK_WAIT_CAPABILITIES)
|
||||
+ if (port->state == SNK_WAIT_CAPABILITIES ||
|
||||
+ port->state == SNK_WAIT_CAPABILITIES_TIMEOUT)
|
||||
return SNK_READY;
|
||||
return SNK_UNATTACHED;
|
||||
}
|
||||
@@ -1650,10 +1651,35 @@ static void run_state_machine(struct udevice *dev)
|
||||
tcpm_set_state(dev, SOFT_RESET_SEND,
|
||||
PD_T_SINK_WAIT_CAP);
|
||||
} else {
|
||||
- tcpm_set_state(dev, hard_reset_state(port),
|
||||
- PD_T_SINK_WAIT_CAP);
|
||||
+ if (!port->self_powered)
|
||||
+ tcpm_set_state(dev, SNK_WAIT_CAPABILITIES_TIMEOUT,
|
||||
+ PD_T_SINK_WAIT_CAP);
|
||||
+ else
|
||||
+ tcpm_set_state(dev, hard_reset_state(port),
|
||||
+ PD_T_SINK_WAIT_CAP);
|
||||
}
|
||||
break;
|
||||
+ case SNK_WAIT_CAPABILITIES_TIMEOUT:
|
||||
+ /*
|
||||
+ * There are some USB PD sources in the field, which do not
|
||||
+ * properly implement the specification and fail to start
|
||||
+ * sending Source Capability messages after a soft reset. The
|
||||
+ * specification suggests to do a hard reset when no Source
|
||||
+ * capability message is received within PD_T_SINK_WAIT_CAP,
|
||||
+ * but that might effectively kil the machine's power source.
|
||||
+ *
|
||||
+ * This slightly diverges from the specification and tries to
|
||||
+ * recover from this by explicitly asking for the capabilities
|
||||
+ * using the Get_Source_Cap control message before falling back
|
||||
+ * to a hard reset. The control message should also be supported
|
||||
+ * and handled by all USB PD source and dual role devices
|
||||
+ * according to the specification.
|
||||
+ */
|
||||
+ if (tcpm_pd_send_control(dev, PD_CTRL_GET_SOURCE_CAP))
|
||||
+ tcpm_set_state_cond(dev, hard_reset_state(port), 0);
|
||||
+ else
|
||||
+ tcpm_set_state(dev, hard_reset_state(port), PD_T_SINK_WAIT_CAP);
|
||||
+ break;
|
||||
case SNK_NEGOTIATE_CAPABILITIES:
|
||||
port->pd_capable = true;
|
||||
port->hard_reset_count = 0;
|
||||
|
||||
From patchwork Wed Feb 26 18:44:46 2025
|
||||
Content-Type: text/plain; charset="utf-8"
|
||||
MIME-Version: 1.0
|
||||
Content-Transfer-Encoding: 7bit
|
||||
X-Patchwork-Submitter: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
X-Patchwork-Id: 2052545
|
||||
X-Patchwork-Delegate: marek.vasut@gmail.com
|
||||
Return-Path: <u-boot-bounces@lists.denx.de>
|
||||
X-Original-To: incoming@patchwork.ozlabs.org
|
||||
Delivered-To: patchwork-incoming@legolas.ozlabs.org
|
||||
Authentication-Results: legolas.ozlabs.org;
|
||||
dkim=pass (2048-bit key;
|
||||
unprotected) header.d=collabora.com header.i=@collabora.com
|
||||
header.a=rsa-sha256 header.s=mail header.b=BxTv7Lfo;
|
||||
dkim-atps=neutral
|
||||
Authentication-Results: legolas.ozlabs.org;
|
||||
spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de
|
||||
(client-ip=85.214.62.61; helo=phobos.denx.de;
|
||||
envelope-from=u-boot-bounces@lists.denx.de; receiver=patchwork.ozlabs.org)
|
||||
Received: from phobos.denx.de (phobos.denx.de [85.214.62.61])
|
||||
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
|
||||
key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384)
|
||||
(No client certificate requested)
|
||||
by legolas.ozlabs.org (Postfix) with ESMTPS id 4Z33M971h7z1yCp
|
||||
for <incoming@patchwork.ozlabs.org>; Thu, 27 Feb 2025 05:45:41 +1100 (AEDT)
|
||||
Received: from h2850616.stratoserver.net (localhost [IPv6:::1])
|
||||
by phobos.denx.de (Postfix) with ESMTP id 1B09C8118B;
|
||||
Wed, 26 Feb 2025 19:45:17 +0100 (CET)
|
||||
Authentication-Results: phobos.denx.de;
|
||||
dmarc=pass (p=none dis=none) header.from=collabora.com
|
||||
Authentication-Results: phobos.denx.de;
|
||||
spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de
|
||||
Authentication-Results: phobos.denx.de;
|
||||
dkim=pass (2048-bit key;
|
||||
unprotected) header.d=collabora.com header.i=@collabora.com
|
||||
header.b="BxTv7Lfo";
|
||||
dkim-atps=neutral
|
||||
Received: by phobos.denx.de (Postfix, from userid 109)
|
||||
id 4399E810F9; Wed, 26 Feb 2025 19:45:14 +0100 (CET)
|
||||
X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de
|
||||
X-Spam-Level:
|
||||
X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,
|
||||
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED,
|
||||
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.2
|
||||
Received: from bali.collaboradmins.com (bali.collaboradmins.com
|
||||
[IPv6:2a01:4f8:201:9162::2])
|
||||
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits))
|
||||
(No client certificate requested)
|
||||
by phobos.denx.de (Postfix) with ESMTPS id 2163F80FB9
|
||||
for <u-boot@lists.denx.de>; Wed, 26 Feb 2025 19:45:08 +0100 (CET)
|
||||
Authentication-Results: phobos.denx.de;
|
||||
dmarc=pass (p=none dis=none) header.from=collabora.com
|
||||
Authentication-Results: phobos.denx.de;
|
||||
spf=pass smtp.mailfrom=sebastian.reichel@collabora.com
|
||||
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com;
|
||||
s=mail; t=1740595507;
|
||||
bh=7OaDpd2idE5ETWAiOZte0kuOU6ZYitEVWkDgDmqaQU8=;
|
||||
h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
|
||||
b=BxTv7LfoAae43YSXPquVPmmwStgQirXCxaSBD0fo554R5O/si/Iif5L+zXXJocATJ
|
||||
z7+I7ZKbknkTeVyzoRDCXvXIVz2bFdTRWQN4Z2iwJbVI1covAv/Gn4wIE2Q6hbNKbU
|
||||
qV5AKg7gvrKkbztbo7N9bHNjkrlAbd8B4Ew3SR8FM46DMAOwNzVsoX3rLMcPtlWzHj
|
||||
4OBKCx22H/4ASIWjMbYoDE09DyQ+CPOf8JcX8OPwFcH9j6vW6cEWvyjiAyDj6LnwOq
|
||||
KD+ZYVIkWhkIzAkE2NHB2IpA4xlxW8i18BJzNBD8N1eBx/HCgb0camb4KanY1Hta/d
|
||||
4ipLyuFaCkMog==
|
||||
Received: from jupiter.universe (dyndsl-091-249-076-032.ewe-ip-backbone.de
|
||||
[91.249.76.32])
|
||||
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
|
||||
key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest
|
||||
SHA256)
|
||||
(No client certificate requested) (Authenticated sender: sre)
|
||||
by bali.collaboradmins.com (Postfix) with ESMTPSA id 816AA17E0861;
|
||||
Wed, 26 Feb 2025 19:45:07 +0100 (CET)
|
||||
Received: by jupiter.universe (Postfix, from userid 1000)
|
||||
id 361F2480038; Wed, 26 Feb 2025 19:45:07 +0100 (CET)
|
||||
From: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
To: Marek Vasut <marex@denx.de>, u-boot@lists.denx.de,
|
||||
Jonas Karlman <jonas@kwiboo.se>, Soeren Moch <smoch@web.de>
|
||||
Cc: Tim Harvey <tharvey@gateworks.com>,
|
||||
Philipp Tomsich <philipp.tomsich@vrull.eu>,
|
||||
Anand Moon <linux.amoon@gmail.com>, Maxim Kiselev <bigunclemax@gmail.com>,
|
||||
Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Subject: [PATCH v2 3/4] usb: tcpm: print error on hard reset
|
||||
Date: Wed, 26 Feb 2025 19:44:46 +0100
|
||||
Message-ID: <20250226184506.64114-4-sebastian.reichel@collabora.com>
|
||||
X-Mailer: git-send-email 2.47.2
|
||||
In-Reply-To: <20250226184506.64114-1-sebastian.reichel@collabora.com>
|
||||
References: <20250226184506.64114-1-sebastian.reichel@collabora.com>
|
||||
MIME-Version: 1.0
|
||||
X-BeenThere: u-boot@lists.denx.de
|
||||
X-Mailman-Version: 2.1.39
|
||||
Precedence: list
|
||||
List-Id: U-Boot discussion <u-boot.lists.denx.de>
|
||||
List-Unsubscribe: <https://lists.denx.de/options/u-boot>,
|
||||
<mailto:u-boot-request@lists.denx.de?subject=unsubscribe>
|
||||
List-Archive: <https://lists.denx.de/pipermail/u-boot/>
|
||||
List-Post: <mailto:u-boot@lists.denx.de>
|
||||
List-Help: <mailto:u-boot-request@lists.denx.de?subject=help>
|
||||
List-Subscribe: <https://lists.denx.de/listinfo/u-boot>,
|
||||
<mailto:u-boot-request@lists.denx.de?subject=subscribe>
|
||||
Errors-To: u-boot-bounces@lists.denx.de
|
||||
Sender: "U-Boot" <u-boot-bounces@lists.denx.de>
|
||||
X-Virus-Scanned: clamav-milter 0.103.8 at phobos.denx.de
|
||||
X-Virus-Status: Clean
|
||||
|
||||
A USB-PD hard reset involves removing the voltage from VBUS for some
|
||||
time. So basically it has the same effect as removing the USB-C plug
|
||||
for a short moment. If the machine is powered from the USB-C port and
|
||||
does not have a fallback supply (e.g. a battery), this will result in
|
||||
a full machine reset due to power loss.
|
||||
|
||||
Ideally we want to avoid triggering a hard reset on these boards. A
|
||||
non-working USB-C port is probably better than unplanned reboots. But
|
||||
boards with a backup supply should do the hard reset to get everything
|
||||
working again.
|
||||
|
||||
In theory it would be enough to check the self_powered property, but
|
||||
it seems the property might not be configured consistently enough in
|
||||
system firmwares.
|
||||
|
||||
USB-PD hard resets should happen rarely in general, so let's at least
|
||||
print an error message before the potential board reset happens. This
|
||||
is also useful, since it immediately gives away which device triggered
|
||||
the hard reset.
|
||||
|
||||
Fixes: 1db4c0ac77e3 ("usb: tcpm: add core framework")
|
||||
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
---
|
||||
drivers/usb/tcpm/tcpm.c | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/drivers/usb/tcpm/tcpm.c b/drivers/usb/tcpm/tcpm.c
|
||||
index 786d92fa4c6f..909fe2ef4fcb 100644
|
||||
--- a/drivers/usb/tcpm/tcpm.c
|
||||
+++ b/drivers/usb/tcpm/tcpm.c
|
||||
@@ -1711,6 +1711,8 @@ static void run_state_machine(struct udevice *dev)
|
||||
|
||||
/* Hard_Reset states */
|
||||
case HARD_RESET_SEND:
|
||||
+ if (!port->self_powered && port->port_type == TYPEC_PORT_SNK)
|
||||
+ dev_err(dev, "Initiating hard-reset, which might result in machine power-loss.\n");
|
||||
tcpm_pd_transmit(dev, TCPC_TX_HARD_RESET, NULL);
|
||||
tcpm_set_state(dev, HARD_RESET_START, 0);
|
||||
port->wait_dr_swap_message = false;
|
||||
|
||||
From patchwork Wed Feb 26 18:44:47 2025
|
||||
Content-Type: text/plain; charset="utf-8"
|
||||
MIME-Version: 1.0
|
||||
Content-Transfer-Encoding: 7bit
|
||||
X-Patchwork-Submitter: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
X-Patchwork-Id: 2052542
|
||||
X-Patchwork-Delegate: marek.vasut@gmail.com
|
||||
Return-Path: <u-boot-bounces@lists.denx.de>
|
||||
X-Original-To: incoming@patchwork.ozlabs.org
|
||||
Delivered-To: patchwork-incoming@legolas.ozlabs.org
|
||||
Authentication-Results: legolas.ozlabs.org;
|
||||
dkim=pass (2048-bit key;
|
||||
unprotected) header.d=collabora.com header.i=@collabora.com
|
||||
header.a=rsa-sha256 header.s=mail header.b=K4mNmlOy;
|
||||
dkim-atps=neutral
|
||||
Authentication-Results: legolas.ozlabs.org;
|
||||
spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de
|
||||
(client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de;
|
||||
envelope-from=u-boot-bounces@lists.denx.de; receiver=patchwork.ozlabs.org)
|
||||
Received: from phobos.denx.de (phobos.denx.de
|
||||
[IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01])
|
||||
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
|
||||
key-exchange X25519 server-signature ECDSA (secp384r1))
|
||||
(No client certificate requested)
|
||||
by legolas.ozlabs.org (Postfix) with ESMTPS id 4Z33Lk40FPz1yCp
|
||||
for <incoming@patchwork.ozlabs.org>; Thu, 27 Feb 2025 05:45:18 +1100 (AEDT)
|
||||
Received: from h2850616.stratoserver.net (localhost [IPv6:::1])
|
||||
by phobos.denx.de (Postfix) with ESMTP id DAFC780FF2;
|
||||
Wed, 26 Feb 2025 19:45:12 +0100 (CET)
|
||||
Authentication-Results: phobos.denx.de;
|
||||
dmarc=pass (p=none dis=none) header.from=collabora.com
|
||||
Authentication-Results: phobos.denx.de;
|
||||
spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de
|
||||
Authentication-Results: phobos.denx.de;
|
||||
dkim=pass (2048-bit key;
|
||||
unprotected) header.d=collabora.com header.i=@collabora.com
|
||||
header.b="K4mNmlOy";
|
||||
dkim-atps=neutral
|
||||
Received: by phobos.denx.de (Postfix, from userid 109)
|
||||
id 56A22810F9; Wed, 26 Feb 2025 19:45:11 +0100 (CET)
|
||||
X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de
|
||||
X-Spam-Level:
|
||||
X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,
|
||||
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED,
|
||||
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.2
|
||||
Received: from bali.collaboradmins.com (bali.collaboradmins.com
|
||||
[IPv6:2a01:4f8:201:9162::2])
|
||||
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits))
|
||||
(No client certificate requested)
|
||||
by phobos.denx.de (Postfix) with ESMTPS id 217E080FF2
|
||||
for <u-boot@lists.denx.de>; Wed, 26 Feb 2025 19:45:08 +0100 (CET)
|
||||
Authentication-Results: phobos.denx.de;
|
||||
dmarc=pass (p=none dis=none) header.from=collabora.com
|
||||
Authentication-Results: phobos.denx.de;
|
||||
spf=pass smtp.mailfrom=sebastian.reichel@collabora.com
|
||||
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com;
|
||||
s=mail; t=1740595507;
|
||||
bh=FeXZr6pfjIqGXvnsLHDigD702EmgVNH91IWVsD16udQ=;
|
||||
h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
|
||||
b=K4mNmlOycXzLuJnNeDxyXLVCeZWNr//ycRqDt3ld9634ThDvJ0+y49X3z2nYW+fei
|
||||
HCqH2AoFiXj7khjiFpwCA4xOlYaTrF9yb0M9ApRxJ8vGuslNIK2k9osj8IJMoWmY8S
|
||||
fEez4H6Wso4VamCnXKCze2G5np5mhola5QxSnIJ2CXdFP9TM1x54P+XyeJMX6IZK0X
|
||||
lpZ0R8mACHGgXnkBASRMbo0CnLfSVrUgA83A0FHT7UgxfW8399wHol/FBakg5WS8nt
|
||||
47154TDW4ikoGF4dHBeD0KemJSR7I4F+nnUVQfgg8sXZKVm4yilBT+yx3WWBVCjQDl
|
||||
3igqfexnaUKnA==
|
||||
Received: from jupiter.universe (dyndsl-091-249-076-032.ewe-ip-backbone.de
|
||||
[91.249.76.32])
|
||||
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
|
||||
key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest
|
||||
SHA256)
|
||||
(No client certificate requested) (Authenticated sender: sre)
|
||||
by bali.collaboradmins.com (Postfix) with ESMTPSA id 7FBB317E065A;
|
||||
Wed, 26 Feb 2025 19:45:07 +0100 (CET)
|
||||
Received: by jupiter.universe (Postfix, from userid 1000)
|
||||
id 37B6A480039; Wed, 26 Feb 2025 19:45:07 +0100 (CET)
|
||||
From: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
To: Marek Vasut <marex@denx.de>, u-boot@lists.denx.de,
|
||||
Jonas Karlman <jonas@kwiboo.se>, Soeren Moch <smoch@web.de>
|
||||
Cc: Tim Harvey <tharvey@gateworks.com>,
|
||||
Philipp Tomsich <philipp.tomsich@vrull.eu>,
|
||||
Anand Moon <linux.amoon@gmail.com>, Maxim Kiselev <bigunclemax@gmail.com>,
|
||||
Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
Subject: [PATCH v2 4/4] usb: tcpm: improve data role mismatch error recovery
|
||||
Date: Wed, 26 Feb 2025 19:44:47 +0100
|
||||
Message-ID: <20250226184506.64114-5-sebastian.reichel@collabora.com>
|
||||
X-Mailer: git-send-email 2.47.2
|
||||
In-Reply-To: <20250226184506.64114-1-sebastian.reichel@collabora.com>
|
||||
References: <20250226184506.64114-1-sebastian.reichel@collabora.com>
|
||||
MIME-Version: 1.0
|
||||
X-BeenThere: u-boot@lists.denx.de
|
||||
X-Mailman-Version: 2.1.39
|
||||
Precedence: list
|
||||
List-Id: U-Boot discussion <u-boot.lists.denx.de>
|
||||
List-Unsubscribe: <https://lists.denx.de/options/u-boot>,
|
||||
<mailto:u-boot-request@lists.denx.de?subject=unsubscribe>
|
||||
List-Archive: <https://lists.denx.de/pipermail/u-boot/>
|
||||
List-Post: <mailto:u-boot@lists.denx.de>
|
||||
List-Help: <mailto:u-boot-request@lists.denx.de?subject=help>
|
||||
List-Subscribe: <https://lists.denx.de/listinfo/u-boot>,
|
||||
<mailto:u-boot-request@lists.denx.de?subject=subscribe>
|
||||
Errors-To: u-boot-bounces@lists.denx.de
|
||||
Sender: "U-Boot" <u-boot-bounces@lists.denx.de>
|
||||
X-Virus-Scanned: clamav-milter 0.103.8 at phobos.denx.de
|
||||
X-Virus-Status: Clean
|
||||
|
||||
On Radxa ROCK 5B I managed to get U-Boot into an endless loop of
|
||||
printing
|
||||
|
||||
fusb302 usb-typec@22: TCPM: data role mismatch, initiating error recovery
|
||||
|
||||
messages by changing the data role in Linux and then rebooting the
|
||||
system. This is happening because the external device (A cheap USB-C hub
|
||||
powered through a USB-C PD power-supply) kept its state and the error
|
||||
recovery path for non self-powered devices is not enough to change it.
|
||||
|
||||
Avoid this by swapping our own data role when the error recovery stage
|
||||
is reached for a port, which is not self-powered. Right now data support
|
||||
is limited anyways and once proper support is added we can use the data
|
||||
role swap request to get the desired data direction after the initial
|
||||
negotiation completed.
|
||||
|
||||
Fixes: 1db4c0ac77e3 ("usb: tcpm: add core framework")
|
||||
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
|
||||
---
|
||||
drivers/usb/tcpm/tcpm.c | 30 +++++++++++++++++++++++++++---
|
||||
1 file changed, 27 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/drivers/usb/tcpm/tcpm.c b/drivers/usb/tcpm/tcpm.c
|
||||
index 909fe2ef4fcb..12d66d470f9a 100644
|
||||
--- a/drivers/usb/tcpm/tcpm.c
|
||||
+++ b/drivers/usb/tcpm/tcpm.c
|
||||
@@ -833,6 +833,28 @@ static void tcpm_pd_ctrl_request(struct udevice *dev,
|
||||
}
|
||||
}
|
||||
|
||||
+static void tcpm_recover_data_role_mismatch(struct udevice *dev)
|
||||
+{
|
||||
+ struct tcpm_port *port = dev_get_uclass_plat(dev);
|
||||
+
|
||||
+ dev_err(dev, "TCPM: data role mismatch, initiating error recovery\n");
|
||||
+ if (port->self_powered) {
|
||||
+ tcpm_set_state(dev, ERROR_RECOVERY, 0);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ /*
|
||||
+ * The error recovery will not help for devices, which are not
|
||||
+ * self-powered because the error recovery avoids killing the board
|
||||
+ * power. Since this can happen early on sending
|
||||
+ * a DR_SWAP request is not sensible. Instead let's change our own
|
||||
+ * data role. It can be swapped back once USB-PD reached the ready
|
||||
+ * state.
|
||||
+ */
|
||||
+ tcpm_set_roles(dev, true, port->pwr_role,
|
||||
+ port->data_role == TYPEC_HOST ? TYPEC_DEVICE : TYPEC_HOST);
|
||||
+}
|
||||
+
|
||||
static void tcpm_pd_rx_handler(struct udevice *dev,
|
||||
const struct pd_message *msg)
|
||||
{
|
||||
@@ -867,9 +889,11 @@ static void tcpm_pd_rx_handler(struct udevice *dev,
|
||||
remote_is_host = !!(le16_to_cpu(msg->header) & PD_HEADER_DATA_ROLE);
|
||||
local_is_host = port->data_role == TYPEC_HOST;
|
||||
if (remote_is_host == local_is_host) {
|
||||
- dev_err(dev, "TCPM: data role mismatch, initiating error recovery\n");
|
||||
- tcpm_set_state(dev, ERROR_RECOVERY, 0);
|
||||
- } else {
|
||||
+ tcpm_recover_data_role_mismatch(dev);
|
||||
+ local_is_host = port->data_role == TYPEC_HOST;
|
||||
+ }
|
||||
+
|
||||
+ if (remote_is_host != local_is_host) {
|
||||
if (cnt)
|
||||
tcpm_pd_data_request(dev, msg);
|
||||
else
|
||||
@@ -0,0 +1,32 @@
|
||||
From d9e3a49bc2a29922da5bddd95772279f6edba802 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Robinson <pbrobinson@gmail.com>
|
||||
Date: Fri, 18 Aug 2023 13:28:05 +0100
|
||||
Subject: [PATCH] disable VBE by default
|
||||
|
||||
The VBE protocol needs explicit device support and as
|
||||
such isn't particularly useful by itself without that,
|
||||
it also adds size and the potential of an attack vector
|
||||
so devices that wish to use this protocol should
|
||||
explicitly opt in to it like all other large features
|
||||
in U-Boot.
|
||||
|
||||
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
|
||||
---
|
||||
boot/Kconfig | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
diff --git a/boot/Kconfig b/boot/Kconfig
|
||||
index 30eb5b328d7..e8c3fbcb11d 100644
|
||||
--- a/boot/Kconfig
|
||||
+++ b/boot/Kconfig
|
||||
@@ -635,7 +635,6 @@ config BOOTMETH_QFW
|
||||
config BOOTMETH_VBE
|
||||
bool "Bootdev support for Verified Boot for Embedded"
|
||||
depends on FIT
|
||||
- default y
|
||||
select BOOTMETH_GLOBAL
|
||||
select EVENT
|
||||
help
|
||||
--
|
||||
2.49.0
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
From a956480a6d52ae90ef4a46275c2ee29a4074de36 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Robinson <pbrobinson@gmail.com>
|
||||
Date: Fri, 18 Aug 2023 23:10:42 +0100
|
||||
Subject: [PATCH] enable bootmenu by default
|
||||
|
||||
We want the boot menu on all Fedora devices as it makes
|
||||
it a whole lot more user friendly.
|
||||
|
||||
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
|
||||
---
|
||||
boot/Kconfig | 2 ++
|
||||
cmd/Kconfig | 1 +
|
||||
2 files changed, 3 insertions(+)
|
||||
|
||||
diff --git a/boot/Kconfig b/boot/Kconfig
|
||||
index 467b09e2350..ad67b1f65a6 100644
|
||||
--- a/boot/Kconfig
|
||||
+++ b/boot/Kconfig
|
||||
@@ -1281,6 +1281,7 @@ config BOOTDELAY
|
||||
|
||||
config AUTOBOOT_KEYED
|
||||
bool "Stop autobooting via specific input key / string"
|
||||
+ default y
|
||||
help
|
||||
This option enables stopping (aborting) of the automatic
|
||||
boot feature only by issuing a specific input key or
|
||||
@@ -1433,6 +1434,7 @@ config AUTOBOOT_MENUKEY
|
||||
|
||||
config AUTOBOOT_MENU_SHOW
|
||||
bool "Show a menu on boot"
|
||||
+ default y
|
||||
depends on CMD_BOOTMENU
|
||||
help
|
||||
This enables the boot menu, controlled by environment variables
|
||||
diff --git a/cmd/Kconfig b/cmd/Kconfig
|
||||
index 43ca10f69cc..3d39f2914cc 100644
|
||||
--- a/cmd/Kconfig
|
||||
+++ b/cmd/Kconfig
|
||||
@@ -413,6 +413,7 @@ source lib/efi_selftest/Kconfig
|
||||
|
||||
config CMD_BOOTMENU
|
||||
bool "bootmenu"
|
||||
+ default y
|
||||
select MENU
|
||||
select CHARSET
|
||||
help
|
||||
--
|
||||
2.41.0
|
||||
|
||||
@@ -0,0 +1,178 @@
|
||||
From 88a0fe6c1fda46c8bacd861044f39930ce1c9bc0 Mon Sep 17 00:00:00 2001
|
||||
From: Davide Cavalca <dcavalca@meta.com>
|
||||
Date: Sun, 29 Sep 2024 17:20:59 -0700
|
||||
Subject: [PATCH] lib: allow building when OpenSSL ENGINE is disabled
|
||||
|
||||
Recent OpenSSL releases deprecate ENGINE, and some distributions have
|
||||
started to remove it altogether. Gate the logic using it behind a
|
||||
feature check so that we'll build regardless.
|
||||
|
||||
Signed-off-by: Davide Cavalca <dcavalca@meta.com>
|
||||
---
|
||||
lib/aes/aes-encrypt.c | 2 ++
|
||||
lib/rsa/rsa-sign.c | 22 ++++++++++++++++++++++
|
||||
2 files changed, 24 insertions(+)
|
||||
|
||||
diff --git a/lib/aes/aes-encrypt.c b/lib/aes/aes-encrypt.c
|
||||
index e74e35eaa2..7758438c32 100644
|
||||
--- a/lib/aes/aes-encrypt.c
|
||||
+++ b/lib/aes/aes-encrypt.c
|
||||
@@ -16,7 +16,9 @@
|
||||
#include <openssl/err.h>
|
||||
#include <openssl/ssl.h>
|
||||
#include <openssl/evp.h>
|
||||
+#ifndef OPENSSL_NO_ENGINE
|
||||
#include <openssl/engine.h>
|
||||
+#endif
|
||||
#include <uboot_aes.h>
|
||||
|
||||
#if OPENSSL_VERSION_NUMBER >= 0x10000000L
|
||||
diff --git a/lib/rsa/rsa-sign.c b/lib/rsa/rsa-sign.c
|
||||
index 2304030e32..bb9c93ea65 100644
|
||||
--- a/lib/rsa/rsa-sign.c
|
||||
+++ b/lib/rsa/rsa-sign.c
|
||||
@@ -19,7 +19,9 @@
|
||||
#include <openssl/err.h>
|
||||
#include <openssl/ssl.h>
|
||||
#include <openssl/evp.h>
|
||||
+#ifndef OPENSSL_NO_ENGINE
|
||||
#include <openssl/engine.h>
|
||||
+#endif
|
||||
|
||||
static int rsa_err(const char *msg)
|
||||
{
|
||||
@@ -89,6 +91,7 @@ err_cert:
|
||||
return ret;
|
||||
}
|
||||
|
||||
+#ifndef OPENSSL_NO_ENGINE
|
||||
/**
|
||||
* rsa_engine_get_pub_key() - read a public key from given engine
|
||||
*
|
||||
@@ -157,6 +160,7 @@ static int rsa_engine_get_pub_key(const char *keydir, const char *name,
|
||||
|
||||
return 0;
|
||||
}
|
||||
+#endif
|
||||
|
||||
/**
|
||||
* rsa_get_pub_key() - read a public key
|
||||
@@ -170,8 +174,10 @@ static int rsa_engine_get_pub_key(const char *keydir, const char *name,
|
||||
static int rsa_get_pub_key(const char *keydir, const char *name,
|
||||
ENGINE *engine, EVP_PKEY **evpp)
|
||||
{
|
||||
+#ifndef OPENSSL_NO_ENGINE
|
||||
if (engine)
|
||||
return rsa_engine_get_pub_key(keydir, name, engine, evpp);
|
||||
+#endif
|
||||
return rsa_pem_get_pub_key(keydir, name, evpp);
|
||||
}
|
||||
|
||||
@@ -217,6 +223,7 @@ static int rsa_pem_get_priv_key(const char *keydir, const char *name,
|
||||
return 0;
|
||||
}
|
||||
|
||||
+#ifndef OPENSSL_NO_ENGINE
|
||||
/**
|
||||
* rsa_engine_get_priv_key() - read a private key from given engine
|
||||
*
|
||||
@@ -293,6 +300,7 @@ static int rsa_engine_get_priv_key(const char *keydir, const char *name,
|
||||
|
||||
return 0;
|
||||
}
|
||||
+#endif
|
||||
|
||||
/**
|
||||
* rsa_get_priv_key() - read a private key
|
||||
@@ -306,9 +314,11 @@ static int rsa_engine_get_priv_key(const char *keydir, const char *name,
|
||||
static int rsa_get_priv_key(const char *keydir, const char *name,
|
||||
const char *keyfile, ENGINE *engine, EVP_PKEY **evpp)
|
||||
{
|
||||
+#ifndef OPENSSL_NO_ENGINE
|
||||
if (engine)
|
||||
return rsa_engine_get_priv_key(keydir, name, keyfile, engine,
|
||||
evpp);
|
||||
+#endif
|
||||
return rsa_pem_get_priv_key(keydir, name, keyfile, evpp);
|
||||
}
|
||||
|
||||
@@ -325,6 +335,7 @@ static int rsa_init(void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
+#ifndef OPENSSL_NO_ENGINE
|
||||
static int rsa_engine_init(const char *engine_id, ENGINE **pe)
|
||||
{
|
||||
const char *key_pass;
|
||||
@@ -380,6 +391,7 @@ static void rsa_engine_remove(ENGINE *e)
|
||||
ENGINE_free(e);
|
||||
}
|
||||
}
|
||||
+#endif
|
||||
|
||||
static int rsa_sign_with_key(EVP_PKEY *pkey, struct padding_algo *padding_algo,
|
||||
struct checksum_algo *checksum_algo,
|
||||
@@ -471,11 +483,13 @@ int rsa_sign(struct image_sign_info *info,
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
+#ifndef OPENSSL_NO_ENGINE
|
||||
if (info->engine_id) {
|
||||
ret = rsa_engine_init(info->engine_id, &e);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
+#endif
|
||||
|
||||
ret = rsa_get_priv_key(info->keydir, info->keyname, info->keyfile,
|
||||
e, &pkey);
|
||||
@@ -486,17 +500,21 @@ int rsa_sign(struct image_sign_info *info,
|
||||
if (ret)
|
||||
goto err_sign;
|
||||
|
||||
+#ifndef OPENSSL_NO_ENGINE
|
||||
EVP_PKEY_free(pkey);
|
||||
if (info->engine_id)
|
||||
rsa_engine_remove(e);
|
||||
|
||||
return ret;
|
||||
+#endif
|
||||
|
||||
err_sign:
|
||||
EVP_PKEY_free(pkey);
|
||||
err_priv:
|
||||
+#ifndef OPENSSL_NO_ENGINE
|
||||
if (info->engine_id)
|
||||
rsa_engine_remove(e);
|
||||
+#endif
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -636,11 +654,13 @@ int rsa_add_verify_data(struct image_sign_info *info, void *keydest)
|
||||
ENGINE *e = NULL;
|
||||
|
||||
debug("%s: Getting verification data\n", __func__);
|
||||
+#ifndef OPENSSL_NO_ENGINE
|
||||
if (info->engine_id) {
|
||||
ret = rsa_engine_init(info->engine_id, &e);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
+#endif
|
||||
ret = rsa_get_pub_key(info->keydir, info->keyname, e, &pkey);
|
||||
if (ret)
|
||||
goto err_get_pub_key;
|
||||
@@ -717,8 +737,10 @@ done:
|
||||
err_get_params:
|
||||
EVP_PKEY_free(pkey);
|
||||
err_get_pub_key:
|
||||
+#ifndef OPENSSL_NO_ENGINE
|
||||
if (info->engine_id)
|
||||
rsa_engine_remove(e);
|
||||
+#endif
|
||||
|
||||
if (ret)
|
||||
return ret;
|
||||
--
|
||||
2.46.2
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
From c9b65320d64a60cde74c4c1f9cb4a05198a456c2 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Robinson <pbrobinson@gmail.com>
|
||||
Date: Wed, 10 Sep 2025 13:27:52 +0100
|
||||
Subject: [PATCH] further size reductions
|
||||
|
||||
---
|
||||
configs/p3450-0000_defconfig | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/configs/p3450-0000_defconfig b/configs/p3450-0000_defconfig
|
||||
index 2ebcf8b83fc..a5e717a02ed 100644
|
||||
--- a/configs/p3450-0000_defconfig
|
||||
+++ b/configs/p3450-0000_defconfig
|
||||
@@ -27,6 +27,8 @@ CONFIG_CONSOLE_MUX=y
|
||||
CONFIG_SYS_STDIO_DEREGISTER=y
|
||||
CONFIG_SYS_PROMPT="Tegra210 (P3450-0000) # "
|
||||
# CONFIG_BOOTM_PLAN9 is not set
|
||||
+# CONFIG_SYS_DTC_PAD_BYTES is not set
|
||||
+# CONFIG_LEGACY_IMAGE_FORMAT is not set
|
||||
# CONFIG_BOOTM_RTEMS is not set
|
||||
# CONFIG_BOOTM_VXWORKS is not set
|
||||
# CONFIG_CMD_ELF is not set
|
||||
--
|
||||
2.51.0
|
||||
|
||||
+234
@@ -0,0 +1,234 @@
|
||||
From patchwork Tue Aug 11 13:34:33 2026
|
||||
Content-Type: text/plain; charset="utf-8"
|
||||
MIME-Version: 1.0
|
||||
Content-Transfer-Encoding: 8bit
|
||||
X-Patchwork-Submitter: Jaipaul Cheernam <jaipaul.cheernam@est.tech>
|
||||
X-Patchwork-Id: 2283713
|
||||
Return-Path: <u-boot-bounces@lists.u-boot-project.org>
|
||||
X-Original-To: incoming@patchwork.ozlabs.org
|
||||
Delivered-To: patchwork-incoming@legolas.ozlabs.org
|
||||
Authentication-Results: legolas.ozlabs.org;
|
||||
dkim=fail reason="signature verification failed" (2048-bit key;
|
||||
unprotected) header.d=lists.u-boot-project.org
|
||||
header.i=@lists.u-boot-project.org header.a=rsa-sha256 header.s=default
|
||||
header.b=N2mjzMfT;
|
||||
dkim-atps=neutral
|
||||
Authentication-Results: legolas.ozlabs.org;
|
||||
spf=pass (sender SPF authorized) smtp.mailfrom=lists.u-boot-project.org
|
||||
(client-ip=140.211.166.137; helo=smtp4.osuosl.org;
|
||||
envelope-from=u-boot-bounces@lists.u-boot-project.org;
|
||||
receiver=patchwork.ozlabs.org)
|
||||
Received: from smtp4.osuosl.org (smtp4.osuosl.org [140.211.166.137])
|
||||
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
|
||||
key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)
|
||||
(No client certificate requested)
|
||||
by legolas.ozlabs.org (Postfix) with ESMTPS id 4hKCMS4PSRz1xtl
|
||||
for <incoming@patchwork.ozlabs.org>; Tue, 11 Aug 2026 23:36:36 +1000 (AEST)
|
||||
Received: from localhost (localhost [127.0.0.1])
|
||||
by smtp4.osuosl.org (Postfix) with ESMTP id A0013402ED;
|
||||
Tue, 11 Aug 2026 13:36:34 +0000 (UTC)
|
||||
X-Virus-Scanned: amavis at osuosl.org
|
||||
Received: from smtp4.osuosl.org ([127.0.0.1])
|
||||
by localhost (smtp4.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP
|
||||
id p3bOda34E2S1; Tue, 11 Aug 2026 13:36:34 +0000 (UTC)
|
||||
X-Comment: SPF check N/A for local connections - client-ip=140.211.166.142;
|
||||
helo=lists1.osuosl.org;
|
||||
envelope-from=u-boot-bounces@lists.u-boot-project.org; receiver=<UNKNOWN>
|
||||
DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org C8D6040520
|
||||
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
|
||||
d=lists.u-boot-project.org ; s=default; t=1786455393;
|
||||
bh=cBVuDcRfAz5FmVboiaFLD22qM9rj4tnKRC4LViq6X68=;
|
||||
h=From:To:Cc:Subject:Date:List-Id:List-Unsubscribe:List-Archive:
|
||||
List-Post:List-Help:List-Subscribe:From;
|
||||
b=N2mjzMfTYSqmTzk5FULwaFpMrGP5bVx/I9fHulmwzUjiqqJ9tTuxFgg7YCzUy5gHA
|
||||
nOaWzLi5SSXsmRZgFXcjHu42Dlk9xTHR2qq/4dS0Jbc0rahx6+PQT1YjAWBHDpsl26
|
||||
WZH2MDE/Gv/VVK7wjRp2lYfVtOs39dZAWUSyvYaH8vRwIKUb696ujmQYkGRa4RSkVO
|
||||
WoL+nEFC1B1XaZWlY7HLMogdXPKXD4VqvBU86Oc/lzjf/NAZAjtkKnBLCG8TC2l2AY
|
||||
E/TYLlN3XJYwSxHLzMqMCU0/TSwwT1z4kgibHFNq8XUpt1VwMloPxSTvHz9JvZNYOs
|
||||
wwM5F4y6KhaDw==
|
||||
Received: from lists1.osuosl.org (lists1.osuosl.org [140.211.166.142])
|
||||
by smtp4.osuosl.org (Postfix) with ESMTP id C8D6040520;
|
||||
Tue, 11 Aug 2026 13:36:33 +0000 (UTC)
|
||||
X-Original-To: u-boot@lists.u-boot-project.org
|
||||
Delivered-To: u-boot@lists.u-boot-project.org
|
||||
Received: from smtp3.osuosl.org (smtp3.osuosl.org [IPv6:2605:bc80:3010::136])
|
||||
by lists1.osuosl.org (Postfix) with ESMTP id 38B5E259
|
||||
for <u-boot@lists.u-boot-project.org>; Tue, 11 Aug 2026 13:34:51 +0000 (UTC)
|
||||
Received: from localhost (localhost [127.0.0.1])
|
||||
by smtp3.osuosl.org (Postfix) with ESMTP id 2B001607C7
|
||||
for <u-boot@lists.u-boot-project.org>; Tue, 11 Aug 2026 13:34:51 +0000 (UTC)
|
||||
X-Virus-Scanned: amavis at osuosl.org
|
||||
Received: from smtp3.osuosl.org ([127.0.0.1])
|
||||
by localhost (smtp3.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP
|
||||
id eGFQZMQurFKG for <u-boot@lists.u-boot-project.org>;
|
||||
Tue, 11 Aug 2026 13:34:50 +0000 (UTC)
|
||||
X-Comment: SPF check N/A for local connections - client-ip=85.214.62.61;
|
||||
helo=phobos.denx.de; envelope-from=jaipaul.cheernam@est.tech;
|
||||
receiver=<UNKNOWN>
|
||||
DMARC-Filter: OpenDMARC Filter v1.4.2 smtp3.osuosl.org DCF5E607BD
|
||||
DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org DCF5E607BD
|
||||
Received: from phobos.denx.de (phobos.denx.de [85.214.62.61])
|
||||
by smtp3.osuosl.org (Postfix) with ESMTPS id DCF5E607BD
|
||||
for <u-boot@lists.u-boot-project.org>; Tue, 11 Aug 2026 13:34:49 +0000 (UTC)
|
||||
Received: by phobos.denx.de (Postfix, from userid 109)
|
||||
id 1444784A30; Tue, 11 Aug 2026 15:34:47 +0200 (CEST)
|
||||
Received: from MRWPR03CU001.outbound.protection.outlook.com
|
||||
(mail-francesouthazlp170110003.outbound.protection.outlook.com
|
||||
[IPv6:2a01:111:f403:c207::3])
|
||||
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits))
|
||||
(No client certificate requested)
|
||||
by phobos.denx.de (Postfix) with ESMTPS id D7A5C849A1
|
||||
for <u-boot@lists.denx.de>; Tue, 11 Aug 2026 15:34:44 +0200 (CEST)
|
||||
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
|
||||
b=F/iYm8I1iNna6pUS6fgZzFjCemWpknd0tJi480HHtcO6J5oiHNQHuS8TUlSvhc+RIG6xiOAg2WmQnvfUJCgjWzvLxQdJ8wGHLOg/TvimuL/XDMdwtYzqUN6b4PC3SYhJZk3sRSEZj6+3q5TRszIXJDsKEPqWkQE5oOVP9n1FY9ysY6EsjQMakTDpQ/RpkUkYgn50oLOyLLsDl3H0VSmZGfHqX0QOkwYIW/T8k3Fx/sLrlSiTfKiCPwrdnhwz7ABjlA79EvSU6/TvI/nefnSXeyUhYj0S6rPUadLIvlHFLjaFZ93ldV9COTfx96z44ltNtyAmvkIlMc6g22V3Dv8hAg==
|
||||
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
|
||||
s=arcselector10001;
|
||||
h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
|
||||
bh=cBVuDcRfAz5FmVboiaFLD22qM9rj4tnKRC4LViq6X68=;
|
||||
b=kO0F3iz0TnoDLl3Fiv7ulw2CObdD+lulFmKuohamR8N6FEc5UzGf7TInNwu6ce7RXGSVuFd7hfaEsq6r/o3PhBgHar8MJtVXKc+dvUPG5YuOV7nTz6qTe9trkJKfQmaFIuzBrRusEp8J4y32eMnjVSFzFXNV2eI9S3+WCoakNjmNFR8JoZWsaeqgxsTl6CGsWOYvktuUErx0GcRg4AgQmZU2EiDiD3VVrXKk+AlQY4GOTcgDJSHsqmrqn/xlr1O+9o2xvoc0RJMvz9upXok7Jo2eNeoty0UCLuSLzfxRnVJJriUkIOxFFdTQjuVzoeQMNSB7k6iXu8tgDwbcBiyzkg==
|
||||
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
|
||||
smtp.mailfrom=est.tech; dmarc=pass action=none header.from=est.tech;
|
||||
dkim=pass header.d=est.tech; arc=none
|
||||
Received: from DU7PPF66507B2D7.EURP189.PROD.OUTLOOK.COM (2603:10a6:18:3::ad4)
|
||||
by VI1P18901MB0623.EURP189.PROD.OUTLOOK.COM (2603:10a6:800:125::14)
|
||||
with Microsoft SMTP Server (version=TLS1_2,
|
||||
cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.315.11; Tue, 11 Aug
|
||||
2026 13:34:41 +0000
|
||||
Received: from DU7PPF66507B2D7.EURP189.PROD.OUTLOOK.COM
|
||||
([fe80::7ab2:c6af:6760:5c85]) by DU7PPF66507B2D7.EURP189.PROD.OUTLOOK.COM
|
||||
([fe80::7ab2:c6af:6760:5c85%7]) with mapi id 15.21.0315.008; Tue, 11 Aug 2026
|
||||
13:34:41 +0000
|
||||
From: Jaipaul Cheernam <jaipaul.cheernam@est.tech>
|
||||
To: u-boot@lists.denx.de
|
||||
Cc: Jaipaul Cheernam <jaipaul.cheernam@est.tech>
|
||||
Subject: [PATCH] pylibfdt: Replace removed SWIG Python 2 compatibility macros
|
||||
Date: Tue, 11 Aug 2026 15:34:33 +0200
|
||||
Message-Id: <20260811133433.18852-1-jaipaul.cheernam@est.tech>
|
||||
X-Mailer: git-send-email 2.39.5 (Apple Git-154)
|
||||
X-ClientProxiedBy: LO4P265CA0183.GBRP265.PROD.OUTLOOK.COM
|
||||
(2603:10a6:600:311::6) To DU7PPF66507B2D7.EURP189.PROD.OUTLOOK.COM
|
||||
(2603:10a6:18:3::ad4)
|
||||
MIME-Version: 1.0
|
||||
X-MS-PublicTrafficType: Email
|
||||
X-MS-TrafficTypeDiagnostic: DU7PPF66507B2D7:EE_|VI1P18901MB0623:EE_
|
||||
X-MS-Office365-Filtering-Correlation-Id: 8a2304be-1609-4ac3-d596-08def7ad4c24
|
||||
X-MS-Exchange-SenderADCheck: 1
|
||||
X-MS-Exchange-AntiSpam-Relay: 0
|
||||
X-Microsoft-Antispam: BCL:0;
|
||||
ARA:13230040|366016|23010399003|376014|1800799024|6133799003|10067099003|56012099006|11063799006|18002099003;
|
||||
X-Microsoft-Antispam-Message-Info:
|
||||
ADZCK8hJVm6F3wH0lN+1CH3ycpX/oWr0C7rdxob6unX1/P+tCnAEcRYEgIIPZwnHqbQDW5p6JD2T3EG67ZpnAdgv+1d2HZMQepsfe3LElh3IHx0BPlzA3Vty6psoCgoWs4SMcNTrIVV3UqBrl3s/ttqDI2opVebhHDoAf8Z50f5xlclKz2O8gSMv8FOB9NyfaRUwtlAVgkE428WD6Wia/D/e92aD33o3Z4r2Pz7UzkUhLPLrNeVcSYh94xaUrbMlilcRmFygJWWpgeZsh+7a8kFV/eb42A37qzZ5DcE2yO5PZaA4ckohcSQ2QCA+BnKRUKh3rxkKmCeVglTgdpKg9qvpxmE+Ndzo97z6t8EimCMtdnMQxkDIA6yZiqO7xc2qjdfQ7azC4KZ3h0xq4J04c+HxOzwrQ6t/1IZd0XkN9IrgCyVRhOPL593gaeMD9Iapy4fOTZuQTL6PmUjCMNC7KNiyzyg2gtgWYist7MODeGSDNRUBR3X4hOON3nYYRXl/t+WsxRKhD5ykRF0EUEGh140FdrrFz00eXO6LIIbJUyaf1ud/SBpIw15warKR5ojDTyGUIuhg+toVhwib8/OGuFI5VxDdfgfCPVncMzarvbqXd3nx8r/NAjbPGYY9yKoOEoJ4CVfWa5NbVK3z/aCJlrnBCNTiYc8m29cvV3Ch808=
|
||||
X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;
|
||||
IPV:NLI; SFV:NSPM; H:DU7PPF66507B2D7.EURP189.PROD.OUTLOOK.COM; PTR:;
|
||||
CAT:NONE;
|
||||
SFS:(13230040)(366016)(23010399003)(376014)(1800799024)(6133799003)(10067099003)(56012099006)(11063799006)(18002099003);
|
||||
DIR:OUT; SFP:1101;
|
||||
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
|
||||
X-MS-Exchange-AntiSpam-MessageData-0:
|
||||
v1SJ9iF1FZ4Ddch8PL37hr0CiYoSTtojtB+aom++qNSm/JaqntarQvycHwKOYPL0X3VIS0vCDGJSC3b6gdCPlWLoGPlNDQJYLlTHOfds4mIdrbG5HCQ8X4EoM9uDG/9vWdsUSeRJnh1D8Q1gwPU2JRfArF7684CnJny/jZyepPyTurvWXmjo6skYOwzuRosHH9ZCocSL2xHtHu2N0HirNE+qvbo53SlhzUhQzvvoLlOHVHnSdJDTDRUfPTF3lginIWrs2IzeZkaZIbuV4+/dW5CfSJWX0Y/tHWJZ5Ny7Lbc+uG5kOidZBfaCN8UfKqZ5RTC1dkx0X6BKwkuKC3/unMfJIZAQg8Q5QmhF1uftv3XcyCrH0gNCyyVAl7lLegxBbzWJdGZPbfLh2STTurHhzeJ3hJtClRfwKE03a+TYu+44Ekc0nUdTCdn7Hpf6hnBnTmScp1QWP/toxL70lv4JhkNeZLia+I7vw7Elk6PIK1KWHY2Wlm1sGSiI2jlDnRBpPSDakUhEPWcFI+jz2XzJZ9+sBh/bzsmPqLeH71fS1cDiOyQG5lG0OWoewtDfmk4QE1ViS8UTY6oeE1lL7RNarDf+KoDL75rAwUtJATqdEqfaY1fxnRrVfaawTZIL4jYe56ITk7NiAhZ2aJXJ9WvxvXsu2Q4f+RMBoMuYSuf/B4Eil873iPGk7f9KcFV0F9e7xVcnb6bMZ2xOOxFcuZ/FVblgRYviX75D9uroJan3ZJIBqmgQL1Mq2rfIAMctUIcTYWBg8qFOVymFr22cxfzoD/puCigGWDWKl2bRk8s4WaN7PuznMXOrdvs3d9FMEQfy5oyxE4dpv/527M2l0Lqa5bGEK4y20y7FYfu/js6Ja5t38S1ZgQV3SIEqvAzCHWbYOBgMg/969p32OF20GFx7ZxF+rWXJ5QLbfimyrZ0jw+nuPvaA1BmvtjCgBLM24eIvdJuHhRjEqaCBEGwGutPeikNcxQ2x45eMlXc1OPZymG5DLgq2FMyUyQAoCrZ70YMCO3yNThR+Vfh8qc/qNpl7pLwIqvT7/5x9ZYPBINAjWwOuutEdBTH2D15WAsKB8IcxVMpjpEhaNNAMEEr3qaahViyCwFhx8GZY39yQRdbyb7dweQK/2hPFY/M2TSiGPLbxGIVOxu048L2ePB1ZMCT9v6/7pzft7L9LKOAmj5fj7zMIm9IzfaYRiPbT9KkGvcbOQ85BMLZdw4QJYUpUt9PKf6zxidBmSUfD8WAObbMF8wW9NFRSEeEdh5CMh1lRyEnFsvCFJov8+CJAcK0kYeXjJwcbaDiAKIWGk8MF8lPWIZk/cFpbsetUN6W5LQT+oxa4qttRPpjixTvJFK9i8NUHuPtZzJ0Knv9rt/4VmG7oziwVngajIkj5ByXT21gg1iX8EEqLJznzX5pHeKWV9UAvgm+fmT+zhrgV4LL+ySkPaSSNJz9eBvp3qxU4486MXyw0ISCob64j6LkZ2tYGULV2PF8caUN+J5l1cUu2ySXr7Pt4LyoMKMk/7QEJgUqzxB4T//af1ASXB0//pNSTXgPbo4eCPFtqTkVDD+KxXRJsNyGVmSJGfDE67Y7mF28SQidNW7gguYRcn7DJHFxNm1/Co6kVsDf4Xp9BOQ2HROs67mxZqicBzEqifFMBNigrr4qcA9Qcaqpkewrz9/7zW8TBs/5v6KWQHbMKffzp6PPtnwX/rVrK3VBd8TusgBYky7Q2scVbONq4qDA/ErH5tWob1bBCIPdzl9ngXrCgsknnFHs=
|
||||
X-OriginatorOrg: est.tech
|
||||
X-MS-Exchange-CrossTenant-Network-Message-Id:
|
||||
8a2304be-1609-4ac3-d596-08def7ad4c24
|
||||
X-MS-Exchange-CrossTenant-AuthSource: DU7PPF66507B2D7.EURP189.PROD.OUTLOOK.COM
|
||||
X-MS-Exchange-CrossTenant-AuthAs: Internal
|
||||
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Aug 2026 13:34:41.3741 (UTC)
|
||||
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
|
||||
X-MS-Exchange-CrossTenant-Id: d2585e63-66b9-44b6-a76e-4f4b217d97fd
|
||||
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
|
||||
X-MS-Exchange-CrossTenant-UserPrincipalName:
|
||||
9S3MTmbV8NoDKIO+2csvXOXSX+h+vv/3+dsv/aYgYwFK6nBqKPXaQTK18nwZ9STbTS8eocOH32TrCptEz96k1m5bWAyhRvMPyQD1xqNBHC4=
|
||||
X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1P18901MB0623
|
||||
X-Virus-Scanned: clamav-milter 0.103.8 at phobos.denx.de
|
||||
X-Virus-Status: Clean
|
||||
X-Mailman-Approved-At: Tue, 11 Aug 2026 13:36:32 +0000
|
||||
X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
|
||||
d=est.tech; s=selector1;
|
||||
h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
|
||||
bh=cBVuDcRfAz5FmVboiaFLD22qM9rj4tnKRC4LViq6X68=;
|
||||
b=pqeWauqz6d5LeBvZqnf0Vhya3rUJMPVJBkYn0KjHe11y8MAnCj2YKA4NsHfxYgJwkrtzBngWWBmMuUwulnTUPfh3czsocU/HiR1U+jCVAcvcPj55A0JETJ4yzxa5edLmeRYJuzsnnkbx/PCnabanIJQNikIQiZPSYzLujjk5w+8uDoqw9b5fy+0DrexXTt4ygBBpl5++UWUu/ZM79h7yIW1OIMNbg9SdLZVbjdgFl1jrxU0e8eJEGgOVWAwAHQ4vChd/Fanm6NkU/8YU99cRqrLXjjOZedJF5ZbuxnLqfQev0dTeHnqf7PnTtRKIXcexkdiggESk1fsx72bytELfag==
|
||||
X-Mailman-Original-Authentication-Results: smtp3.osuosl.org;
|
||||
dmarc=none (p=none dis=none)
|
||||
header.from=est.tech
|
||||
X-Mailman-Original-Authentication-Results: smtp3.osuosl.org;
|
||||
spf=fail smtp.mailfrom=est.tech
|
||||
X-Mailman-Original-Authentication-Results: smtp3.osuosl.org;
|
||||
dkim=pass (2048-bit key,
|
||||
unprotected) header.d=est.tech header.i=@est.tech header.a=rsa-sha256
|
||||
header.s=selector1 header.b=pqeWauqz
|
||||
X-Mailman-Original-Authentication-Results: phobos.denx.de;
|
||||
dmarc=none (p=none dis=none)
|
||||
header.from=est.tech
|
||||
X-Mailman-Original-Authentication-Results: phobos.denx.de; spf=pass
|
||||
smtp.mailfrom=jaipaul.cheernam@est.tech
|
||||
X-Mailman-Original-Authentication-Results: phobos.denx.de;
|
||||
dkim=pass (2048-bit key;
|
||||
unprotected) header.d=est.tech header.i=@est.tech header.b="pqeWauqz";
|
||||
dkim-atps=neutral
|
||||
X-Mailman-Original-Authentication-Results: dkim=none (message not signed)
|
||||
header.d=none;dmarc=none action=none header.from=est.tech;
|
||||
X-BeenThere: u-boot@lists.u-boot-project.org
|
||||
X-Mailman-Version: 2.1.30
|
||||
Precedence: list
|
||||
List-Id: U-Boot discussion <u-boot.lists.u-boot-project.org>
|
||||
List-Unsubscribe: <https://lists.u-boot-project.org/mailman/options/u-boot>,
|
||||
<mailto:u-boot-request@lists.u-boot-project.org?subject=unsubscribe>
|
||||
List-Archive: <http://lists.u-boot-project.org/pipermail/u-boot/>
|
||||
List-Post: <mailto:u-boot@lists.u-boot-project.org>
|
||||
List-Help: <mailto:u-boot-request@lists.u-boot-project.org?subject=help>
|
||||
List-Subscribe: <https://lists.u-boot-project.org/mailman/listinfo/u-boot>,
|
||||
<mailto:u-boot-request@lists.u-boot-project.org?subject=subscribe>
|
||||
Errors-To: u-boot-bounces@lists.u-boot-project.org
|
||||
Sender: "U-Boot" <u-boot-bounces@lists.u-boot-project.org>
|
||||
|
||||
SWIG 4.5.0 removed Python 2 compatibility macros (PyInt_*, PyString_*)
|
||||
from its runtime header pyhead.swg (see commit 79f7a2b7cb7d). Replace
|
||||
them with their Python 3 C API equivalents:
|
||||
|
||||
- PyString_FromString -> PyUnicode_FromString
|
||||
- PyString_AsString -> PyBytes_AsString
|
||||
- PyInt_AsLong -> PyLong_AsLong
|
||||
|
||||
The replacements are safe since the macros were already aliased to
|
||||
these exact functions in SWIG's Python 3 code path.
|
||||
|
||||
This is a backport of dtc commit 5008d1d6a356 ("pylibfdt: Replace
|
||||
removed SWIG Python 2 compatibility macros").
|
||||
|
||||
Signed-off-by: Jaipaul Cheernam <jaipaul.cheernam@est.tech>
|
||||
Reviewed-by: Jérémie Dautheribes <jeremie.dautheribes@bootlin.com>
|
||||
Tested-by: Jérémie Dautheribes <jeremie.dautheribes@bootlin.com>
|
||||
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
|
||||
Reviewed-by: Peter Robinson <pbrobinson@gmail.com>
|
||||
---
|
||||
scripts/dtc/pylibfdt/libfdt.i_shipped | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/scripts/dtc/pylibfdt/libfdt.i_shipped b/scripts/dtc/pylibfdt/libfdt.i_shipped
|
||||
index e4659489..326a15c7 100644
|
||||
--- a/scripts/dtc/pylibfdt/libfdt.i_shipped
|
||||
+++ b/scripts/dtc/pylibfdt/libfdt.i_shipped
|
||||
@@ -1033,7 +1033,7 @@ typedef uint32_t fdt32_t;
|
||||
PyObject *buff;
|
||||
|
||||
if ($1) {
|
||||
- resultobj = PyString_FromString(
|
||||
+ resultobj = PyUnicode_FromString(
|
||||
fdt_string(fdt1, fdt32_to_cpu($1->nameoff)));
|
||||
buff = PyByteArray_FromStringAndSize(
|
||||
(const char *)($1 + 1), fdt32_to_cpu($1->len));
|
||||
@@ -1064,13 +1064,13 @@ typedef uint32_t fdt32_t;
|
||||
}
|
||||
$1 = PyBytes_AsString($input);
|
||||
%#else
|
||||
- $1 = PyString_AsString($input); /* char *str */
|
||||
+ $1 = PyBytes_AsString($input); /* char *str */
|
||||
%#endif
|
||||
}
|
||||
|
||||
/* typemaps used for fdt_next_node() */
|
||||
%typemap(in, numinputs=1) int *depth (int depth) {
|
||||
- depth = (int) PyInt_AsLong($input);
|
||||
+ depth = (int) PyLong_AsLong($input);
|
||||
$1 = &depth;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
From: Marcelo Alcantara <maralc@gmail.com>
|
||||
Subject: [PATCH] apple: keep the console silent on Macs
|
||||
|
||||
Omarchy boots the Mac to a splash, not a terminal: with CONFIG_SILENT_CONSOLE
|
||||
the console is muted whenever the 'silent' variable is set, so the default
|
||||
environment sets it. Only U-Boot is silenced (CONFIG_SILENT_U_BOOT_ONLY);
|
||||
the kernel command line is untouched.
|
||||
---
|
||||
board/apple/mac/mac.env | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/board/apple/mac/mac.env b/board/apple/mac/mac.env
|
||||
--- a/board/apple/mac/mac.env
|
||||
+++ b/board/apple/mac/mac.env
|
||||
@@ -2,3 +2,4 @@ stdin=serial,usbkbd,spikbd,mtpkbd
|
||||
stdout=vidconsole,serial
|
||||
stderr=vidconsole,serial
|
||||
boot_targets=nvme usb
|
||||
+silent=1
|
||||
|
||||
The banner "U-Boot 2026.07 ..." is announced on the video console after
|
||||
relocation through console_puts_select(), which never looks at the silent
|
||||
flag; a silent console stays silent for the banner too.
|
||||
---
|
||||
common/console.c | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/common/console.c b/common/console.c
|
||||
--- a/common/console.c
|
||||
+++ b/common/console.c
|
||||
@@ -1022,6 +1022,9 @@ int console_announce_r(void)
|
||||
#if !CONFIG_IS_ENABLED(PRE_CONSOLE_BUFFER)
|
||||
char buf[DISPLAY_OPTIONS_BANNER_LENGTH];
|
||||
|
||||
+ if (IS_ENABLED(CONFIG_SILENT_CONSOLE) && (gd->flags & GD_FLG_SILENT))
|
||||
+ return 0;
|
||||
+
|
||||
display_options_get_banner(false, buf, sizeof(buf));
|
||||
|
||||
console_puts_select(stdout, false, buf);
|
||||
@@ -0,0 +1,32 @@
|
||||
From 72fd4fdb54721a31d2b4e9f95fdd3b3e398bb2c0 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Robinson <pbrobinson@gmail.com>
|
||||
Date: Sun, 12 Apr 2026 01:14:12 +0100
|
||||
Subject: [PATCH] board/raspberrypi: Add quirk for RPi5 2Gb rev 1.0
|
||||
|
||||
All 2Gb Raspberry Pi 5s use the BCM2712D0 silicon, but
|
||||
the early boards were still rev 1.0 so we need a quirk
|
||||
to ensure the correct device tree is used.
|
||||
|
||||
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
|
||||
---
|
||||
board/raspberrypi/rpi/rpi.c | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/board/raspberrypi/rpi/rpi.c b/board/raspberrypi/rpi/rpi.c
|
||||
index b0a1484c0fa..ff9cab6521b 100644
|
||||
--- a/board/raspberrypi/rpi/rpi.c
|
||||
+++ b/board/raspberrypi/rpi/rpi.c
|
||||
@@ -371,6 +371,10 @@ static void set_fdtfile(void)
|
||||
const char *fdtfile;
|
||||
int rev = revision & 0x0f;
|
||||
|
||||
+ /* 2GB Pi 5B board rev 1.0 always has BCM2712D0 silicon */
|
||||
+ if (revision == 0xb04170)
|
||||
+ rev = 1;
|
||||
+
|
||||
if (env_get("fdtfile"))
|
||||
return;
|
||||
|
||||
--
|
||||
2.53.0
|
||||
|
||||
@@ -0,0 +1,860 @@
|
||||
From a6909a16b4cc301f1007d9e75d02abb6d06a1ea7 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Robinson <pbrobinson@gmail.com>
|
||||
Date: Thu, 28 May 2026 21:29:29 +0100
|
||||
Subject: [PATCH] rockchip: Enable preboot start for pci/usb
|
||||
|
||||
Enable the preboot so nvme works OOTB
|
||||
|
||||
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
|
||||
---
|
||||
configs/anbernic-rgxx3-rk3566_defconfig | 2 ++
|
||||
configs/bpi-r2-pro-rk3568_defconfig | 2 ++
|
||||
configs/cm3588-nas-rk3588_defconfig | 2 ++
|
||||
configs/coolpi-4b-rk3588s_defconfig | 2 ++
|
||||
configs/coolpi-cm5-evb-rk3588_defconfig | 2 ++
|
||||
configs/evb-rk3568_defconfig | 2 ++
|
||||
configs/evb-rk3588_defconfig | 2 ++
|
||||
configs/firefly-rk3399_defconfig | 2 ++
|
||||
configs/generic-rk3568_defconfig | 2 ++
|
||||
configs/generic-rk3588_defconfig | 2 ++
|
||||
configs/jaguar-rk3588_defconfig | 2 ++
|
||||
configs/lubancat-2-rk3568_defconfig | 2 ++
|
||||
configs/nanopc-t4-rk3399_defconfig | 2 ++
|
||||
configs/nanopc-t6-rk3588_defconfig | 2 ++
|
||||
configs/nanopi-r5c-rk3568_defconfig | 2 ++
|
||||
configs/nanopi-r5s-rk3568_defconfig | 2 ++
|
||||
configs/nanopi-r6c-rk3588s_defconfig | 2 ++
|
||||
configs/nanopi-r6s-rk3588s_defconfig | 2 ++
|
||||
configs/neu6a-io-rk3588_defconfig | 2 ++
|
||||
configs/neu6b-io-rk3588_defconfig | 2 ++
|
||||
configs/nova-rk3588s_defconfig | 2 ++
|
||||
configs/odroid-m1-rk3568_defconfig | 2 ++
|
||||
configs/odroid-m1s-rk3566_defconfig | 2 ++
|
||||
configs/odroid-m2-rk3588s_defconfig | 2 ++
|
||||
configs/orangepi-3b-rk3566_defconfig | 2 ++
|
||||
configs/orangepi-5-max-rk3588_defconfig | 2 ++
|
||||
configs/orangepi-5-plus-rk3588_defconfig | 2 ++
|
||||
configs/orangepi-5-rk3588s_defconfig | 2 ++
|
||||
configs/orangepi-5-ultra-rk3588_defconfig | 2 ++
|
||||
configs/pinebook-pro-rk3399_defconfig | 1 +
|
||||
configs/pinetab2-rk3566_defconfig | 2 ++
|
||||
configs/powkiddy-x55-rk3566_defconfig | 2 ++
|
||||
configs/quartz64-a-rk3566_defconfig | 2 ++
|
||||
configs/quartz64-b-rk3566_defconfig | 4 ++++
|
||||
configs/quartzpro64-rk3588_defconfig | 2 ++
|
||||
configs/radxa-cm3-io-rk3566_defconfig | 2 ++
|
||||
configs/radxa-e25-rk3568_defconfig | 2 ++
|
||||
configs/radxa-zero-3-rk3566_defconfig | 2 ++
|
||||
configs/roc-pc-mezzanine-rk3399_defconfig | 2 ++
|
||||
configs/rock-3a-rk3568_defconfig | 2 ++
|
||||
configs/rock-3b-rk3568_defconfig | 2 ++
|
||||
configs/rock-3c-rk3566_defconfig | 2 ++
|
||||
configs/rock-4c-plus-rk3399_defconfig | 2 ++
|
||||
configs/rock-4se-rk3399_defconfig | 2 ++
|
||||
configs/rock-5-itx-rk3588_defconfig | 2 ++
|
||||
configs/rock-5c-rk3588s_defconfig | 2 ++
|
||||
configs/rock-pi-4-rk3399_defconfig | 2 ++
|
||||
configs/rock-pi-4c-rk3399_defconfig | 2 ++
|
||||
configs/rock-pi-n10-rk3399pro_defconfig | 2 ++
|
||||
configs/rock5a-rk3588s_defconfig | 2 ++
|
||||
configs/rock5b-rk3588_defconfig | 2 ++
|
||||
configs/rock960-rk3399_defconfig | 2 ++
|
||||
configs/rockpro64-rk3399_defconfig | 2 ++
|
||||
configs/sige7-rk3588_defconfig | 2 ++
|
||||
configs/soquartz-blade-rk3566_defconfig | 2 ++
|
||||
configs/soquartz-cm4-rk3566_defconfig | 2 ++
|
||||
configs/soquartz-model-a-rk3566_defconfig | 2 ++
|
||||
configs/tiger-rk3588_defconfig | 2 ++
|
||||
configs/toybrick-rk3588_defconfig | 2 ++
|
||||
configs/turing-rk1-rk3588_defconfig | 2 ++
|
||||
60 files changed, 121 insertions(+)
|
||||
|
||||
diff --git a/configs/anbernic-rgxx3-rk3566_defconfig b/configs/anbernic-rgxx3-rk3566_defconfig
|
||||
index 854de8b00a4..cd91f18ba80 100644
|
||||
--- a/configs/anbernic-rgxx3-rk3566_defconfig
|
||||
+++ b/configs/anbernic-rgxx3-rk3566_defconfig
|
||||
@@ -12,6 +12,8 @@ CONFIG_SYS_LOAD_ADDR=0xc00800
|
||||
CONFIG_DEBUG_UART_BASE=0xFE660000
|
||||
CONFIG_DEBUG_UART_CLOCK=24000000
|
||||
CONFIG_DEBUG_UART=y
|
||||
+CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="pci enum; usb start; nvme scan;"
|
||||
# CONFIG_EFI_LOADER is not set
|
||||
CONFIG_FIT=y
|
||||
CONFIG_FIT_VERBOSE=y
|
||||
diff --git a/configs/bpi-r2-pro-rk3568_defconfig b/configs/bpi-r2-pro-rk3568_defconfig
|
||||
index c5199a39448..603e07f2456 100644
|
||||
--- a/configs/bpi-r2-pro-rk3568_defconfig
|
||||
+++ b/configs/bpi-r2-pro-rk3568_defconfig
|
||||
@@ -9,6 +9,8 @@ CONFIG_SYS_LOAD_ADDR=0xc00800
|
||||
CONFIG_DEBUG_UART_BASE=0xFE660000
|
||||
CONFIG_DEBUG_UART_CLOCK=24000000
|
||||
CONFIG_DEBUG_UART=y
|
||||
+CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="pci enum; usb start; nvme scan;"
|
||||
CONFIG_FIT=y
|
||||
CONFIG_FIT_VERBOSE=y
|
||||
CONFIG_SPL_FIT_SIGNATURE=y
|
||||
diff --git a/configs/cm3588-nas-rk3588_defconfig b/configs/cm3588-nas-rk3588_defconfig
|
||||
index 5b5ef8d5ac1..53147d115dd 100644
|
||||
--- a/configs/cm3588-nas-rk3588_defconfig
|
||||
+++ b/configs/cm3588-nas-rk3588_defconfig
|
||||
@@ -12,6 +12,8 @@ CONFIG_DEBUG_UART_BASE=0xFEB50000
|
||||
CONFIG_DEBUG_UART_CLOCK=24000000
|
||||
CONFIG_PCI=y
|
||||
CONFIG_DEBUG_UART=y
|
||||
+CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="pci enum; usb start; nvme scan;"
|
||||
CONFIG_FIT=y
|
||||
CONFIG_FIT_VERBOSE=y
|
||||
CONFIG_SPL_FIT_SIGNATURE=y
|
||||
diff --git a/configs/coolpi-4b-rk3588s_defconfig b/configs/coolpi-4b-rk3588s_defconfig
|
||||
index e6772622403..75e0b373ce9 100644
|
||||
--- a/configs/coolpi-4b-rk3588s_defconfig
|
||||
+++ b/configs/coolpi-4b-rk3588s_defconfig
|
||||
@@ -17,6 +17,8 @@ CONFIG_SPL_SPI_FLASH_SUPPORT=y
|
||||
CONFIG_SPL_SPI=y
|
||||
CONFIG_PCI=y
|
||||
CONFIG_DEBUG_UART=y
|
||||
+CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="pci enum; usb start; nvme scan;"
|
||||
CONFIG_FIT=y
|
||||
CONFIG_FIT_VERBOSE=y
|
||||
CONFIG_SPL_FIT_SIGNATURE=y
|
||||
diff --git a/configs/coolpi-cm5-evb-rk3588_defconfig b/configs/coolpi-cm5-evb-rk3588_defconfig
|
||||
index 4326e116849..a005e4441d3 100644
|
||||
--- a/configs/coolpi-cm5-evb-rk3588_defconfig
|
||||
+++ b/configs/coolpi-cm5-evb-rk3588_defconfig
|
||||
@@ -17,6 +17,8 @@ CONFIG_SPL_SPI_FLASH_SUPPORT=y
|
||||
CONFIG_SPL_SPI=y
|
||||
CONFIG_PCI=y
|
||||
CONFIG_DEBUG_UART=y
|
||||
+CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="pci enum; usb start; nvme scan;"
|
||||
CONFIG_FIT=y
|
||||
CONFIG_FIT_VERBOSE=y
|
||||
CONFIG_SPL_FIT_SIGNATURE=y
|
||||
diff --git a/configs/evb-rk3568_defconfig b/configs/evb-rk3568_defconfig
|
||||
index 4a5a7454e10..7ec199a08af 100644
|
||||
--- a/configs/evb-rk3568_defconfig
|
||||
+++ b/configs/evb-rk3568_defconfig
|
||||
@@ -9,6 +9,8 @@ CONFIG_SYS_LOAD_ADDR=0xc00800
|
||||
CONFIG_DEBUG_UART_BASE=0xFE660000
|
||||
CONFIG_DEBUG_UART_CLOCK=24000000
|
||||
CONFIG_DEBUG_UART=y
|
||||
+CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="pci enum; usb start; nvme scan;"
|
||||
CONFIG_FIT=y
|
||||
CONFIG_FIT_VERBOSE=y
|
||||
CONFIG_SPL_FIT_SIGNATURE=y
|
||||
diff --git a/configs/evb-rk3588_defconfig b/configs/evb-rk3588_defconfig
|
||||
index c7f6256a626..cfa73c660e7 100644
|
||||
--- a/configs/evb-rk3588_defconfig
|
||||
+++ b/configs/evb-rk3588_defconfig
|
||||
@@ -10,6 +10,8 @@ CONFIG_SYS_LOAD_ADDR=0xc00800
|
||||
CONFIG_DEBUG_UART_BASE=0xFEB50000
|
||||
CONFIG_DEBUG_UART_CLOCK=24000000
|
||||
CONFIG_DEBUG_UART=y
|
||||
+CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="pci enum; usb start; nvme scan;"
|
||||
CONFIG_FIT=y
|
||||
CONFIG_FIT_VERBOSE=y
|
||||
CONFIG_SPL_FIT_SIGNATURE=y
|
||||
diff --git a/configs/firefly-rk3399_defconfig b/configs/firefly-rk3399_defconfig
|
||||
index 83b9de5feb9..2ba8f5029c3 100644
|
||||
--- a/configs/firefly-rk3399_defconfig
|
||||
+++ b/configs/firefly-rk3399_defconfig
|
||||
@@ -14,6 +14,8 @@ CONFIG_DEBUG_UART_BASE=0xFF1A0000
|
||||
CONFIG_DEBUG_UART_CLOCK=24000000
|
||||
CONFIG_PCI=y
|
||||
CONFIG_DEBUG_UART=y
|
||||
+CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="pci enum; usb start; nvme scan;"
|
||||
CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-firefly.dtb"
|
||||
CONFIG_DISPLAY_BOARDINFO_LATE=y
|
||||
CONFIG_SPL_MAX_SIZE=0x40000
|
||||
diff --git a/configs/generic-rk3568_defconfig b/configs/generic-rk3568_defconfig
|
||||
index a33c3af9255..20966793568 100644
|
||||
--- a/configs/generic-rk3568_defconfig
|
||||
+++ b/configs/generic-rk3568_defconfig
|
||||
@@ -14,6 +14,8 @@ CONFIG_DEBUG_UART_CLOCK=24000000
|
||||
CONFIG_SPL_SPI_FLASH_SUPPORT=y
|
||||
CONFIG_SPL_SPI=y
|
||||
CONFIG_DEBUG_UART=y
|
||||
+CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="pci enum; usb start; nvme scan;"
|
||||
CONFIG_FIT=y
|
||||
CONFIG_FIT_VERBOSE=y
|
||||
CONFIG_SPL_FIT_SIGNATURE=y
|
||||
diff --git a/configs/generic-rk3588_defconfig b/configs/generic-rk3588_defconfig
|
||||
index ac450e6d757..b5424ac9f16 100644
|
||||
--- a/configs/generic-rk3588_defconfig
|
||||
+++ b/configs/generic-rk3588_defconfig
|
||||
@@ -10,6 +10,8 @@ CONFIG_SYS_LOAD_ADDR=0xc00800
|
||||
CONFIG_DEBUG_UART_BASE=0xFEB50000
|
||||
CONFIG_DEBUG_UART_CLOCK=24000000
|
||||
CONFIG_DEBUG_UART=y
|
||||
+CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="pci enum; usb start; nvme scan;"
|
||||
CONFIG_FIT=y
|
||||
CONFIG_FIT_VERBOSE=y
|
||||
CONFIG_SPL_FIT_SIGNATURE=y
|
||||
diff --git a/configs/jaguar-rk3588_defconfig b/configs/jaguar-rk3588_defconfig
|
||||
index ed3883b4f9c..47dbd834f30 100644
|
||||
--- a/configs/jaguar-rk3588_defconfig
|
||||
+++ b/configs/jaguar-rk3588_defconfig
|
||||
@@ -16,6 +16,8 @@ CONFIG_DEBUG_UART_BASE=0xfeb50000
|
||||
CONFIG_DEBUG_UART_CLOCK=24000000
|
||||
CONFIG_PCI=y
|
||||
CONFIG_DEBUG_UART=y
|
||||
+CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="pci enum; usb start; nvme scan;"
|
||||
CONFIG_FIT=y
|
||||
CONFIG_FIT_VERBOSE=y
|
||||
CONFIG_SPL_FIT_SIGNATURE=y
|
||||
diff --git a/configs/lubancat-2-rk3568_defconfig b/configs/lubancat-2-rk3568_defconfig
|
||||
index 7548bf60b06..2fb8a432503 100644
|
||||
--- a/configs/lubancat-2-rk3568_defconfig
|
||||
+++ b/configs/lubancat-2-rk3568_defconfig
|
||||
@@ -9,6 +9,8 @@ CONFIG_SYS_LOAD_ADDR=0xc00800
|
||||
CONFIG_DEBUG_UART_BASE=0xFE660000
|
||||
CONFIG_DEBUG_UART_CLOCK=24000000
|
||||
CONFIG_DEBUG_UART=y
|
||||
+CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="pci enum; usb start; nvme scan;"
|
||||
CONFIG_EFI_VAR_BUF_SIZE=16384
|
||||
CONFIG_FIT=y
|
||||
CONFIG_FIT_VERBOSE=y
|
||||
diff --git a/configs/nanopc-t4-rk3399_defconfig b/configs/nanopc-t4-rk3399_defconfig
|
||||
index f8ae436a1ee..7aa8e1a8d42 100644
|
||||
--- a/configs/nanopc-t4-rk3399_defconfig
|
||||
+++ b/configs/nanopc-t4-rk3399_defconfig
|
||||
@@ -15,6 +15,8 @@ CONFIG_DEBUG_UART_BASE=0xFF1A0000
|
||||
CONFIG_DEBUG_UART_CLOCK=24000000
|
||||
CONFIG_PCI=y
|
||||
CONFIG_DEBUG_UART=y
|
||||
+CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="pci enum; usb start; nvme scan;"
|
||||
CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-nanopc-t4.dtb"
|
||||
CONFIG_DISPLAY_BOARDINFO_LATE=y
|
||||
CONFIG_SPL_MAX_SIZE=0x40000
|
||||
diff --git a/configs/nanopc-t6-rk3588_defconfig b/configs/nanopc-t6-rk3588_defconfig
|
||||
index ba9a5adece7..eaf7fa5a0fc 100644
|
||||
--- a/configs/nanopc-t6-rk3588_defconfig
|
||||
+++ b/configs/nanopc-t6-rk3588_defconfig
|
||||
@@ -18,6 +18,8 @@ CONFIG_SPL_SPI_FLASH_SUPPORT=y
|
||||
CONFIG_SPL_SPI=y
|
||||
CONFIG_PCI=y
|
||||
CONFIG_DEBUG_UART=y
|
||||
+CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="pci enum; usb start; nvme scan;"
|
||||
CONFIG_FIT=y
|
||||
CONFIG_FIT_VERBOSE=y
|
||||
CONFIG_SPL_FIT_SIGNATURE=y
|
||||
diff --git a/configs/nanopi-r5c-rk3568_defconfig b/configs/nanopi-r5c-rk3568_defconfig
|
||||
index e75a24dadc8..159ef033932 100644
|
||||
--- a/configs/nanopi-r5c-rk3568_defconfig
|
||||
+++ b/configs/nanopi-r5c-rk3568_defconfig
|
||||
@@ -11,6 +11,8 @@ CONFIG_DEBUG_UART_BASE=0xFE660000
|
||||
CONFIG_DEBUG_UART_CLOCK=24000000
|
||||
CONFIG_PCI=y
|
||||
CONFIG_DEBUG_UART=y
|
||||
+CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="usb start;"
|
||||
CONFIG_FIT=y
|
||||
CONFIG_FIT_VERBOSE=y
|
||||
CONFIG_SPL_FIT_SIGNATURE=y
|
||||
diff --git a/configs/nanopi-r5s-rk3568_defconfig b/configs/nanopi-r5s-rk3568_defconfig
|
||||
index c971f376b38..60b5e8fa014 100644
|
||||
--- a/configs/nanopi-r5s-rk3568_defconfig
|
||||
+++ b/configs/nanopi-r5s-rk3568_defconfig
|
||||
@@ -11,6 +11,8 @@ CONFIG_DEBUG_UART_BASE=0xFE660000
|
||||
CONFIG_DEBUG_UART_CLOCK=24000000
|
||||
CONFIG_PCI=y
|
||||
CONFIG_DEBUG_UART=y
|
||||
+CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="usb start;"
|
||||
CONFIG_FIT=y
|
||||
CONFIG_FIT_VERBOSE=y
|
||||
CONFIG_SPL_FIT_SIGNATURE=y
|
||||
diff --git a/configs/nanopi-r6c-rk3588s_defconfig b/configs/nanopi-r6c-rk3588s_defconfig
|
||||
index 861e3234d29..bb6e2082e3b 100644
|
||||
--- a/configs/nanopi-r6c-rk3588s_defconfig
|
||||
+++ b/configs/nanopi-r6c-rk3588s_defconfig
|
||||
@@ -12,6 +12,8 @@ CONFIG_DEBUG_UART_BASE=0xFEB50000
|
||||
CONFIG_DEBUG_UART_CLOCK=24000000
|
||||
CONFIG_PCI=y
|
||||
CONFIG_DEBUG_UART=y
|
||||
+CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="pci enum; usb start; nvme scan;"
|
||||
CONFIG_FIT=y
|
||||
CONFIG_FIT_VERBOSE=y
|
||||
CONFIG_SPL_FIT_SIGNATURE=y
|
||||
diff --git a/configs/nanopi-r6s-rk3588s_defconfig b/configs/nanopi-r6s-rk3588s_defconfig
|
||||
index 743dfca441b..903ec56ad6f 100644
|
||||
--- a/configs/nanopi-r6s-rk3588s_defconfig
|
||||
+++ b/configs/nanopi-r6s-rk3588s_defconfig
|
||||
@@ -12,6 +12,8 @@ CONFIG_DEBUG_UART_BASE=0xFEB50000
|
||||
CONFIG_DEBUG_UART_CLOCK=24000000
|
||||
CONFIG_PCI=y
|
||||
CONFIG_DEBUG_UART=y
|
||||
+CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="pci enum; usb start; nvme scan;"
|
||||
CONFIG_FIT=y
|
||||
CONFIG_FIT_VERBOSE=y
|
||||
CONFIG_SPL_FIT_SIGNATURE=y
|
||||
diff --git a/configs/neu6a-io-rk3588_defconfig b/configs/neu6a-io-rk3588_defconfig
|
||||
index 19f129e96f0..08ed699b01d 100644
|
||||
--- a/configs/neu6a-io-rk3588_defconfig
|
||||
+++ b/configs/neu6a-io-rk3588_defconfig
|
||||
@@ -10,6 +10,8 @@ CONFIG_SYS_LOAD_ADDR=0xc00800
|
||||
CONFIG_DEBUG_UART_BASE=0xFEB50000
|
||||
CONFIG_DEBUG_UART_CLOCK=24000000
|
||||
CONFIG_DEBUG_UART=y
|
||||
+CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="pci enum; usb start; nvme scan;"
|
||||
CONFIG_FIT=y
|
||||
CONFIG_FIT_VERBOSE=y
|
||||
CONFIG_SPL_FIT_SIGNATURE=y
|
||||
diff --git a/configs/neu6b-io-rk3588_defconfig b/configs/neu6b-io-rk3588_defconfig
|
||||
index 2cf5aeccf51..8cafd779a1c 100644
|
||||
--- a/configs/neu6b-io-rk3588_defconfig
|
||||
+++ b/configs/neu6b-io-rk3588_defconfig
|
||||
@@ -10,6 +10,8 @@ CONFIG_SYS_LOAD_ADDR=0xc00800
|
||||
CONFIG_DEBUG_UART_BASE=0xFEB50000
|
||||
CONFIG_DEBUG_UART_CLOCK=24000000
|
||||
CONFIG_DEBUG_UART=y
|
||||
+CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="pci enum; usb start; nvme scan;"
|
||||
CONFIG_FIT=y
|
||||
CONFIG_FIT_VERBOSE=y
|
||||
CONFIG_SPL_FIT_SIGNATURE=y
|
||||
diff --git a/configs/nova-rk3588s_defconfig b/configs/nova-rk3588s_defconfig
|
||||
index f7d7492ff46..5abb6ebbe18 100644
|
||||
--- a/configs/nova-rk3588s_defconfig
|
||||
+++ b/configs/nova-rk3588s_defconfig
|
||||
@@ -11,6 +11,8 @@ CONFIG_DEBUG_UART_BASE=0xFEB50000
|
||||
CONFIG_DEBUG_UART_CLOCK=24000000
|
||||
CONFIG_PCI=y
|
||||
CONFIG_DEBUG_UART=y
|
||||
+CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="pci enum; usb start; nvme scan;"
|
||||
CONFIG_FIT=y
|
||||
CONFIG_FIT_VERBOSE=y
|
||||
CONFIG_SPL_FIT_SIGNATURE=y
|
||||
diff --git a/configs/odroid-m1-rk3568_defconfig b/configs/odroid-m1-rk3568_defconfig
|
||||
index b00985b0405..19d7af53c7f 100644
|
||||
--- a/configs/odroid-m1-rk3568_defconfig
|
||||
+++ b/configs/odroid-m1-rk3568_defconfig
|
||||
@@ -17,6 +17,8 @@ CONFIG_SPL_SPI_FLASH_SUPPORT=y
|
||||
CONFIG_SPL_SPI=y
|
||||
CONFIG_PCI=y
|
||||
CONFIG_DEBUG_UART=y
|
||||
+CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="pci enum; usb start; nvme scan;"
|
||||
CONFIG_FIT=y
|
||||
CONFIG_FIT_VERBOSE=y
|
||||
CONFIG_SPL_FIT_SIGNATURE=y
|
||||
diff --git a/configs/odroid-m1s-rk3566_defconfig b/configs/odroid-m1s-rk3566_defconfig
|
||||
index d59882a2a59..20f6dc3c26e 100644
|
||||
--- a/configs/odroid-m1s-rk3566_defconfig
|
||||
+++ b/configs/odroid-m1s-rk3566_defconfig
|
||||
@@ -11,6 +11,8 @@ CONFIG_DEBUG_UART_BASE=0xFE660000
|
||||
CONFIG_DEBUG_UART_CLOCK=24000000
|
||||
CONFIG_PCI=y
|
||||
CONFIG_DEBUG_UART=y
|
||||
+CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="pci enum; usb start; nvme scan;"
|
||||
CONFIG_FIT=y
|
||||
CONFIG_FIT_VERBOSE=y
|
||||
CONFIG_SPL_FIT_SIGNATURE=y
|
||||
diff --git a/configs/odroid-m2-rk3588s_defconfig b/configs/odroid-m2-rk3588s_defconfig
|
||||
index e71e61ddb0b..561c2b28b7a 100644
|
||||
--- a/configs/odroid-m2-rk3588s_defconfig
|
||||
+++ b/configs/odroid-m2-rk3588s_defconfig
|
||||
@@ -11,6 +11,8 @@ CONFIG_DEBUG_UART_BASE=0xFEB50000
|
||||
CONFIG_DEBUG_UART_CLOCK=24000000
|
||||
CONFIG_PCI=y
|
||||
CONFIG_DEBUG_UART=y
|
||||
+CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="pci enum; usb start; nvme scan;"
|
||||
CONFIG_FIT=y
|
||||
CONFIG_FIT_VERBOSE=y
|
||||
CONFIG_SPL_FIT_SIGNATURE=y
|
||||
diff --git a/configs/orangepi-3b-rk3566_defconfig b/configs/orangepi-3b-rk3566_defconfig
|
||||
index 1cd78789fa1..dcf182231da 100644
|
||||
--- a/configs/orangepi-3b-rk3566_defconfig
|
||||
+++ b/configs/orangepi-3b-rk3566_defconfig
|
||||
@@ -18,6 +18,8 @@ CONFIG_SPL_SPI_FLASH_SUPPORT=y
|
||||
CONFIG_SPL_SPI=y
|
||||
CONFIG_PCI=y
|
||||
CONFIG_DEBUG_UART=y
|
||||
+CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="pci enum; usb start; nvme scan;"
|
||||
CONFIG_FIT=y
|
||||
CONFIG_FIT_VERBOSE=y
|
||||
CONFIG_SPL_FIT_SIGNATURE=y
|
||||
diff --git a/configs/orangepi-5-max-rk3588_defconfig b/configs/orangepi-5-max-rk3588_defconfig
|
||||
index 0861df962cf..744aad89c4a 100644
|
||||
--- a/configs/orangepi-5-max-rk3588_defconfig
|
||||
+++ b/configs/orangepi-5-max-rk3588_defconfig
|
||||
@@ -18,6 +18,8 @@ CONFIG_SPL_SPI_FLASH_SUPPORT=y
|
||||
CONFIG_SPL_SPI=y
|
||||
CONFIG_PCI=y
|
||||
CONFIG_DEBUG_UART=y
|
||||
+CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="pci enum; usb start; nvme scan;"
|
||||
CONFIG_FIT=y
|
||||
CONFIG_FIT_VERBOSE=y
|
||||
CONFIG_SPL_FIT_SIGNATURE=y
|
||||
diff --git a/configs/orangepi-5-plus-rk3588_defconfig b/configs/orangepi-5-plus-rk3588_defconfig
|
||||
index 52523f87aec..e3bb4e43da9 100644
|
||||
--- a/configs/orangepi-5-plus-rk3588_defconfig
|
||||
+++ b/configs/orangepi-5-plus-rk3588_defconfig
|
||||
@@ -18,6 +18,8 @@ CONFIG_SPL_SPI_FLASH_SUPPORT=y
|
||||
CONFIG_SPL_SPI=y
|
||||
CONFIG_PCI=y
|
||||
CONFIG_DEBUG_UART=y
|
||||
+CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="pci enum; usb start; nvme scan;"
|
||||
CONFIG_FIT=y
|
||||
CONFIG_FIT_VERBOSE=y
|
||||
CONFIG_SPL_FIT_SIGNATURE=y
|
||||
diff --git a/configs/orangepi-5-rk3588s_defconfig b/configs/orangepi-5-rk3588s_defconfig
|
||||
index e0eba389289..33fe68add7b 100644
|
||||
--- a/configs/orangepi-5-rk3588s_defconfig
|
||||
+++ b/configs/orangepi-5-rk3588s_defconfig
|
||||
@@ -17,6 +17,8 @@ CONFIG_SPL_SPI_FLASH_SUPPORT=y
|
||||
CONFIG_SPL_SPI=y
|
||||
CONFIG_PCI=y
|
||||
CONFIG_DEBUG_UART=y
|
||||
+CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="pci enum; usb start; nvme scan;"
|
||||
CONFIG_FIT=y
|
||||
CONFIG_FIT_VERBOSE=y
|
||||
CONFIG_SPL_FIT_SIGNATURE=y
|
||||
diff --git a/configs/orangepi-5-ultra-rk3588_defconfig b/configs/orangepi-5-ultra-rk3588_defconfig
|
||||
index fb7f4432983..62419609695 100644
|
||||
--- a/configs/orangepi-5-ultra-rk3588_defconfig
|
||||
+++ b/configs/orangepi-5-ultra-rk3588_defconfig
|
||||
@@ -18,6 +18,8 @@ CONFIG_SPL_SPI_FLASH_SUPPORT=y
|
||||
CONFIG_SPL_SPI=y
|
||||
CONFIG_PCI=y
|
||||
CONFIG_DEBUG_UART=y
|
||||
+CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="pci enum; usb start; nvme scan;"
|
||||
CONFIG_FIT=y
|
||||
CONFIG_FIT_VERBOSE=y
|
||||
CONFIG_SPL_FIT_SIGNATURE=y
|
||||
diff --git a/configs/pinebook-pro-rk3399_defconfig b/configs/pinebook-pro-rk3399_defconfig
|
||||
index cbf95b4692f..9e4d1b1061d 100644
|
||||
--- a/configs/pinebook-pro-rk3399_defconfig
|
||||
+++ b/configs/pinebook-pro-rk3399_defconfig
|
||||
@@ -22,6 +22,7 @@ CONFIG_PCI=y
|
||||
CONFIG_DEBUG_UART=y
|
||||
CONFIG_BOOTDELAY=3
|
||||
CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="pci enum; usb start; nvme scan;"
|
||||
CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-pinebook-pro.dtb"
|
||||
CONFIG_DISPLAY_BOARDINFO_LATE=y
|
||||
CONFIG_SPL_MAX_SIZE=0x40000
|
||||
diff --git a/configs/pinetab2-rk3566_defconfig b/configs/pinetab2-rk3566_defconfig
|
||||
index f284dadb99d..d87849f0a45 100644
|
||||
--- a/configs/pinetab2-rk3566_defconfig
|
||||
+++ b/configs/pinetab2-rk3566_defconfig
|
||||
@@ -18,6 +18,8 @@ CONFIG_DEBUG_UART_CLOCK=24000000
|
||||
CONFIG_SPL_SPI_FLASH_SUPPORT=y
|
||||
CONFIG_SPL_SPI=y
|
||||
CONFIG_DEBUG_UART=y
|
||||
+CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="pci enum; usb start; nvme scan;"
|
||||
CONFIG_FIT=y
|
||||
CONFIG_FIT_VERBOSE=y
|
||||
CONFIG_SPL_FIT_SIGNATURE=y
|
||||
diff --git a/configs/powkiddy-x55-rk3566_defconfig b/configs/powkiddy-x55-rk3566_defconfig
|
||||
index 37a359c91a9..70bc5ab6402 100644
|
||||
--- a/configs/powkiddy-x55-rk3566_defconfig
|
||||
+++ b/configs/powkiddy-x55-rk3566_defconfig
|
||||
@@ -9,6 +9,8 @@ CONFIG_SYS_LOAD_ADDR=0xc00800
|
||||
CONFIG_DEBUG_UART_BASE=0xFE660000
|
||||
CONFIG_DEBUG_UART_CLOCK=24000000
|
||||
CONFIG_DEBUG_UART=y
|
||||
+CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="pci enum; usb start; nvme scan;"
|
||||
CONFIG_FIT=y
|
||||
CONFIG_FIT_VERBOSE=y
|
||||
CONFIG_SPL_FIT_SIGNATURE=y
|
||||
diff --git a/configs/quartz64-a-rk3566_defconfig b/configs/quartz64-a-rk3566_defconfig
|
||||
index 780fd581f0a..7938b5c0d1b 100644
|
||||
--- a/configs/quartz64-a-rk3566_defconfig
|
||||
+++ b/configs/quartz64-a-rk3566_defconfig
|
||||
@@ -18,6 +18,8 @@ CONFIG_SPL_SPI_FLASH_SUPPORT=y
|
||||
CONFIG_SPL_SPI=y
|
||||
CONFIG_PCI=y
|
||||
CONFIG_DEBUG_UART=y
|
||||
+CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="pci enum; usb start; nvme scan;"
|
||||
CONFIG_FIT=y
|
||||
CONFIG_FIT_VERBOSE=y
|
||||
CONFIG_SPL_FIT_SIGNATURE=y
|
||||
diff --git a/configs/quartz64-b-rk3566_defconfig b/configs/quartz64-b-rk3566_defconfig
|
||||
index 4d92a67cd73..fe8a168373d 100644
|
||||
--- a/configs/quartz64-b-rk3566_defconfig
|
||||
+++ b/configs/quartz64-b-rk3566_defconfig
|
||||
@@ -1,4 +1,6 @@
|
||||
CONFIG_ARM=y
|
||||
+CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="pci enum; usb start; nvme scan;"
|
||||
CONFIG_SKIP_LOWLEVEL_INIT=y
|
||||
CONFIG_COUNTER_FREQUENCY=24000000
|
||||
CONFIG_ARCH_ROCKCHIP=y
|
||||
@@ -17,6 +19,8 @@ CONFIG_SPL_SPI_FLASH_SUPPORT=y
|
||||
CONFIG_SPL_SPI=y
|
||||
CONFIG_PCI=y
|
||||
CONFIG_DEBUG_UART=y
|
||||
+CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="pci enum; usb start; nvme scan;"
|
||||
CONFIG_FIT=y
|
||||
CONFIG_FIT_VERBOSE=y
|
||||
CONFIG_SPL_FIT_SIGNATURE=y
|
||||
diff --git a/configs/quartzpro64-rk3588_defconfig b/configs/quartzpro64-rk3588_defconfig
|
||||
index 0ad74e8bbef..b9cbddfae77 100644
|
||||
--- a/configs/quartzpro64-rk3588_defconfig
|
||||
+++ b/configs/quartzpro64-rk3588_defconfig
|
||||
@@ -12,6 +12,8 @@ CONFIG_DEBUG_UART_BASE=0xFEB50000
|
||||
CONFIG_DEBUG_UART_CLOCK=24000000
|
||||
CONFIG_PCI=y
|
||||
CONFIG_DEBUG_UART=y
|
||||
+CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="pci enum; usb start; nvme scan;"
|
||||
CONFIG_FIT=y
|
||||
CONFIG_FIT_VERBOSE=y
|
||||
CONFIG_SPL_FIT_SIGNATURE=y
|
||||
diff --git a/configs/radxa-cm3-io-rk3566_defconfig b/configs/radxa-cm3-io-rk3566_defconfig
|
||||
index 875f0b76fa5..2523dccd6a3 100644
|
||||
--- a/configs/radxa-cm3-io-rk3566_defconfig
|
||||
+++ b/configs/radxa-cm3-io-rk3566_defconfig
|
||||
@@ -9,6 +9,8 @@ CONFIG_SYS_LOAD_ADDR=0xc00800
|
||||
CONFIG_DEBUG_UART_BASE=0xFE660000
|
||||
CONFIG_DEBUG_UART_CLOCK=24000000
|
||||
CONFIG_DEBUG_UART=y
|
||||
+CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="pci enum; usb start; nvme scan;"
|
||||
CONFIG_FIT=y
|
||||
CONFIG_FIT_VERBOSE=y
|
||||
CONFIG_SPL_FIT_SIGNATURE=y
|
||||
diff --git a/configs/radxa-e25-rk3568_defconfig b/configs/radxa-e25-rk3568_defconfig
|
||||
index 779d540e22d..7e003e74520 100644
|
||||
--- a/configs/radxa-e25-rk3568_defconfig
|
||||
+++ b/configs/radxa-e25-rk3568_defconfig
|
||||
@@ -11,6 +11,8 @@ CONFIG_DEBUG_UART_BASE=0xFE660000
|
||||
CONFIG_DEBUG_UART_CLOCK=24000000
|
||||
CONFIG_PCI=y
|
||||
CONFIG_DEBUG_UART=y
|
||||
+CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="pci enum; usb start; nvme scan;"
|
||||
CONFIG_FIT=y
|
||||
CONFIG_FIT_VERBOSE=y
|
||||
CONFIG_SPL_FIT_SIGNATURE=y
|
||||
diff --git a/configs/radxa-zero-3-rk3566_defconfig b/configs/radxa-zero-3-rk3566_defconfig
|
||||
index f5cf09a5e4a..7db7e3fcd3d 100644
|
||||
--- a/configs/radxa-zero-3-rk3566_defconfig
|
||||
+++ b/configs/radxa-zero-3-rk3566_defconfig
|
||||
@@ -11,6 +11,8 @@ CONFIG_SYS_LOAD_ADDR=0xc00800
|
||||
CONFIG_DEBUG_UART_BASE=0xFE660000
|
||||
CONFIG_DEBUG_UART_CLOCK=24000000
|
||||
CONFIG_DEBUG_UART=y
|
||||
+CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="pci enum; usb start; nvme scan;"
|
||||
CONFIG_FIT=y
|
||||
CONFIG_FIT_VERBOSE=y
|
||||
CONFIG_SPL_FIT_SIGNATURE=y
|
||||
diff --git a/configs/roc-pc-mezzanine-rk3399_defconfig b/configs/roc-pc-mezzanine-rk3399_defconfig
|
||||
index 8b4d8c1b0aa..54baa07aeae 100644
|
||||
--- a/configs/roc-pc-mezzanine-rk3399_defconfig
|
||||
+++ b/configs/roc-pc-mezzanine-rk3399_defconfig
|
||||
@@ -21,6 +21,8 @@ CONFIG_SPL_SPI_FLASH_SUPPORT=y
|
||||
CONFIG_SPL_SPI=y
|
||||
CONFIG_PCI=y
|
||||
CONFIG_DEBUG_UART=y
|
||||
+CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="pci enum; usb start; nvme scan;"
|
||||
# CONFIG_ANDROID_BOOT_IMAGE is not set
|
||||
CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-roc-pc-mezzanine.dtb"
|
||||
CONFIG_DISPLAY_BOARDINFO_LATE=y
|
||||
diff --git a/configs/rock-3a-rk3568_defconfig b/configs/rock-3a-rk3568_defconfig
|
||||
index e753185610f..19d303e7f70 100644
|
||||
--- a/configs/rock-3a-rk3568_defconfig
|
||||
+++ b/configs/rock-3a-rk3568_defconfig
|
||||
@@ -16,6 +16,8 @@ CONFIG_SPL_SPI_FLASH_SUPPORT=y
|
||||
CONFIG_SPL_SPI=y
|
||||
CONFIG_PCI=y
|
||||
CONFIG_DEBUG_UART=y
|
||||
+CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="pci enum; usb start; nvme scan;"
|
||||
CONFIG_FIT=y
|
||||
CONFIG_FIT_VERBOSE=y
|
||||
CONFIG_SPL_FIT_SIGNATURE=y
|
||||
diff --git a/configs/rock-3b-rk3568_defconfig b/configs/rock-3b-rk3568_defconfig
|
||||
index c3bf48b9e34..0cfa8eba168 100644
|
||||
--- a/configs/rock-3b-rk3568_defconfig
|
||||
+++ b/configs/rock-3b-rk3568_defconfig
|
||||
@@ -16,6 +16,8 @@ CONFIG_SPL_SPI_FLASH_SUPPORT=y
|
||||
CONFIG_SPL_SPI=y
|
||||
CONFIG_PCI=y
|
||||
CONFIG_DEBUG_UART=y
|
||||
+CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="pci enum; usb start; nvme scan;"
|
||||
CONFIG_FIT=y
|
||||
CONFIG_FIT_VERBOSE=y
|
||||
CONFIG_SPL_FIT_SIGNATURE=y
|
||||
diff --git a/configs/rock-3c-rk3566_defconfig b/configs/rock-3c-rk3566_defconfig
|
||||
index 417aa33a663..61d0e1b8c6a 100644
|
||||
--- a/configs/rock-3c-rk3566_defconfig
|
||||
+++ b/configs/rock-3c-rk3566_defconfig
|
||||
@@ -16,6 +16,8 @@ CONFIG_SPL_SPI_FLASH_SUPPORT=y
|
||||
CONFIG_SPL_SPI=y
|
||||
CONFIG_PCI=y
|
||||
CONFIG_DEBUG_UART=y
|
||||
+CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="pci enum; usb start; nvme scan;"
|
||||
CONFIG_FIT=y
|
||||
CONFIG_FIT_VERBOSE=y
|
||||
CONFIG_SPL_FIT_SIGNATURE=y
|
||||
diff --git a/configs/rock-4c-plus-rk3399_defconfig b/configs/rock-4c-plus-rk3399_defconfig
|
||||
index 0f6bdfdfb06..f31cb061a83 100644
|
||||
--- a/configs/rock-4c-plus-rk3399_defconfig
|
||||
+++ b/configs/rock-4c-plus-rk3399_defconfig
|
||||
@@ -17,6 +17,8 @@ CONFIG_DEBUG_UART_CLOCK=24000000
|
||||
CONFIG_SPL_SPI_FLASH_SUPPORT=y
|
||||
CONFIG_SPL_SPI=y
|
||||
CONFIG_DEBUG_UART=y
|
||||
+CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="pci enum; usb start; nvme scan;"
|
||||
CONFIG_EFI_CAPSULE_ON_DISK=y
|
||||
CONFIG_EFI_CAPSULE_FIRMWARE_RAW=y
|
||||
# CONFIG_ANDROID_BOOT_IMAGE is not set
|
||||
diff --git a/configs/rock-4se-rk3399_defconfig b/configs/rock-4se-rk3399_defconfig
|
||||
index 7f22aede912..caf8e02bece 100644
|
||||
--- a/configs/rock-4se-rk3399_defconfig
|
||||
+++ b/configs/rock-4se-rk3399_defconfig
|
||||
@@ -18,6 +18,8 @@ CONFIG_SPL_SPI_FLASH_SUPPORT=y
|
||||
CONFIG_SPL_SPI=y
|
||||
CONFIG_PCI=y
|
||||
CONFIG_DEBUG_UART=y
|
||||
+CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="pci enum; usb start; nvme scan;"
|
||||
CONFIG_EFI_CAPSULE_ON_DISK=y
|
||||
CONFIG_EFI_CAPSULE_FIRMWARE_RAW=y
|
||||
# CONFIG_ANDROID_BOOT_IMAGE is not set
|
||||
diff --git a/configs/rock-5-itx-rk3588_defconfig b/configs/rock-5-itx-rk3588_defconfig
|
||||
index cb014de4188..e26a126533c 100644
|
||||
--- a/configs/rock-5-itx-rk3588_defconfig
|
||||
+++ b/configs/rock-5-itx-rk3588_defconfig
|
||||
@@ -18,6 +18,8 @@ CONFIG_SPL_SPI_FLASH_SUPPORT=y
|
||||
CONFIG_SPL_SPI=y
|
||||
CONFIG_PCI=y
|
||||
CONFIG_DEBUG_UART=y
|
||||
+CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="pci enum; usb start; nvme scan;"
|
||||
CONFIG_FIT=y
|
||||
CONFIG_FIT_VERBOSE=y
|
||||
CONFIG_SPL_FIT_SIGNATURE=y
|
||||
diff --git a/configs/rock-5c-rk3588s_defconfig b/configs/rock-5c-rk3588s_defconfig
|
||||
index 3d044a81498..27234c250d1 100644
|
||||
--- a/configs/rock-5c-rk3588s_defconfig
|
||||
+++ b/configs/rock-5c-rk3588s_defconfig
|
||||
@@ -12,6 +12,8 @@ CONFIG_DEBUG_UART_BASE=0xFEB50000
|
||||
CONFIG_DEBUG_UART_CLOCK=24000000
|
||||
CONFIG_PCI=y
|
||||
CONFIG_DEBUG_UART=y
|
||||
+CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="pci enum; usb start; nvme scan;"
|
||||
CONFIG_FIT=y
|
||||
CONFIG_FIT_VERBOSE=y
|
||||
CONFIG_SPL_FIT_SIGNATURE=y
|
||||
diff --git a/configs/rock-pi-4-rk3399_defconfig b/configs/rock-pi-4-rk3399_defconfig
|
||||
index e5c9072c27f..35852c017da 100644
|
||||
--- a/configs/rock-pi-4-rk3399_defconfig
|
||||
+++ b/configs/rock-pi-4-rk3399_defconfig
|
||||
@@ -18,6 +18,8 @@ CONFIG_SPL_SPI_FLASH_SUPPORT=y
|
||||
CONFIG_SPL_SPI=y
|
||||
CONFIG_PCI=y
|
||||
CONFIG_DEBUG_UART=y
|
||||
+CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="pci enum; usb start; nvme scan;"
|
||||
CONFIG_EFI_CAPSULE_ON_DISK=y
|
||||
CONFIG_EFI_CAPSULE_FIRMWARE_RAW=y
|
||||
# CONFIG_ANDROID_BOOT_IMAGE is not set
|
||||
diff --git a/configs/rock-pi-4c-rk3399_defconfig b/configs/rock-pi-4c-rk3399_defconfig
|
||||
index 4be7b0f8130..eeee446a5bd 100644
|
||||
--- a/configs/rock-pi-4c-rk3399_defconfig
|
||||
+++ b/configs/rock-pi-4c-rk3399_defconfig
|
||||
@@ -18,6 +18,8 @@ CONFIG_SPL_SPI_FLASH_SUPPORT=y
|
||||
CONFIG_SPL_SPI=y
|
||||
CONFIG_PCI=y
|
||||
CONFIG_DEBUG_UART=y
|
||||
+CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="pci enum; usb start; nvme scan;"
|
||||
CONFIG_EFI_CAPSULE_ON_DISK=y
|
||||
CONFIG_EFI_CAPSULE_FIRMWARE_RAW=y
|
||||
# CONFIG_ANDROID_BOOT_IMAGE is not set
|
||||
diff --git a/configs/rock-pi-n10-rk3399pro_defconfig b/configs/rock-pi-n10-rk3399pro_defconfig
|
||||
index 602a723ea7d..3dcc2932ae3 100644
|
||||
--- a/configs/rock-pi-n10-rk3399pro_defconfig
|
||||
+++ b/configs/rock-pi-n10-rk3399pro_defconfig
|
||||
@@ -13,6 +13,8 @@ CONFIG_DEBUG_UART_BASE=0xFF1A0000
|
||||
CONFIG_DEBUG_UART_CLOCK=24000000
|
||||
CONFIG_PCI=y
|
||||
CONFIG_DEBUG_UART=y
|
||||
+CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="pci enum; usb start; nvme scan;"
|
||||
# CONFIG_ANDROID_BOOT_IMAGE is not set
|
||||
CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399pro-rock-pi-n10.dtb"
|
||||
# CONFIG_CONSOLE_MUX is not set
|
||||
diff --git a/configs/rock5a-rk3588s_defconfig b/configs/rock5a-rk3588s_defconfig
|
||||
index 24b2eef35f2..c5830054921 100644
|
||||
--- a/configs/rock5a-rk3588s_defconfig
|
||||
+++ b/configs/rock5a-rk3588s_defconfig
|
||||
@@ -10,6 +10,8 @@ CONFIG_SYS_LOAD_ADDR=0xc00800
|
||||
CONFIG_DEBUG_UART_BASE=0xFEB50000
|
||||
CONFIG_DEBUG_UART_CLOCK=24000000
|
||||
CONFIG_DEBUG_UART=y
|
||||
+CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="pci enum; usb start; nvme scan;"
|
||||
CONFIG_FIT=y
|
||||
CONFIG_FIT_VERBOSE=y
|
||||
CONFIG_SPL_FIT_SIGNATURE=y
|
||||
diff --git a/configs/rock5b-rk3588_defconfig b/configs/rock5b-rk3588_defconfig
|
||||
index da5fb3a2c30..053346fc035 100644
|
||||
--- a/configs/rock5b-rk3588_defconfig
|
||||
+++ b/configs/rock5b-rk3588_defconfig
|
||||
@@ -18,6 +18,8 @@ CONFIG_SPL_SPI_FLASH_SUPPORT=y
|
||||
CONFIG_SPL_SPI=y
|
||||
CONFIG_PCI=y
|
||||
CONFIG_DEBUG_UART=y
|
||||
+CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="pci enum; usb start; nvme scan;"
|
||||
CONFIG_FIT=y
|
||||
CONFIG_FIT_VERBOSE=y
|
||||
CONFIG_SPL_FIT_SIGNATURE=y
|
||||
diff --git a/configs/rock960-rk3399_defconfig b/configs/rock960-rk3399_defconfig
|
||||
index db121f03ae6..e55f1b6a034 100644
|
||||
--- a/configs/rock960-rk3399_defconfig
|
||||
+++ b/configs/rock960-rk3399_defconfig
|
||||
@@ -12,6 +12,8 @@ CONFIG_DEBUG_UART_BASE=0xFF1A0000
|
||||
CONFIG_DEBUG_UART_CLOCK=24000000
|
||||
CONFIG_PCI=y
|
||||
CONFIG_DEBUG_UART=y
|
||||
+CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="pci enum; usb start; nvme scan;"
|
||||
CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-rock960.dtb"
|
||||
CONFIG_SYS_PBSIZE=1052
|
||||
CONFIG_DISPLAY_BOARDINFO_LATE=y
|
||||
diff --git a/configs/rockpro64-rk3399_defconfig b/configs/rockpro64-rk3399_defconfig
|
||||
index 1d2bff35fc0..ea8e90b9f6a 100644
|
||||
--- a/configs/rockpro64-rk3399_defconfig
|
||||
+++ b/configs/rockpro64-rk3399_defconfig
|
||||
@@ -20,6 +20,8 @@ CONFIG_SPL_SPI_FLASH_SUPPORT=y
|
||||
CONFIG_SPL_SPI=y
|
||||
CONFIG_PCI=y
|
||||
CONFIG_DEBUG_UART=y
|
||||
+CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="pci enum; usb start; nvme scan;"
|
||||
CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-rockpro64.dtb"
|
||||
CONFIG_DISPLAY_BOARDINFO_LATE=y
|
||||
CONFIG_SPL_MAX_SIZE=0x40000
|
||||
diff --git a/configs/sige7-rk3588_defconfig b/configs/sige7-rk3588_defconfig
|
||||
index 00b9759715b..1b837bd554c 100644
|
||||
--- a/configs/sige7-rk3588_defconfig
|
||||
+++ b/configs/sige7-rk3588_defconfig
|
||||
@@ -13,6 +13,8 @@ CONFIG_DEBUG_UART_CLOCK=24000000
|
||||
CONFIG_SPL_SPI=y
|
||||
CONFIG_PCI=y
|
||||
CONFIG_DEBUG_UART=y
|
||||
+CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="pci enum; usb start; nvme scan;"
|
||||
CONFIG_FIT=y
|
||||
CONFIG_FIT_VERBOSE=y
|
||||
CONFIG_SPL_FIT_SIGNATURE=y
|
||||
diff --git a/configs/soquartz-blade-rk3566_defconfig b/configs/soquartz-blade-rk3566_defconfig
|
||||
index 7de159a8881..4137f0459b5 100644
|
||||
--- a/configs/soquartz-blade-rk3566_defconfig
|
||||
+++ b/configs/soquartz-blade-rk3566_defconfig
|
||||
@@ -11,6 +11,8 @@ CONFIG_DEBUG_UART_BASE=0xFE660000
|
||||
CONFIG_DEBUG_UART_CLOCK=24000000
|
||||
CONFIG_PCI=y
|
||||
CONFIG_DEBUG_UART=y
|
||||
+CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="pci enum; usb start; nvme scan;"
|
||||
CONFIG_FIT=y
|
||||
CONFIG_FIT_VERBOSE=y
|
||||
CONFIG_SPL_FIT_SIGNATURE=y
|
||||
diff --git a/configs/soquartz-cm4-rk3566_defconfig b/configs/soquartz-cm4-rk3566_defconfig
|
||||
index 4455ee5b5aa..ad63ba0204f 100644
|
||||
--- a/configs/soquartz-cm4-rk3566_defconfig
|
||||
+++ b/configs/soquartz-cm4-rk3566_defconfig
|
||||
@@ -11,6 +11,8 @@ CONFIG_DEBUG_UART_BASE=0xFE660000
|
||||
CONFIG_DEBUG_UART_CLOCK=24000000
|
||||
CONFIG_PCI=y
|
||||
CONFIG_DEBUG_UART=y
|
||||
+CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="pci enum; usb start; nvme scan;"
|
||||
CONFIG_FIT=y
|
||||
CONFIG_FIT_VERBOSE=y
|
||||
CONFIG_SPL_FIT_SIGNATURE=y
|
||||
diff --git a/configs/soquartz-model-a-rk3566_defconfig b/configs/soquartz-model-a-rk3566_defconfig
|
||||
index abdab514496..9e01345bdaa 100644
|
||||
--- a/configs/soquartz-model-a-rk3566_defconfig
|
||||
+++ b/configs/soquartz-model-a-rk3566_defconfig
|
||||
@@ -11,6 +11,8 @@ CONFIG_DEBUG_UART_BASE=0xFE660000
|
||||
CONFIG_DEBUG_UART_CLOCK=24000000
|
||||
CONFIG_PCI=y
|
||||
CONFIG_DEBUG_UART=y
|
||||
+CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="pci enum; usb start; nvme scan;"
|
||||
CONFIG_FIT=y
|
||||
CONFIG_FIT_VERBOSE=y
|
||||
CONFIG_SPL_FIT_SIGNATURE=y
|
||||
diff --git a/configs/tiger-rk3588_defconfig b/configs/tiger-rk3588_defconfig
|
||||
index 105e8e10e0b..bcc2ae302a5 100644
|
||||
--- a/configs/tiger-rk3588_defconfig
|
||||
+++ b/configs/tiger-rk3588_defconfig
|
||||
@@ -17,6 +17,8 @@ CONFIG_DEBUG_UART_CLOCK=24000000
|
||||
# CONFIG_DEBUG_UART_BOARD_INIT is not set
|
||||
CONFIG_PCI=y
|
||||
CONFIG_DEBUG_UART=y
|
||||
+CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="pci enum; usb start; nvme scan;"
|
||||
CONFIG_FIT=y
|
||||
CONFIG_FIT_VERBOSE=y
|
||||
CONFIG_SPL_FIT_SIGNATURE=y
|
||||
diff --git a/configs/toybrick-rk3588_defconfig b/configs/toybrick-rk3588_defconfig
|
||||
index 14b231ae3e2..7af393731cd 100644
|
||||
--- a/configs/toybrick-rk3588_defconfig
|
||||
+++ b/configs/toybrick-rk3588_defconfig
|
||||
@@ -10,6 +10,8 @@ CONFIG_SYS_LOAD_ADDR=0xc00800
|
||||
CONFIG_DEBUG_UART_BASE=0xFEB50000
|
||||
CONFIG_DEBUG_UART_CLOCK=24000000
|
||||
CONFIG_DEBUG_UART=y
|
||||
+CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="pci enum; usb start; nvme scan;"
|
||||
CONFIG_FIT=y
|
||||
CONFIG_FIT_VERBOSE=y
|
||||
CONFIG_SPL_FIT_SIGNATURE=y
|
||||
diff --git a/configs/turing-rk1-rk3588_defconfig b/configs/turing-rk1-rk3588_defconfig
|
||||
index 0b3efec23e6..515db2a2b0c 100644
|
||||
--- a/configs/turing-rk1-rk3588_defconfig
|
||||
+++ b/configs/turing-rk1-rk3588_defconfig
|
||||
@@ -12,6 +12,8 @@ CONFIG_DEBUG_UART_BASE=0xFEBC0000
|
||||
CONFIG_DEBUG_UART_CLOCK=24000000
|
||||
CONFIG_PCI=y
|
||||
CONFIG_DEBUG_UART=y
|
||||
+CONFIG_USE_PREBOOT=y
|
||||
+CONFIG_PREBOOT="pci enum; usb start; nvme scan;"
|
||||
CONFIG_FIT=y
|
||||
CONFIG_FIT_VERBOSE=y
|
||||
CONFIG_SPL_FIT_SIGNATURE=y
|
||||
--
|
||||
2.54.0
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
From aef38432fbc93621b434836b95b10c28aa880e84 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Robinson <pbrobinson@gmail.com>
|
||||
Date: Tue, 9 Dec 2025 20:51:06 +0000
|
||||
Subject: [PATCH 1/2] rockchip: rk3568-nanopi-r5: Drop duplicated/extra sdhci
|
||||
|
||||
The pinctrl settings are now upstream, with the upstream
|
||||
voltage supplies, and the HS200 mode is confirmed to work
|
||||
fine but the HS400 mode had reported issues so let's just
|
||||
consume what the upstream DT has now as it's all known good.
|
||||
|
||||
Reported-by: Dusty Mabe <dusty@dustymabe.com>
|
||||
Tested-by: Dusty Mabe <dusty@dustymabe.com>
|
||||
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
|
||||
---
|
||||
arch/arm/dts/rk3568-nanopi-r5s-u-boot.dtsi | 8 --------
|
||||
1 file changed, 8 deletions(-)
|
||||
|
||||
diff --git a/arch/arm/dts/rk3568-nanopi-r5s-u-boot.dtsi b/arch/arm/dts/rk3568-nanopi-r5s-u-boot.dtsi
|
||||
index 64c43374c04..7e24be1a5e7 100644
|
||||
--- a/arch/arm/dts/rk3568-nanopi-r5s-u-boot.dtsi
|
||||
+++ b/arch/arm/dts/rk3568-nanopi-r5s-u-boot.dtsi
|
||||
@@ -12,14 +12,6 @@
|
||||
/delete-property/ vpcie3v3-supply;
|
||||
};
|
||||
|
||||
-&sdhci {
|
||||
- cap-mmc-highspeed;
|
||||
- mmc-hs200-1_8v;
|
||||
- mmc-hs400-1_8v;
|
||||
- mmc-hs400-enhanced-strobe;
|
||||
- pinctrl-0 = <&emmc_bus8 &emmc_clk &emmc_cmd &emmc_datastrobe>;
|
||||
-};
|
||||
-
|
||||
&vcc5v0_usb_host {
|
||||
/delete-property/ regulator-always-on;
|
||||
/delete-property/ regulator-boot-on;
|
||||
--
|
||||
2.52.0
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
From 29efc0396809384cf37bfcfb01c62e63216fa998 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Robinson <pbrobinson@gmail.com>
|
||||
Date: Tue, 9 Dec 2025 21:13:46 +0000
|
||||
Subject: [PATCH 2/2] rockchip: rk356x: Stop overriding sdhci/mmc aliases
|
||||
|
||||
Upstream device tree has rules where the aliases are board
|
||||
specific settings, no SoC settings. Looking at upstream
|
||||
rk356x boards there's a lot of variation in the setting of
|
||||
mmc0/mmc1 based on the device so we should not be overriding
|
||||
this here and now we sync to upstream we should just consume
|
||||
those settings, to do otherwise confuses users.
|
||||
|
||||
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
|
||||
---
|
||||
arch/arm/dts/rk356x-u-boot.dtsi | 2 --
|
||||
1 file changed, 2 deletions(-)
|
||||
|
||||
diff --git a/arch/arm/dts/rk356x-u-boot.dtsi b/arch/arm/dts/rk356x-u-boot.dtsi
|
||||
index 738b9673d35..f25c7970208 100644
|
||||
--- a/arch/arm/dts/rk356x-u-boot.dtsi
|
||||
+++ b/arch/arm/dts/rk356x-u-boot.dtsi
|
||||
@@ -7,8 +7,6 @@
|
||||
|
||||
/ {
|
||||
aliases {
|
||||
- mmc0 = &sdhci;
|
||||
- mmc1 = &sdmmc0;
|
||||
spi4 = &sfc;
|
||||
};
|
||||
|
||||
--
|
||||
2.52.0
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
From 86782e882e9542f5f402e00cd87efb36ad0552d3 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Robinson <pbrobinson@gmail.com>
|
||||
Date: Sat, 2 Mar 2024 11:17:42 +0000
|
||||
Subject: [PATCH v4] disk: dos: Add all options for EFI System Partitions
|
||||
|
||||
The EFI spec states that the ESP can be any of FAT12/16/32 but for
|
||||
compatibility doesn't necssarily require the partition to be the
|
||||
EFI partition table ID of 0xef. A number of arm devices will not
|
||||
find their firmware on a FAT partition with an ID of 0xef so also
|
||||
allow the original FAT12/16/32 partition IDs as they are also
|
||||
permissable for an ESP.
|
||||
|
||||
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
|
||||
---
|
||||
|
||||
v2:
|
||||
- Add 0x0c option
|
||||
- Make hex constants consistent
|
||||
- Move from if to switch statement
|
||||
v3:
|
||||
- Fix switch brain fart
|
||||
v4:
|
||||
- Drop boot_ind out of switch
|
||||
|
||||
disk/part_dos.c | 13 ++++++++++++-
|
||||
1 file changed, 12 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/disk/part_dos.c b/disk/part_dos.c
|
||||
index 567ead7511d..a35181dff4f 100644
|
||||
--- a/disk/part_dos.c
|
||||
+++ b/disk/part_dos.c
|
||||
@@ -40,10 +40,21 @@ static int get_bootable(dos_partition_t *p)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
- if (p->sys_ind == 0xef)
|
||||
+ switch (p->sys_ind) {
|
||||
+ case 0x01:
|
||||
+ case 0x06:
|
||||
+ case 0x0b:
|
||||
+ case 0x0c:
|
||||
+ case 0xef:
|
||||
ret |= PART_EFI_SYSTEM_PARTITION;
|
||||
+ break;
|
||||
+ default:
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
if (p->boot_ind == 0x80)
|
||||
ret |= PART_BOOTABLE;
|
||||
+
|
||||
return ret;
|
||||
}
|
||||
|
||||
--
|
||||
2.44.0
|
||||
|
||||
Loaded 100 of 117 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user