#37 libre/iceweasel: Bump to 95.0
Closed 2 years ago by billauger. Opened 2 years ago by grizzlyuser.

Update libre/your-freedom
Parabola automatic package builder • 2 years ago  
Update [pcr/12p] to 1.6.1
Freemor • 2 years ago  
Update nonprism/your-privacy
Parabola automatic package builder • 2 years ago  
Update libre/your-freedom
Parabola automatic package builder • 2 years ago  
re-add nonsystemd/pipewire
David P • 2 years ago  
Update libre/parabola-keyring
Parabola automatic package builder • 2 years ago  
libre: netpbm: Add forgetten patches from Arch Linux
Denis 'GNUtoo' Carikli • 2 years ago  
Update libre/parabola-keyring
Parabola automatic package builder • 2 years ago  
Update libre/parabola-keyring
Parabola automatic package builder • 2 years ago  
Update libre/your-freedom
Parabola automatic package builder • 2 years ago  
Update libre/your-freedom
Parabola automatic package builder • 2 years ago  
Update libre/your-freedom
Parabola automatic package builder • 2 years ago  
Update libre/your-freedom
Parabola automatic package builder • 2 years ago  
Update libre/your-freedom
Parabola automatic package builder • 2 years ago  
@@ -0,0 +1,235 @@ 

+ # Maintainer (arch): Levente Polyak <anthraxx[at]archlinux[dot]org>

+ # Contributor: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>

+ # Contributor: Ionut Biru <ibiru@archlinux.org>

+ # Contributor: Alexander Baldeck <alexander@archlinux.org>

+ # Contributor: Dale Blount <dale@archlinux.org>

+ # Contributor: Anders Bostrom <anders.bostrom@home.se>

+ # Maintainer: Andreas Grapentin <andreas@grapentin.org>

+ # Contributor: André Silva <emulatorman@hyperbola.info>

+ # Contributor: Márcio Silva <coadde@hyperbola.info>

+ # Contributor: Luke R. <g4jc@openmailbox.org>

+ # Contributor: Isaac David <isacdaavid@isacdaavid.info>

+ # Contributor: bill-auger <bill-auger@programmer.net>

+ 

+ 

+ # parabola changes and rationale:

+ #  - rebranded to icedove

+ #  - added makedepends for branding: quilt mozilla-searchplugins imagemagick

+ #  - disabled tests, they break in an environment without network access.

+ #  - disabled geo-location

+ 

+ 

+ _pkgname=thunderbird

+ pkgname=icedove

+ epoch=1

+ pkgver=78.9.1

+ pkgrel=1

+ pkgrel+=.parabola1

+ _brandingver=78.9

+ _brandingrel=1

+ pkgdesc='Standalone mail and news reader based on Mozilla Thunderbird'

+ url=https://wiki.parabola.nu/${pkgname}

+ arch=(x86_64)

+ arch+=(i686 armv7h)

+ license=(MPL GPL LGPL)

+ depends=(

+   glibc gtk3 libgdk-3.so mime-types dbus libdbus-1.so dbus-glib alsa-lib nss

+   hunspell sqlite ttf-font libvpx libvpx.so zlib bzip2 botan libwebp libevent

+   libjpeg-turbo libffi nspr gcc-libs libx11 libxrender libxfixes libxext

+   libxcomposite libxdamage pango libpango-1.0.so cairo gdk-pixbuf2 icu

+   libicui18n.so libicuuc.so freetype2 libfreetype.so fontconfig

+   libfontconfig.so glib2 libglib-2.0.so pixman libpixman-1.so gnupg

+ )

+ optdepends=(

+   'libotr: OTR support for active one-to-one chats'

+ )

+ makedepends=(

+   unzip zip diffutils python python-setuptools yasm nasm mesa imake libpulse

+   inetutils xorg-server-xvfb autoconf2.13 rust clang llvm gtk2 cbindgen nodejs

+   gawk perl findutils libotr

+ )

+ #makedepends[15]='llvm10' # FIXME: DEBUG: | rustup: error while loading shared libraries: libLLVM-10.so: cannot open shared object file: No such file or directory

+ #                         #        ERROR: Command `rustup which rustc` failed with exit status 127.

+ makedepends+=(quilt imagemagick)

+ replaces=(${_pkgname})

+ options=(!emptydirs !makeflags)

+ source=(https://ftp.mozilla.org/pub/mozilla.org/thunderbird/releases/$pkgver/source/thunderbird-$pkgver.source.tar.xz{,.asc}

+         $pkgname.desktop

+         vendor-prefs.js

+         distribution.ini

+         mozconfig.cfg

+         configure-fix-passing-system-bzip2-ldflags.patch

+         thunderbird-78.5-rust-1.48.patch)

+ source+=(https://repo.parabola.nu/other/icedove/${pkgname}_$_brandingver-$_brandingrel.branding.tar.xz{,.sig})

+ source_armv7h=(arm-wasm-vfp.patch)

+ sha512sums=('fa27a327ce10a0c16877ac02338aace257f60f69af40d12ae5bb2055f6536db9ba45995765ac0eaa1aea2fa2b353ac9dc6eb06fcdf6cb4ae6fafcd65fe5970c6'

+             'SKIP'

+             'a3c9815491d9bed0440c60f35867a5b8a2a1343521f288035fcc46e651a11b926c75a9eca2d262b43d510a7a7119709b53637f1b00ddbbee8e5b0a4b33d7b8fd'

+             'e21d30a8b79724eda3488ac2bf9dfeb0c7f6bf39e59c37f17574b529d33043765eb54408a55fcbf6f3afa7a58ca99124992d443cdff23ac5c9bdbff33c75f60f'

+             '31d46f91d9612d30d8553a19d0d309d743467e58b568a4aeea3caf6bd805ba00656561c84a1511c59bce1cf24ba323bfad2cd26a19985f1bf7dfb6d282642972'

+             '1eba1593ff0a9642d89e6d3e03388b1aef00437b2f6c1f0d81d250d9845b80e057c246eaeb31d8d22001abd65556a9603d1db597baf864481a5bfb7000886b29'

+             'e3ed2708b8354015cb3d2c81048d1ce4932d1effbe2b40efa7cf9b45c1b923b9fd708645e2f8aa0136a485a3f7ce6b396b85721aaf535a4a764fd5005fb7e222'

+             'bbb8b0e7b9c67372eb22e1d6b6b5758fe504ded84c40a076d4a064374a1bf34ac12d5b514b328ac9ca984d976b9e0fbde81e68a66bec915c997d6be0c0917584')

+ sha512sums_armv7h=('c25883c4860e511a99d9fbfba5b824145c0862729101721605725f609ca2a41848b741dd100eff390f57031dc5f14af3ea30133de30f75cb20197c420ae20972')

+ sha512sums+=('78fee952c9bc826a0a7ec262d442150177bf887349641279dafae803b9832a0dd9b8d0722cc084459077a5310eb4f6de6a8d7ffaff6741afe1359f292a373f34'

+              'SKIP')

+ validpgpkeys=(14F26682D0916CDD81E37B6D61B7B526D98F0353) # Mozilla Software Releases <release@mozilla.com>

+ validpgpkeys+=(BFA8008A8265677063B11BF47171986E4B745536  # Andreas Grapentin

+                3954A7AB837D0EA9CFA9798925DB7D9B5A8D4B40) # bill-auger

+ 

+ 

+ prepare() {

+   cd $_pkgname-$pkgver

+ 

+   echo "${noextract[@]}"

+ 

+   local src

+   for src in "${source[@]}"; do

+     src="${src%%::*}"

+     src="${src##*/}"

+     [[ $src = *.patch ]] || continue

+     [[ $src = arm-wasm-vfp.patch ]] && continue # defer parabola patches

+ 

+     echo "Applying patch $src..."

+     patch -Np1 < "../$src"

+   done

+ 

+   cp ../mozconfig.cfg .mozconfig

+   sed "s|@PWD@|${PWD@Q}|g" -i .mozconfig

+ 

+   case "${CARCH}" in

+   armv*)

+     patch -Np1 -i "${srcdir}"/arm-wasm-vfp.patch

+ 

+     sed -i '/--enable-linker=gold/d' .mozconfig

+     sed -i '/--enable-hardening/d' .mozconfig

+     sed -i '/--enable-optimize/d' .mozconfig

+ 

+     export MOZ_DEBUG_FLAGS=" "

+     export CFLAGS+=" -g0"

+     export CXXFLAGS+=" -g0"

+     export LDFLAGS+=" -Wl,--no-keep-memory -Wl,--reduce-memory-overheads"

+     export RUSTFLAGS="-Cdebuginfo=0"

+ 

+     cat >> .mozconfig <<END

+ ac_add_options --disable-webrtc

+ ac_add_options --disable-elf-hack

+ ac_add_options --enable-optimize="-g0 -O2"

+ END

+     ;;

+   i686)

+     sed -i 's/--enable-linker=gold/--enable-linker=bfd/' .mozconfig

+     LDFLAGS+=" -Wl,--no-keep-memory -Wl,--reduce-memory-overheads"

+     export LDFLAGS

+     ;;

+   esac

+ 

+   # perform re-branding

+   local branding_indir="${srcdir}"/${pkgname}-${_brandingver}

+   local branding_outdir=comm/mail/branding/${pkgname}

+   rm -rf -- ${branding_outdir}

+   cp -aT -- "${branding_indir}"/${pkgname}-branding ${branding_outdir}

+ 

+   export QUILT_PATCHES="${branding_indir}"/patches

+   export QUILT_REFRESH_ARGS='-p ab --no-timestamps --no-index'

+   export QUILT_DIFF_ARGS='--no-timestamps'

+   quilt push -av

+ 

+   # generate icons

+   for i in 16 22 24 32; do

+     rsvg-convert -w ${i} -h ${i} "${branding_indir}"/app-icons/${pkgname}_small.svg \

+       -o "${branding_outdir}/default${i}.png"

+   done

+   for i in 48 64 128 256; do

+     rsvg-convert -w ${i} -h ${i} "${branding_indir}"/app-icons/${pkgname}_big.svg \

+       -o "${branding_outdir}/default${i}.png"

+   done

+   cp "${branding_indir}"/logo/icedove_icon.svg ${branding_outdir}/

+   cp -av "${branding_indir}"/preview.png comm/mail/themes/linux/mail/preview.png

+ 

+   # Patch search-engines config

+   local search_engines_sed_cmd='s|https://duckduckgo.com/|https://html.duckduckgo.com/html/|'

+   local engines_cfg_dir=comm/mail/components/search/extensions

+   sed -i "${search_engines_sed_cmd}" ${engines_cfg_dir}/ddg/manifest.json

+ 

+   # Delete unused search engine configs

+   find ${engines_cfg_dir} -mindepth 1 -maxdepth 1 \

+                           -not -name ddg          \

+                           -not -name wikipedia    \

+                           -exec rm -rf {} \;

+ 

+   # Patch and remove anything that's left

+   sed -i '\|Phishing Protection|d

+           \|UrlClassifier|d

+           \|URLClassifier|d

+           \|url-classifier|d

+          ' comm/mail/installer/package-manifest.in

+   # TODO: this could be moved into the branding package - it already processes all-thunderbird.js

+   sed -i '\|extensions[.]getAddons[.]get[.]url| s|https://services[.]addons[.]mozilla[.]org.\+["][)][;]|https://directory.fsf.org/wiki/Icedove");|g;

+           \|extensions[.]getAddons[.]search[.]browseURL| s|https://addons[.]mozilla[.]org.\+["][)][;]|https://directory.fsf.org/wiki/Icedove");|g;

+           \|extensions[.]getAddons[.]search[.]url| s|https://services[.]addons[.]mozilla[.]org.\+["][)][;]|https://directory.fsf.org/wiki/Icedove");|g;

+           \|extensions[.]webservice[.]discoverURL| s|https://services[.]addons[.]mozilla[.]org.\+["][)][;]|https://directory.fsf.org/wiki/Icedove");|g;

+          ' comm/mail/app/profile/all-thunderbird.js

+ }

+ 

+ build() {

+   cd $_pkgname-$pkgver

+   if [[ -n "${SOURCE_DATE_EPOCH}" ]]; then

+     export MOZ_BUILD_DATE=$(date --date "@${SOURCE_DATE_EPOCH}" "+%Y%m%d%H%M%S")

+   fi

+ 

+   # clang-{9,10,11} -> error: unknown argument: '-fvar-tracking-assignments'

+   CFLAGS="${CFLAGS/-fvar-tracking-assignments/}"

+   CXXFLAGS="${CXXFLAGS/-fvar-tracking-assignments/}"

+ 

+   case "${CARCH}" in

+     armv*)

+       export LDFLAGS+=" -Wl,--no-keep-memory -Wl,--reduce-memory-overheads"

+       sed -i "s/\(cargo_rustc_flags += -C lto\)/#\1/" config/rules.mk

+       sed -i "s/debug_info = '2'/debug_info = '1'/" build/moz.configure/toolchain.configure

+       export MOZ_MAKE_FLAGS=-j1

+       ;;

+     i686)

+       sed -i "s/\(cargo_rustc_flags += -C lto\)/#\1/" config/rules.mk

+       sed -i "s/debug_info = '2'/debug_info = '1'/" build/moz.configure/toolchain.configure

+       export MOZ_MAKE_FLAGS=-j1

+       ;;

+   esac

+ 

+   ./mach configure

+   ./mach build

+   ./mach buildsymbols

+ }

+ 

+ package() {

+   optdepends=('libcanberra: sound support')

+ 

+   cd $_pkgname-$pkgver

+   DESTDIR="$pkgdir" ./mach install

+ 

+   install -Dm 644 ../vendor-prefs.js -t "$pkgdir/usr/lib/$pkgname/defaults/pref"

+   install -Dm 644 ../distribution.ini -t "$pkgdir/usr/lib/$pkgname/distribution"

+   install -Dm 644 ../$pkgname.desktop -t "$pkgdir/usr/share/applications"

+ 

+   for i in 16 22 24 32 48 64 128 256; do

+     install -Dm644 comm/mail/branding/$pkgname/default${i}.png \

+       "$pkgdir/usr/share/icons/hicolor/${i}x${i}/apps/$pkgname.png"

+   done

+   install -Dm644 comm/mail/branding/$pkgname/${pkgname}_icon.svg \

+     "$pkgdir/usr/share/icons/hicolor/symbolic/apps/$pkgname-symbolic.svg"

+ 

+   # Use system-provided dictionaries

+   ln -Ts /usr/share/hunspell "$pkgdir/usr/lib/$pkgname/dictionaries"

+   ln -Ts /usr/share/hyphen "$pkgdir/usr/lib/$pkgname/hyphenation"

+ 

+   # Install a wrapper to avoid confusion about binary path

+   install -Dm755 /dev/stdin "$pkgdir/usr/bin/$pkgname" <<END

+ #!/bin/sh

+ exec /usr/lib/$pkgname/$pkgname "\$@"

+ END

+ 

+   # Replace duplicate binary with wrapper

+   # https://bugzilla.mozilla.org/show_bug.cgi?id=658850

+   ln -srf "$pkgdir/usr/bin/$pkgname" \

+     "$pkgdir/usr/lib/$pkgname/$pkgname-bin"

+ }

libre-testing/icedove/arm-wasm-vfp.patch libre/iceweasel/arm.patch
file renamed
file was moved with no change to the file
@@ -0,0 +1,25 @@ 

+ From 9855927c896eaeecb21c1541942ee6d557144183 Mon Sep 17 00:00:00 2001

+ From: anthraxx <levente@leventepolyak.net>

+ Date: Sun, 8 Nov 2020 13:26:47 +0100

+ Subject: [PATCH] configure: fix passing system bzip2 ldflags

+ 

+ ---

+  comm/third_party/openpgp.configure | 2 +-

+  1 file changed, 1 insertion(+), 1 deletion(-)

+ 

+ diff --git a/comm/third_party/openpgp.configure b/comm/third_party/openpgp.configure

+ index 2f9c796..2cbc907 100644

+ --- a/comm/third_party/openpgp.configure

+ +++ b/comm/third_party/openpgp.configure

+ @@ -80,7 +80,7 @@ with only_when('--enable-compile-environment'):

+          if bzip2_pkg:

+              cflags = list(bzip2_pkg.cflags)

+              libs = bzip2_pkg.libs

+ -            return namespace(cflags=cflags, libs=libs, path=(value[0]), )

+ +            return namespace(cflags=cflags, ldflags=libs, )

+          # Fallback

+          return namespace(

+              ldflags=['-lbz2'],

+ -- 

+ 2.28.0

+ 

@@ -0,0 +1,9 @@ 

+ [Global]

+ id=parabola

+ version=1.0

+ about=Icedove for Parabola GNU/Linux-libre

+ 

+ [Preferences]

+ app.distributor=parabola

+ app.distributor.channel=$pkgname

+ app.partner.parabola=parabola

@@ -0,0 +1,173 @@ 

+ [Desktop Entry]

+ Name=Icedove

+ Comment=Send and receive mail with Icedove

+ Comment[ast]=Lleer y escribir corréu electrónicu

+ Comment[ca]=Llegiu i escriviu correu

+ Comment[cs]=Čtení a psaní pošty

+ Comment[da]=Skriv/læs e-post/nyhedsgruppe med Icedove

+ Comment[de]=E-Mails und Nachrichten mit Icedove lesen und schreiben

+ Comment[el]=Διαβάστε και γράψτε γράμματα με το Icedove

+ Comment[es]=Lea y escriba correos y noticias con Icedove

+ Comment[fi]=Lue ja kirjoita sähköposteja

+ Comment[fr]=Lire et écrire des courriels

+ Comment[gl]=Lea e escriba correo electrónico

+ Comment[he]=קריאה/כתיבה של דוא״ל/חדשות באמצעות Icedove

+ Comment[hr]=Čitajte/šaljite e-poštu s Icedove

+ Comment[hu]=Levelek írása és olvasása a Icedove

+ Comment[it]=Per leggere e scrivere email

+ Comment[ja]=メールの読み書き

+ Comment[ko]=Icedove 메일/뉴스 읽기 및 쓰기 클라이언트

+ Comment[nl]=E-mail/nieuws lezen en schrijven met Icedove

+ Comment[pl]=Czytanie i wysyłanie e-maili

+ Comment[pt_BR]=Leia e escreva suas mensagens

+ Comment[ru]=Читайте и пишите письма

+ Comment[sk]=Čítajte a píšte poštu pomocou programu Icedove

+ Comment[sv]=Läs och skriv e-post

+ Comment[ug]=ئېلخەت ۋە خەۋەرلەرنى Icedove دا كۆرۈش ۋە يېزىش

+ Comment[uk]=Читання та написання листів

+ Comment[vi]=Đọc và soạn thư điện tử

+ Comment[zh_CN]=阅读邮件或新闻

+ Comment[zh_TW]=以 Icedove 讀寫郵件或新聞

+ GenericName=Mail Client

+ GenericName[ast]=Client de correu

+ GenericName[ca]=Client de correu

+ GenericName[cs]=Poštovní klient

+ GenericName[da]=E-postklient

+ GenericName[de]=E-Mail-Anwendung

+ GenericName[el]=Λογισμικό αλληλογραφίας

+ GenericName[es]=Cliente de correo

+ GenericName[fi]=Sähköpostiohjelma

+ GenericName[fr]=Client de messagerie

+ GenericName[gl]=Cliente de correo electrónico

+ GenericName[he]=לקוח דוא״ל

+ GenericName[hr]=Klijent e-pošte

+ GenericName[hu]=Levelezőkliens

+ GenericName[it]=Client email

+ GenericName[ja]=電子メールクライアント

+ GenericName[ko]=메일 클라이언트

+ GenericName[nl]=E-mailprogramma

+ GenericName[pl]=Klient poczty

+ GenericName[pt_BR]=Cliente de E-mail

+ GenericName[ru]=Почтовый клиент

+ GenericName[sk]=Poštový klient

+ GenericName[ug]=ئېلخەت دېتالى

+ GenericName[uk]=Поштова програма

+ GenericName[vi]=Phần mềm khách quản lý thư điện tử

+ GenericName[zh_CN]=邮件新闻客户端

+ GenericName[zh_TW]=郵件用戶端

+ Exec=/usr/lib/icedove/icedove %u

+ Terminal=false

+ Type=Application

+ Icon=icedove

+ Categories=Network;Email;

+ MimeType=message/rfc822;x-scheme-handler/mailto;application/x-xpinstall;

+ StartupNotify=true

+ Actions=ComposeMessage;OpenAddressBook;

+ 

+ [Desktop Action ComposeMessage]

+ Name=Write new message

+ Name[ar]=اكتب رسالة جديدة

+ Name[ast]=Redactar mensaxe nuevu

+ Name[be]=Напісаць новы ліст

+ Name[bg]=Съставяне на ново съобщение

+ Name[br]=Skrivañ ur gemennadenn nevez

+ Name[ca]=Escriu un missatge nou

+ Name[cs]=Napsat novou zprávu

+ Name[da]=Skriv en ny meddelelse

+ Name[de]=Neue Nachricht verfassen

+ Name[el]=Σύνταξη νέου μηνύματος

+ Name[es_AR]=Escribir un nuevo mensaje

+ Name[es_ES]=Redactar nuevo mensaje

+ Name[et]=Kirjuta uus kiri

+ Name[eu]=Idatzi mezu berria

+ Name[fi]=Kirjoita uusi viesti

+ Name[fr]=Rédiger un nouveau message

+ Name[fy_NL]=Skriuw in nij berjocht

+ Name[ga_IE]=Scríobh teachtaireacht nua

+ Name[gd]=Sgrìobh teachdaireachd ùr

+ Name[gl]=Escribir unha nova mensaxe

+ Name[he]=כתיבת הודעה חדשה

+ Name[hr]=Piši novu poruku

+ Name[hu]=Új üzenet írása

+ Name[hy_AM]=Գրել նոր նամակ

+ Name[is]=SKrifa nýjan póst

+ Name[it]=Scrivi nuovo messaggio

+ Name[ja]=新しいメッセージを作成する

+ Name[ko]=새 메시지 작성

+ Name[lt]=Rašyti naują laišką

+ Name[nb_NO]=Skriv ny melding

+ Name[nl]=Nieuw bericht aanmaken

+ Name[nn_NO]=Skriv ny melding

+ Name[pl]=Nowa wiadomość

+ Name[pt_BR]=Nova mensagem

+ Name[pt_PT]=Escrever nova mensagem

+ Name[rm]=Scriver in nov messadi

+ Name[ro]=Scrie un mesaj nou

+ Name[ru]=Создать новое сообщение

+ Name[si]=නව ලිපියක් ලියන්න

+ Name[sk]=Nová e-mailová správa

+ Name[sl]=Sestavi novo sporočilo

+ Name[sq]=Shkruani mesazh të ri

+ Name[sr]=Писање нове поруке

+ Name[sv_SE]=Skriv ett nytt meddelande

+ Name[ta_LK]=புதிய செய்தியை எழுதுக

+ Name[tr]=Yeni ileti yaz

+ Name[uk]=Написати нового листа

+ Name[vi]=Viết thư mới

+ Name[zh_CN]=编写新消息

+ Name[zh_TW]=寫一封新訊息

+ Exec=/usr/lib/icedove/icedove -compose

+ 

+ [Desktop Action OpenAddressBook]

+ Name=Open address book

+ Name[ar]=افتح دفتر العناوين

+ Name[ast]=Abrir llibreta de direiciones

+ Name[be]=Адкрыць адрасную кнігу

+ Name[bg]=Отваряне на адресник

+ Name[br]=Digeriñ ur c'harned chomlec'hioù

+ Name[ca]=Obre la llibreta d'adreces

+ Name[cs]=Otevřít Adresář

+ Name[da]=Åbn adressebog

+ Name[de]=Adressbuch öffnen

+ Name[el]=Άνοιγμα ευρετηρίου διευθύνσεων

+ Name[es_AR]=Abrir libreta de direcciones

+ Name[es_ES]=Abrir libreta de direcciones

+ Name[et]=Ava aadressiraamat

+ Name[eu]=Ireki helbide-liburua

+ Name[fi]=Avaa osoitekirja

+ Name[fr]=Ouvrir un carnet d'adresses

+ Name[fy_NL]=Iepenje adresboek

+ Name[ga_IE]=Oscail leabhar seoltaí

+ Name[gd]=Fosgail leabhar-sheòlaidhean

+ Name[gl]=Abrir a axenda de enderezos

+ Name[he]=פתיחת ספר כתובות

+ Name[hr]=Otvori adresar

+ Name[hu]=Címjegyzék megnyitása

+ Name[hy_AM]=Բացել Հասցեագիրքը

+ Name[is]=Opna nafnaskrá

+ Name[it]=Apri rubrica

+ Name[ja]=アドレス帳を開く

+ Name[ko]=주소록 열기

+ Name[lt]=Atverti adresų knygą

+ Name[nb_NO]=Åpne adressebok

+ Name[nl]=Adresboek openen

+ Name[nn_NO]=Opne adressebok

+ Name[pl]=Książka adresowa

+ Name[pt_BR]=Catálogo de endereços

+ Name[pt_PT]=Abrir livro de endereços

+ Name[rm]=Avrir il cudeschet d'adressas

+ Name[ro]=Deschide agenda de contacte

+ Name[ru]=Открыть адресную книгу

+ Name[si]=ලිපින පොත විවෘත කරන්න

+ Name[sk]=Otvoriť adresár

+ Name[sl]=Odpri adressar

+ Name[sq]=Hapni libër adresash

+ Name[sr]=Отвори адресар

+ Name[sv_SE]=Öppna adressboken

+ Name[ta_LK]=முகவரி பத்தகத்தை திறக்க

+ Name[tr]=Adres defterini aç

+ Name[uk]=Відкрити адресну книгу

+ Name[vi]=Mở sổ địa chỉ

+ Name[zh_CN]=打开通讯录

+ Name[zh_TW]=開啟通訊錄

+ Exec=/usr/lib/icedove/icedove -addressbook

@@ -0,0 +1,47 @@ 

+ ac_add_options --enable-application=comm/mail

+ ac_add_options --enable-calendar

+ 

+ ac_add_options --prefix=/usr

+ ac_add_options --enable-release

+ ac_add_options --enable-linker=gold

+ ac_add_options --enable-hardening

+ ac_add_options --enable-optimize

+ ac_add_options --enable-rust-simd

+ # https://bugzilla.mozilla.org/show_bug.cgi?id=1423822

+ ac_add_options --disable-elf-hack

+ 

+ # Branding

+ ac_add_options --disable-official-branding

+ ac_add_options --enable-update-channel=release

+ ac_add_options --with-distribution-id=nu.parabola

+ ac_add_options --with-branding=comm/mail/branding/icedove

+ 

+ # System libraries

+ ac_add_options --with-system-zlib

+ ac_add_options --with-system-bz2

+ ac_add_options --with-system-icu

+ ac_add_options --with-system-jpeg

+ # does not have APNG support

+ # ac_add_options --with-system-png

+ ac_add_options --with-system-libvpx

+ ac_add_options --with-system-nspr

+ ac_add_options --with-system-nss

+ ac_add_options --with-system-botan

+ ac_add_options --with-system-webp

+ ac_add_options --with-system-libevent

+ ac_add_options --with-system-ffi

+ ac_add_options --with-system-pixman

+ 

+ # Features

+ ac_add_options --enable-alsa

+ ac_add_options --enable-openpgp

+ ac_add_options --enable-calendar

+ ac_add_options --disable-jack

+ ac_add_options --disable-crashreporter

+ ac_add_options --disable-updater

+ # tests require network access.

+ ac_add_options --disable-tests

+ 

+ # System addons

+ ac_add_options --with-unsigned-addon-scopes=app,system

+ ac_add_options --allow-addon-sideload

The added file is too large to be shown here, see it at: libre-testing/icedove/thunderbird-78.5-rust-1.48.patch
@@ -0,0 +1,32 @@ 

+ // Use LANG environment variable to choose locale

+ pref("intl.locale.requested", "");

+ 

+ // Use system-provided dictionaries

+ pref("spellchecker.dictionary_path", "/usr/share/hunspell");

+ 

+ // Disable default mailer checking

+ pref("mail.shell.checkDefaultMail", false);

+ 

+ // Don't disable our bundled extensions in the application directory

+ pref("extensions.autoDisableScopes", 11);

+ pref("extensions.shownSelectionUI", true);

+ 

+ // Disable telemetry

+ pref("datareporting.healthreport.uploadEnabled", false);

+ pref("datareporting.policy.dataSubmissionEnabled", false);

+ pref("toolkit.telemetry.archive.enabled", false);

+ 

+ // Disable Social API for content

+ pref("social.remote-install.enabled", false);

+ pref("social.toast-notifications.enabled", false);

+ 

+ // Make sure that whitelisted and directory installs are empty

+ pref("social.whitelist", "");

+ pref("social.directories", "");

+ 

+ // Disable the GeoLocation API for content

+ pref("geo.enabled", false);

+ 

+ // TODO: this "whats new" page should be in the branding package or abslibre

+ // Pointing the "Help -> What's new" menu entry to mozilla.debian.net

+ //pref("mailnews.start_page.override_url", "http://wiki.debian.org/Icedove/WhatsNew45");

@@ -2,7 +2,7 @@ 

  

  _target=arm-linux-gnueabi

  pkgname=$_target-binutils

- pkgver=2.36.1

+ pkgver=2.37

  pkgrel=1

  pkgdesc='A set of programs to assemble and manipulate binary and object files for the ARM GNU EABI little-endian target'

  arch=('x86_64' 'i686' 'armv7h')
@@ -10,7 +10,7 @@ 

  license=(GPL)

  depends=(zlib)

  source=(https://ftp.gnu.org/gnu/binutils/binutils-$pkgver.tar.bz2{,.sig})

- sha512sums=('5c40cfe05b922492627db71990dd2ba6030fd2de4bdba3f53a3f274543ff161fb56e2f6bdac107e0ffdcfd095e499c54e1157ee1865723baefa67b5b4d3da201'

+ sha512sums=('b3f5184697f77e94c95d48f6879de214eb5e17aa6ef8e96f65530d157e515b1ae2f290e98453e4ff126462520fa0f63852b6e1c8fbb397ed2e41984336bc78c6'

              'SKIP')

  validpgpkeys=('EAF1C276A747E9ED86210CBAC3126D3B4AE55E93'  # Tristan Gingold <gingold@adacore.com>

                '3A24BC1E8FB409FA9F14371813FCEF89DD9E3C4F') # Nick Clifton (Chief Binutils Maintainer) <nickc@redhat.com>

@@ -2,10 +2,10 @@ 

  

  _target=arm-linux-gnueabi

  pkgname=$_target-gcc

- _pkgver=10.2.0

- pkgver=$_pkgver

- _islver=0.22

+ pkgver=11.2.0

+ _islver=0.24

  pkgrel=1

+ #_snapshot=8-20210107

  pkgdesc='The GNU Compiler Collection - cross compiler for ARM GNU EABI little-endian target'

  arch=(x86_64 i686 armv7h)

  url='http://gcc.gnu.org/'
@@ -13,18 +13,19 @@ 

  depends=($_target-binutils libmpc zlib)

  makedepends=(gmp mpfr)

  options=(!emptydirs !strip)

- source=(https://gcc.gnu.org/pub/gcc/releases/gcc-$_pkgver/gcc-$_pkgver.tar.xz{,.sig}

-         http://isl.gforge.inria.fr/isl-$_islver.tar.bz2)

- sha512sums=('42ae38928bd2e8183af445da34220964eb690b675b1892bbeb7cd5bb62be499011ec9a93397dba5e2fb681afadfc6f2767d03b9035b44ba9be807187ae6dc65e'

+ source=(https://gcc.gnu.org/pub/gcc/releases/gcc-$pkgver/gcc-$pkgver.tar.xz{,.sig}

+         #https://gcc.gnu.org/pub/gcc/snapshots/$_snapshot/gcc-$_snapshot.tar.xz

+         https://libisl.sourceforge.io/isl-$_islver.tar.bz2)

+ sha512sums=('d53a0a966230895c54f01aea38696f818817b505f1e2bfa65e508753fcd01b2aedb4a61434f41f3a2ddbbd9f41384b96153c684ded3f0fa97c82758d9de5c7cf'

              'SKIP'

-             'fc2c9796979610dd51143dcefe4f5c989c4354571cc5a1fcc6b932fd41f42a54f6b43adfd289af61be7bd06f3a523fa6a7d7ee56680e32d8036beb4c188fa668')

+             'aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95')

  validpgpkeys=(33C235A34C46AA3FFB293709A328C3A2C3C45C06  # Jakub Jelinek <jakub@redhat.com>

                13975A70E63C361C73AE69EF6EEB81F8981C74C7) # Richard Guenther <richard.guenther@gmail.com>

  

  if [ -n "$_snapshot" ]; then

    _basedir=gcc-$_snapshot

  else

-   _basedir=gcc-$_pkgver

+   _basedir=gcc-$pkgver

  fi

  

  prepare() {
@@ -33,7 +34,7 @@ 

    # link isl for in-tree builds

    ln -sf ../isl-$_islver isl

  

-   echo $_pkgver > gcc/BASE-VER

+   echo $pkgver > gcc/BASE-VER

  

    # hack! - some configure tests for header files using "$CPP $CPPFLAGS"

    sed -i "/ac_cpp=/s/\$CPPFLAGS/\$CPPFLAGS -O2/" "$srcdir"/$_basedir/{libiberty,gcc}/configure
@@ -49,6 +50,11 @@ 

    CFLAGS=${CFLAGS/-pipe/}

    CXXFLAGS=${CXXFLAGS/-pipe/}

  

+   if [ "$CARCH" = i686 ]; then

+     # using -Werror=format-security causes i686 build to fail

+     CXXFLAGS+=' -Wno-error=format-security'

+   fi

+ 

    $srcdir/$_basedir/configure \

      --target=$_target \

      --prefix=/usr \

file modified
+35 -35
@@ -1,68 +1,68 @@ 

+ # Maintainer (Arch): Eli Schwartz <eschwartz@archlinux.org>

+ # Maintainer (Arch): Levente Polyak <anthraxx[at]archlinux[dot]org>

+ # Contributor (Arch): Florian Pritz <flo@xinu.at>

  # Contributor (Arch): Chris Brannon <cmbrannon79@gmail.com>

  # Contributor (Arch): Geoffroy Carrier <geoffroy@archlinux.org>

  # Contributor (Arch): Dan McGee <dan@archlinux.org>

  # Contributor (Arch): Jaroslaw Rosiek <philosoph@interia.pl>

  # Contributor (Arch): Darwin Bautista <djclue917@gmail.com>

  # Contributor (Arch): Daniel J Griffiths <ghost1227@archlinux.us>

- # Maintainer (Arch): Florian Pritz <flo@xinu.at>

  # Contributor: André Silva <emulatorman@hyperbola.info>

  # Contributor: Andreas Grapentin <andreas@grapentin.org>

+ # Contributor: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>

+ 

+ # parabola changes and rationale:

+ #  - Removed fop optional dependency as fop is blacklisted

+ 

  

  pkgname=asciidoc

- pkgver=8.6.10

- pkgrel=2

+ pkgver=9.1.0

+ pkgrel=1

  pkgrel+=.parabola1

- pkgdesc='Text document format for short documents, articles, books and UNIX man pages.'

+ pkgdesc='Text document format for short documents, articles, books and UNIX man pages'

  arch=('any')

- url='https://www.methods.co.nz/asciidoc/'

+ url='https://asciidoc.org/'

  license=('GPL')

- depends=('python2' 'libxslt' 'docbook-xsl')

- optdepends=('lilypond: music-filter'

+ depends=('python' 'libxslt' 'docbook-xsl')

+ checkdepends=('dblatex' 'graphviz' 'lilypond' 'source-highlight')

+ optdepends=('graphviz: graphviz-filter'

+             'lilypond: music-filter'

              'imagemagick: music-filter (used in conjunction with lilypond)'

              'source-highlight: source-highlight-filter'

              'dblatex: pdf generation'

-             'lynx: text generation'

-             'w3m: text generation (alternative to lynx)')

- source=("${pkgname}-${pkgver}.tar.gz::https://github.com/asciidoc/asciidoc/archive/${pkgver}.tar.gz")

- sha256sums=('9e52f8578d891beaef25730a92a6e723596ddbd07bfe0d2a56486fcf63a0b983')

+             'w3m: text generation (alternative to lynx)'

+             'lynx: text generation')

+ source=("https://github.com/asciidoc/asciidoc-py3/archive/${pkgver}/${pkgname}-${pkgver}.tar.gz")

+ sha256sums=('8a6e3ae99785d9325fba0856e04dbe532492af3cb20d49831bfd757166d46c6b')

+ b2sums=('dd2376a3b9ffa1d7a8016c9eb1030a9d0d3a01cde587d3179cb425a5be5ae120ea7fc1fa971cb1bb53faa2a7e93b4a1c2e8cf854e7e960c1299398a02b8aa42e')

  

  prepare() {

-   cd ${pkgname}-${pkgver}

+   cd ${pkgname}-py3-${pkgver}

  

-   # python2 fix

-   #for file in asciidocapi.py a2x.py asciidoc.py filters/music/music2png.py filters/latex/latex2png.py \

- 	  #filters/code/code-filter.py filters/graphviz/graphviz2png.py; do

- 	#sed -i 's_#!/usr/bin/env python_#!/usr/bin/env python2_' $file

-   #done

-   #sed -i -e 's_sys:python_sys:python2_g' -e 's_sys3:python_sys3:python2_g' xhtml11.conf

-   #sed -i 's_sys:python_sys:python2_g' xhtml11-quirks.conf

-   #sed -i -e 's/{python}/{python2}/g' \

- 	  #-e 's#{language@python:py:#{language@python2:py:#' \

- 	  #filters/source/source-highlight-filter.conf \

- 	  #html5.conf xhtml11.conf xhtml11-quirks.conf

-   #sed -i -e "s#'python'#'python2'#g" filters/code/code-filter.py

-   sed -i -e 's#python a2x.py#python2 a2x.py#' Makefile.in

+   autoconf

  }

  

  build() {

-   cd ${pkgname}-${pkgver}

+   cd ${pkgname}-py3-${pkgver}

  

-   autoconf

    ./configure \

      --prefix=/usr \

      --sysconfdir=/etc

+   make manpages

+ }

+ 

+ check() {

+   cd ${pkgname}-py3-${pkgver}

+ 

+   make test

  }

  

  package() {

-   cd ${pkgname}-${pkgver}

+   cd ${pkgname}-py3-${pkgver}

  

-   make install DESTDIR=${pkgdir}

-   make docs DESTDIR=${pkgdir}

+   make install DESTDIR="${pkgdir}"

+   make docs DESTDIR="${pkgdir}"

  

    install -Dm644 asciidocapi.py \

-     ${pkgdir}/usr/lib/python2.7/site-packages/asciidocapi.py

- 

-   # fix FS#21579 - [asciidoc] 8.6.2-2 "asciidoc" table style doesn't work (mismatched python version) 

-   #sed -i 's/python/python2/' \

-     #${pkgdir}/etc/asciidoc/asciidoc.conf

+     "${pkgdir}/$(python -c 'import sysconfig; print(sysconfig.get_paths()["platlib"])')"/asciidocapi.py

  }

file modified
+4 -3
@@ -13,8 +13,8 @@ 

  

  

  pkgname=blender

- pkgver=2.93.1

- pkgrel=1

+ pkgver=2.93.5

+ pkgrel=7

  pkgrel+=.parabola1

  epoch=17

  _pythonver_x86_64=3.9
@@ -31,8 +31,9 @@ 

           'shared-mime-info' 'hicolor-icon-theme' 'xdg-utils' 'glew' 'openjpeg2' 'python-numpy'

           'freetype2' 'openal' 'ffmpeg' 'fftw' 'boost-libs' 'opencollada' 'alembic' 'openxr'

           'openimageio' 'libsndfile' 'jack' 'opencolorio' 'openshadinglanguage' 'openimagedenoise'

-          'jemalloc' 'libspnav' 'ptex' 'opensubdiv' 'openvdb' 'log4cplus' 'sdl2' 'embree')

+          'jemalloc' 'libspnav' 'ptex' 'opensubdiv' 'openvdb' 'log4cplus' 'sdl2' 'embree' 'libharu')

  [[ "${CARCH}" != 'x86_64' ]] && depends=( ${depends[*]/openimagedenoise/} )

+ [[ "${CARCH}" != 'x86_64' ]] && depends=( ${depends[*]/libharu/} )

  [[ "${CARCH}" == 'armv7h' ]] && depends=( ${depends[*]/embree/} )

  makedepends=('cmake' 'boost' 'mesa' 'git' 'llvm' 'cuda' 'ninja')

  makedepends=( ${makedepends[*]/cuda/} )

file modified
+7 -4
@@ -5,12 +5,14 @@ 

  # Maintainer: Omar Vega Ramos <ovruni@gnu.org.pe>

  # Contributor: André Silva <emulatorman@hyperbola.info>

  

+ 

  # parabola changes and rationale:

  #  - removed drumkits recommendation

  

+ 

  pkgname=hydrogen

- pkgver=1.0.2

- pkgrel=1

+ pkgver=1.1.0

+ pkgrel=2

  pkgrel+=.parabola1

  pkgdesc="An advanced drum machine"

  pkgdesc+=", without nonfree drumkits recommendation"
@@ -25,8 +27,9 @@ 

  checkdepends=('cppunit')

  optdepends=('new-session-manager: for session management')

  source=("${pkgname}-${pkgver}.tar.gz::https://github.com/${pkgname}-music/${pkgname}/archive/${pkgver}.tar.gz")

- sha512sums=('7466b7ef1da4a078d67e1cab8744b2e0c3c048bb55e1febd22023c591ed9e2bf1cea41adc38a775a2ac60978735517a92df404d5ca8bb13603ea68c8da70daa9')

- b2sums=('a4210e666b11e173eb0e02728f601ac9811941b558096ae76f3ad45b91c5db1ff942cddd536a50f8f2f456871d69f3a6c52d53c926f4547f13783ccbb4fc250d')

+ sha512sums=('116380be03f03a9294e278be5c7ede90fe088f21bf31db46a5e5df2684d11676e518200e6c4a187063c769f5b97950af9602b9b2694ca37788f73a2666265cc8')

+ b2sums=('8008336d2199bf36d9efca8875217e4a5f3d66c0274e25334525292e7864ca1dc4da75f86cbba981dfdbc19a3dbafebff503ce1ef597adae56fc467b44611a19')

+ 

  

  prepare() {

    # Change to list with free licensed drumkits only

file modified
+9 -8
@@ -1,9 +1,9 @@ 

- # Maintainer (Arch): Levente Polyak <anthraxx[at]archlinux[dot]org>

- # Contributor (Arch): Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>

- # Contributor (Arch): Ionut Biru <ibiru@archlinux.org>

- # Contributor (Arch): Alexander Baldeck <alexander@archlinux.org>

- # Contributor (Arch): Dale Blount <dale@archlinux.org>

- # Contributor (Arch): Anders Bostrom <anders.bostrom@home.se>

+ # Maintainer (arch): Levente Polyak <anthraxx[at]archlinux[dot]org>

+ # Contributor: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>

+ # Contributor: Ionut Biru <ibiru@archlinux.org>

+ # Contributor: Alexander Baldeck <alexander@archlinux.org>

+ # Contributor: Dale Blount <dale@archlinux.org>

+ # Contributor: Anders Bostrom <anders.bostrom@home.se>

  # Maintainer: Andreas Grapentin <andreas@grapentin.org>

  # Contributor: André Silva <emulatorman@hyperbola.info>

  # Contributor: Márcio Silva <coadde@hyperbola.info>
@@ -11,13 +11,14 @@ 

  # Contributor: Isaac David <isacdaavid@isacdaavid.info>

  # Contributor: bill-auger <bill-auger@programmer.net>

  

+ 

  # parabola changes and rationale:

  #  - rebranded to icedove

- #  - added makedepends: quilt mozilla-searchplugins python2-blessings

- #  - added replaces, conflicts: thunderbird

+ #  - added makedepends for branding: quilt mozilla-searchplugins imagemagick

  #  - disabled tests, they break in an environment without network access.

  #  - disabled geo-location

  

+ 

  _pkgname=thunderbird

  pkgname=icedove

  replaces=("$_pkgname")

@@ -9,10 +9,10 @@ 

   2 files changed, 6 insertions(+), 12 deletions(-)

  

  diff --git a/toolkit/xre/nsAppRunner.cpp b/toolkit/xre/nsAppRunner.cpp

- index 055be3e7a3554..f660bd26e331c 100644

+ index 60ea6966cccf..ae862aba01b3 100644

  --- a/toolkit/xre/nsAppRunner.cpp

  +++ b/toolkit/xre/nsAppRunner.cpp

- @@ -4304,11 +4304,7 @@ int XREMain::XRE_mainStartup(bool* aExitFlag) {

+ @@ -4299,11 +4299,7 @@ int XREMain::XRE_mainStartup(bool* aExitFlag) {

     // consistently.

   

     // Set program name to the one defined in application.ini.
@@ -26,11 +26,11 @@ 

     // Initialize GTK here for splash.

   

  diff --git a/widget/gtk/nsAppShell.cpp b/widget/gtk/nsAppShell.cpp

- index 60de473de07ab..004c066575c17 100644

+ index 7090bd2ef350..76bda087be72 100644

  --- a/widget/gtk/nsAppShell.cpp

  +++ b/widget/gtk/nsAppShell.cpp

- @@ -24,6 +24,8 @@

-  #  include "WakeLockListener.h"

+ @@ -27,6 +27,8 @@

+  #  include "nsIObserverService.h"

   #endif

   #include "gfxPlatform.h"

  +#include "nsAppRunner.h"
@@ -38,7 +38,7 @@ 

   #include "ScreenHelperGTK.h"

   #include "HeadlessScreenHelper.h"

   #include "mozilla/widget/ScreenManager.h"

- @@ -152,13 +154,9 @@ nsresult nsAppShell::Init() {

+ @@ -256,13 +258,9 @@ nsresult nsAppShell::Init() {

         // See https://bugzilla.gnome.org/show_bug.cgi?id=747634

         //

         // Only bother doing this for the parent process, since it's the one

@@ -318,10 +318,12 @@ 

       const params = {

         ...filters,

         _expected: expectedTimestamp ?? 0,

- @@ -166,6 +166,9 @@ var Utils = {

+ @@ -273,7 +264,10 @@ var Utils = {

+            .map(([k, v]) => `${k}=${encodeURIComponent(v)}`)

             .join("&");

       }

-      const response = await fetch(url);

+ -    const response = await Utils.fetch(url);

+ +    const response = await fetch(url);

  +    const responseDate = new Date().toUTCString()

  +    response.headers.set("Date", responseDate);

  +    response.headers.set("Last-Modified", responseDate);
@@ -368,9 +370,9 @@ 

       "blocklists",

       "main",

  +    "monitor",

-      "pinning",

       "security-state",

   ]

+  

  -- 

  2.31.1

  
@@ -536,7 +538,7 @@ 

  -      signature: { x5u, signature },

  +      json_dump_metadata: { hash, size },

       } = metadata;

- -    const certChain = await (await fetch(x5u)).text();

+ -    const certChain = await (await Utils.fetch(x5u)).text();

       // Merge remote records with local ones and serialize as canonical JSON.

       const serialized = await RemoteSettingsWorker.canonicalStringify(

         records,
@@ -637,7 +639,7 @@ 

     IDBHelpers: "resource://services-settings/IDBHelpers.jsm",

     KintoHttpClient: "resource://services-common/kinto-http-client.js",

  @@ -30,6 +31,7 @@ XPCOMUtils.defineLazyModuleGetters(this, {

-  XPCOMUtils.defineLazyGlobalGetters(this, ["fetch"]);

+  });

   

   const TELEMETRY_COMPONENT = "remotesettings";

  +const DEFERRED_SYNC_DELAY_MILLISECONDS = 1000;

file modified
+13 -15
@@ -47,10 +47,10 @@ 

  

  pkgname=iceweasel

  epoch=1

- pkgver=92.0

+ pkgver=95.0

  pkgrel=1

  pkgrel+=.parabola1

- _brandingver=91.0-1

+ _brandingver=95.0-1

  pkgdesc="Standalone web browser derived from Mozilla Firefox"

  arch=(x86_64)

  arch+=(i686 armv7h)
@@ -61,7 +61,8 @@ 

               autoconf2.13 rust clang llvm jack nodejs cbindgen nasm

               python-setuptools python-psutil python-zstandard lld dump_syms)

  makedepends+=(quilt libxslt imagemagick git jq python-jsonschema)

- makedepends_i686=(gcc10)

+ makedepends_x86_64=(wasi-compiler-rt wasi-libc wasi-libc++ wasi-libc++abi)

+ makedepends_i686=(wasi-compiler-rt wasi-libc wasi-libc++ wasi-libc++abi gcc10)

  optdepends=('networkmanager: Location detection via available WiFi networks'

              'libnotify: Notification integration'

              'pulseaudio: Audio support'
@@ -79,25 +80,23 @@ 

           9003-FSDG-misc.patch

           process-json-files.py

           vendor.js.in)

- source_armv7h=(arm.patch

-                build-arm-libopus.patch)

+ source_armv7h=(build-arm-libopus.patch)

  source_i686=('avoid-libxul-OOM-python-check.patch'

               'rust-static-disable-network-test-on-static-libraries.patch')

- sha256sums=('299a472373021cc9194449c9f4bb962d5f74ef05e8af0448c589761ea34fbc84'

+ sha256sums=('7fa3e43f6ec710b2ebba0e99db713a56d13d85f1f23c4a1399bb594fd74864de'

              'SKIP'

-             'd7c7a65c4b7ec9ea40df129724ffb369d3f775b0514e3c267c52eec6d284b5e6'

+             'a7a5ea4680c0a4c6eb5a5f99970008f5ad3e2f29f0d6d050aa651bce8c713718'

              '9cdc2602661717712092d28bb494e5b48e518cb930898aca85eaf21f91f7ef58')

- sha256sums+=('b3cf2d984a979a1daf997efaa46358c601a7b3e957cbc21f4155ea0a72def8e5'

+ sha256sums+=('2b2dcb5f15dba7f4ce8bc19de260dbc75219a93b107931bb0f6aff705c579fe5'

               'SKIP'

-              '6ebbf18792cb57067f500fd4575c341d4708c5c0a232d676471f87dfa590621b'

+              'a4e3c3869085cb282cb5a0fcb64e816c0415f25d4792a62c4f1d599d3111b23c'

               'afeaeb6e9a6af901b57e25d85014e5c792efe4ff9dabb58663377f487b9d2887'

               '39e3a5e1ad137e21f842a44d7e3bd24050292d2b41fe59b4e7c7dfed52a195dd'

               '9386f1c50506cd20ab6d212335d5e4417faeb2aea371dd46f2d107d171e80b83'

               'c93ce98e1cb64033079343ff1f3037fab6a3bc6d3eb5bc14c5edb70e2d45965d')

  sha256sums_i686=('2f0c81a38c4578f68f5456b618fe84a78974072821488173eb55e0e72287e353'

                   '10c5276eab2e87f400a6ec15d7ffbef3b0407ee888dea36f1128927ca55b9041')

- sha256sums_armv7h=('bc00516032330760444939c516a60c78f868631e1b37f075f0fe71a53737b966'

-                    '2d4d91f7e35d0860225084e37ec320ca6cae669f6c9c8fe7735cdbd542e3a7c9')

+ sha256sums_armv7h=('2d4d91f7e35d0860225084e37ec320ca6cae669f6c9c8fe7735cdbd542e3a7c9')

  validpgpkeys=('14F26682D0916CDD81E37B6D61B7B526D98F0353') # Mozilla Software Releases <release@mozilla.com>

  validpgpkeys+=('BFA8008A8265677063B11BF47171986E4B745536') # Andreas Grapentin

  validpgpkeys+=('3954A7AB837D0EA9CFA9798925DB7D9B5A8D4B40') # bill-auger
@@ -158,6 +157,7 @@ 

  ac_add_options --enable-linker=lld

  ac_add_options --disable-elf-hack

  ac_add_options --disable-bootstrap

+ ac_add_options --with-wasi-sysroot=/usr/share/wasi-sysroot

  

  # Branding

  ac_add_options --disable-official-branding
@@ -193,26 +193,24 @@ 

          /--enable-hardening/d

          /--enable-optimize/d

          /--enable-rust-simd/d

+         s|--with-wasi-sysroot=/usr/share/wasi-sysroot|--without-wasm-sandboxed-libraries|

        ' ../mozconfig

  

        cat >>../mozconfig <<END

  export CC=clang

  export CXX=clang++

- ac_add_options --disable-webrtc

  ac_add_options --disable-elf-hack

  

  # https://bugzilla.redhat.com/show_bug.cgi?id=1641623

  ac_add_options --disable-av1

  ac_add_options --enable-optimize="-g0 -O2"

- mk_add_options MOZ_MAKE_FLAGS='-j2'

+ mk_add_options MOZ_MAKE_FLAGS='-j1'

  END

  

        # mozbuild.configure.options.InvalidOptionError: --disable-eme is not available in this configuration

        # EME is disabled anyway in the built package, but better check if it exists for ARM each new release.

        sed -i 's|ac_add_options --disable-eme||' ../mozconfig

  

-       echo "applying arm.patch"

-       patch -p1 -i ../arm.patch

        echo "applying build-arm-libopus.patch"

        patch -p1 -i ../build-arm-libopus.patch

      ;;

@@ -0,0 +1,146 @@ 

+ # Maintainer (arch): Andreas Radke <andyrtr@archlinux.org>

+ # Contributor: Art Gramlich <art@gramlich-net.com>

+ # Contributor: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>

+ # Contributor: Eli Schwartz <eschwartz@archlinux.org>

+ # Contributor: bill-auger <bill-auger@programmer.net>

+ 

+ 

+ # parabola changes and rationale:

+ #

+ # Several Parabola packages depends on ICU, and the ICU soname changes often.

+ # This means that if we don't rebuild all the Parabola packages which depend

+ # on ICU, as soon as the new ArchLinux, ArchLinux32, and ArchLinuxARM ICU

+ # packages are synchronized into the Parabola repositories, we have a problem.

+ # The repo server synchronizes with the upstream repos un-attended; so this

+ # is a wonderful surprise each time; and we hustle frantucally to get the

+ # system sane again. We could watch the testing and staging repos of each

+ # upstream, and start re-building everything in a Parabola staging repo;

+ # but that could result in discarded work, if those exact versions are not the

+ # ones which are eventually released into [core].

+ #

+ # At first nothing was done to fix or workaround that issue. In practice,

+ # once a new ICU was synchronized, many users were upgrading before the

+ # Parabola packages had the time to be rebuilt. For such users, it

+ # broke all the installed Parabola packages that were depending on the old ICU.

+ # This means that users had to find a way to downgrade packages manually or wait

+ # until developers would finally have rebuilt all the packages that were broken.

+ #

+ # Then such packages were modified to make them depend on the exact version of

+ # the ICU packages they were built against. This way, once the new ICU package

+ # was synchronized, users could not upgrade if they had packages that were not

+ # rebuilt yet against the new ICU package. However this workaround also prevents

+ # installing packages that depends on the new ICU.

+ #

+ # The correct fix would probably be to automatically build all the Packages

+ # instead of relying on Arch Linux Packages. Still, a staging repo would be

+ # required to hold the new packages, until they all can be released together sanely.

+ # However we don't have the code, configuration and/or infrastructure to run

+ # an automatic builder for all packages yet even if there is work in this

+ # direction.

+ #

+ # In the meantime, this version of ICU exists for Parabola packages to link against

+ # at runtime. In this way, Parabola packages can depend only on the "sodeps" exposed

+ # by ICU, which is usually provided by the upstream distribution's ICU; but may be

+ # this ICU, if the Parabola package has yet to be rebuilt agianst the upgraded ICU.

+ #

+ # It is inspired by the admittedly awkward hack of versioned library

+ # dependencies more commonly seen (e.g. in the AUR as 'icu65') on which

+ # proprietary binaries built against Debian's ICU will depend. It is awkward,

+ # in the eyes of the beholder and this elegantly scales to Parabola's needs,

+ # without consuming increasing resources, which is the best definition of "not

+ # awkward".

+ #

+ # To use it, simply add the following dependency to any package which parabola

+ # has built or rebuilt:

+ #

+ #   depends=('libicui18n.so')

+ #

+ # or whichever shared library is reported by readelf -d /path/to/compiled/ELF/file

+ # and, every time the upstream distribution upgrades ICU, update this package

+ # as well, to ensure it always stays exactly one version behind.

+ #

+ # This works well for ICU, even for packages which link to both the older and

+ # newer versions of libicu*.so, since ICU uses versioned symbols as reported by

+ #

+ #   nm -D --demangle --with-symbol-versions /path/to/library

+ #

+ # However, caution must be taken before implementing the same idea for other

+ # libraries. So the idea is to only use it for libraries that often have this

+ # issue.

+ #

+ # Changes:

+ # - remove all files other than libicu*.so.*

+ # - depend on icu; this is needed because if the package is installed on its

+ #   own, ldconfig will create untracked symlinks which were supposed to be

+ #   installed by the icu package.

+ 

+ 

+ _pkgname=icu

+ pkgname=icu-compat-65

+ pkgver=65.1

+ pkgrel=3

+ pkgrel+=.parabola3

+ pkgdesc="International Components for Unicode library"

+ pkgdesc+=" (compatibility libraries for the previous release)"

+ arch=(x86_64)

+ arch+=(armv7h i686)

+ url="https://icu.unicode.org"

+ license=('custom:icu')

+ depends=('gcc-libs' 'sh')

+ depends+=("icu>${pkgver}")   # core/icu should always be ahead

+ conflicts=("icu<=${pkgver}") # core/icu should always be ahead

+ replaces+=('icu-65-compat')  # this rebuild (parabola3) is simply to rename the package

+ conflicts+=('icu-65-compat') # this rebuild (parabola3) is simply to rename the package

+ makedepends=('python')

+ provides=(libicu{data,i18n,io,test,tu,uc}.so)

+ source=(https://github.com/unicode-org/icu/releases/download/release-${pkgver//./-}/${_pkgname}4c-${pkgver//./_}-src.tgz{,.asc}

+         icu-65.1-initialized-buffer-uloc_getKeywordValue.patch::https://github.com/unicode-org/icu/commit/fab4c3c719.patch

+         icu-65.1-prevent-SEGV_MAPERR-in-append.patch::https://github.com/unicode-org/icu/commit/b7d08bc04a.patch)

+ # https://github.com/unicode-org/icu/releases/download/release-65-1/SHASUM512.txt - no checksum file for v67 release

+ sha512sums=('8f1ef33e1f4abc9a8ee870331c59f01b473d6da1251a19ce403f822f3e3871096f0791855d39c8f20c612fc49cda2c62c06864aa32ddab2dbd186d2b21ce9139'

+             'SKIP'

+             '8898fe0fa9805304cd2fc02c00ab1131861836f4d11887f82450c2378666cb03bce0c5038d3f0bdcdd1c1cdee2a00a61ef85602ed0e0c74ad2e58578b1940123'

+             '580283cdd95fb7b8410cb3a6c0f47a6c8e53e0fdc9c213b04cd133ba4120381533ff2aef89ddab968150754bd9ca3a536d5c592c6881e625eb8ee6de8723de1b')

+ validpgpkeys=('BA90283A60D67BA0DD910A893932080F4FB419E3') #  "Steven R. Loomis (filfla-signing) <srloomis@us.ibm.com>"

+ validpgpkeys+=('9731166CD8E23A83BEE7C6D3ACA5DBE1FD8FABF1') #  "Steven R. Loomis (ICU Project) <srl@icu-project.org>"

+ validpgpkeys+=('FFA9129A180D765B7A5BEA1C9B432B27D1BA20D7') # "Fredrik Roubert <fredrik@roubert.name>"

+ validpgpkeys+=('E4098B78AFC94394F3F49AA903996C7C83F12F11') # "keybase.io/srl295 <srl295@keybase.io>"

+ validpgpkeys+=('4569BBC09DA846FC91CBD21CE1BBA44593CF2AE0') # "Steven R. Loomis (codesign-qormi) <srloomis@us.ibm.com>"

+ 

+ 

+ prepare() {

+   cd icu

+ 

+   # https://unicode-org.atlassian.net/browse/ICU-20884

+   patch -Np2 -i ../icu-65.1-initialized-buffer-uloc_getKeywordValue.patch

+ 

+   # https://github.com/unicode-org/icu/pull/971

+   patch -Np2 -i ../icu-65.1-prevent-SEGV_MAPERR-in-append.patch

+ }

+ 

+ build() {

+   cd icu/source

+   ./configure --prefix=/usr \

+ 	--sysconfdir=/etc \

+ 	--mandir=/usr/share/man \

+ 	--sbindir=/usr/bin

+   make

+ }

+ 

+ check() {

+   cd icu/source

+   make -k check

+ }

+ 

+ package() {

+   cd icu/source

+   make -j1 DESTDIR="${pkgdir}" install

+ 

+   # Install license

+   install -Dm644 "${srcdir}"/icu/LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"

+ 

+   # to avoid conflicts against the preferred 'icu' package, we remove all files

+   # except the actual shared libraries

+   rm -r "${pkgdir}"/usr/{bin,include,lib/{icu,pkgconfig},share}

+   rm "${pkgdir}"/usr/lib/*.so

+ }

@@ -0,0 +1,23 @@ 

+ From fab4c3c719977205a3f005ddfd7fffbb9c19c587 Mon Sep 17 00:00:00 2001

+ From: Frank Tang <ftang@chromium.org>

+ Date: Wed, 30 Oct 2019 17:45:22 -0700

+ Subject: [PATCH] ICU-20884 initialized buffer uloc_getKeywordValue

+ 

+ ---

+  icu4c/source/common/uloc.cpp | 3 +++

+  1 file changed, 3 insertions(+)

+ 

+ diff --git a/icu4c/source/common/uloc.cpp b/icu4c/source/common/uloc.cpp

+ index 6a9bfcfbff5..ea81c0ce87f 100644

+ --- a/icu4c/source/common/uloc.cpp

+ +++ b/icu4c/source/common/uloc.cpp

+ @@ -766,6 +766,9 @@ uloc_getKeywordValue(const char* localeID,

+                       char* buffer, int32_t bufferCapacity,

+                       UErrorCode* status)

+  {

+ +    if (buffer != nullptr) {

+ +        buffer[0] = '\0';

+ +    }

+      const char* startSearchHere = NULL;

+      const char* nextSeparator = NULL;

+      char keywordNameBuffer[ULOC_KEYWORD_BUFFER_LEN];

@@ -0,0 +1,118 @@ 

+ From b7d08bc04a4296982fcef8b6b8a354a9e4e7afca Mon Sep 17 00:00:00 2001

+ From: Frank Tang <ftang@chromium.org>

+ Date: Sat, 1 Feb 2020 02:39:04 +0000

+ Subject: [PATCH] ICU-20958 Prevent SEGV_MAPERR in append

+ 

+ See #971

+ ---

+  icu4c/source/common/unistr.cpp          |  6 ++-

+  icu4c/source/test/intltest/ustrtest.cpp | 62 +++++++++++++++++++++++++

+  icu4c/source/test/intltest/ustrtest.h   |  1 +

+  3 files changed, 68 insertions(+), 1 deletion(-)

+ 

+ diff --git a/icu4c/source/common/unistr.cpp b/icu4c/source/common/unistr.cpp

+ index 901bb3358ba..077b4d6ef20 100644

+ --- a/icu4c/source/common/unistr.cpp

+ +++ b/icu4c/source/common/unistr.cpp

+ @@ -1563,7 +1563,11 @@ UnicodeString::doAppend(const UChar *srcChars, int32_t srcStart, int32_t srcLeng

+    }

+  

+    int32_t oldLength = length();

+ -  int32_t newLength = oldLength + srcLength;

+ +  int32_t newLength;

+ +  if (uprv_add32_overflow(oldLength, srcLength, &newLength)) {

+ +    setToBogus();

+ +    return *this;

+ +  }

+  

+    // Check for append onto ourself

+    const UChar* oldArray = getArrayStart();

+ diff --git a/icu4c/source/test/intltest/ustrtest.cpp b/icu4c/source/test/intltest/ustrtest.cpp

+ index b6515ea813c..ad38bdf53a3 100644

+ --- a/icu4c/source/test/intltest/ustrtest.cpp

+ +++ b/icu4c/source/test/intltest/ustrtest.cpp

+ @@ -67,6 +67,7 @@ void UnicodeStringTest::runIndexedTest( int32_t index, UBool exec, const char* &

+      TESTCASE_AUTO(TestWCharPointers);

+      TESTCASE_AUTO(TestNullPointers);

+      TESTCASE_AUTO(TestUnicodeStringInsertAppendToSelf);

+ +    TESTCASE_AUTO(TestLargeAppend);

+      TESTCASE_AUTO_END;

+  }

+  

+ @@ -2310,3 +2311,64 @@ void UnicodeStringTest::TestUnicodeStringInsertAppendToSelf() {

+      str.insert(2, sub);

+      assertEquals("", u"abbcdcde", str);

+  }

+ +

+ +void UnicodeStringTest::TestLargeAppend() {

+ +    if(quick) return;

+ +

+ +    IcuTestErrorCode status(*this, "TestLargeAppend");

+ +    // Make a large UnicodeString

+ +    int32_t len = 0xAFFFFFF;

+ +    UnicodeString str;

+ +    char16_t *buf = str.getBuffer(len);

+ +    // A fast way to set buffer to valid Unicode.

+ +    // 4E4E is a valid unicode character

+ +    uprv_memset(buf, 0x4e, len * 2);

+ +    str.releaseBuffer(len);

+ +    UnicodeString dest;

+ +    // Append it 16 times

+ +    // 0xAFFFFFF times 16 is 0xA4FFFFF1,

+ +    // which is greater than INT32_MAX, which is 0x7FFFFFFF.

+ +    int64_t total = 0;

+ +    for (int32_t i = 0; i < 16; i++) {

+ +        dest.append(str);

+ +        total += len;

+ +        if (total <= INT32_MAX) {

+ +            assertFalse("dest is not bogus", dest.isBogus());

+ +        } else {

+ +            assertTrue("dest should be bogus", dest.isBogus());

+ +        }

+ +    }

+ +    dest.remove();

+ +    total = 0;

+ +    for (int32_t i = 0; i < 16; i++) {

+ +        dest.append(str);

+ +        total += len;

+ +        if (total + len <= INT32_MAX) {

+ +            assertFalse("dest is not bogus", dest.isBogus());

+ +        } else if (total <= INT32_MAX) {

+ +            // Check that a string of exactly the maximum size works

+ +            UnicodeString str2;

+ +            int32_t remain = INT32_MAX - total;

+ +            char16_t *buf2 = str2.getBuffer(remain);

+ +            if (buf2 == nullptr) {

+ +                // if somehow memory allocation fail, return the test

+ +                return;

+ +            }

+ +            uprv_memset(buf2, 0x4e, remain * 2);

+ +            str2.releaseBuffer(remain);

+ +            dest.append(str2);

+ +            total += remain;

+ +            assertEquals("When a string of exactly the maximum size works", (int64_t)INT32_MAX, total);

+ +            assertEquals("When a string of exactly the maximum size works", INT32_MAX, dest.length());

+ +            assertFalse("dest is not bogus", dest.isBogus());

+ +

+ +            // Check that a string size+1 goes bogus

+ +            str2.truncate(1);

+ +            dest.append(str2);

+ +            total++;

+ +            assertTrue("dest should be bogus", dest.isBogus());

+ +        } else {

+ +            assertTrue("dest should be bogus", dest.isBogus());

+ +        }

+ +    }

+ +}

+ diff --git a/icu4c/source/test/intltest/ustrtest.h b/icu4c/source/test/intltest/ustrtest.h

+ index 218befdcc68..4a356a92c7a 100644

+ --- a/icu4c/source/test/intltest/ustrtest.h

+ +++ b/icu4c/source/test/intltest/ustrtest.h

+ @@ -97,6 +97,7 @@ class UnicodeStringTest: public IntlTest {

+      void TestWCharPointers();

+      void TestNullPointers();

+      void TestUnicodeStringInsertAppendToSelf();

+ +    void TestLargeAppend();

+  };

+  

+  #endif

@@ -0,0 +1,130 @@ 

+ # Maintainer (arch): Andreas Radke <andyrtr@archlinux.org>

+ # Contributor: Art Gramlich <art@gramlich-net.com>

+ # Contributor: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>

+ # Contributor: Eli Schwartz <eschwartz@archlinux.org>

+ # Contributor: bill-auger <bill-auger@programmer.net>

+ 

+ 

+ # parabola changes and rationale:

+ #

+ # Several Parabola packages depends on ICU, and the ICU soname changes often.

+ # This means that if we don't rebuild all the Parabola packages which depend

+ # on ICU, as soon as the new ArchLinux, ArchLinux32, and ArchLinuxARM ICU

+ # packages are synchronized into the Parabola repositories, we have a problem.

+ # The repo server synchronizes with the upstream repos un-attended; so this

+ # is a wonderful surprise each time; and we hustle frantucally to get the

+ # system sane again. We could watch the testing and staging repos of each

+ # upstream, and start re-building everything in a Parabola staging repo;

+ # but that could result in discarded work, if those exact versions are not the

+ # ones which are eventually released into [core].

+ #

+ # At first nothing was done to fix or workaround that issue. In practice,

+ # once a new ICU was synchronized, many users were upgrading before the

+ # Parabola packages had the time to be rebuilt. For such users, it

+ # broke all the installed Parabola packages that were depending on the old ICU.

+ # This means that users had to find a way to downgrade packages manually or wait

+ # until developers would finally have rebuilt all the packages that were broken.

+ #

+ # Then such packages were modified to make them depend on the exact version of

+ # the ICU packages they were built against. This way, once the new ICU package

+ # was synchronized, users could not upgrade if they had packages that were not

+ # rebuilt yet against the new ICU package. However this workaround also prevents

+ # installing packages that depends on the new ICU.

+ #

+ # The correct fix would probably be to automatically build all the Packages

+ # instead of relying on Arch Linux Packages. Still, a staging repo would be

+ # required to hold the new packages, until they all can be released together sanely.

+ # However we don't have the code, configuration and/or infrastructure to run

+ # an automatic builder for all packages yet even if there is work in this

+ # direction.

+ #

+ # In the meantime, this version of ICU exists for Parabola packages to link against

+ # at runtime. In this way, Parabola packages can depend only on the "sodeps" exposed

+ # by ICU, which is usually provided by the upstream distribution's ICU; but may be

+ # this ICU, if the Parabola package has yet to be rebuilt agianst the upgraded ICU.

+ #

+ # It is inspired by the admittedly awkward hack of versioned library

+ # dependencies more commonly seen (e.g. in the AUR as 'icu65') on which

+ # proprietary binaries built against Debian's ICU will depend. It is awkward,

+ # in the eyes of the beholder and this elegantly scales to Parabola's needs,

+ # without consuming increasing resources, which is the best definition of "not

+ # awkward".

+ #

+ # To use it, simply add the following dependency to any package which parabola

+ # has built or rebuilt:

+ #

+ #   depends=('libicui18n.so')

+ #

+ # or whichever shared library is reported by readelf -d /path/to/compiled/ELF/file

+ # and, every time the upstream distribution upgrades ICU, update this package

+ # as well, to ensure it always stays exactly one version behind.

+ #

+ # This works well for ICU, even for packages which link to both the older and

+ # newer versions of libicu*.so, since ICU uses versioned symbols as reported by

+ #

+ #   nm -D --demangle --with-symbol-versions /path/to/library

+ #

+ # However, caution must be taken before implementing the same idea for other

+ # libraries. So the idea is to only use it for libraries that often have this

+ # issue.

+ #

+ # Changes:

+ # - remove all files other than libicu*.so.*

+ # - depend on icu; this is needed because if the package is installed on its

+ #   own, ldconfig will create untracked symlinks which were supposed to be

+ #   installed by the icu package.

+ 

+ 

+ _pkgname=icu

+ pkgname=${_pkgname}-compat-67

+ pkgver=67.1

+ pkgrel=1

+ pkgrel+=.parabola1

+ pkgdesc="International Components for Unicode library"

+ pkgdesc+=" (compatibility libraries for the previous release)"

+ arch=(x86_64)

+ arch+=(armv7h i686)

+ url="https://icu.unicode.org"

+ license=('custom:icu')

+ depends=('gcc-libs' 'sh')

+ depends+=("icu>${pkgver}")   # core/icu should always be ahead

+ conflicts=("icu<=${pkgver}") # core/icu should always be ahead

+ makedepends=('python')

+ provides=(libicu{data,i18n,io,test,tu,uc}.so)

+ source=(https://github.com/unicode-org/icu/releases/download/release-${pkgver//./-}/${_pkgname}4c-${pkgver//./_}-src.tgz{,.asc})

+ # https://github.com/unicode-org/icu/releases/download/release-65-1/SHASUM512.txt - no checksum file for v67 release

+ sha512sums=('4779f1ce1ca7976f6fad6768853ea8c540da54d11509e3b6cfd864a04b5f2db1c3d4b546387f91ad02fb90804525bc37d2543173f0d705d6ca11dc6f2b7640a8'

+             'SKIP')

+ validpgpkeys=('BA90283A60D67BA0DD910A893932080F4FB419E3') #  "Steven R. Loomis (filfla-signing) <srloomis@us.ibm.com>"

+ validpgpkeys+=('9731166CD8E23A83BEE7C6D3ACA5DBE1FD8FABF1') #  "Steven R. Loomis (ICU Project) <srl@icu-project.org>"

+ validpgpkeys+=('FFA9129A180D765B7A5BEA1C9B432B27D1BA20D7') # "Fredrik Roubert <fredrik@roubert.name>"

+ validpgpkeys+=('E4098B78AFC94394F3F49AA903996C7C83F12F11') # "keybase.io/srl295 <srl295@keybase.io>"

+ validpgpkeys+=('4569BBC09DA846FC91CBD21CE1BBA44593CF2AE0') # "Steven R. Loomis (codesign-qormi) <srloomis@us.ibm.com>"

+ 

+ 

+ build() {

+   cd icu/source

+   ./configure --prefix=/usr \

+ 	--sysconfdir=/etc \

+ 	--mandir=/usr/share/man \

+ 	--sbindir=/usr/bin

+   make

+ }

+ 

+ check() {

+   cd icu/source

+   make -k check

+ }

+ 

+ package() {

+   cd icu/source

+   make -j1 DESTDIR="${pkgdir}" install

+ 

+   # Install license

+   install -Dm644 "${srcdir}"/icu/LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"

+ 

+   # to avoid conflicts against the preferred 'icu' package, we remove all files

+   # except the actual shared libraries

+   rm -r "${pkgdir}"/usr/{bin,include,lib/{icu,pkgconfig},share}

+   rm "${pkgdir}"/usr/lib/*.so

+ }

file modified
+13 -10
@@ -1,7 +1,8 @@ 

- # Maintainer (Arch): Andreas Radke <andyrtr@archlinux.org>

- # Contributor (Arch): Art Gramlich <art@gramlich-net.com>

+ # Maintainer (arch): Andreas Radke <andyrtr@archlinux.org>

+ # Contributor: Art Gramlich <art@gramlich-net.com>

  # Contributor: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>

  # Contributor: Eli Schwartz <eschwartz@archlinux.org>

+ # Contributor: bill-auger <bill-auger@programmer.net>

  

  

  # parabola changes and rationale:
@@ -74,31 +75,33 @@ 

  #   installed by the icu package.

  

  

- _pkgname=icu

+ _pkgname=icu # 'pkgver' should always be one major version behind core/icu

  pkgname=${_pkgname}-compat

- pkgver=67.1 # should always be one major version behind core/icu

+ pkgver=69.1

  pkgrel=1

  pkgrel+=.parabola1

  pkgdesc="International Components for Unicode library"

  pkgdesc+=" (compatibility libraries for the previous release)"

  arch=(x86_64)

  arch+=(armv7h i686)

- url="http://site.icu-project.org/home"

+ url="https://icu.unicode.org"

  license=('custom:icu')

  depends=('gcc-libs' 'sh')

- depends+=("icu>$pkgver")   # core/icu should always be one major version ahead

- conflicts=("icu<=$pkgver") # core/icu should always be one major version ahead

+ depends+=("icu>${pkgver}")   # core/icu should always be one major version ahead

+ conflicts=("icu<=${pkgver}") # core/icu should always be one major version ahead

  makedepends=('python')

  provides=(libicu{data,i18n,io,test,tu,uc}.so)

  source=(https://github.com/unicode-org/icu/releases/download/release-${pkgver//./-}/${_pkgname}4c-${pkgver//./_}-src.tgz{,.asc})

- # https://github.com/unicode-org/icu/releases/download/release-65-1/SHASUM512.txt - no checksum file for v67 release

- sha512sums=('4779f1ce1ca7976f6fad6768853ea8c540da54d11509e3b6cfd864a04b5f2db1c3d4b546387f91ad02fb90804525bc37d2543173f0d705d6ca11dc6f2b7640a8'

+ # https://github.com/unicode-org/icu/releases/download/release-69-1/SHASUM512.txt

+ sha512sums=('d4aeb781715144ea6e3c6b98df5bbe0490bfa3175221a1d667f3e6851b7bd4a638fa4a37d4a921ccb31f02b5d15a6dded9464d98051964a86f7b1cde0ff0aab7'

              'SKIP')

  validpgpkeys=('BA90283A60D67BA0DD910A893932080F4FB419E3') #  "Steven R. Loomis (filfla-signing) <srloomis@us.ibm.com>"

  validpgpkeys+=('9731166CD8E23A83BEE7C6D3ACA5DBE1FD8FABF1') #  "Steven R. Loomis (ICU Project) <srl@icu-project.org>"

  validpgpkeys+=('FFA9129A180D765B7A5BEA1C9B432B27D1BA20D7') # "Fredrik Roubert <fredrik@roubert.name>"

  validpgpkeys+=('E4098B78AFC94394F3F49AA903996C7C83F12F11') # "keybase.io/srl295 <srl295@keybase.io>"

- validpgpkeys=('4569BBC09DA846FC91CBD21CE1BBA44593CF2AE0') # "Steven R. Loomis (codesign-qormi) <srloomis@us.ibm.com>"

+ validpgpkeys+=('4569BBC09DA846FC91CBD21CE1BBA44593CF2AE0') # "Steven R. Loomis (codesign-qormi) <srloomis@us.ibm.com>"

+ validpgpkeys+=('0E51E7F06EF719FBD072782A5F56E5AFA63CCD33') # "Craig Cornelius (For use with ICU releases) <ccornelius@google.com>"

+ 

  

  build() {

    cd icu/source

file modified
+3 -3
@@ -10,9 +10,9 @@ 

  

  pkgname=kdevelop

  pkgver=5.6.2

- _clangver=12.0.1

- [[ "${CARCH}" == 'i686' ]] && _clangver=12.0.0

- pkgrel=5

+ _clangver=13.0.0

+ [[ "${CARCH}" == 'i686' ]] && _clangver=12.0.1

+ pkgrel=6

  pkgrel+=.parabola1

  pkgdesc='C++ IDE using KDE technologies'

  pkgdesc+=', without qt5-webengine dependency'

@@ -1,4982 +0,0 @@ 

- From c164bf7f87f9081fee7e1a186dd7a87a9a020b9e Mon Sep 17 00:00:00 2001

- From: Jason Self <j@jxself.org>

- Date: Thu, 4 Jul 2019 15:12:33 -0700

- Subject: [PATCH 1/8] Update carl9170 to latest upstream

- 

- Based on commit 001384147050b9cd9daadb4d3115cc0f13f5b319

- Dated May 5 2019.

- ---

-  WHENCE                               |   4 +-

-  carl9170fw/carlfw/include/wl.h       |   2 +-

-  carl9170fw/carlfw/src/hostif.c       |   8 +-

-  carl9170fw/carlfw/src/printf.c       |   0

-  carl9170fw/carlfw/src/wlantx.c       |   5 +-

-  carl9170fw/config/CMakeLists.txt     |   6 +-

-  carl9170fw/config/conf.c             | 210 ++++++----

-  carl9170fw/config/confdata.c         | 329 +++++++++------

-  carl9170fw/config/expr.c             | 206 +++++++---

-  carl9170fw/config/expr.h             | 105 ++++-

-  carl9170fw/config/kconf_id.c         |  54 ---

-  carl9170fw/config/lkc.h              |  50 +--

-  carl9170fw/config/lkc_proto.h        |  19 +-

-  carl9170fw/config/menu.c             | 259 +++++++++---

-  carl9170fw/config/preprocess.c       | 573 +++++++++++++++++++++++++++

-  carl9170fw/config/symbol.c           | 255 ++++--------

-  carl9170fw/config/util.c             |  86 ++--

-  carl9170fw/config/zconf.l            | 336 ++++++++++------

-  carl9170fw/config/zconf.y            | 403 +++++++++----------

-  carl9170fw/include/linux/ieee80211.h |  24 +-

-  carl9170fw/include/shared/wlan.h     |   2 +-

-  carl9170fw/toolchain/Makefile        |   8 +-

-  carl9170fw/toolchain/SHA256SUMS      |  18 +-

-  23 files changed, 1942 insertions(+), 1020 deletions(-)

-  mode change 100755 => 100644 carl9170fw/carlfw/src/printf.c

-  delete mode 100644 carl9170fw/config/kconf_id.c

-  create mode 100644 carl9170fw/config/preprocess.c

- 

- diff --git a/WHENCE b/WHENCE

- index dd8ec20..2932155 100644

- --- a/WHENCE

- +++ b/WHENCE

- @@ -142,8 +142,8 @@ From https://git.kernel.org/pub/scm/utils/cis-tools/cis-tools.git

-  

-  Driver: carl9170 -- Atheros AR9170 802.11 draft-n USB driver

-  

- -Version: Based on commit 370b7919114a02149088c482c8709cafb9bf7478

- -dated May 2 2018.

- +Version: Based on commit 001384147050b9cd9daadb4d3115cc0f13f5b319

- +dated May 5 2019.

-  

-  Licence: GPLv2 or later.

-  

- diff --git a/carl9170fw/carlfw/include/wl.h b/carl9170fw/carlfw/include/wl.h

- index 8499ca2..5566be4 100644

- --- a/carl9170fw/carlfw/include/wl.h

- +++ b/carl9170fw/carlfw/include/wl.h

- @@ -237,7 +237,7 @@ static inline __inline void unhide_super(struct dma_desc *desc)

-  	desc->totalLen += sizeof(struct carl9170_tx_superdesc);

-  }

-  

- -static inline __inline __hot void read_tsf(uint32_t *tsf)

- +static inline __inline __hot void read_tsf(uint32_t tsf[static 2])

-  {

-  	/*

-  	 * "According to the [hardware] documentation:

- diff --git a/carl9170fw/carlfw/src/hostif.c b/carl9170fw/carlfw/src/hostif.c

- index 73e89c7..06726db 100644

- --- a/carl9170fw/carlfw/src/hostif.c

- +++ b/carl9170fw/carlfw/src/hostif.c

- @@ -213,10 +213,14 @@ void handle_cmd(struct carl9170_rsp *resp)

-  		fw.reboot = 1;

-  		break;

-  

- -	case CARL9170_CMD_READ_TSF:

- +	case CARL9170_CMD_READ_TSF: {

- +		uint32_t tmptsf[2];

- +

- +		read_tsf(tmptsf);

-  		resp->hdr.len = 8;

- -		read_tsf((uint32_t *)resp->tsf.tsf);

- +		memcpy(resp->tsf.tsf, tmptsf, sizeof(tmptsf));

-  		break;

- +		}

-  

-  	case CARL9170_CMD_RX_FILTER:

-  		resp->hdr.len = 0;

- diff --git a/carl9170fw/carlfw/src/printf.c b/carl9170fw/carlfw/src/printf.c

- old mode 100755

- new mode 100644

- diff --git a/carl9170fw/carlfw/src/wlantx.c b/carl9170fw/carlfw/src/wlantx.c

- index 474c040..a8d0952 100644

- --- a/carl9170fw/carlfw/src/wlantx.c

- +++ b/carl9170fw/carlfw/src/wlantx.c

- @@ -260,7 +260,7 @@ static void __wlan_tx(struct dma_desc *desc)

-  

-  	if (unlikely(super->s.fill_in_tsf)) {

-  		struct ieee80211_mgmt *mgmt = (void *) &super->f.data.i3e;

- -		uint32_t *tsf = (uint32_t *) &mgmt->u.probe_resp.timestamp;

- +		uint32_t tmptsf[2];

-  

-  		/*

-  		 * Truth be told: this is a hack.

- @@ -272,7 +272,8 @@ static void __wlan_tx(struct dma_desc *desc)

-  		 * (even, if it's got an accurate atomic clock source).

-  		 */

-  

- -		read_tsf(tsf);

- +		read_tsf(tmptsf);

- +		memcpy(&mgmt->u.probe_resp.timestamp, tmptsf, sizeof(tmptsf));

-  	}

-  

-  	wlan_tx_ampdu(super);

- diff --git a/carl9170fw/config/CMakeLists.txt b/carl9170fw/config/CMakeLists.txt

- index 0a96a82..23e7218 100644

- --- a/carl9170fw/config/CMakeLists.txt

- +++ b/carl9170fw/config/CMakeLists.txt

- @@ -11,13 +11,13 @@ include_directories(${CMAKE_CURRENT_SOURCE_DIR})

-  

-  file(MAKE_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../include/generated")

-  

- -BISON_TARGET(zconf zconf.y zconf.tab.c COMPILE_FLAGS "-l -b zconf -p zconf -t")

- -FLEX_TARGET(zconfscan zconf.l zconf.lex.c COMPILE_FLAGS "-Pzconf -L")

- +BISON_TARGET(zconf zconf.y zconf.tab.c COMPILE_FLAGS "-l -b zconf -p yy -t")

- +FLEX_TARGET(zconfscan zconf.l zconf.lex.c COMPILE_FLAGS "-Pyy -L")

-  

-  SET(zconf_deps ${FLEX_zconfscan_OUTPUTS})

-  SET_SOURCE_FILES_PROPERTIES(${BISON_zconf_OUTPUTS}

-        PROPERTIES OBJECT_DEPENDS "${zconf_deps}")

-  

- -set(conf_src conf.c ${BISON_zconf_OUTPUTS})

- +set(conf_src conf.c symbol.c confdata.c expr.c preprocess.c ${BISON_zconf_OUTPUTS} ${FLEX_zconfscan_OUTPUTS})

-  

-  add_executable(conf ${conf_src})

- diff --git a/carl9170fw/config/conf.c b/carl9170fw/config/conf.c

- index 6be6143..2949b7d 100644

- --- a/carl9170fw/config/conf.c

- +++ b/carl9170fw/config/conf.c

- @@ -1,9 +1,8 @@

- +// SPDX-License-Identifier: GPL-2.0

-  /*

-   * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>

- - * Released under the terms of the GNU GPL v2.0.

-   */

-  

- -#include <locale.h>

-  #include <ctype.h>

-  #include <limits.h>

-  #include <stdio.h>

- @@ -20,10 +19,10 @@

-  

-  static void conf(struct menu *menu);

-  static void check_conf(struct menu *menu);

- -static void xfgets(char *str, int size, FILE *in);

-  

-  enum input_mode {

-  	oldaskconfig,

- +	syncconfig,

-  	oldconfig,

-  	allnoconfig,

-  	allyesconfig,

- @@ -33,12 +32,13 @@ enum input_mode {

-  	defconfig,

-  	savedefconfig,

-  	listnewconfig,

- -	oldnoconfig,

- -} input_mode = oldaskconfig;

- +	olddefconfig,

- +};

- +static enum input_mode input_mode = oldaskconfig;

-  

-  static int indent = 1;

-  static int tty_stdio;

- -static int valid_stdin = 1;

- +static int sync_kconfig;

-  static int conf_cnt;

-  static char line[PATH_MAX];

-  static struct menu *rootEntry;

- @@ -70,14 +70,14 @@ static void strip(char *str)

-  		*p-- = 0;

-  }

-  

- -static void check_stdin(void)

- +/* Helper function to facilitate fgets() by Jean Sacren. */

- +static void xfgets(char *str, int size, FILE *in)

-  {

- -	if (!valid_stdin) {

- -		printf(_("aborted!\n\n"));

- -		printf(_("Console input/output is redirected. "));

- -		printf(_("Run 'make config' to update configuration.\n\n"));

- -		exit(1);

- -	}

- +	if (!fgets(str, size, in))

- +		fprintf(stderr, "\nError in reading or end of file.\n");

- +

- +	if (!tty_stdio)

- +		printf("%s", str);

-  }

-  

-  static int conf_askvalue(struct symbol *sym, const char *def)

- @@ -85,7 +85,7 @@ static int conf_askvalue(struct symbol *sym, const char *def)

-  	enum symbol_type type = sym_get_type(sym);

-  

-  	if (!sym_has_value(sym))

- -		printf(_("(NEW) "));

- +		printf("(NEW) ");

-  

-  	line[0] = '\n';

-  	line[1] = 0;

- @@ -99,17 +99,15 @@ static int conf_askvalue(struct symbol *sym, const char *def)

-  

-  	switch (input_mode) {

-  	case oldconfig:

- +	case syncconfig:

-  		if (sym_has_value(sym)) {

-  			printf("%s\n", def);

-  			return 0;

-  		}

- -		check_stdin();

-  		/* fall through */

-  	case oldaskconfig:

-  		fflush(stdout);

-  		xfgets(line, sizeof(line), stdin);

- -		if (!tty_stdio)

- -			printf("\n");

-  		return 1;

-  	default:

-  		break;

- @@ -134,7 +132,7 @@ static int conf_string(struct menu *menu)

-  	const char *def;

-  

-  	while (1) {

- -		printf("%*s%s ", indent - 1, "", _(menu->prompt->text));

- +		printf("%*s%s ", indent - 1, "", menu->prompt->text);

-  		printf("(%s) ", sym->name);

-  		def = sym_get_string_value(sym);

-  		if (sym_get_string_value(sym))

- @@ -167,7 +165,7 @@ static int conf_sym(struct menu *menu)

-  	tristate oldval, newval;

-  

-  	while (1) {

- -		printf("%*s%s ", indent - 1, "", _(menu->prompt->text));

- +		printf("%*s%s ", indent - 1, "", menu->prompt->text);

-  		if (sym->name)

-  			printf("(%s) ", sym->name);

-  		putchar('[');

- @@ -189,9 +187,7 @@ static int conf_sym(struct menu *menu)

-  			printf("/m");

-  		if (oldval != yes && sym_tristate_within_range(sym, yes))

-  			printf("/y");

- -		if (menu_has_help(menu))

- -			printf("/?");

- -		printf("] ");

- +		printf("/?] ");

-  		if (!conf_askvalue(sym, sym_get_string_value(sym)))

-  			return 0;

-  		strip(line);

- @@ -254,7 +250,7 @@ static int conf_choice(struct menu *menu)

-  		case no:

-  			return 1;

-  		case mod:

- -			printf("%*s%s\n", indent - 1, "", _(menu_get_prompt(menu)));

- +			printf("%*s%s\n", indent - 1, "", menu_get_prompt(menu));

-  			return 0;

-  		case yes:

-  			break;

- @@ -264,7 +260,7 @@ static int conf_choice(struct menu *menu)

-  	while (1) {

-  		int cnt, def;

-  

- -		printf("%*s%s\n", indent - 1, "", _(menu_get_prompt(menu)));

- +		printf("%*s%s\n", indent - 1, "", menu_get_prompt(menu));

-  		def_sym = sym_get_choice_value(sym);

-  		cnt = def = 0;

-  		line[0] = 0;

- @@ -272,7 +268,7 @@ static int conf_choice(struct menu *menu)

-  			if (!menu_is_visible(child))

-  				continue;

-  			if (!child->sym) {

- -				printf("%*c %s\n", indent, '*', _(menu_get_prompt(child)));

- +				printf("%*c %s\n", indent, '*', menu_get_prompt(child));

-  				continue;

-  			}

-  			cnt++;

- @@ -281,30 +277,27 @@ static int conf_choice(struct menu *menu)

-  				printf("%*c", indent, '>');

-  			} else

-  				printf("%*c", indent, ' ');

- -			printf(" %d. %s", cnt, _(menu_get_prompt(child)));

- +			printf(" %d. %s", cnt, menu_get_prompt(child));

-  			if (child->sym->name)

-  				printf(" (%s)", child->sym->name);

-  			if (!sym_has_value(child->sym))

- -				printf(_(" (NEW)"));

- +				printf(" (NEW)");

-  			printf("\n");

-  		}

- -		printf(_("%*schoice"), indent - 1, "");

- +		printf("%*schoice", indent - 1, "");

-  		if (cnt == 1) {

-  			printf("[1]: 1\n");

-  			goto conf_childs;

-  		}

- -		printf("[1-%d", cnt);

- -		if (menu_has_help(menu))

- -			printf("?");

- -		printf("]: ");

- +		printf("[1-%d?]: ", cnt);

-  		switch (input_mode) {

-  		case oldconfig:

- +		case syncconfig:

-  			if (!is_new) {

-  				cnt = def;

-  				printf("%d\n", cnt);

-  				break;

-  			}

- -			check_stdin();

-  			/* fall through */

-  		case oldaskconfig:

-  			fflush(stdout);

- @@ -364,9 +357,11 @@ static void conf(struct menu *menu)

-  

-  		switch (prop->type) {

-  		case P_MENU:

- -			if ((input_mode == listnewconfig ||

- -			     input_mode == oldnoconfig) &&

- -			    rootEntry != menu) {

- +			/*

- +			 * Except in oldaskconfig mode, we show only menus that

- +			 * contain new symbols.

- +			 */

- +			if (input_mode != oldaskconfig && rootEntry != menu) {

-  				check_conf(menu);

-  				return;

-  			}

- @@ -376,7 +371,7 @@ static void conf(struct menu *menu)

-  			if (prompt)

-  				printf("%*c\n%*c %s\n%*c\n",

-  					indent, '*',

- -					indent, '*', _(prompt),

- +					indent, '*', prompt,

-  					indent, '*');

-  		default:

-  			;

- @@ -426,12 +421,22 @@ static void check_conf(struct menu *menu)

-  		if (sym_is_changable(sym) ||

-  		    (sym_is_choice(sym) && sym_get_tristate_value(sym) == yes)) {

-  			if (input_mode == listnewconfig) {

- -				if (sym->name && !sym_is_choice_value(sym)) {

- -					printf("%s%s\n", CONFIG_, sym->name);

- +				if (sym->name) {

- +					const char *str;

- +

- +					if (sym->type == S_STRING) {

- +						str = sym_get_string_value(sym);

- +						str = sym_escape_string_value(str);

- +						printf("%s%s=%s\n", CONFIG_, sym->name, str);

- +						free((void *)str);

- +					} else {

- +						str = sym_get_string_value(sym);

- +						printf("%s%s=%s\n", CONFIG_, sym->name, str);

- +					}

-  				}

- -			} else if (input_mode != oldnoconfig) {

- +			} else {

-  				if (!conf_cnt++)

- -					printf(_("*\n* Restart config...\n*\n"));

- +					printf("*\n* Restart config...\n*\n");

-  				rootEntry = menu_get_parent_menu(menu);

-  				conf(rootEntry);

-  			}

- @@ -443,8 +448,9 @@ static void check_conf(struct menu *menu)

-  }

-  

-  static struct option long_opts[] = {

- -	{"askconfig",       no_argument,       NULL, oldaskconfig},

- -	{"config",          no_argument,       NULL, oldconfig},

- +	{"oldaskconfig",    no_argument,       NULL, oldaskconfig},

- +	{"oldconfig",       no_argument,       NULL, oldconfig},

- +	{"syncconfig",      no_argument,       NULL, syncconfig},

-  	{"defconfig",       optional_argument, NULL, defconfig},

-  	{"savedefconfig",   required_argument, NULL, savedefconfig},

-  	{"allnoconfig",     no_argument,       NULL, allnoconfig},

- @@ -453,7 +459,7 @@ static struct option long_opts[] = {

-  	{"alldefconfig",    no_argument,       NULL, alldefconfig},

-  	{"randconfig",      no_argument,       NULL, randconfig},

-  	{"listnewconfig",   no_argument,       NULL, listnewconfig},

- -	{"noconfig",        no_argument,       NULL, oldnoconfig},

- +	{"olddefconfig",    no_argument,       NULL, olddefconfig},

-  	{NULL, 0, NULL, 0}

-  };

-  

- @@ -463,10 +469,11 @@ static void conf_usage(const char *progname)

-  	printf("Usage: %s [-s] [option] <kconfig-file>\n", progname);

-  	printf("[option] is _one_ of the following:\n");

-  	printf("  --listnewconfig         List new options\n");

- -	printf("  --askconfig             Start a new configuration using a line-oriented program\n");

- -	printf("  --config                Update a configuration using a provided .config as base\n");

- -	printf("  --silentconfig          Same as config, but quietly, additionally update deps\n");

- -	printf("  --noconfig              Same as silentconfig but set new symbols to no\n");

- +	printf("  --oldaskconfig          Start a new configuration using a line-oriented program\n");

- +	printf("  --oldconfig             Update a configuration using a provided .config as base\n");

- +	printf("  --syncconfig            Similar to oldconfig but generates configuration in\n"

- +	       "                          include/{generated/,config/}\n");

- +	printf("  --olddefconfig          Same as oldconfig but sets new symbols to their default value\n");

-  	printf("  --defconfig <file>      New config with default defined in <file>\n");

-  	printf("  --savedefconfig <file>  Save the minimal current configuration to <file>\n");

-  	printf("  --allnoconfig           New config where all options are answered with no\n");

- @@ -482,12 +489,9 @@ int main(int ac, char **av)

-  	int opt;

-  	const char *name, *defconfig_file = NULL /* gcc uninit */;

-  	struct stat tmpstat;

- +	int no_conf_write = 0;

-  

- -	setlocale(LC_ALL, "");

- -	bindtextdomain(PACKAGE, LOCALEDIR);

- -	textdomain(PACKAGE);

- -

- -	tty_stdio = isatty(0) && isatty(1) && isatty(2);

- +	tty_stdio = isatty(0) && isatty(1);

-  

-  	while ((opt = getopt_long(ac, av, "s", long_opts, NULL)) != -1) {

-  		if (opt == 's') {

- @@ -496,6 +500,14 @@ int main(int ac, char **av)

-  		}

-  		input_mode = (enum input_mode)opt;

-  		switch (opt) {

- +		case syncconfig:

- +			/*

- +			 * syncconfig is invoked during the build stage.

- +			 * Suppress distracting "configuration written to ..."

- +			 */

- +			conf_set_message_callback(NULL);

- +			sync_kconfig = 1;

- +			break;

-  		case defconfig:

-  		case savedefconfig:

-  			defconfig_file = optarg;

- @@ -532,7 +544,7 @@ int main(int ac, char **av)

-  		case allmodconfig:

-  		case alldefconfig:

-  		case listnewconfig:

- -		case oldnoconfig:

- +		case olddefconfig:

-  			break;

-  		case '?':

-  			conf_usage(progname);

- @@ -541,30 +553,45 @@ int main(int ac, char **av)

-  		}

-  	}

-  	if (ac == optind) {

- -		printf(_("%s: Kconfig file missing\n"), av[0]);

- +		fprintf(stderr, "%s: Kconfig file missing\n", av[0]);

-  		conf_usage(progname);

-  		exit(1);

-  	}

-  	name = av[optind];

-  	conf_parse(name);

-  	//zconfdump(stdout);

- +	if (sync_kconfig) {

- +		name = conf_get_configname();

- +		if (stat(name, &tmpstat)) {

- +			fprintf(stderr, "***\n"

- +				"*** Configuration file \"%s\" not found!\n"

- +				"***\n"

- +				"*** Please run some configurator (e.g. \"make oldconfig\" or\n"

- +				"*** \"make menuconfig\" or \"make xconfig\").\n"

- +				"***\n", name);

- +			exit(1);

- +		}

- +	}

-  

-  	switch (input_mode) {

-  	case defconfig:

-  		if (!defconfig_file)

-  			defconfig_file = conf_get_default_confname();

-  		if (conf_read(defconfig_file)) {

- -			printf(_("***\n"

- -				"*** Can't find default configuration \"%s\"!\n"

- -				"***\n"), defconfig_file);

- +			fprintf(stderr,

- +				"***\n"

- +				  "*** Can't find default configuration \"%s\"!\n"

- +				  "***\n",

- +				defconfig_file);

-  			exit(1);

-  		}

-  		break;

-  	case savedefconfig:

- +	case syncconfig:

-  	case oldaskconfig:

-  	case oldconfig:

-  	case listnewconfig:

- -	case oldnoconfig:

- +	case olddefconfig:

-  		conf_read(NULL);

-  		break;

-  	case allnoconfig:

- @@ -578,7 +605,7 @@ int main(int ac, char **av)

-  		if ((strcmp(name, "") != 0) && (strcmp(name, "1") != 0)) {

-  			if (conf_read_simple(name, S_DEF_USER)) {

-  				fprintf(stderr,

- -					_("*** Can't read seed configuration \"%s\"!\n"),

- +					"*** Can't read seed configuration \"%s\"!\n",

-  					name);

-  				exit(1);

-  			}

- @@ -595,7 +622,7 @@ int main(int ac, char **av)

-  		if (conf_read_simple(name, S_DEF_USER) &&

-  		    conf_read_simple("all.config", S_DEF_USER)) {

-  			fprintf(stderr,

- -				_("*** KCONFIG_ALLCONFIG set, but no \"%s\" or \"all.config\" file found\n"),

- +				"*** KCONFIG_ALLCONFIG set, but no \"%s\" or \"all.config\" file found\n",

-  				name);

-  			exit(1);

-  		}

- @@ -604,7 +631,17 @@ int main(int ac, char **av)

-  		break;

-  	}

-  

- -	valid_stdin = tty_stdio;

- +	if (sync_kconfig) {

- +		name = getenv("KCONFIG_NOSILENTUPDATE");

- +		if (name && *name) {

- +			if (conf_get_changed()) {

- +				fprintf(stderr,

- +					"\n*** The configuration requires explicit update.\n\n");

- +				return 1;

- +			}

- +			no_conf_write = 1;

- +		}

- +	}

-  

-  	switch (input_mode) {

-  	case allnoconfig:

- @@ -635,44 +672,51 @@ int main(int ac, char **av)

-  		/* fall through */

-  	case oldconfig:

-  	case listnewconfig:

- -	case oldnoconfig:

- +	case syncconfig:

-  		/* Update until a loop caused no more changes */

-  		do {

-  			conf_cnt = 0;

-  			check_conf(&rootmenu);

- -		} while (conf_cnt &&

- -			 (input_mode != listnewconfig &&

- -			  input_mode != oldnoconfig));

- +		} while (conf_cnt);

- +		break;

- +	case olddefconfig:

- +	default:

-  		break;

-  	}

-  

-  	if (input_mode == savedefconfig) {

-  		if (conf_write_defconfig(defconfig_file)) {

- -			fprintf(stderr, _("n*** Error while saving defconfig to: %s\n\n"),

- +			fprintf(stderr, "n*** Error while saving defconfig to: %s\n\n",

-  				defconfig_file);

-  			return 1;

-  		}

-  	} else if (input_mode != listnewconfig) {

- -		/*

- -		 * build so we shall update autoconf.

- -		 */

- -		if (conf_write(NULL)) {

- -			fprintf(stderr, _("\n*** Error during writing of the configuration.\n\n"));

- +		if (!no_conf_write && conf_write(NULL)) {

- +			fprintf(stderr, "\n*** Error during writing of the configuration.\n\n");

-  			exit(1);

-  		}

- -		if (conf_write_autoconf()) {

- -			fprintf(stderr, _("\n*** Error during update of the configuration.\n\n"));

- +

- +		/*

- +		 * Create auto.conf if it does not exist.

- +		 * This prevents GNU Make 4.1 or older from emitting

- +		 * "include/generated/auto.conf: No such file or directory"

- +		 * in the top-level Makefile

- +		 *

- +		 * syncconfig always creates or updates auto.conf because it is

- +		 * used during the build.

- +		 */

- +

- +		/*

- +		 * In our cmake case, we always want to update the autogenerated

- +		 * files.

- +		 */

- +		sync_kconfig = 1;

- +

- +		if (conf_write_autoconf(sync_kconfig) && sync_kconfig) {

- +			fprintf(stderr,

- +				"\n*** Error during sync of the configuration.\n\n");

-  			return 1;

-  		}

-  	}

-  	return 0;

-  }

- -

- -/*

- - * Helper function to facilitate fgets() by Jean Sacren.

- - */

- -void xfgets(char *str, int size, FILE *in)

- -{

- -	if (fgets(str, size, in) == NULL)

- -		fprintf(stderr, "\nError in reading or end of file.\n");

- -}

- diff --git a/carl9170fw/config/confdata.c b/carl9170fw/config/confdata.c

- index e606f06..d67695d 100644

- --- a/carl9170fw/config/confdata.c

- +++ b/carl9170fw/config/confdata.c

- @@ -1,12 +1,13 @@

- +// SPDX-License-Identifier: GPL-2.0

-  /*

-   * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>

- - * Released under the terms of the GNU GPL v2.0.

-   */

-  

-  #include <sys/stat.h>

-  #include <ctype.h>

-  #include <errno.h>

-  #include <fcntl.h>

- +#include <limits.h>

-  #include <stdarg.h>

-  #include <stdio.h>

-  #include <stdlib.h>

- @@ -16,6 +17,105 @@

-  

-  #include "lkc.h"

-  

- +/* return true if 'path' exists, false otherwise */

- +static bool is_present(const char *path)

- +{

- +	struct stat st;

- +

- +	return !stat(path, &st);

- +}

- +

- +/* return true if 'path' exists and it is a directory, false otherwise */

- +static bool is_dir(const char *path)

- +{

- +	struct stat st;

- +

- +	if (stat(path, &st))

- +		return 0;

- +

- +	return S_ISDIR(st.st_mode);

- +}

- +

- +/*

- + * Create the parent directory of the given path.

- + *

- + * For example, if 'include/config/auto.conf' is given, create 'include/config'.

- + */

- +static int make_parent_dir(const char *path)

- +{

- +	char tmp[PATH_MAX + 1];

- +	char *p;

- +

- +	strncpy(tmp, path, sizeof(tmp));

- +	tmp[sizeof(tmp) - 1] = 0;

- +

- +	/* Remove the base name. Just return if nothing is left */

- +	p = strrchr(tmp, '/');

- +	if (!p)

- +		return 0;

- +	*(p + 1) = 0;

- +

- +	/* Just in case it is an absolute path */

- +	p = tmp;

- +	while (*p == '/')

- +		p++;

- +

- +	while ((p = strchr(p, '/'))) {

- +		*p = 0;

- +

- +		/* skip if the directory exists */

- +		if (!is_dir(tmp) && mkdir(tmp, 0755))

- +			return -1;

- +

- +		*p = '/';

- +		while (*p == '/')

- +			p++;

- +	}

- +

- +	return 0;

- +}

- +

- +static char depfile_path[PATH_MAX];

- +static size_t depfile_prefix_len;

- +

- +/* touch depfile for symbol 'name' */

- +static int conf_touch_dep(const char *name)

- +{

- +	int fd, ret;

- +	const char *s;

- +	char *d, c;

- +

- +	/* check overflow: prefix + name + ".h" + '\0' must fit in buffer. */

- +	if (depfile_prefix_len + strlen(name) + 3 > sizeof(depfile_path))

- +		return -1;

- +

- +	d = depfile_path + depfile_prefix_len;

- +	s = name;

- +

- +	while ((c = *s++))

- +		*d++ = (c == '_') ? '/' : tolower(c);

- +	strcpy(d, ".h");

- +

- +	/* Assume directory path already exists. */

- +	fd = open(depfile_path, O_WRONLY | O_CREAT | O_TRUNC, 0644);

- +	if (fd == -1) {

- +		if (errno != ENOENT)

- +			return -1;

- +

- +		ret = make_parent_dir(depfile_path);

- +		if (ret)

- +			return ret;

- +

- +		/* Try it again. */

- +		fd = open(depfile_path, O_WRONLY | O_CREAT | O_TRUNC, 0644);

- +		if (fd == -1)

- +			return -1;

- +	}

- +	close(fd);

- +

- +	return 0;

- +}

- +

-  struct conf_printer {

-  	void (*print_symbol)(FILE *, struct symbol *, const char *, void *);

-  	void (*print_comment)(FILE *, const char *, void *);

- @@ -28,7 +128,7 @@ static void conf_message(const char *fmt, ...)

-  	__attribute__ ((format (printf, 1, 2)));

-  

-  static const char *conf_filename;

- -static int conf_lineno, conf_warnings, conf_unsaved;

- +static int conf_lineno, conf_warnings;

-  

-  const char conf_defname[] = "include/generated/defconfig";

-  

- @@ -43,16 +143,16 @@ static void conf_warning(const char *fmt, ...)

-  	conf_warnings++;

-  }

-  

- -static void conf_default_message_callback(const char *fmt, va_list ap)

- +static void conf_default_message_callback(const char *s)

-  {

-  	printf("#\n# ");

- -	vprintf(fmt, ap);

- +	printf("%s", s);

-  	printf("\n#\n");

-  }

-  

- -static void (*conf_message_callback) (const char *fmt, va_list ap) =

- +static void (*conf_message_callback)(const char *s) =

-  	conf_default_message_callback;

- -void conf_set_message_callback(void (*fn) (const char *fmt, va_list ap))

- +void conf_set_message_callback(void (*fn)(const char *s))

-  {

-  	conf_message_callback = fn;

-  }

- @@ -60,10 +160,15 @@ void conf_set_message_callback(void (*fn) (const char *fmt, va_list ap))

-  static void conf_message(const char *fmt, ...)

-  {

-  	va_list ap;

- +	char buf[4096];

- +

- +	if (!conf_message_callback)

- +		return;

-  

-  	va_start(ap, fmt);

- -	if (conf_message_callback)

- -		conf_message_callback(fmt, ap);

- +

- +	vsnprintf(buf, sizeof(buf), fmt, ap);

- +	conf_message_callback(buf);

-  	va_end(ap);

-  }

-  

- @@ -81,43 +186,16 @@ const char *conf_get_autoconfig_name(void)

-  	return name ? name : "include/generated/auto.conf";

-  }

-  

- -static char *conf_expand_value(const char *in)

- -{

- -	struct symbol *sym;

- -	const char *src;

- -	static char res_value[SYMBOL_MAXLENGTH];

- -	char *dst, name[SYMBOL_MAXLENGTH];

- -

- -	res_value[0] = 0;

- -	dst = name;

- -	while ((src = strchr(in, '$'))) {

- -		strncat(res_value, in, src - in);

- -		src++;

- -		dst = name;

- -		while (isalnum(*src) || *src == '_')

- -			*dst++ = *src++;

- -		*dst = 0;

- -		sym = sym_lookup(name, 0);

- -		sym_calc_value(sym);

- -		strcat(res_value, sym_get_string_value(sym));

- -		in = src;

- -	}

- -	strcat(res_value, in);

- -

- -	return res_value;

- -}

- -

-  char *conf_get_default_confname(void)

-  {

- -	struct stat buf;

-  	static char fullname[PATH_MAX+1];

-  	char *env, *name;

-  

- -	name = conf_expand_value(conf_defname);

- +	name = expand_string(conf_defname);

-  	env = getenv(SRCTREE);

-  	if (env) {

-  		sprintf(fullname, "%s/%s", env, name);

- -		if (!stat(fullname, &buf))

- +		if (is_present(fullname))

-  			return fullname;

-  	}

-  	return name;

- @@ -150,14 +228,6 @@ static int conf_set_sym_val(struct symbol *sym, int def, int def_flags, char *p)

-  			conf_warning("symbol value '%s' invalid for %s",

-  				     p, sym->name);

-  		return 1;

- -	case S_OTHER:

- -		if (*p != '"') {

- -			for (p2 = p; *p2 && !isspace(*p2); p2++)

- -				;

- -			sym->type = S_STRING;

- -			goto done;

- -		}

- -		/* fall through */

-  	case S_STRING:

-  		if (*p++ != '"')

-  			break;

- @@ -176,9 +246,8 @@ static int conf_set_sym_val(struct symbol *sym, int def, int def_flags, char *p)

-  		/* fall through */

-  	case S_INT:

-  	case S_HEX:

- -	done:

-  		if (sym_string_valid(sym, p)) {

- -			sym->def[def].val = strdup(p);

- +			sym->def[def].val = xstrdup(p);

-  			sym->flags |= def_flags;

-  		} else {

-  			if (def != S_DEF_AUTO)

- @@ -201,7 +270,7 @@ static int add_byte(int c, char **lineptr, size_t slen, size_t *n)

-  	if (new_size > *n) {

-  		new_size += LINE_GROWTH - 1;

-  		new_size *= 2;

- -		nline = realloc(*lineptr, new_size);

- +		nline = xrealloc(*lineptr, new_size);

-  		if (!nline)

-  			return -1;

-  

- @@ -274,10 +343,11 @@ int conf_read_simple(const char *name, int def)

-  			if (expr_calc_value(prop->visible.expr) == no ||

-  			    prop->expr->type != E_SYMBOL)

-  				continue;

- -			name = conf_expand_value(prop->expr->left.sym->name);

- +			sym_calc_value(prop->expr->left.sym);

- +			name = sym_get_string_value(prop->expr->left.sym);

-  			in = zconf_fopen(name);

-  			if (in) {

- -				conf_message(_("using defaults found in %s"),

- +				conf_message("using defaults found in %s",

-  					 name);

-  				goto load;

-  			}

- @@ -290,7 +360,6 @@ load:

-  	conf_filename = name;

-  	conf_lineno = 0;

-  	conf_warnings = 0;

- -	conf_unsaved = 0;

-  

-  	def_flags = SYMBOL_DEF << def;

-  	for_all_symbols(i, sym) {

- @@ -327,7 +396,7 @@ load:

-  				sym = sym_find(line + 2 + strlen(CONFIG_));

-  				if (!sym) {

-  					sym_add_change_count(1);

- -					goto setsym;

- +					continue;

-  				}

-  			} else {

-  				sym = sym_lookup(line + 2 + strlen(CONFIG_), 0);

- @@ -357,17 +426,22 @@ load:

-  				if (*p2 == '\r')

-  					*p2 = 0;

-  			}

- -			if (def == S_DEF_USER) {

- -				sym = sym_find(line + strlen(CONFIG_));

- -				if (!sym) {

- +

- +			sym = sym_find(line + strlen(CONFIG_));

- +			if (!sym) {

- +				if (def == S_DEF_AUTO)

- +					/*

- +					 * Reading from include/config/auto.conf

- +					 * If CONFIG_FOO previously existed in

- +					 * auto.conf but it is missing now,

- +					 * include/config/foo.h must be touched.

- +					 */

- +					conf_touch_dep(line + strlen(CONFIG_));

- +				else

-  					sym_add_change_count(1);

- -					goto setsym;

- -				}

- -			} else {

- -				sym = sym_lookup(line + strlen(CONFIG_), 0);

- -				if (sym->type == S_UNKNOWN)

- -					sym->type = S_OTHER;

- +				continue;

-  			}

- +

-  			if (sym->flags & def_flags) {

-  				conf_warning("override: reassigning to symbol %s", sym->name);

-  			}

- @@ -380,7 +454,7 @@ load:

-  

-  			continue;

-  		}

- -setsym:

- +

-  		if (sym && sym_is_choice_value(sym)) {

-  			struct symbol *cs = prop_get_symbol(sym_get_choice_prop(sym));

-  			switch (sym->def[def].tri) {

- @@ -409,6 +483,7 @@ setsym:

-  int conf_read(const char *name)

-  {

-  	struct symbol *sym;

- +	int conf_unsaved = 0;

-  	int i;

-  

-  	sym_set_change_count(0);

- @@ -422,7 +497,7 @@ int conf_read(const char *name)

-  

-  	for_all_symbols(i, sym) {

-  		sym_calc_value(sym);

- -		if (sym_is_choice(sym) || (sym->flags & SYMBOL_AUTO))

- +		if (sym_is_choice(sym) || (sym->flags & SYMBOL_NO_WRITE))

-  			continue;

-  		if (sym_has_value(sym) && (sym->flags & SYMBOL_WRITE)) {

-  			/* check that calculated value agrees with saved value */

- @@ -678,7 +753,6 @@ static void conf_write_symbol(FILE *fp, struct symbol *sym,

-  	const char *str;

-  

-  	switch (sym->type) {

- -	case S_OTHER:

-  	case S_UNKNOWN:

-  		break;

-  	case S_STRING:

- @@ -791,15 +865,14 @@ int conf_write(const char *name)

-  	struct menu *menu;

-  	const char *basename;

-  	const char *str;

- -	char dirname[PATH_MAX+1], tmpname[PATH_MAX+1], newname[PATH_MAX+1];

- +	char dirname[PATH_MAX+1], tmpname[PATH_MAX+22], newname[PATH_MAX+8];

-  	char *env;

-  

-  	dirname[0] = 0;

-  	if (name && name[0]) {

- -		struct stat st;

-  		char *slash;

-  

- -		if (!stat(name, &st) && S_ISDIR(st.st_mode)) {

- +		if (is_dir(name)) {

-  			strcpy(dirname, name);

-  			strcat(dirname, "/");

-  			basename = conf_get_configname();

- @@ -877,33 +950,61 @@ next:

-  			return 1;

-  	}

-  

- -	conf_message(_("configuration written to %s"), newname);

- +	conf_message("configuration written to %s", newname);

-  

-  	sym_set_change_count(0);

-  

-  	return 0;

-  }

-  

- -static int conf_split_config(void)

- +/* write a dependency file as used by kbuild to track dependencies */

- +static int conf_write_dep(const char *name)

- +{

- +	struct file *file;

- +	FILE *out;

- +

- +	if (!name)

- +		name = ".kconfig.d";

- +	out = fopen("..config.tmp", "w");

- +	if (!out)

- +		return 1;

- +	fprintf(out, "deps_config := \\\n");

- +	for (file = file_list; file; file = file->next) {

- +		if (file->next)

- +			fprintf(out, "\t%s \\\n", file->name);

- +		else

- +			fprintf(out, "\t%s\n", file->name);

- +	}

- +	fprintf(out, "\n%s: \\\n"

- +		     "\t$(deps_config)\n\n", conf_get_autoconfig_name());

- +

- +	env_write_dep(out, conf_get_autoconfig_name());

- +

- +	fprintf(out, "\n$(deps_config): ;\n");

- +	fclose(out);

- +

- +	if (make_parent_dir(name))

- +		return 1;

- +	rename("..config.tmp", name);

- +	return 0;

- +}

- +

- +static int conf_touch_deps(void)

-  {

-  	const char *name;

- -	char path[PATH_MAX+1];

- -	char *s, *d, c;

-  	struct symbol *sym;

- -	struct stat sb;

- -	int res, i, fd;

- +	int res, i;

- +

- +	strcpy(depfile_path, "include/generated/");

- +	depfile_prefix_len = strlen(depfile_path);

-  

-  	name = conf_get_autoconfig_name();

-  	conf_read_simple(name, S_DEF_AUTO);

-  	sym_calc_value(modules_sym);

-  

- -	if (chdir("include/generated"))

- -		return 1;

- -

- -	res = 0;

-  	for_all_symbols(i, sym) {

-  		sym_calc_value(sym);

- -		if ((sym->flags & SYMBOL_AUTO) || !sym->name)

- +		if ((sym->flags & SYMBOL_NO_WRITE) || !sym->name)

-  			continue;

-  		if (sym->flags & SYMBOL_WRITE) {

-  			if (sym->flags & SYMBOL_DEF_AUTO) {

- @@ -952,63 +1053,30 @@ static int conf_split_config(void)

-  		 *	different from 'no').

-  		 */

-  

- -		/* Replace all '_' and append ".h" */

- -		s = sym->name;

- -		d = path;

- -		while ((c = *s++)) {

- -			c = tolower(c);

- -			*d++ = (c == '_') ? '/' : c;

- -		}

- -		strcpy(d, ".h");

- -

- -		/* Assume directory path already exists. */

- -		fd = open(path, O_WRONLY | O_CREAT | O_TRUNC, 0644);

- -		if (fd == -1) {

- -			if (errno != ENOENT) {

- -				res = 1;

- -				break;

- -			}

- -			/*

- -			 * Create directory components,

- -			 * unless they exist already.

- -			 */

- -			d = path;

- -			while ((d = strchr(d, '/'))) {

- -				*d = 0;

- -				if (stat(path, &sb) && mkdir(path, 0755)) {

- -					res = 1;

- -					goto out;

- -				}

- -				*d++ = '/';

- -			}

- -			/* Try it again. */

- -			fd = open(path, O_WRONLY | O_CREAT | O_TRUNC, 0644);

- -			if (fd == -1) {

- -				res = 1;

- -				break;

- -			}

- -		}

- -		close(fd);

- +		res = conf_touch_dep(sym->name);

- +		if (res)

- +			return res;

-  	}

- -out:

- -	if (chdir("../.."))

- -		return 1;

-  

- -	return res;

- +	return 0;

-  }

-  

- -int conf_write_autoconf(void)

- +int conf_write_autoconf(int overwrite)

-  {

-  	struct symbol *sym;

-  	const char *name;

- +	const char *autoconf_name = conf_get_autoconfig_name();

-  	FILE *out, *tristate, *out_h, *out_c;

-  	int i;

-  

- +	if (!overwrite && is_present(autoconf_name))

- +		return 0;

- +

-  	sym_clear_all_valid();

-  

- -	file_write_dep("include/generated/auto.conf.cmd");

- +	conf_write_dep("include/generated/auto.conf.cmd");

-  

- -	if (conf_split_config())

- +	if (conf_touch_deps())

-  		return 1;

-  

-  	out = fopen(".tmpconfig", "w");

- @@ -1065,24 +1133,35 @@ int conf_write_autoconf(void)

-  	name = getenv("KCONFIG_AUTOHEADER");

-  	if (!name)

-  		name = "include/generated/autoconf.h";

- +	if (make_parent_dir(name))

- +		return 1;

-  	if (rename(".tmpconfig.h", name))

-  		return 1;

- +

-  	name = getenv("KCONFIG_TRISTATE");

-  	if (!name)

-  		name = "include/generated/tristate.conf";

- +	if (make_parent_dir(name))

- +		return 1;

-  	if (rename(".tmpconfig_tristate", name))

-  		return 1;

- +

- +	if (make_parent_dir(autoconf_name))

- +		return 1;

- +

-  	name = getenv("KCONFIG_CMAKE");

-  	if (!name)

-  		name = "config.cmake";

- +	if (make_parent_dir(name))

- +		return 1;

-  	if (rename(".tmpconfig.cmake", name))

-  		return 1;

- -	name = conf_get_autoconfig_name();

- +

-  	/*

-  	 * This must be the last step, kbuild has a dependency on auto.conf

-  	 * and this marks the successful completion of the previous steps.

-  	 */

- -	if (rename(".tmpconfig", name))

- +	if (rename(".tmpconfig", autoconf_name))

-  		return 1;

-  

-  	return 0;

- @@ -1186,7 +1265,7 @@ void set_all_choice_values(struct symbol *csym)

-  bool conf_set_all_new_symbols(enum conf_def_mode mode)

-  {

-  	struct symbol *sym, *csym;

- -	int i, cnt, pby, pty, ptm;	/* pby: probability of boolean  = y

- +	int i, cnt, pby, pty, ptm;	/* pby: probability of bool     = y

-  					 * pty: probability of tristate = y

-  					 * ptm: probability of tristate = m

-  					 */

- diff --git a/carl9170fw/config/expr.c b/carl9170fw/config/expr.c

- index 8cee597..77ffff3 100644

- --- a/carl9170fw/config/expr.c

- +++ b/carl9170fw/config/expr.c

- @@ -1,8 +1,10 @@

- +// SPDX-License-Identifier: GPL-2.0

-  /*

-   * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>

- - * Released under the terms of the GNU GPL v2.0.

-   */

-  

- +#include <ctype.h>

- +#include <errno.h>

-  #include <stdio.h>

-  #include <stdlib.h>

-  #include <string.h>

- @@ -94,7 +96,7 @@ struct expr *expr_copy(const struct expr *org)

-  		e->right.expr = expr_copy(org->right.expr);

-  		break;

-  	default:

- -		printf("can't copy type %d\n", e->type);

- +		fprintf(stderr, "can't copy type %d\n", e->type);

-  		free(e);

-  		e = NULL;

-  		break;

- @@ -113,7 +115,7 @@ void expr_free(struct expr *e)

-  		break;

-  	case E_NOT:

-  		expr_free(e->left.expr);

- -		return;

- +		break;

-  	case E_EQUAL:

-  	case E_GEQ:

-  	case E_GTH:

- @@ -127,7 +129,7 @@ void expr_free(struct expr *e)

-  		expr_free(e->right.expr);

-  		break;

-  	default:

- -		printf("how to free type %d?\n", e->type);

- +		fprintf(stderr, "how to free type %d?\n", e->type);

-  		break;

-  	}

-  	free(e);

- @@ -138,8 +140,18 @@ static int trans_count;

-  #define e1 (*ep1)

-  #define e2 (*ep2)

-  

- +/*

- + * expr_eliminate_eq() helper.

- + *

- + * Walks the two expression trees given in 'ep1' and 'ep2'. Any node that does

- + * not have type 'type' (E_OR/E_AND) is considered a leaf, and is compared

- + * against all other leaves. Two equal leaves are both replaced with either 'y'

- + * or 'n' as appropriate for 'type', to be eliminated later.

- + */

-  static void __expr_eliminate_eq(enum expr_type type, struct expr **ep1, struct expr **ep2)

-  {

- +	/* Recurse down to leaves */

- +

-  	if (e1->type == type) {

-  		__expr_eliminate_eq(type, &e1->left.expr, &e2);

-  		__expr_eliminate_eq(type, &e1->right.expr, &e2);

- @@ -150,12 +162,18 @@ static void __expr_eliminate_eq(enum expr_type type, struct expr **ep1, struct e

-  		__expr_eliminate_eq(type, &e1, &e2->right.expr);

-  		return;

-  	}

- +

- +	/* e1 and e2 are leaves. Compare them. */

- +

-  	if (e1->type == E_SYMBOL && e2->type == E_SYMBOL &&

-  	    e1->left.sym == e2->left.sym &&

-  	    (e1->left.sym == &symbol_yes || e1->left.sym == &symbol_no))

-  		return;

-  	if (!expr_eq(e1, e2))

-  		return;

- +

- +	/* e1 and e2 are equal leaves. Prepare them for elimination. */

- +

-  	trans_count++;

-  	expr_free(e1); expr_free(e2);

-  	switch (type) {

- @@ -172,6 +190,35 @@ static void __expr_eliminate_eq(enum expr_type type, struct expr **ep1, struct e

-  	}

-  }

-  

- +/*

- + * Rewrites the expressions 'ep1' and 'ep2' to remove operands common to both.

- + * Example reductions:

- + *

- + *	ep1: A && B           ->  ep1: y

- + *	ep2: A && B && C      ->  ep2: C

- + *

- + *	ep1: A || B           ->  ep1: n

- + *	ep2: A || B || C      ->  ep2: C

- + *

- + *	ep1: A && (B && FOO)  ->  ep1: FOO

- + *	ep2: (BAR && B) && A  ->  ep2: BAR

- + *

- + *	ep1: A && (B || C)    ->  ep1: y

- + *	ep2: (C || B) && A    ->  ep2: y

- + *

- + * Comparisons are done between all operands at the same "level" of && or ||.

- + * For example, in the expression 'e1 && (e2 || e3) && (e4 || e5)', the

- + * following operands will be compared:

- + *

- + *	- 'e1', 'e2 || e3', and 'e4 || e5', against each other

- + *	- e2 against e3

- + *	- e4 against e5

- + *

- + * Parentheses are irrelevant within a single level. 'e1 && (e2 && e3)' and

- + * '(e1 && e2) && e3' are both a single level.

- + *

- + * See __expr_eliminate_eq() as well.

- + */

-  void expr_eliminate_eq(struct expr **ep1, struct expr **ep2)

-  {

-  	if (!e1 || !e2)

- @@ -197,6 +244,12 @@ void expr_eliminate_eq(struct expr **ep1, struct expr **ep2)

-  #undef e1

-  #undef e2

-  

- +/*

- + * Returns true if 'e1' and 'e2' are equal, after minor simplification. Two

- + * &&/|| expressions are considered equal if every operand in one expression

- + * equals some operand in the other (operands do not need to appear in the same

- + * order), recursively.

- + */

-  static int expr_eq(struct expr *e1, struct expr *e2)

-  {

-  	int res, old_count;

- @@ -243,6 +296,17 @@ static int expr_eq(struct expr *e1, struct expr *e2)

-  	return 0;

-  }

-  

- +/*

- + * Recursively performs the following simplifications in-place (as well as the

- + * corresponding simplifications with swapped operands):

- + *

- + *	expr && n  ->  n

- + *	expr && y  ->  expr

- + *	expr || n  ->  expr

- + *	expr || y  ->  y

- + *

- + * Returns the optimized expression.

- + */

-  static struct expr *expr_eliminate_yn(struct expr *e)

-  {

-  	struct expr *tmp;

- @@ -516,12 +580,21 @@ static struct expr *expr_join_and(struct expr *e1, struct expr *e2)

-  	return NULL;

-  }

-  

- +/*

- + * expr_eliminate_dups() helper.

- + *

- + * Walks the two expression trees given in 'ep1' and 'ep2'. Any node that does

- + * not have type 'type' (E_OR/E_AND) is considered a leaf, and is compared

- + * against all other leaves to look for simplifications.

- + */

-  static void expr_eliminate_dups1(enum expr_type type, struct expr **ep1, struct expr **ep2)

-  {

-  #define e1 (*ep1)

-  #define e2 (*ep2)

-  	struct expr *tmp;

-  

- +	/* Recurse down to leaves */

- +

-  	if (e1->type == type) {

-  		expr_eliminate_dups1(type, &e1->left.expr, &e2);

-  		expr_eliminate_dups1(type, &e1->right.expr, &e2);

- @@ -532,6 +605,9 @@ static void expr_eliminate_dups1(enum expr_type type, struct expr **ep1, struct

-  		expr_eliminate_dups1(type, &e1, &e2->right.expr);

-  		return;

-  	}

- +

- +	/* e1 and e2 are leaves. Compare and process them. */

- +

-  	if (e1 == e2)

-  		return;

-  

- @@ -568,6 +644,17 @@ static void expr_eliminate_dups1(enum expr_type type, struct expr **ep1, struct

-  #undef e2

-  }

-  

- +/*

- + * Rewrites 'e' in-place to remove ("join") duplicate and other redundant

- + * operands.

- + *

- + * Example simplifications:

- + *

- + *	A || B || A    ->  A || B

- + *	A && B && A=y  ->  A=y && B

- + *

- + * Returns the deduplicated expression.

- + */

-  struct expr *expr_eliminate_dups(struct expr *e)

-  {

-  	int oldcount;

- @@ -584,6 +671,7 @@ struct expr *expr_eliminate_dups(struct expr *e)

-  			;

-  		}

-  		if (!trans_count)

- +			/* No simplifications done in this pass. We're done */

-  			break;

-  		e = expr_eliminate_yn(e);

-  	}

- @@ -591,6 +679,12 @@ struct expr *expr_eliminate_dups(struct expr *e)

-  	return e;

-  }

-  

- +/*

- + * Performs various simplifications involving logical operators and

- + * comparisons.

- + *

- + * Allocates and returns a new expression.

- + */

-  struct expr *expr_transform(struct expr *e)

-  {

-  	struct expr *tmp;

- @@ -805,6 +899,20 @@ bool expr_depends_symbol(struct expr *dep, struct symbol *sym)

-   	return false;

-  }

-  

- +/*

- + * Inserts explicit comparisons of type 'type' to symbol 'sym' into the

- + * expression 'e'.

- + *

- + * Examples transformations for type == E_UNEQUAL, sym == &symbol_no:

- + *

- + *	A              ->  A!=n

- + *	!A             ->  A=n

- + *	A && B         ->  !(A=n || B=n)

- + *	A || B         ->  !(A=n && B=n)

- + *	A && (B || C)  ->  !(A=n || (B=n && C=n))

- + *

- + * Allocates and returns a new expression.

- + */

-  struct expr *expr_trans_compare(struct expr *e, enum expr_type type, struct symbol *sym)

-  {

-  	struct expr *e1, *e2;

- @@ -874,7 +982,6 @@ enum string_value_kind {

-  	k_string,

-  	k_signed,

-  	k_unsigned,

- -	k_invalid

-  };

-  

-  union string_value {

- @@ -905,13 +1012,10 @@ static enum string_value_kind expr_parse_string(const char *str,

-  		val->u = strtoull(str, &tail, 16);

-  		kind = k_unsigned;

-  		break;

- -	case S_STRING:

- -	case S_UNKNOWN:

- +	default:

-  		val->s = strtoll(str, &tail, 0);

-  		kind = k_signed;

-  		break;

- -	default:

- -		return k_invalid;

-  	}

-  	return !errno && !*tail && tail > str && isxdigit(tail[-1])

-  	       ? kind : k_string;

- @@ -967,13 +1071,7 @@ tristate expr_calc_value(struct expr *e)

-  

-  	if (k1 == k_string || k2 == k_string)

-  		res = strcmp(str1, str2);

- -	else if (k1 == k_invalid || k2 == k_invalid) {

- -		if (e->type != E_EQUAL && e->type != E_UNEQUAL) {

- -			printf("Cannot compare \"%s\" and \"%s\"\n", str1, str2);

- -			return no;

- -		}

- -		res = strcmp(str1, str2);

- -	} else if (k1 == k_unsigned || k2 == k_unsigned)

- +	else if (k1 == k_unsigned || k2 == k_unsigned)

-  		res = (lval.u > rval.u) - (lval.u < rval.u);

-  	else /* if (k1 == k_signed && k2 == k_signed) */

-  		res = (lval.s > rval.s) - (lval.s < rval.s);

- @@ -1031,49 +1129,9 @@ static int expr_compare_type(enum expr_type t1, enum expr_type t2)

-  	return 0;

-  }

-  

- -static inline struct expr *

- -expr_get_leftmost_symbol(const struct expr *e)

- -{

- -

- -	if (e == NULL)

- -		return NULL;

- -

- -	while (e->type != E_SYMBOL)

- -		e = e->left.expr;

- -

- -	return expr_copy(e);

- -}

- -

- -/*

- - * Given expression `e1' and `e2', returns the leaf of the longest

- - * sub-expression of `e1' not containing 'e2.

- - */

- -struct expr *expr_simplify_unmet_dep(struct expr *e1, struct expr *e2)

- -{

- -	struct expr *ret;

- -

- -	switch (e1->type) {

- -	case E_OR:

- -		return expr_alloc_and(

- -		    expr_simplify_unmet_dep(e1->left.expr, e2),

- -		    expr_simplify_unmet_dep(e1->right.expr, e2));

- -	case E_AND: {

- -		struct expr *e;

- -		e = expr_alloc_and(expr_copy(e1), expr_copy(e2));

- -		e = expr_eliminate_dups(e);

- -		ret = (!expr_eq(e, e1)) ? e1 : NULL;

- -		expr_free(e);

- -		break;

- -		}

- -	default:

- -		ret = e1;

- -		break;

- -	}

- -

- -	return expr_get_leftmost_symbol(ret);

- -}

- -

- -void expr_print(struct expr *e, void (*fn)(void *, struct symbol *, const char *), void *data, int prevtoken)

- +void expr_print(struct expr *e,

- +		void (*fn)(void *, struct symbol *, const char *),

- +		void *data, int prevtoken)

-  {

-  	if (!e) {

-  		fn(data, NULL, "y");

- @@ -1207,3 +1265,33 @@ void expr_gstr_print(struct expr *e, struct gstr *gs)

-  {

-  	expr_print(e, expr_print_gstr_helper, gs, E_NONE);

-  }

- +

- +/*

- + * Transform the top level "||" tokens into newlines and prepend each

- + * line with a minus. This makes expressions much easier to read.

- + * Suitable for reverse dependency expressions.

- + */

- +static void expr_print_revdep(struct expr *e,

- +			      void (*fn)(void *, struct symbol *, const char *),

- +			      void *data, tristate pr_type, const char **title)

- +{

- +	if (e->type == E_OR) {

- +		expr_print_revdep(e->left.expr, fn, data, pr_type, title);

- +		expr_print_revdep(e->right.expr, fn, data, pr_type, title);

- +	} else if (expr_calc_value(e) == pr_type) {

- +		if (*title) {

- +			fn(data, NULL, *title);

- +			*title = NULL;

- +		}

- +

- +		fn(data, NULL, "  - ");

- +		expr_print(e, fn, data, E_NONE);

- +		fn(data, NULL, "\n");

- +	}

- +}

- +

- +void expr_gstr_print_revdep(struct expr *e, struct gstr *gs,

- +			    tristate pr_type, const char *title)

- +{

- +	expr_print_revdep(e, expr_print_gstr_helper, gs, pr_type, &title);

- +}

- diff --git a/carl9170fw/config/expr.h b/carl9170fw/config/expr.h

- index a73f762..999edb6 100644

- --- a/carl9170fw/config/expr.h

- +++ b/carl9170fw/config/expr.h

- @@ -1,6 +1,6 @@

- +/* SPDX-License-Identifier: GPL-2.0 */

-  /*

-   * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>

- - * Released under the terms of the GNU GPL v2.0.

-   */

-  

-  #ifndef EXPR_H

- @@ -62,7 +62,7 @@ struct symbol_value {

-  };

-  

-  enum symbol_type {

- -	S_UNKNOWN, S_BOOLEAN, S_TRISTATE, S_INT, S_HEX, S_STRING, S_OTHER

- +	S_UNKNOWN, S_BOOLEAN, S_TRISTATE, S_INT, S_HEX, S_STRING

-  };

-  

-  /* enum values are used as index to symbol.def[] */

- @@ -74,21 +74,64 @@ enum {

-  	S_DEF_COUNT

-  };

-  

- +/*

- + * Represents a configuration symbol.

- + *

- + * Choices are represented as a special kind of symbol and have the

- + * SYMBOL_CHOICE bit set in 'flags'.

- + */

-  struct symbol {

- +	/* The next symbol in the same bucket in the symbol hash table */

-  	struct symbol *next;

- +

- +	/* The name of the symbol, e.g. "FOO" for 'config FOO' */

-  	char *name;

- +

- +	/* S_BOOLEAN, S_TRISTATE, ... */

-  	enum symbol_type type;

- +

- +	/*

- +	 * The calculated value of the symbol. The SYMBOL_VALID bit is set in

- +	 * 'flags' when this is up to date. Note that this value might differ

- +	 * from the user value set in e.g. a .config file, due to visibility.

- +	 */

-  	struct symbol_value curr;

- +

- +	/*

- +	 * Values for the symbol provided from outside. def[S_DEF_USER] holds

- +	 * the .config value.

- +	 */

-  	struct symbol_value def[S_DEF_COUNT];

- +

- +	/*

- +	 * An upper bound on the tristate value the user can set for the symbol

- +	 * if it is a boolean or tristate. Calculated from prompt dependencies,

- +	 * which also inherit dependencies from enclosing menus, choices, and

- +	 * ifs. If 'n', the user value will be ignored.

- +	 *

- +	 * Symbols lacking prompts always have visibility 'n'.

- +	 */

-  	tristate visible;

- +

- +	/* SYMBOL_* flags */

-  	int flags;

- +

- +	/* List of properties. See prop_type. */

-  	struct property *prop;

- +

- +	/* Dependencies from enclosing menus, choices, and ifs */

-  	struct expr_value dir_dep;

- +

- +	/* Reverse dependencies through being selected by other symbols */

-  	struct expr_value rev_dep;

- +

- +	/*

- +	 * "Weak" reverse dependencies through being implied by other symbols

- +	 */

-  	struct expr_value implied;

-  };

-  

- -#define for_all_symbols(i, sym) for (i = 0; i < SYMBOL_HASHSIZE; i++) for (sym = symbol_hash[i]; sym; sym = sym->next) if (sym->type != S_OTHER)

- +#define for_all_symbols(i, sym) for (i = 0; i < SYMBOL_HASHSIZE; i++) for (sym = symbol_hash[i]; sym; sym = sym->next)

-  

-  #define SYMBOL_CONST      0x0001  /* symbol is const */

-  #define SYMBOL_CHECK      0x0008  /* used during dependency checking */

- @@ -98,7 +141,7 @@ struct symbol {

-  #define SYMBOL_OPTIONAL   0x0100  /* choice is optional - values can be 'n' */

-  #define SYMBOL_WRITE      0x0200  /* write symbol to file (KCONFIG_CONFIG) */

-  #define SYMBOL_CHANGED    0x0400  /* ? */

- -#define SYMBOL_AUTO       0x1000  /* value from environment variable */

- +#define SYMBOL_NO_WRITE   0x1000  /* Symbol for internal use only; it will not be written */

-  #define SYMBOL_CHECKED    0x2000  /* used during dependency checking */

-  #define SYMBOL_WARNED     0x8000  /* warning has been issued */

-  

- @@ -128,18 +171,20 @@ struct symbol {

-   * config BAZ

-   *         int "BAZ Value"

-   *         range 1..255

- + *

- + * Please, also check zconf.y:print_symbol() when modifying the

- + * list of property types!

-   */

-  enum prop_type {

-  	P_UNKNOWN,

-  	P_PROMPT,   /* prompt "foo prompt" or "BAZ Value" */

-  	P_COMMENT,  /* text associated with a comment */

- -	P_MENU,     /* prompt associated with a menuconfig option */

- +	P_MENU,     /* prompt associated with a menu or menuconfig symbol */

-  	P_DEFAULT,  /* default y */

-  	P_CHOICE,   /* choice value */

-  	P_SELECT,   /* select BAR */

-  	P_IMPLY,    /* imply BAR */

-  	P_RANGE,    /* range 7..100 (for a symbol) */

- -	P_ENV,      /* value from environment variable */

-  	P_SYMBOL,   /* where a symbol is defined */

-  };

-  

- @@ -166,22 +211,67 @@ struct property {

-  	for (st = sym->prop; st; st = st->next) \

-  		if (st->text)

-  

- +/*

- + * Represents a node in the menu tree, as seen in e.g. menuconfig (though used

- + * for all front ends). Each symbol, menu, etc. defined in the Kconfig files

- + * gets a node. A symbol defined in multiple locations gets one node at each

- + * location.

- + */

-  struct menu {

- +	/* The next menu node at the same level */

-  	struct menu *next;

- +

- +	/* The parent menu node, corresponding to e.g. a menu or choice */

-  	struct menu *parent;

- +

- +	/* The first child menu node, for e.g. menus and choices */

-  	struct menu *list;

- +

- +	/*

- +	 * The symbol associated with the menu node. Choices are implemented as

- +	 * a special kind of symbol. NULL for menus, comments, and ifs.

- +	 */

-  	struct symbol *sym;

- +

- +	/*

- +	 * The prompt associated with the node. This holds the prompt for a

- +	 * symbol as well as the text for a menu or comment, along with the

- +	 * type (P_PROMPT, P_MENU, etc.)

- +	 */

-  	struct property *prompt;

- +

- +	/*

- +	 * 'visible if' dependencies. If more than one is given, they will be

- +	 * ANDed together.

- +	 */

-  	struct expr *visibility;

- +

- +	/*

- +	 * Ordinary dependencies from e.g. 'depends on' and 'if', ANDed

- +	 * together

- +	 */

-  	struct expr *dep;

- +

- +	/* MENU_* flags */

-  	unsigned int flags;

- +

- +	/* Any help text associated with the node */

-  	char *help;

- +

- +	/* The location where the menu node appears in the Kconfig files */

-  	struct file *file;

-  	int lineno;

- +

- +	/* For use by front ends that need to store auxiliary data */

-  	void *data;

-  };

-  

- +/*

- + * Set on a menu node when the corresponding symbol changes state in some way.

- + * Can be checked by front ends.

- + */

-  #define MENU_CHANGED		0x0001

- +

-  #define MENU_ROOT		0x0002

-  

-  struct jump_key {

- @@ -217,11 +307,12 @@ struct expr *expr_transform(struct expr *e);

-  int expr_contains_symbol(struct expr *dep, struct symbol *sym);

-  bool expr_depends_symbol(struct expr *dep, struct symbol *sym);

-  struct expr *expr_trans_compare(struct expr *e, enum expr_type type, struct symbol *sym);

- -struct expr *expr_simplify_unmet_dep(struct expr *e1, struct expr *e2);

-  

-  void expr_fprint(struct expr *e, FILE *out);

-  struct gstr; /* forward */

-  void expr_gstr_print(struct expr *e, struct gstr *gs);

- +void expr_gstr_print_revdep(struct expr *e, struct gstr *gs,

- +			    tristate pr_type, const char *title);

-  

-  static inline int expr_is_yes(struct expr *e)

-  {

- diff --git a/carl9170fw/config/kconf_id.c b/carl9170fw/config/kconf_id.c

- deleted file mode 100644

- index 5abbc72..0000000

- --- a/carl9170fw/config/kconf_id.c

- +++ /dev/null

- @@ -1,54 +0,0 @@

- -

- -static struct kconf_id kconf_id_array[] = {

- -	{ "mainmenu",		T_MAINMENU,		TF_COMMAND },

- -	{ "menu",		T_MENU,			TF_COMMAND },

- -	{ "endmenu",		T_ENDMENU,		TF_COMMAND },

- -	{ "source",		T_SOURCE,		TF_COMMAND },

- -	{ "choice",		T_CHOICE,		TF_COMMAND },

- -	{ "endchoice",		T_ENDCHOICE,		TF_COMMAND },

- -	{ "comment",		T_COMMENT,		TF_COMMAND },

- -	{ "config",		T_CONFIG,		TF_COMMAND },

- -	{ "menuconfig",		T_MENUCONFIG,		TF_COMMAND },

- -	{ "help",		T_HELP,			TF_COMMAND },

- -	{ "---help---",		T_HELP,			TF_COMMAND },

- -	{ "if",			T_IF,			TF_COMMAND|TF_PARAM },

- -	{ "endif",		T_ENDIF,		TF_COMMAND },

- -	{ "depends",		T_DEPENDS,		TF_COMMAND },

- -	{ "optional",		T_OPTIONAL,		TF_COMMAND },

- -	{ "default",		T_DEFAULT,		TF_COMMAND, S_UNKNOWN },

- -	{ "prompt",		T_PROMPT,		TF_COMMAND },

- -	{ "tristate",		T_TYPE,			TF_COMMAND, S_TRISTATE },

- -	{ "def_tristate",	T_DEFAULT,		TF_COMMAND, S_TRISTATE },

- -	{ "bool",		T_TYPE,			TF_COMMAND, S_BOOLEAN },

- -	{ "boolean",		T_TYPE,			TF_COMMAND, S_BOOLEAN },

- -	{ "def_bool",		T_DEFAULT,		TF_COMMAND, S_BOOLEAN },

- -	{ "int",		T_TYPE,			TF_COMMAND, S_INT },

- -	{ "hex",		T_TYPE,			TF_COMMAND, S_HEX },

- -	{ "string",		T_TYPE,			TF_COMMAND, S_STRING },

- -	{ "select",		T_SELECT,		TF_COMMAND },

- -	{ "imply",		T_IMPLY,		TF_COMMAND },

- -	{ "range",		T_RANGE,		TF_COMMAND },

- -	{ "visible",		T_VISIBLE,		TF_COMMAND },

- -	{ "option",		T_OPTION,		TF_COMMAND },

- -	{ "on",			T_ON,			TF_PARAM },

- -	{ "modules",		T_OPT_MODULES,		TF_OPTION },

- -	{ "defconfig_list",	T_OPT_DEFCONFIG_LIST,	TF_OPTION },

- -	{ "env",		T_OPT_ENV,		TF_OPTION },

- -	{ "allnoconfig_y",	T_OPT_ALLNOCONFIG_Y,	TF_OPTION },

- -};

- -

- -#define KCONF_ID_ARRAY_SIZE (sizeof(kconf_id_array)/sizeof(struct kconf_id))

- -

- -static const struct kconf_id *kconf_id_lookup(register const char *str, register unsigned int len)

- -{

- -	int i;

- -

- -	for (i = 0; i < KCONF_ID_ARRAY_SIZE; i++) {

- -		struct kconf_id *id = kconf_id_array+i;

- -		int l = strlen(id->name);

- -

- -		if (len == l && !memcmp(str, id->name, len))

- -			return id;

- -	}

- -	return NULL;

- -}

- diff --git a/carl9170fw/config/lkc.h b/carl9170fw/config/lkc.h

- index cdcbe43..531ff7c 100644

- --- a/carl9170fw/config/lkc.h

- +++ b/carl9170fw/config/lkc.h

- @@ -1,6 +1,6 @@

- +/* SPDX-License-Identifier: GPL-2.0 */

-  /*

-   * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>

- - * Released under the terms of the GNU GPL v2.0.

-   */

-  

-  #ifndef LKC_H

- @@ -8,15 +8,6 @@

-  

-  #include "expr.h"

-  

- -#ifndef KBUILD_NO_NLS

- -# include <libintl.h>

- -#else

- -static inline const char *gettext(const char *txt) { return txt; }

- -static inline void textdomain(const char *domainname) {}

- -static inline void bindtextdomain(const char *name, const char *dir) {}

- -static inline char *bind_textdomain_codeset(const char *dn, char *c) { return c; }

- -#endif

- -

-  #ifdef __cplusplus

-  extern "C" {

-  #endif

- @@ -29,11 +20,6 @@ extern "C" {

-  #define PACKAGE "linux"

-  #endif

-  

- -#define LOCALEDIR "/usr/share/locale"

- -

- -#define _(text) gettext(text)

- -#define N_(text) (text)

- -

-  #ifndef CONFIG_

-  #define CONFIG_ "CONFIG_"

-  #endif

- @@ -44,10 +30,6 @@ static inline const char *CONFIG_prefix(void)

-  #undef CONFIG_

-  #define CONFIG_ CONFIG_prefix()

-  

- -#define TF_COMMAND	0x0001

- -#define TF_PARAM	0x0002

- -#define TF_OPTION	0x0004

- -

-  enum conf_def_mode {

-  	def_default,

-  	def_yes,

- @@ -56,18 +38,7 @@ enum conf_def_mode {

-  	def_random

-  };

-  

- -#define T_OPT_MODULES		1

- -#define T_OPT_DEFCONFIG_LIST	2

- -#define T_OPT_ENV		3

- -#define T_OPT_ALLNOCONFIG_Y	4

- -

- -struct kconf_id {

- -	const char *name;

- -	int token;

- -	unsigned int flags;

- -	enum symbol_type stype;

- -};

- -

- +extern int yylineno;

-  void zconfdump(FILE *out);

-  void zconf_starthelp(void);

-  FILE *zconf_fopen(const char *name);

- @@ -100,21 +71,27 @@ void menu_warn(struct menu *menu, const char *fmt, ...);

-  struct menu *menu_add_menu(void);

-  void menu_end_menu(void);

-  void menu_add_entry(struct symbol *sym);

- -void menu_end_entry(void);

-  void menu_add_dep(struct expr *dep);

-  void menu_add_visibility(struct expr *dep);

-  struct property *menu_add_prompt(enum prop_type type, char *prompt, struct expr *dep);

-  void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep);

-  void menu_add_symbol(enum prop_type type, struct symbol *sym, struct expr *dep);

- -void menu_add_option(int token, char *arg);

- +void menu_add_option_modules(void);

- +void menu_add_option_defconfig_list(void);

- +void menu_add_option_allnoconfig_y(void);

-  void menu_finalize(struct menu *parent);

-  void menu_set_type(int type);

-  

-  /* util.c */

-  struct file *file_lookup(const char *name);

- -int file_write_dep(const char *name);

-  void *xmalloc(size_t size);

-  void *xcalloc(size_t nmemb, size_t size);

- +void *xrealloc(void *p, size_t size);

- +char *xstrdup(const char *s);

- +char *xstrndup(const char *s, size_t n);

- +

- +/* zconf.l */

- +int yylex(void);

-  

-  struct gstr {

-  	size_t len;

- @@ -132,16 +109,13 @@ void str_printf(struct gstr *gs, const char *fmt, ...);

-  const char *str_get(struct gstr *gs);

-  

-  /* symbol.c */

- -extern struct expr *sym_env_list;

- -

- -void sym_init(void);

-  void sym_clear_all_valid(void);

-  struct symbol *sym_choice_default(struct symbol *sym);

- +struct property *sym_get_range_prop(struct symbol *sym);

-  const char *sym_get_string_default(struct symbol *sym);

-  struct symbol *sym_check_deps(struct symbol *sym);

-  struct property *prop_alloc(enum prop_type type, struct symbol *sym);

-  struct symbol *prop_get_symbol(struct property *prop);

- -struct property *sym_get_env_prop(struct symbol *sym);

-  

-  static inline tristate sym_get_tristate_value(struct symbol *sym)

-  {

- diff --git a/carl9170fw/config/lkc_proto.h b/carl9170fw/config/lkc_proto.h

- index 5d86e2d..86c2675 100644

- --- a/carl9170fw/config/lkc_proto.h

- +++ b/carl9170fw/config/lkc_proto.h

- @@ -7,10 +7,10 @@ int conf_read(const char *name);

-  int conf_read_simple(const char *name, int);

-  int conf_write_defconfig(const char *name);

-  int conf_write(const char *name);

- -int conf_write_autoconf(void);

- +int conf_write_autoconf(int overwrite);

-  bool conf_get_changed(void);

-  void conf_set_changed_callback(void (*fn)(void));

- -void conf_set_message_callback(void (*fn)(const char *fmt, va_list ap));

- +void conf_set_message_callback(void (*fn)(const char *s));

-  

-  /* menu.c */

-  extern struct menu rootmenu;

- @@ -31,7 +31,6 @@ extern struct symbol * symbol_hash[SYMBOL_HASHSIZE];

-  

-  struct symbol * sym_lookup(const char *name, int flags);

-  struct symbol * sym_find(const char *name);

- -const char * sym_expand_string_value(const char *in);

-  const char * sym_escape_string_value(const char *in);

-  struct symbol ** sym_re_search(const char *pattern);

-  const char * sym_type_name(enum symbol_type type);

- @@ -49,5 +48,19 @@ const char * sym_get_string_value(struct symbol *sym);

-  

-  const char * prop_get_type_name(enum prop_type type);

-  

- +/* preprocess.c */

- +enum variable_flavor {

- +	VAR_SIMPLE,

- +	VAR_RECURSIVE,

- +	VAR_APPEND,

- +};

- +void env_write_dep(FILE *f, const char *auto_conf_name);

- +void variable_add(const char *name, const char *value,

- +		  enum variable_flavor flavor);

- +void variable_all_del(void);

- +char *expand_string(const char *in);

- +char *expand_dollar(const char **str);

- +char *expand_one_token(const char **str);

- +

-  /* expr.c */

-  void expr_print(struct expr *e, void (*fn)(void *, struct symbol *, const char *), void *data, int prevtoken);

- diff --git a/carl9170fw/config/menu.c b/carl9170fw/config/menu.c

- index e935793..d9d1646 100644

- --- a/carl9170fw/config/menu.c

- +++ b/carl9170fw/config/menu.c

- @@ -1,6 +1,6 @@

- +// SPDX-License-Identifier: GPL-2.0

-  /*

-   * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>

- - * Released under the terms of the GNU GPL v2.0.

-   */

-  

-  #include <ctype.h>

- @@ -62,13 +62,8 @@ void menu_add_entry(struct symbol *sym)

-  		menu_add_symbol(P_SYMBOL, sym, NULL);

-  }

-  

- -void menu_end_entry(void)

- -{

- -}

- -

-  struct menu *menu_add_menu(void)

-  {

- -	menu_end_entry();

-  	last_entry_ptr = &current_entry->list;

-  	return current_menu = current_entry;

-  }

- @@ -79,19 +74,23 @@ void menu_end_menu(void)

-  	current_menu = current_menu->parent;

-  }

-  

- -static struct expr *menu_check_dep(struct expr *e)

- +/*

- + * Rewrites 'm' to 'm' && MODULES, so that it evaluates to 'n' when running

- + * without modules

- + */

- +static struct expr *rewrite_m(struct expr *e)

-  {

-  	if (!e)

-  		return e;

-  

-  	switch (e->type) {

-  	case E_NOT:

- -		e->left.expr = menu_check_dep(e->left.expr);

- +		e->left.expr = rewrite_m(e->left.expr);

-  		break;

-  	case E_OR:

-  	case E_AND:

- -		e->left.expr = menu_check_dep(e->left.expr);

- -		e->right.expr = menu_check_dep(e->right.expr);

- +		e->left.expr = rewrite_m(e->left.expr);

- +		e->right.expr = rewrite_m(e->right.expr);

-  		break;

-  	case E_SYMBOL:

-  		/* change 'm' into 'm' && MODULES */

- @@ -106,7 +105,7 @@ static struct expr *menu_check_dep(struct expr *e)

-  

-  void menu_add_dep(struct expr *dep)

-  {

- -	current_entry->dep = expr_alloc_and(current_entry->dep, menu_check_dep(dep));

- +	current_entry->dep = expr_alloc_and(current_entry->dep, dep);

-  }

-  

-  void menu_set_type(int type)

- @@ -131,7 +130,7 @@ static struct property *menu_add_prop(enum prop_type type, char *prompt, struct

-  

-  	prop->menu = current_entry;

-  	prop->expr = expr;

- -	prop->visible.expr = menu_check_dep(dep);

- +	prop->visible.expr = dep;

-  

-  	if (prompt) {

-  		if (isspace(*prompt)) {

- @@ -196,31 +195,26 @@ void menu_add_symbol(enum prop_type type, struct symbol *sym, struct expr *dep)

-  	menu_add_prop(type, NULL, expr_alloc_symbol(sym), dep);

-  }

-  

- -void menu_add_option(int token, char *arg)

- +void menu_add_option_modules(void)

-  {

- -	switch (token) {

- -	case T_OPT_MODULES:

- -		if (modules_sym)

- -			zconf_error("symbol '%s' redefines option 'modules'"

- -				    " already defined by symbol '%s'",

- -				    current_entry->sym->name,

- -				    modules_sym->name

- -				    );

- -		modules_sym = current_entry->sym;

- -		break;

- -	case T_OPT_DEFCONFIG_LIST:

- -		if (!sym_defconfig_list)

- -			sym_defconfig_list = current_entry->sym;

- -		else if (sym_defconfig_list != current_entry->sym)

- -			zconf_error("trying to redefine defconfig symbol");

- -		break;

- -	case T_OPT_ENV:

- -		prop_add_env(arg);

- -		break;

- -	case T_OPT_ALLNOCONFIG_Y:

- -		current_entry->sym->flags |= SYMBOL_ALLNOCONFIG_Y;

- -		break;

- -	}

- +	if (modules_sym)

- +		zconf_error("symbol '%s' redefines option 'modules' already defined by symbol '%s'",

- +			    current_entry->sym->name, modules_sym->name);

- +	modules_sym = current_entry->sym;

- +}

- +

- +void menu_add_option_defconfig_list(void)

- +{

- +	if (!sym_defconfig_list)

- +		sym_defconfig_list = current_entry->sym;

- +	else if (sym_defconfig_list != current_entry->sym)

- +		zconf_error("trying to redefine defconfig symbol");

- +	sym_defconfig_list->flags |= SYMBOL_NO_WRITE;

- +}

- +

- +void menu_add_option_allnoconfig_y(void)

- +{

- +	current_entry->sym->flags |= SYMBOL_ALLNOCONFIG_Y;

-  }

-  

-  static int menu_validate_number(struct symbol *sym, struct symbol *sym2)

- @@ -252,6 +246,16 @@ static void sym_check_prop(struct symbol *sym)

-  					    "'%s': number is invalid",

-  					    sym->name);

-  			}

- +			if (sym_is_choice(sym)) {

- +				struct property *choice_prop =

- +					sym_get_choice_prop(sym2);

- +

- +				if (!choice_prop ||

- +				    prop_get_symbol(choice_prop) != sym)

- +					prop_warn(prop,

- +						  "choice default symbol '%s' is not contained in the choice",

- +						  sym2->name);

- +			}

-  			break;

-  		case P_SELECT:

-  		case P_IMPLY:

- @@ -260,13 +264,13 @@ static void sym_check_prop(struct symbol *sym)

-  			if (sym->type != S_BOOLEAN && sym->type != S_TRISTATE)

-  				prop_warn(prop,

-  				    "config symbol '%s' uses %s, but is "

- -				    "not boolean or tristate", sym->name, use);

- +				    "not bool or tristate", sym->name, use);

-  			else if (sym2->type != S_UNKNOWN &&

-  				 sym2->type != S_BOOLEAN &&

-  				 sym2->type != S_TRISTATE)

-  				prop_warn(prop,

-  				    "'%s' has wrong type. '%s' only "

- -				    "accept arguments of boolean and "

- +				    "accept arguments of bool and "

-  				    "tristate type", sym2->name, use);

-  			break;

-  		case P_RANGE:

- @@ -292,6 +296,11 @@ void menu_finalize(struct menu *parent)

-  

-  	sym = parent->sym;

-  	if (parent->list) {

- +		/*

- +		 * This menu node has children. We (recursively) process them

- +		 * and propagate parent dependencies before moving on.

- +		 */

- +

-  		if (sym && sym_is_choice(sym)) {

-  			if (sym->type == S_UNKNOWN) {

-  				/* find the first choice value to find out choice type */

- @@ -309,30 +318,83 @@ void menu_finalize(struct menu *parent)

-  				if (menu->sym && menu->sym->type == S_UNKNOWN)

-  					menu_set_type(sym->type);

-  			}

- +

- +			/*

- +			 * Use the choice itself as the parent dependency of

- +			 * the contained items. This turns the mode of the

- +			 * choice into an upper bound on the visibility of the

- +			 * choice value symbols.

- +			 */

-  			parentdep = expr_alloc_symbol(sym);

-  		} else if (parent->prompt)

- +			/* Menu node for 'menu' */

-  			parentdep = parent->prompt->visible.expr;

-  		else

- +			/* Menu node for 'if' */

-  			parentdep = parent->dep;

-  

- +		/* For each child menu node... */

-  		for (menu = parent->list; menu; menu = menu->next) {

- -			basedep = expr_transform(menu->dep);

- +			/*

- +			 * Propagate parent dependencies to the child menu

- +			 * node, also rewriting and simplifying expressions

- +			 */

- +			basedep = rewrite_m(menu->dep);

- +			basedep = expr_transform(basedep);

-  			basedep = expr_alloc_and(expr_copy(parentdep), basedep);

-  			basedep = expr_eliminate_dups(basedep);

-  			menu->dep = basedep;

- +

-  			if (menu->sym)

- +				/*

- +				 * Note: For symbols, all prompts are included

- +				 * too in the symbol's own property list

- +				 */

-  				prop = menu->sym->prop;

-  			else

- +				/*

- +				 * For non-symbol menu nodes, we just need to

- +				 * handle the prompt

- +				 */

-  				prop = menu->prompt;

- +

- +			/* For each property... */

-  			for (; prop; prop = prop->next) {

-  				if (prop->menu != menu)

- +					/*

- +					 * Two possibilities:

- +					 *

- +					 * 1. The property lacks dependencies

- +					 *    and so isn't location-specific,

- +					 *    e.g. an 'option'

- +					 *

- +					 * 2. The property belongs to a symbol

- +					 *    defined in multiple locations and

- +					 *    is from some other location. It

- +					 *    will be handled there in that

- +					 *    case.

- +					 *

- +					 * Skip the property.

- +					 */

-  					continue;

- -				dep = expr_transform(prop->visible.expr);

- +

- +				/*

- +				 * Propagate parent dependencies to the

- +				 * property's condition, rewriting and

- +				 * simplifying expressions at the same time

- +				 */

- +				dep = rewrite_m(prop->visible.expr);

- +				dep = expr_transform(dep);

-  				dep = expr_alloc_and(expr_copy(basedep), dep);

-  				dep = expr_eliminate_dups(dep);

-  				if (menu->sym && menu->sym->type != S_TRISTATE)

-  					dep = expr_trans_bool(dep);

-  				prop->visible.expr = dep;

- +

- +				/*

- +				 * Handle selects and implies, which modify the

- +				 * dependencies of the selected/implied symbol

- +				 */

-  				if (prop->type == P_SELECT) {

-  					struct symbol *es = prop_get_symbol(prop);

-  					es->rev_dep.expr = expr_alloc_or(es->rev_dep.expr,

- @@ -344,34 +406,81 @@ void menu_finalize(struct menu *parent)

-  				}

-  			}

-  		}

- +

- +		if (sym && sym_is_choice(sym))

- +			expr_free(parentdep);

- +

- +		/*

- +		 * Recursively process children in the same fashion before

- +		 * moving on

- +		 */

-  		for (menu = parent->list; menu; menu = menu->next)

-  			menu_finalize(menu);

-  	} else if (sym) {

- +		/*

- +		 * Automatic submenu creation. If sym is a symbol and A, B, C,

- +		 * ... are consecutive items (symbols, menus, ifs, etc.) that

- +		 * all depend on sym, then the following menu structure is

- +		 * created:

- +		 *

- +		 *	sym

- +		 *	 +-A

- +		 *	 +-B

- +		 *	 +-C

- +		 *	 ...

- +		 *

- +		 * This also works recursively, giving the following structure

- +		 * if A is a symbol and B depends on A:

- +		 *

- +		 *	sym

- +		 *	 +-A

- +		 *	 | +-B

- +		 *	 +-C

- +		 *	 ...

- +		 */

- +

-  		basedep = parent->prompt ? parent->prompt->visible.expr : NULL;

-  		basedep = expr_trans_compare(basedep, E_UNEQUAL, &symbol_no);

-  		basedep = expr_eliminate_dups(expr_transform(basedep));

- +

- +		/* Examine consecutive elements after sym */

-  		last_menu = NULL;

-  		for (menu = parent->next; menu; menu = menu->next) {

-  			dep = menu->prompt ? menu->prompt->visible.expr : menu->dep;

-  			if (!expr_contains_symbol(dep, sym))

- +				/* No dependency, quit */

-  				break;

-  			if (expr_depends_symbol(dep, sym))

- +				/* Absolute dependency, put in submenu */

-  				goto next;

- +

- +			/*

- +			 * Also consider it a dependency on sym if our

- +			 * dependencies contain sym and are a "superset" of

- +			 * sym's dependencies, e.g. '(sym || Q) && R' when sym

- +			 * depends on R.

- +			 *

- +			 * Note that 'R' might be from an enclosing menu or if,

- +			 * making this a more common case than it might seem.

- +			 */

-  			dep = expr_trans_compare(dep, E_UNEQUAL, &symbol_no);

-  			dep = expr_eliminate_dups(expr_transform(dep));

-  			dep2 = expr_copy(basedep);

-  			expr_eliminate_eq(&dep, &dep2);

-  			expr_free(dep);

-  			if (!expr_is_yes(dep2)) {

- +				/* Not superset, quit */

-  				expr_free(dep2);

-  				break;

-  			}

- +			/* Superset, put in submenu */

-  			expr_free(dep2);

-  		next:

-  			menu_finalize(menu);

-  			menu->parent = parent;

-  			last_menu = menu;

-  		}

- +		expr_free(basedep);

-  		if (last_menu) {

-  			parent->list = parent->next;

-  			parent->next = last_menu->next;

- @@ -420,6 +529,35 @@ void menu_finalize(struct menu *parent)

-  			*ep = expr_alloc_one(E_LIST, NULL);

-  			(*ep)->right.sym = menu->sym;

-  		}

- +

- +		/*

- +		 * This code serves two purposes:

- +		 *

- +		 * (1) Flattening 'if' blocks, which do not specify a submenu

- +		 *     and only add dependencies.

- +		 *

- +		 *     (Automatic submenu creation might still create a submenu

- +		 *     from an 'if' before this code runs.)

- +		 *

- +		 * (2) "Undoing" any automatic submenus created earlier below

- +		 *     promptless symbols.

- +		 *

- +		 * Before:

- +		 *

- +		 *	A

- +		 *	if ... (or promptless symbol)

- +		 *	 +-B

- +		 *	 +-C

- +		 *	D

- +		 *

- +		 * After:

- +		 *

- +		 *	A

- +		 *	if ... (or promptless symbol)

- +		 *	B

- +		 *	C

- +		 *	D

- +		 */

-  		if (menu->list && (!menu->prompt || !menu->prompt->text)) {

-  			for (last_menu = menu->list; ; last_menu = last_menu->next) {

-  				last_menu->parent = parent;

- @@ -444,6 +582,15 @@ void menu_finalize(struct menu *parent)

-  		sym->flags |= SYMBOL_WARNED;

-  	}

-  

- +	/*

- +	 * For non-optional choices, add a reverse dependency (corresponding to

- +	 * a select) of '<visibility> && m'. This prevents the user from

- +	 * setting the choice mode to 'n' when the choice is visible.

- +	 *

- +	 * This would also work for non-choice symbols, but only non-optional

- +	 * choices clear SYMBOL_OPTIONAL as of writing. Choices are implemented

- +	 * as a type of symbol.

- +	 */

-  	if (sym && !sym_is_optional(sym) && parent->prompt) {

-  		sym->rev_dep.expr = expr_alloc_or(sym->rev_dep.expr,

-  				expr_alloc_and(parent->prompt->visible.expr,

- @@ -558,7 +705,7 @@ static void get_prompt_str(struct gstr *r, struct property *prop,

-  	struct menu *submenu[8], *menu, *location = NULL;

-  	struct jump_key *jump = NULL;

-  

- -	str_printf(r, _("Prompt: %s\n"), _(prop->text));

- +	str_printf(r, "Prompt: %s\n", prop->text);

-  	menu = prop->menu->parent;

-  	for (i = 0; menu != &rootmenu && i < 8; menu = menu->parent) {

-  		bool accessible = menu_is_visible(menu);

- @@ -591,16 +738,16 @@ static void get_prompt_str(struct gstr *r, struct property *prop,

-  	}

-  

-  	if (i > 0) {

- -		str_printf(r, _("  Location:\n"));

- +		str_printf(r, "  Location:\n");

-  		for (j = 4; --i >= 0; j += 2) {

-  			menu = submenu[i];

-  			if (jump && menu == location)

-  				jump->offset = strlen(r->s);

-  			str_printf(r, "%*c-> %s", j, ' ',

- -				   _(menu_get_prompt(menu)));

- +				   menu_get_prompt(menu));

-  			if (menu->sym) {

-  				str_printf(r, " (%s [=%s])", menu->sym->name ?

- -					menu->sym->name : _("<choice>"),

- +					menu->sym->name : "<choice>",

-  					sym_get_string_value(menu->sym));

-  			}

-  			str_append(r, "\n");

- @@ -664,27 +811,27 @@ static void get_symbol_str(struct gstr *r, struct symbol *sym,

-  

-  	prop = get_symbol_prop(sym);

-  	if (prop) {

- -		str_printf(r, _("  Defined at %s:%d\n"), prop->menu->file->name,

- +		str_printf(r, "  Defined at %s:%d\n", prop->menu->file->name,

-  			prop->menu->lineno);

-  		if (!expr_is_yes(prop->visible.expr)) {

- -			str_append(r, _("  Depends on: "));

- +			str_append(r, "  Depends on: ");

-  			expr_gstr_print(prop->visible.expr, r);

-  			str_append(r, "\n");

-  		}

-  	}

-  

- -	get_symbol_props_str(r, sym, P_SELECT, _("  Selects: "));

- +	get_symbol_props_str(r, sym, P_SELECT, "  Selects: ");

-  	if (sym->rev_dep.expr) {

- -		str_append(r, _("  Selected by: "));

- -		expr_gstr_print(sym->rev_dep.expr, r);

- -		str_append(r, "\n");

- +		expr_gstr_print_revdep(sym->rev_dep.expr, r, yes, "  Selected by [y]:\n");

- +		expr_gstr_print_revdep(sym->rev_dep.expr, r, mod, "  Selected by [m]:\n");

- +		expr_gstr_print_revdep(sym->rev_dep.expr, r, no, "  Selected by [n]:\n");

-  	}

-  

- -	get_symbol_props_str(r, sym, P_IMPLY, _("  Implies: "));

- +	get_symbol_props_str(r, sym, P_IMPLY, "  Implies: ");

-  	if (sym->implied.expr) {

- -		str_append(r, _("  Implied by: "));

- -		expr_gstr_print(sym->implied.expr, r);

- -		str_append(r, "\n");

- +		expr_gstr_print_revdep(sym->implied.expr, r, yes, "  Implied by [y]:\n");

- +		expr_gstr_print_revdep(sym->implied.expr, r, mod, "  Implied by [m]:\n");

- +		expr_gstr_print_revdep(sym->implied.expr, r, no, "  Implied by [n]:\n");

-  	}

-  

-  	str_append(r, "\n\n");

- @@ -699,7 +846,7 @@ struct gstr get_relations_str(struct symbol **sym_arr, struct list_head *head)

-  	for (i = 0; sym_arr && (sym = sym_arr[i]); i++)

-  		get_symbol_str(&res, sym, head);

-  	if (!i)

- -		str_append(&res, _("No matches found.\n"));

- +		str_append(&res, "No matches found.\n");

-  	return res;

-  }

-  

- @@ -714,7 +861,7 @@ void menu_get_ext_help(struct menu *menu, struct gstr *help)

-  			str_printf(help, "%s%s:\n\n", CONFIG_, sym->name);

-  		help_text = menu_get_help(menu);

-  	}

- -	str_printf(help, "%s\n", _(help_text));

- +	str_printf(help, "%s\n", help_text);

-  	if (sym)

-  		get_symbol_str(help, sym, NULL);

-  }

- diff --git a/carl9170fw/config/preprocess.c b/carl9170fw/config/preprocess.c

- new file mode 100644

- index 0000000..592dfbf

- --- /dev/null

- +++ b/carl9170fw/config/preprocess.c

- @@ -0,0 +1,573 @@

- +// SPDX-License-Identifier: GPL-2.0

- +//

- +// Copyright (C) 2018 Masahiro Yamada <yamada.masahiro@socionext.com>

- +

- +#include <ctype.h>

- +#include <stdarg.h>

- +#include <stdbool.h>

- +#include <stdio.h>

- +#include <stdlib.h>

- +#include <string.h>

- +

- +#include "list.h"

- +#include "lkc.h"

- +

- +#define ARRAY_SIZE(arr)		(sizeof(arr) / sizeof((arr)[0]))

- +

- +static char *expand_string_with_args(const char *in, int argc, char *argv[]);

- +

- +static void __attribute__((noreturn)) pperror(const char *format, ...)

- +{

- +	va_list ap;

- +

- +	fprintf(stderr, "%s:%d: ", current_file->name, yylineno);

- +	va_start(ap, format);

- +	vfprintf(stderr, format, ap);

- +	va_end(ap);

- +	fprintf(stderr, "\n");

- +

- +	exit(1);

- +}

- +

- +/*

- + * Environment variables

- + */

- +static LIST_HEAD(env_list);

- +

- +struct env {

- +	char *name;

- +	char *value;

- +	struct list_head node;

- +};

- +

- +static void env_add(const char *name, const char *value)

- +{

- +	struct env *e;

- +

- +	e = xmalloc(sizeof(*e));

- +	e->name = xstrdup(name);

- +	e->value = xstrdup(value);

- +

- +	list_add_tail(&e->node, &env_list);

- +}

- +

- +static void env_del(struct env *e)

- +{

- +	list_del(&e->node);

- +	free(e->name);

- +	free(e->value);

- +	free(e);

- +}

- +

- +/* The returned pointer must be freed when done */

- +static char *env_expand(const char *name)

- +{

- +	struct env *e;

- +	const char *value;

- +

- +	if (!*name)

- +		return NULL;

- +

- +	list_for_each_entry(e, &env_list, node) {

- +		if (!strcmp(name, e->name))

- +			return xstrdup(e->value);

- +	}

- +

- +	value = getenv(name);

- +	if (!value)

- +		return NULL;

- +

- +	/*

- +	 * We need to remember all referenced environment variables.

- +	 * They will be written out to include/config/auto.conf.cmd

- +	 */

- +	env_add(name, value);

- +

- +	return xstrdup(value);

- +}

- +

- +void env_write_dep(FILE *f, const char *autoconfig_name)

- +{

- +	struct env *e, *tmp;

- +

- +	list_for_each_entry_safe(e, tmp, &env_list, node) {

- +		fprintf(f, "ifneq \"$(%s)\" \"%s\"\n", e->name, e->value);

- +		fprintf(f, "%s: FORCE\n", autoconfig_name);

- +		fprintf(f, "endif\n");

- +		env_del(e);

- +	}

- +}

- +

- +/*

- + * Built-in functions

- + */

- +struct function {

- +	const char *name;

- +	unsigned int min_args;

- +	unsigned int max_args;

- +	char *(*func)(int argc, char *argv[]);

- +};

- +

- +static char *do_error_if(int argc, char *argv[])

- +{

- +	if (!strcmp(argv[0], "y"))

- +		pperror("%s", argv[1]);

- +

- +	return NULL;

- +}

- +

- +static char *do_filename(int argc, char *argv[])

- +{

- +	return xstrdup(current_file->name);

- +}

- +

- +static char *do_info(int argc, char *argv[])

- +{

- +	printf("%s\n", argv[0]);

- +

- +	return xstrdup("");

- +}

- +

- +static char *do_lineno(int argc, char *argv[])

- +{

- +	char buf[16];

- +

- +	sprintf(buf, "%d", yylineno);

- +

- +	return xstrdup(buf);

- +}

- +

- +static char *do_shell(int argc, char *argv[])

- +{

- +	FILE *p;

- +	char buf[256];

- +	char *cmd;

- +	size_t nread;

- +	int i;

- +

- +	cmd = argv[0];

- +

- +	p = popen(cmd, "r");

- +	if (!p) {

- +		perror(cmd);

- +		exit(1);

- +	}

- +

- +	nread = fread(buf, 1, sizeof(buf), p);

- +	if (nread == sizeof(buf))

- +		nread--;

- +

- +	/* remove trailing new lines */

- +	while (nread > 0 && buf[nread - 1] == '\n')

- +		nread--;

- +

- +	buf[nread] = 0;

- +

- +	/* replace a new line with a space */

- +	for (i = 0; i < nread; i++) {

- +		if (buf[i] == '\n')

- +			buf[i] = ' ';

- +	}

- +

- +	if (pclose(p) == -1) {

- +		perror(cmd);

- +		exit(1);

- +	}

- +

- +	return xstrdup(buf);

- +}

- +

- +static char *do_warning_if(int argc, char *argv[])

- +{

- +	if (!strcmp(argv[0], "y"))

- +		fprintf(stderr, "%s:%d: %s\n",

- +			current_file->name, yylineno, argv[1]);

- +

- +	return xstrdup("");

- +}

- +

- +static const struct function function_table[] = {

- +	/* Name		MIN	MAX	Function */

- +	{ "error-if",	2,	2,	do_error_if },

- +	{ "filename",	0,	0,	do_filename },

- +	{ "info",	1,	1,	do_info },

- +	{ "lineno",	0,	0,	do_lineno },

- +	{ "shell",	1,	1,	do_shell },

- +	{ "warning-if",	2,	2,	do_warning_if },

- +};

- +

- +#define FUNCTION_MAX_ARGS		16

- +

- +static char *function_expand(const char *name, int argc, char *argv[])

- +{

- +	const struct function *f;

- +	int i;

- +

- +	for (i = 0; i < ARRAY_SIZE(function_table); i++) {

- +		f = &function_table[i];

- +		if (strcmp(f->name, name))

- +			continue;

- +

- +		if (argc < f->min_args)

- +			pperror("too few function arguments passed to '%s'",

- +				name);

- +

- +		if (argc > f->max_args)

- +			pperror("too many function arguments passed to '%s'",

- +				name);

- +

- +		return f->func(argc, argv);

- +	}

- +

- +	return NULL;

- +}

- +

- +/*

- + * Variables (and user-defined functions)

- + */

- +static LIST_HEAD(variable_list);

- +

- +struct variable {

- +	char *name;

- +	char *value;

- +	enum variable_flavor flavor;

- +	int exp_count;

- +	struct list_head node;

- +};

- +

- +static struct variable *variable_lookup(const char *name)

- +{

- +	struct variable *v;

- +

- +	list_for_each_entry(v, &variable_list, node) {

- +		if (!strcmp(name, v->name))

- +			return v;

- +	}

- +

- +	return NULL;

- +}

- +

- +static char *variable_expand(const char *name, int argc, char *argv[])

- +{

- +	struct variable *v;

- +	char *res;

- +

- +	v = variable_lookup(name);

- +	if (!v)

- +		return NULL;

- +

- +	if (argc == 0 && v->exp_count)

- +		pperror("Recursive variable '%s' references itself (eventually)",

- +			name);

- +

- +	if (v->exp_count > 1000)

- +		pperror("Too deep recursive expansion");

- +

- +	v->exp_count++;

- +

- +	if (v->flavor == VAR_RECURSIVE)

- +		res = expand_string_with_args(v->value, argc, argv);

- +	else

- +		res = xstrdup(v->value);

- +

- +	v->exp_count--;

- +

- +	return res;

- +}

- +

- +void variable_add(const char *name, const char *value,

- +		  enum variable_flavor flavor)

- +{

- +	struct variable *v;

- +	char *new_value;

- +	bool append = false;

- +

- +	v = variable_lookup(name);

- +	if (v) {

- +		/* For defined variables, += inherits the existing flavor */

- +		if (flavor == VAR_APPEND) {

- +			flavor = v->flavor;

- +			append = true;

- +		} else {

- +			free(v->value);

- +		}

- +	} else {

- +		/* For undefined variables, += assumes the recursive flavor */

- +		if (flavor == VAR_APPEND)

- +			flavor = VAR_RECURSIVE;

- +

- +		v = xmalloc(sizeof(*v));

- +		v->name = xstrdup(name);

- +		v->exp_count = 0;

- +		list_add_tail(&v->node, &variable_list);

- +	}

- +

- +	v->flavor = flavor;

- +

- +	if (flavor == VAR_SIMPLE)

- +		new_value = expand_string(value);

- +	else

- +		new_value = xstrdup(value);

- +

- +	if (append) {

- +		v->value = xrealloc(v->value,

- +				    strlen(v->value) + strlen(new_value) + 2);

- +		strcat(v->value, " ");

- +		strcat(v->value, new_value);

- +		free(new_value);

- +	} else {

- +		v->value = new_value;

- +	}

- +}

- +

- +static void variable_del(struct variable *v)

- +{

- +	list_del(&v->node);

- +	free(v->name);

- +	free(v->value);

- +	free(v);

- +}

- +

- +void variable_all_del(void)

- +{

- +	struct variable *v, *tmp;

- +

- +	list_for_each_entry_safe(v, tmp, &variable_list, node)

- +		variable_del(v);

- +}

- +

- +/*

- + * Evaluate a clause with arguments.  argc/argv are arguments from the upper

- + * function call.

- + *

- + * Returned string must be freed when done

- + */

- +static char *eval_clause(const char *str, size_t len, int argc, char *argv[])

- +{

- +	char *tmp, *name, *res, *endptr, *prev, *p;

- +	int new_argc = 0;

- +	char *new_argv[FUNCTION_MAX_ARGS];

- +	int nest = 0;

- +	int i;

- +	unsigned long n;

- +

- +	tmp = xstrndup(str, len);

- +

- +	/*

- +	 * If variable name is '1', '2', etc.  It is generally an argument

- +	 * from a user-function call (i.e. local-scope variable).  If not

- +	 * available, then look-up global-scope variables.

- +	 */

- +	n = strtoul(tmp, &endptr, 10);

- +	if (!*endptr && n > 0 && n <= argc) {

- +		res = xstrdup(argv[n - 1]);

- +		goto free_tmp;

- +	}

- +

- +	prev = p = tmp;

- +

- +	/*

- +	 * Split into tokens

- +	 * The function name and arguments are separated by a comma.

- +	 * For example, if the function call is like this:

- +	 *   $(foo,$(x),$(y))

- +	 *

- +	 * The input string for this helper should be:

- +	 *   foo,$(x),$(y)

- +	 *

- +	 * and split into:

- +	 *   new_argv[0] = 'foo'

- +	 *   new_argv[1] = '$(x)'

- +	 *   new_argv[2] = '$(y)'

- +	 */

- +	while (*p) {

- +		if (nest == 0 && *p == ',') {

- +			*p = 0;

- +			if (new_argc >= FUNCTION_MAX_ARGS)

- +				pperror("too many function arguments");

- +			new_argv[new_argc++] = prev;

- +			prev = p + 1;

- +		} else if (*p == '(') {

- +			nest++;

- +		} else if (*p == ')') {

- +			nest--;

- +		}

- +

- +		p++;

- +	}

- +	new_argv[new_argc++] = prev;

- +

- +	/*

- +	 * Shift arguments

- +	 * new_argv[0] represents a function name or a variable name.  Put it

- +	 * into 'name', then shift the rest of the arguments.  This simplifies

- +	 * 'const' handling.

- +	 */

- +	name = expand_string_with_args(new_argv[0], argc, argv);

- +	new_argc--;

- +	for (i = 0; i < new_argc; i++)

- +		new_argv[i] = expand_string_with_args(new_argv[i + 1],

- +						      argc, argv);

- +

- +	/* Search for variables */

- +	res = variable_expand(name, new_argc, new_argv);

- +	if (res)

- +		goto free;

- +

- +	/* Look for built-in functions */

- +	res = function_expand(name, new_argc, new_argv);

- +	if (res)

- +		goto free;

- +

- +	/* Last, try environment variable */

- +	if (new_argc == 0) {

- +		res = env_expand(name);

- +		if (res)

- +			goto free;

- +	}

- +

- +	res = xstrdup("");

- +free:

- +	for (i = 0; i < new_argc; i++)

- +		free(new_argv[i]);

- +	free(name);

- +free_tmp:

- +	free(tmp);

- +

- +	return res;

- +}

- +

- +/*

- + * Expand a string that follows '$'

- + *

- + * For example, if the input string is

- + *     ($(FOO)$($(BAR)))$(BAZ)

- + * this helper evaluates

- + *     $($(FOO)$($(BAR)))

- + * and returns a new string containing the expansion (note that the string is

- + * recursively expanded), also advancing 'str' to point to the next character

- + * after the corresponding closing parenthesis, in this case, *str will be

- + *     $(BAR)

- + */

- +static char *expand_dollar_with_args(const char **str, int argc, char *argv[])

- +{

- +	const char *p = *str;

- +	const char *q;

- +	int nest = 0;

- +

- +	/*

- +	 * In Kconfig, variable/function references always start with "$(".

- +	 * Neither single-letter variables as in $A nor curly braces as in ${CC}

- +	 * are supported.  '$' not followed by '(' loses its special meaning.

- +	 */

- +	if (*p != '(') {

- +		*str = p;

- +		return xstrdup("$");

- +	}

- +

- +	p++;

- +	q = p;

- +	while (*q) {

- +		if (*q == '(') {

- +			nest++;

- +		} else if (*q == ')') {

- +			if (nest-- == 0)

- +				break;

- +		}

- +		q++;

- +	}

- +

- +	if (!*q)

- +		pperror("unterminated reference to '%s': missing ')'", p);

- +

- +	/* Advance 'str' to after the expanded initial portion of the string */

- +	*str = q + 1;

- +

- +	return eval_clause(p, q - p, argc, argv);

- +}

- +

- +char *expand_dollar(const char **str)

- +{

- +	return expand_dollar_with_args(str, 0, NULL);

- +}

- +

- +static char *__expand_string(const char **str, bool (*is_end)(char c),

- +			     int argc, char *argv[])

- +{

- +	const char *in, *p;

- +	char *expansion, *out;

- +	size_t in_len, out_len;

- +

- +	out = xmalloc(1);

- +	*out = 0;

- +	out_len = 1;

- +

- +	p = in = *str;

- +

- +	while (1) {

- +		if (*p == '$') {

- +			in_len = p - in;

- +			p++;

- +			expansion = expand_dollar_with_args(&p, argc, argv);

- +			out_len += in_len + strlen(expansion);

- +			out = xrealloc(out, out_len);

- +			strncat(out, in, in_len);

- +			strcat(out, expansion);

- +			free(expansion);

- +			in = p;

- +			continue;

- +		}

- +

- +		if (is_end(*p))

- +			break;

- +

- +		p++;

- +	}

- +

- +	in_len = p - in;

- +	out_len += in_len;

- +	out = xrealloc(out, out_len);

- +	strncat(out, in, in_len);

- +

- +	/* Advance 'str' to the end character */

- +	*str = p;

- +

- +	return out;

- +}

- +

- +static bool is_end_of_str(char c)

- +{

- +	return !c;

- +}

- +

- +/*

- + * Expand variables and functions in the given string.  Undefined variables

- + * expand to an empty string.

- + * The returned string must be freed when done.

- + */

- +static char *expand_string_with_args(const char *in, int argc, char *argv[])

- +{

- +	return __expand_string(&in, is_end_of_str, argc, argv);

- +}

- +

- +char *expand_string(const char *in)

- +{

- +	return expand_string_with_args(in, 0, NULL);

- +}

- +

- +static bool is_end_of_token(char c)

- +{

- +	return !(isalnum(c) || c == '_' || c == '-');

- +}

- +

- +/*

- + * Expand variables in a token.  The parsing stops when a token separater

- + * (in most cases, it is a whitespace) is encountered.  'str' is updated to

- + * point to the next character.

- + *

- + * The returned string must be freed when done.

- + */

- +char *expand_one_token(const char **str)

- +{

- +	return __expand_string(str, is_end_of_token, 0, NULL);

- +}

- diff --git a/carl9170fw/config/symbol.c b/carl9170fw/config/symbol.c

- index 3c8bd9b..1f9266d 100644

- --- a/carl9170fw/config/symbol.c

- +++ b/carl9170fw/config/symbol.c

- @@ -1,6 +1,6 @@

- +// SPDX-License-Identifier: GPL-2.0

-  /*

-   * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>

- - * Released under the terms of the GNU GPL v2.0.

-   */

-  

-  #include <ctype.h>

- @@ -33,33 +33,6 @@ struct symbol *sym_defconfig_list;

-  struct symbol *modules_sym;

-  tristate modules_val;

-  

- -struct expr *sym_env_list;

- -

- -static void sym_add_default(struct symbol *sym, const char *def)

- -{

- -	struct property *prop = prop_alloc(P_DEFAULT, sym);

- -

- -	prop->expr = expr_alloc_symbol(sym_lookup(def, SYMBOL_CONST));

- -}

- -

- -void sym_init(void)

- -{

- -	struct symbol *sym;

- -	struct utsname uts;

- -	static bool inited = false;

- -

- -	if (inited)

- -		return;

- -	inited = true;

- -

- -	uname(&uts);

- -

- -	sym = sym_lookup("UNAME_RELEASE", 0);

- -	sym->type = S_STRING;

- -	sym->flags |= SYMBOL_AUTO;

- -	sym_add_default(sym, uts.release);

- -}

- -

-  enum symbol_type sym_get_type(struct symbol *sym)

-  {

-  	enum symbol_type type = sym->type;

- @@ -77,7 +50,7 @@ const char *sym_type_name(enum symbol_type type)

-  {

-  	switch (type) {

-  	case S_BOOLEAN:

- -		return "boolean";

- +		return "bool";

-  	case S_TRISTATE:

-  		return "tristate";

-  	case S_INT:

- @@ -88,8 +61,6 @@ const char *sym_type_name(enum symbol_type type)

-  		return "string";

-  	case S_UNKNOWN:

-  		return "unknown";

- -	case S_OTHER:

- -		break;

-  	}

-  	return "???";

-  }

- @@ -103,15 +74,6 @@ struct property *sym_get_choice_prop(struct symbol *sym)

-  	return NULL;

-  }

-  

- -struct property *sym_get_env_prop(struct symbol *sym)

- -{

- -	struct property *prop;

- -

- -	for_all_properties(sym, prop, P_ENV)

- -		return prop;

- -	return NULL;

- -}

- -

-  static struct property *sym_get_default_prop(struct symbol *sym)

-  {

-  	struct property *prop;

- @@ -124,7 +86,7 @@ static struct property *sym_get_default_prop(struct symbol *sym)

-  	return NULL;

-  }

-  

- -static struct property *sym_get_range_prop(struct symbol *sym)

- +struct property *sym_get_range_prop(struct symbol *sym)

-  {

-  	struct property *prop;

-  

- @@ -183,7 +145,7 @@ static void sym_validate_range(struct symbol *sym)

-  		sprintf(str, "%lld", val2);

-  	else

-  		sprintf(str, "0x%llx", val2);

- -	sym->curr.val = strdup(str);

- +	sym->curr.val = xstrdup(str);

-  }

-  

-  static void sym_set_changed(struct symbol *sym)

- @@ -243,7 +205,7 @@ static void sym_calc_visibility(struct symbol *sym)

-  	tri = yes;

-  	if (sym->dir_dep.expr)

-  		tri = expr_calc_value(sym->dir_dep.expr);

- -	if (tri == mod)

- +	if (tri == mod && sym_get_type(sym) == S_BOOLEAN)

-  		tri = yes;

-  	if (sym->dir_dep.tri != tri) {

-  		sym->dir_dep.tri = tri;

- @@ -333,6 +295,27 @@ static struct symbol *sym_calc_choice(struct symbol *sym)

-  	return def_sym;

-  }

-  

- +static void sym_warn_unmet_dep(struct symbol *sym)

- +{

- +	struct gstr gs = str_new();

- +

- +	str_printf(&gs,

- +		   "\nWARNING: unmet direct dependencies detected for %s\n",

- +		   sym->name);

- +	str_printf(&gs,

- +		   "  Depends on [%c]: ",

- +		   sym->dir_dep.tri == mod ? 'm' : 'n');

- +	expr_gstr_print(sym->dir_dep.expr, &gs);

- +	str_printf(&gs, "\n");

- +

- +	expr_gstr_print_revdep(sym->rev_dep.expr, &gs, yes,

- +			       "  Selected by [y]:\n");

- +	expr_gstr_print_revdep(sym->rev_dep.expr, &gs, mod,

- +			       "  Selected by [m]:\n");

- +

- +	fputs(str_get(&gs), stderr);

- +}

- +

-  void sym_calc_value(struct symbol *sym)

-  {

-  	struct symbol_value newval, oldval;

- @@ -371,11 +354,13 @@ void sym_calc_value(struct symbol *sym)

-  		sym->curr.tri = no;

-  		return;

-  	}

- -	if (!sym_is_choice_value(sym))

- -		sym->flags &= ~SYMBOL_WRITE;

- +	sym->flags &= ~SYMBOL_WRITE;

-  

-  	sym_calc_visibility(sym);

-  

- +	if (sym->visible != no)

- +		sym->flags |= SYMBOL_WRITE;

- +

-  	/* set default if recursively called */

-  	sym->curr = newval;

-  

- @@ -390,7 +375,6 @@ void sym_calc_value(struct symbol *sym)

-  				/* if the symbol is visible use the user value

-  				 * if available, otherwise try the default value

-  				 */

- -				sym->flags |= SYMBOL_WRITE;

-  				if (sym_has_value(sym)) {

-  					newval.tri = EXPR_AND(sym->def[S_DEF_USER].tri,

-  							      sym->visible);

- @@ -402,9 +386,10 @@ void sym_calc_value(struct symbol *sym)

-  			if (!sym_is_choice(sym)) {

-  				prop = sym_get_default_prop(sym);

-  				if (prop) {

- -					sym->flags |= SYMBOL_WRITE;

-  					newval.tri = EXPR_AND(expr_calc_value(prop->expr),

-  							      prop->visible.tri);

- +					if (newval.tri != no)

- +						sym->flags |= SYMBOL_WRITE;

-  				}

-  				if (sym->implied.tri != no) {

-  					sym->flags |= SYMBOL_WRITE;

- @@ -412,18 +397,8 @@ void sym_calc_value(struct symbol *sym)

-  				}

-  			}

-  		calc_newval:

- -			if (sym->dir_dep.tri == no && sym->rev_dep.tri != no) {

- -				struct expr *e;

- -				e = expr_simplify_unmet_dep(sym->rev_dep.expr,

- -				    sym->dir_dep.expr);

- -				fprintf(stderr, "warning: (");

- -				expr_fprint(e, stderr);

- -				fprintf(stderr, ") selects %s which has unmet direct dependencies (",

- -					sym->name);

- -				expr_fprint(sym->dir_dep.expr, stderr);

- -				fprintf(stderr, ")\n");

- -				expr_free(e);

- -			}

- +			if (sym->dir_dep.tri < sym->rev_dep.tri)

- +				sym_warn_unmet_dep(sym);

-  			newval.tri = EXPR_OR(newval.tri, sym->rev_dep.tri);

-  		}

-  		if (newval.tri == mod &&

- @@ -433,12 +408,9 @@ void sym_calc_value(struct symbol *sym)

-  	case S_STRING:

-  	case S_HEX:

-  	case S_INT:

- -		if (sym->visible != no) {

- -			sym->flags |= SYMBOL_WRITE;

- -			if (sym_has_value(sym)) {

- -				newval.val = sym->def[S_DEF_USER].val;

- -				break;

- -			}

- +		if (sym->visible != no && sym_has_value(sym)) {

- +			newval.val = sym->def[S_DEF_USER].val;

- +			break;

-  		}

-  		prop = sym_get_default_prop(sym);

-  		if (prop) {

- @@ -480,7 +452,7 @@ void sym_calc_value(struct symbol *sym)

-  		}

-  	}

-  

- -	if (sym->flags & SYMBOL_AUTO)

- +	if (sym->flags & SYMBOL_NO_WRITE)

-  		sym->flags &= ~SYMBOL_WRITE;

-  

-  	if (sym->flags & SYMBOL_NEED_SET_CHOICE_VALUES)

- @@ -783,7 +755,6 @@ const char *sym_get_string_default(struct symbol *sym)

-  		return str;

-  	case S_STRING:

-  		return str;

- -	case S_OTHER:

-  	case S_UNKNOWN:

-  		break;

-  	}

- @@ -851,7 +822,7 @@ struct symbol *sym_lookup(const char *name, int flags)

-  				   : !(symbol->flags & (SYMBOL_CONST|SYMBOL_CHOICE))))

-  				return symbol;

-  		}

- -		new_name = strdup(name);

- +		new_name = xstrdup(name);

-  	} else {

-  		new_name = NULL;

-  		hash = 0;

- @@ -896,55 +867,6 @@ struct symbol *sym_find(const char *name)

-  	return symbol;

-  }

-  

- -/*

- - * Expand symbol's names embedded in the string given in argument. Symbols'

- - * name to be expanded shall be prefixed by a '$'. Unknown symbol expands to

- - * the empty string.

- - */

- -const char *sym_expand_string_value(const char *in)

- -{

- -	const char *src;

- -	char *res;

- -	size_t reslen;

- -

- -	reslen = strlen(in) + 1;

- -	res = xmalloc(reslen);

- -	res[0] = '\0';

- -

- -	while ((src = strchr(in, '$'))) {

- -		char *p, name[SYMBOL_MAXLENGTH];

- -		const char *symval = "";

- -		struct symbol *sym;

- -		size_t newlen;

- -

- -		strncat(res, in, src - in);

- -		src++;

- -

- -		p = name;

- -		while (isalnum(*src) || *src == '_')

- -			*p++ = *src++;

- -		*p = '\0';

- -

- -		sym = sym_find(name);

- -		if (sym != NULL) {

- -			sym_calc_value(sym);

- -			symval = sym_get_string_value(sym);

- -		}

- -

- -		newlen = strlen(res) + strlen(symval) + strlen(src) + 1;

- -		if (newlen > reslen) {

- -			reslen = newlen;

- -			res = realloc(res, reslen);

- -		}

- -

- -		strcat(res, symval);

- -		in = src;

- -	}

- -	strcat(res, in);

- -

- -	return res;

- -}

- -

-  const char *sym_escape_string_value(const char *in)

-  {

-  	const char *p;

- @@ -1086,7 +1008,7 @@ static struct dep_stack {

-  	struct dep_stack *prev, *next;

-  	struct symbol *sym;

-  	struct property *prop;

- -	struct expr *expr;

- +	struct expr **expr;

-  } *check_top;

-  

-  static void dep_stack_insert(struct dep_stack *stack, struct symbol *sym)

- @@ -1150,37 +1072,52 @@ static void sym_check_print_recursive(struct symbol *last_sym)

-  		if (stack->sym == last_sym)

-  			fprintf(stderr, "%s:%d:error: recursive dependency detected!\n",

-  				prop->file->name, prop->lineno);

- -			fprintf(stderr, "For a resolution refer to Documentation/kbuild/kconfig-language.txt\n");

- -			fprintf(stderr, "subsection \"Kconfig recursive dependency limitations\"\n");

- -		if (stack->expr) {

- -			fprintf(stderr, "%s:%d:\tsymbol %s %s value contains %s\n",

- -				prop->file->name, prop->lineno,

- +

- +		if (sym_is_choice(sym)) {

- +			fprintf(stderr, "%s:%d:\tchoice %s contains symbol %s\n",

- +				menu->file->name, menu->lineno,

-  				sym->name ? sym->name : "<choice>",

- -				prop_get_type_name(prop->type),

-  				next_sym->name ? next_sym->name : "<choice>");

- -		} else if (stack->prop) {

- +		} else if (sym_is_choice_value(sym)) {

- +			fprintf(stderr, "%s:%d:\tsymbol %s is part of choice %s\n",

- +				menu->file->name, menu->lineno,

- +				sym->name ? sym->name : "<choice>",

- +				next_sym->name ? next_sym->name : "<choice>");

- +		} else if (stack->expr == &sym->dir_dep.expr) {

-  			fprintf(stderr, "%s:%d:\tsymbol %s depends on %s\n",

-  				prop->file->name, prop->lineno,

-  				sym->name ? sym->name : "<choice>",

-  				next_sym->name ? next_sym->name : "<choice>");

- -		} else if (sym_is_choice(sym)) {

- -			fprintf(stderr, "%s:%d:\tchoice %s contains symbol %s\n",

- -				menu->file->name, menu->lineno,

- +		} else if (stack->expr == &sym->rev_dep.expr) {

- +			fprintf(stderr, "%s:%d:\tsymbol %s is selected by %s\n",

- +				prop->file->name, prop->lineno,

-  				sym->name ? sym->name : "<choice>",

-  				next_sym->name ? next_sym->name : "<choice>");

- -		} else if (sym_is_choice_value(sym)) {

- -			fprintf(stderr, "%s:%d:\tsymbol %s is part of choice %s\n",

- -				menu->file->name, menu->lineno,

- +		} else if (stack->expr == &sym->implied.expr) {

- +			fprintf(stderr, "%s:%d:\tsymbol %s is implied by %s\n",

- +				prop->file->name, prop->lineno,

- +				sym->name ? sym->name : "<choice>",

- +				next_sym->name ? next_sym->name : "<choice>");

- +		} else if (stack->expr) {

- +			fprintf(stderr, "%s:%d:\tsymbol %s %s value contains %s\n",

- +				prop->file->name, prop->lineno,

-  				sym->name ? sym->name : "<choice>",

- +				prop_get_type_name(prop->type),

-  				next_sym->name ? next_sym->name : "<choice>");

-  		} else {

- -			fprintf(stderr, "%s:%d:\tsymbol %s is selected by %s\n",

- +			fprintf(stderr, "%s:%d:\tsymbol %s %s is visible depending on %s\n",

-  				prop->file->name, prop->lineno,

-  				sym->name ? sym->name : "<choice>",

- +				prop_get_type_name(prop->type),

-  				next_sym->name ? next_sym->name : "<choice>");

-  		}

-  	}

-  

- +	fprintf(stderr,

- +		"For a resolution refer to Documentation/kbuild/kconfig-language.txt\n"

- +		"subsection \"Kconfig recursive dependency limitations\"\n"

- +		"\n");

- +

-  	if (check_top == &cv_stack)

-  		dep_stack_remove();

-  }

- @@ -1215,7 +1152,7 @@ static struct symbol *sym_check_expr_deps(struct expr *e)

-  	default:

-  		break;

-  	}

- -	printf("Oops! How to check %d?\n", e->type);

- +	fprintf(stderr, "Oops! How to check %d?\n", e->type);

-  	return NULL;

-  }

-  

- @@ -1228,12 +1165,26 @@ static struct symbol *sym_check_sym_deps(struct symbol *sym)

-  

-  	dep_stack_insert(&stack, sym);

-  

- +	stack.expr = &sym->dir_dep.expr;

- +	sym2 = sym_check_expr_deps(sym->dir_dep.expr);

- +	if (sym2)

- +		goto out;

- +

- +	stack.expr = &sym->rev_dep.expr;

-  	sym2 = sym_check_expr_deps(sym->rev_dep.expr);

-  	if (sym2)

-  		goto out;

-  

- +	stack.expr = &sym->implied.expr;

- +	sym2 = sym_check_expr_deps(sym->implied.expr);

- +	if (sym2)

- +		goto out;

- +

- +	stack.expr = NULL;

- +

-  	for (prop = sym->prop; prop; prop = prop->next) {

- -		if (prop->type == P_CHOICE || prop->type == P_SELECT)

- +		if (prop->type == P_CHOICE || prop->type == P_SELECT ||

- +		    prop->type == P_IMPLY)

-  			continue;

-  		stack.prop = prop;

-  		sym2 = sym_check_expr_deps(prop->visible.expr);

- @@ -1241,7 +1192,7 @@ static struct symbol *sym_check_sym_deps(struct symbol *sym)

-  			break;

-  		if (prop->type != P_DEFAULT || sym_is_choice(sym))

-  			continue;

- -		stack.expr = prop->expr;

- +		stack.expr = &prop->expr;

-  		sym2 = sym_check_expr_deps(prop->expr);

-  		if (sym2)

-  			break;

- @@ -1319,9 +1270,6 @@ struct symbol *sym_check_deps(struct symbol *sym)

-  		sym->flags &= ~SYMBOL_CHECK;

-  	}

-  

- -	if (sym2 && sym2 == sym)

- -		sym2 = NULL;

- -

-  	return sym2;

-  }

-  

- @@ -1360,8 +1308,6 @@ const char *prop_get_type_name(enum prop_type type)

-  	switch (type) {

-  	case P_PROMPT:

-  		return "prompt";

- -	case P_ENV:

- -		return "env";

-  	case P_COMMENT:

-  		return "comment";

-  	case P_MENU:

- @@ -1383,32 +1329,3 @@ const char *prop_get_type_name(enum prop_type type)

-  	}

-  	return "unknown";

-  }

- -

- -static void prop_add_env(const char *env)

- -{

- -	struct symbol *sym, *sym2;

- -	struct property *prop;

- -	char *p;

- -

- -	sym = current_entry->sym;

- -	sym->flags |= SYMBOL_AUTO;

- -	for_all_properties(sym, prop, P_ENV) {

- -		sym2 = prop_get_symbol(prop);

- -		if (strcmp(sym2->name, env))

- -			menu_warn(current_entry, "redefining environment symbol from %s",

- -				  sym2->name);

- -		return;

- -	}

- -

- -	prop = prop_alloc(P_ENV, sym);

- -	prop->expr = expr_alloc_symbol(sym_lookup(env, SYMBOL_CONST));

- -

- -	sym_env_list = expr_alloc_one(E_LIST, sym_env_list);

- -	sym_env_list->right.sym = sym;

- -

- -	p = getenv(env);

- -	if (p)

- -		sym_add_default(sym, p);

- -	else

- -		menu_warn(current_entry, "environment variable %s undefined", env);

- -}

- diff --git a/carl9170fw/config/util.c b/carl9170fw/config/util.c

- index 0e76042..2958539 100644

- --- a/carl9170fw/config/util.c

- +++ b/carl9170fw/config/util.c

- @@ -1,8 +1,7 @@

- +// SPDX-License-Identifier: GPL-2.0

-  /*

-   * Copyright (C) 2002-2005 Roman Zippel <zippel@linux-m68k.org>

-   * Copyright (C) 2002-2005 Sam Ravnborg <sam@ravnborg.org>

- - *

- - * Released under the terms of the GNU GPL v2.0.

-   */

-  

-  #include <stdarg.h>

- @@ -14,69 +13,21 @@

-  struct file *file_lookup(const char *name)

-  {

-  	struct file *file;

- -	const char *file_name = sym_expand_string_value(name);

-  

-  	for (file = file_list; file; file = file->next) {

-  		if (!strcmp(name, file->name)) {

- -			free((void *)file_name);

-  			return file;

-  		}

-  	}

-  

-  	file = xmalloc(sizeof(*file));

-  	memset(file, 0, sizeof(*file));

- -	file->name = file_name;

- +	file->name = xstrdup(name);

-  	file->next = file_list;

-  	file_list = file;

-  	return file;

-  }

-  

- -/* write a dependency file as used by kbuild to track dependencies */

- -int file_write_dep(const char *name)

- -{

- -	struct symbol *sym, *env_sym;

- -	struct expr *e;

- -	struct file *file;

- -	FILE *out;

- -

- -	if (!name)

- -		name = ".kconfig.d";

- -	out = fopen("..config.tmp", "w");

- -	if (!out)

- -		return 1;

- -	fprintf(out, "deps_config := \\\n");

- -	for (file = file_list; file; file = file->next) {

- -		if (file->next)

- -			fprintf(out, "\t%s \\\n", file->name);

- -		else

- -			fprintf(out, "\t%s\n", file->name);

- -	}

- -	fprintf(out, "\n%s: \\\n"

- -		     "\t$(deps_config)\n\n", conf_get_autoconfig_name());

- -

- -	expr_list_for_each_sym(sym_env_list, e, sym) {

- -		struct property *prop;

- -		const char *value;

- -

- -		prop = sym_get_env_prop(sym);

- -		env_sym = prop_get_symbol(prop);

- -		if (!env_sym)

- -			continue;

- -		value = getenv(env_sym->name);

- -		if (!value)

- -			value = "";

- -		fprintf(out, "ifneq \"$(%s)\" \"%s\"\n", env_sym->name, value);

- -		fprintf(out, "%s: FORCE\n", conf_get_autoconfig_name());

- -		fprintf(out, "endif\n");

- -	}

- -

- -	fprintf(out, "\n$(deps_config): ;\n");

- -	fclose(out);

- -	rename("..config.tmp", name);

- -	return 0;

- -}

- -

- -

-  /* Allocate initial growable string */

-  struct gstr str_new(void)

-  {

- @@ -104,7 +55,7 @@ void str_append(struct gstr *gs, const char *s)

-  	if (s) {

-  		l = strlen(gs->s) + strlen(s) + 1;

-  		if (l > gs->len) {

- -			gs->s   = realloc(gs->s, l);

- +			gs->s = xrealloc(gs->s, l);

-  			gs->len = l;

-  		}

-  		strcat(gs->s, s);

- @@ -145,3 +96,34 @@ void *xcalloc(size_t nmemb, size_t size)

-  	fprintf(stderr, "Out of memory.\n");

-  	exit(1);

-  }

- +

- +void *xrealloc(void *p, size_t size)

- +{

- +	p = realloc(p, size);

- +	if (p)

- +		return p;

- +	fprintf(stderr, "Out of memory.\n");

- +	exit(1);

- +}

- +

- +char *xstrdup(const char *s)

- +{

- +	char *p;

- +

- +	p = strdup(s);

- +	if (p)

- +		return p;

- +	fprintf(stderr, "Out of memory.\n");

- +	exit(1);

- +}

- +

- +char *xstrndup(const char *s, size_t n)

- +{

- +	char *p;

- +

- +	p = strndup(s, n);

- +	if (p)

- +		return p;

- +	fprintf(stderr, "Out of memory.\n");

- +	exit(1);

- +}

- diff --git a/carl9170fw/config/zconf.l b/carl9170fw/config/zconf.l

- index 9720530..c52cce8 100644

- --- a/carl9170fw/config/zconf.l

- +++ b/carl9170fw/config/zconf.l

- @@ -1,13 +1,13 @@

- -%option nostdinit noyywrap never-interactive full ecs

- -%option 8bit nodefault perf-report perf-report

- -%option noinput

- -%x COMMAND HELP STRING PARAM

- -%{

- +/* SPDX-License-Identifier: GPL-2.0 */

-  /*

-   * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>

- - * Released under the terms of the GNU GPL v2.0.

-   */

- +%option nostdinit noyywrap never-interactive full ecs

- +%option 8bit nodefault yylineno

- +%x ASSIGN_VAL HELP STRING

- +%{

-  

- +#include <assert.h>

-  #include <limits.h>

-  #include <stdio.h>

-  #include <stdlib.h>

- @@ -15,6 +15,9 @@

-  #include <unistd.h>

-  

-  #include "lkc.h"

- +#include "zconf.tab.h"

- +

- +#define YY_DECL		static int yylex1(void)

-  

-  #define START_STRSIZE	16

-  

- @@ -23,6 +26,8 @@ static struct {

-  	int lineno;

-  } current_pos;

-  

- +static int prev_prev_token = T_EOL;

- +static int prev_token = T_EOL;

-  static char *text;

-  static int text_size, text_asize;

-  

- @@ -35,6 +40,8 @@ struct buffer *current_buf;

-  

-  static int last_ts, first_ts;

-  

- +static char *expand_token(const char *in, size_t n);

- +static void append_expanded_string(const char *in);

-  static void zconf_endhelp(void);

-  static void zconf_endfile(void);

-  

- @@ -52,7 +59,7 @@ static void append_string(const char *str, int size)

-  	if (new_size > text_asize) {

-  		new_size += START_STRSIZE - 1;

-  		new_size &= -START_STRSIZE;

- -		text = realloc(text, new_size);

- +		text = xrealloc(text, new_size);

-  		text_asize = new_size;

-  	}

-  	memcpy(text + text_size, str, size);

- @@ -71,7 +78,7 @@ static void warn_ignored_character(char chr)

-  {

-  	fprintf(stderr,

-  	        "%s:%d:warning: ignoring unsupported character '%c'\n",

- -	        zconf_curname(), zconf_lineno(), chr);

- +	        current_file->name, yylineno, chr);

-  }

-  %}

-  

- @@ -81,116 +88,113 @@ n	[A-Za-z0-9_-]

-  	int str = 0;

-  	int ts, i;

-  

- -[ \t]*#.*\n	|

- -[ \t]*\n	{

- -	current_file->lineno++;

- -	return T_EOL;

- -}

- -[ \t]*#.*

- -

- -

- -[ \t]+	{

- -	BEGIN(COMMAND);

- -}

- -

- -.	{

- -	unput(yytext[0]);

- -	BEGIN(COMMAND);

- -}

- -

- -

- -<COMMAND>{

- -	{n}+	{

- -		const struct kconf_id *id = kconf_id_lookup(yytext, yyleng);

- -		BEGIN(PARAM);

- -		current_pos.file = current_file;

- -		current_pos.lineno = current_file->lineno;

- -		if (id && id->flags & TF_COMMAND) {

- -			zconflval.id = id;

- -			return id->token;

- -		}

- -		alloc_string(yytext, yyleng);

- -		zconflval.string = text;

- -		return T_WORD;

- -	}

- -	.	warn_ignored_character(*yytext);

- -	\n	{

- -		BEGIN(INITIAL);

- -		current_file->lineno++;

- -		return T_EOL;

- -	}

- -}

- +#.*			/* ignore comment */

- +[ \t]*			/* whitespaces */

- +\\\n			/* escaped new line */

- +\n			return T_EOL;

- +"allnoconfig_y"		return T_ALLNOCONFIG_Y;

- +"bool"			return T_BOOL;

- +"choice"		return T_CHOICE;

- +"comment"		return T_COMMENT;

- +"config"		return T_CONFIG;

- +"def_bool"		return T_DEF_BOOL;

- +"def_tristate"		return T_DEF_TRISTATE;

- +"default"		return T_DEFAULT;

- +"defconfig_list"	return T_DEFCONFIG_LIST;

- +"depends"		return T_DEPENDS;

- +"endchoice"		return T_ENDCHOICE;

- +"endif"			return T_ENDIF;

- +"endmenu"		return T_ENDMENU;

- +"help"|"---help---"	return T_HELP;

- +"hex"			return T_HEX;

- +"if"			return T_IF;

- +"imply"			return T_IMPLY;

- +"int"			return T_INT;

- +"mainmenu"		return T_MAINMENU;

- +"menu"			return T_MENU;

- +"menuconfig"		return T_MENUCONFIG;

- +"modules"		return T_MODULES;

- +"on"			return T_ON;

- +"option"		return T_OPTION;

- +"optional"		return T_OPTIONAL;

- +"prompt"		return T_PROMPT;

- +"range"			return T_RANGE;

- +"select"		return T_SELECT;

- +"source"		return T_SOURCE;

- +"string"		return T_STRING;

- +"tristate"		return T_TRISTATE;

- +"visible"		return T_VISIBLE;

- +"||"			return T_OR;

- +"&&"			return T_AND;

- +"="			return T_EQUAL;

- +"!="			return T_UNEQUAL;

- +"<"			return T_LESS;

- +"<="			return T_LESS_EQUAL;

- +">"			return T_GREATER;

- +">="			return T_GREATER_EQUAL;

- +"!"			return T_NOT;

- +"("			return T_OPEN_PAREN;

- +")"			return T_CLOSE_PAREN;

- +":="			return T_COLON_EQUAL;

- +"+="			return T_PLUS_EQUAL;

- +\"|\'			{

- +				str = yytext[0];

- +				new_string();

- +				BEGIN(STRING);

- +			}

- +{n}+			{

- +				alloc_string(yytext, yyleng);

- +				yylval.string = text;

- +				return T_WORD;

- +			}

- +({n}|$)+		{

- +				/* this token includes at least one '$' */

- +				yylval.string = expand_token(yytext, yyleng);

- +				if (strlen(yylval.string))

- +					return T_WORD;

- +				free(yylval.string);

- +			}

- +.			warn_ignored_character(*yytext);

-  

- -<PARAM>{

- -	"&&"	return T_AND;

- -	"||"	return T_OR;

- -	"("	return T_OPEN_PAREN;

- -	")"	return T_CLOSE_PAREN;

- -	"!"	return T_NOT;

- -	"="	return T_EQUAL;

- -	"!="	return T_UNEQUAL;

- -	"<="	return T_LESS_EQUAL;

- -	">="	return T_GREATER_EQUAL;

- -	"<"	return T_LESS;

- -	">"	return T_GREATER;

- -	\"|\'	{

- -		str = yytext[0];

- -		new_string();

- -		BEGIN(STRING);

- -	}

- -	\n	BEGIN(INITIAL); current_file->lineno++; return T_EOL;

- -	({n}|[/.])+	{

- -		const struct kconf_id *id = kconf_id_lookup(yytext, yyleng);

- -		if (id && id->flags & TF_PARAM) {

- -			zconflval.id = id;

- -			return id->token;

- -		}

- +<ASSIGN_VAL>{

- +	[^[:blank:]\n]+.*	{

-  		alloc_string(yytext, yyleng);

- -		zconflval.string = text;

- -		return T_WORD;

- -	}

- -	#.*	/* comment */

- -	\\\n	current_file->lineno++;

- -	[[:blank:]]+

- -	.	warn_ignored_character(*yytext);

- -	<<EOF>> {

- -		BEGIN(INITIAL);

- +		yylval.string = text;

- +		return T_ASSIGN_VAL;

-  	}

- +	\n	{ BEGIN(INITIAL); return T_EOL; }

- +	.

-  }

-  

-  <STRING>{

- -	[^'"\\\n]+/\n	{

- -		append_string(yytext, yyleng);

- -		zconflval.string = text;

- -		return T_WORD_QUOTE;

- -	}

- -	[^'"\\\n]+	{

- +	"$".*	append_expanded_string(yytext);

- +	[^$'"\\\n]+	{

-  		append_string(yytext, yyleng);

-  	}

- -	\\.?/\n	{

- -		append_string(yytext + 1, yyleng - 1);

- -		zconflval.string = text;

- -		return T_WORD_QUOTE;

- -	}

-  	\\.?	{

-  		append_string(yytext + 1, yyleng - 1);

-  	}

-  	\'|\"	{

-  		if (str == yytext[0]) {

- -			BEGIN(PARAM);

- -			zconflval.string = text;

- +			BEGIN(INITIAL);

- +			yylval.string = text;

-  			return T_WORD_QUOTE;

-  		} else

-  			append_string(yytext, 1);

-  	}

-  	\n	{

- -		printf("%s:%d:warning: multi-line strings not supported\n", zconf_curname(), zconf_lineno());

- -		current_file->lineno++;

- +		fprintf(stderr,

- +			"%s:%d:warning: multi-line strings not supported\n",

- +			zconf_curname(), zconf_lineno());

- +		unput('\n');

-  		BEGIN(INITIAL);

- -		return T_EOL;

- +		yylval.string = text;

- +		return T_WORD_QUOTE;

-  	}

-  	<<EOF>>	{

-  		BEGIN(INITIAL);

- +		yylval.string = text;

- +		return T_WORD_QUOTE;

-  	}

-  }

-  

- @@ -218,12 +222,10 @@ n	[A-Za-z0-9_-]

-  		}

-  	}

-  	[ \t]*\n/[^ \t\n] {

- -		current_file->lineno++;

-  		zconf_endhelp();

-  		return T_HELPTEXT;

-  	}

-  	[ \t]*\n	{

- -		current_file->lineno++;

-  		append_string("\n", 1);

-  	}

-  	[^ \t\n].* {

- @@ -243,6 +245,12 @@ n	[A-Za-z0-9_-]

-  }

-  

-  <<EOF>>	{

- +	BEGIN(INITIAL);

- +

- +	if (prev_token != T_EOL && prev_token != T_HELPTEXT)

- +		fprintf(stderr, "%s:%d:warning: no new line at end of file\n",

- +			current_file->name, yylineno);

- +

-  	if (current_file) {

-  		zconf_endfile();

-  		return T_EOL;

- @@ -252,6 +260,93 @@ n	[A-Za-z0-9_-]

-  }

-  

-  %%

- +

- +/* second stage lexer */

- +int yylex(void)

- +{

- +	int token;

- +

- +repeat:

- +	token = yylex1();

- +

- +	if (prev_token == T_EOL || prev_token == T_HELPTEXT) {

- +		if (token == T_EOL) {

- +			/* Do not pass unneeded T_EOL to the parser. */

- +			goto repeat;

- +		} else {

- +			/*

- +			 * For the parser, update file/lineno at the first token

- +			 * of each statement. Generally, \n is a statement

- +			 * terminator in Kconfig, but it is not always true

- +			 * because \n could be escaped by a backslash.

- +			 */

- +			current_pos.file = current_file;

- +			current_pos.lineno = yylineno;

- +		}

- +	}

- +

- +	if (prev_prev_token == T_EOL && prev_token == T_WORD &&

- +	    (token == T_EQUAL || token == T_COLON_EQUAL || token == T_PLUS_EQUAL))

- +		BEGIN(ASSIGN_VAL);

- +

- +	prev_prev_token = prev_token;

- +	prev_token = token;

- +

- +	return token;

- +}

- +

- +static char *expand_token(const char *in, size_t n)

- +{

- +	char *out;

- +	int c;

- +	char c2;

- +	const char *rest, *end;

- +

- +	new_string();

- +	append_string(in, n);

- +

- +	/* get the whole line because we do not know the end of token. */

- +	while ((c = input()) != EOF) {

- +		if (c == '\n') {

- +			unput(c);

- +			break;

- +		}

- +		c2 = c;

- +		append_string(&c2, 1);

- +	}

- +

- +	rest = text;

- +	out = expand_one_token(&rest);

- +

- +	/* push back unused characters to the input stream */

- +	end = rest + strlen(rest);

- +	while (end > rest)

- +		unput(*--end);

- +

- +	free(text);

- +

- +	return out;

- +}

- +

- +static void append_expanded_string(const char *str)

- +{

- +	const char *end;

- +	char *res;

- +

- +	str++;

- +

- +	res = expand_dollar(&str);

- +

- +	/* push back unused characters to the input stream */

- +	end = str + strlen(str);

- +	while (end > str)

- +		unput(*--end);

- +

- +	append_string(res, strlen(res));

- +

- +	free(res);

- +}

- +

-  void zconf_starthelp(void)

-  {

-  	new_string();

- @@ -261,7 +356,7 @@ void zconf_starthelp(void)

-  

-  static void zconf_endhelp(void)

-  {

- -	zconflval.string = text;

- +	yylval.string = text;

-  	BEGIN(INITIAL);

-  }

-  

- @@ -294,7 +389,7 @@ void zconf_initscan(const char *name)

-  {

-  	yyin = zconf_fopen(name);

-  	if (!yyin) {

- -		printf("can't find file %s\n", name);

- +		fprintf(stderr, "can't find file %s\n", name);

-  		exit(1);

-  	}

-  

- @@ -302,7 +397,7 @@ void zconf_initscan(const char *name)

-  	memset(current_buf, 0, sizeof(*current_buf));

-  

-  	current_file = file_lookup(name);

- -	current_file->lineno = 1;

- +	yylineno = 1;

-  }

-  

-  void zconf_nextfile(const char *name)

- @@ -315,35 +410,34 @@ void zconf_nextfile(const char *name)

-  	current_buf->state = YY_CURRENT_BUFFER;

-  	yyin = zconf_fopen(file->name);

-  	if (!yyin) {

- -		printf("%s:%d: can't open file \"%s\"\n",

- -		    zconf_curname(), zconf_lineno(), file->name);

- +		fprintf(stderr, "%s:%d: can't open file \"%s\"\n",

- +			zconf_curname(), zconf_lineno(), file->name);

-  		exit(1);

-  	}

-  	yy_switch_to_buffer(yy_create_buffer(yyin, YY_BUF_SIZE));

-  	buf->parent = current_buf;

-  	current_buf = buf;

-  

- -	for (iter = current_file->parent; iter; iter = iter->parent ) {

- -		if (!strcmp(current_file->name,iter->name) ) {

- -			printf("%s:%d: recursive inclusion detected. "

- -			       "Inclusion path:\n  current file : '%s'\n",

- -			       zconf_curname(), zconf_lineno(),

- -			       zconf_curname());

- -			iter = current_file->parent;

- -			while (iter && \

- -			       strcmp(iter->name,current_file->name)) {

- -				printf("  included from: '%s:%d'\n",

- -				       iter->name, iter->lineno-1);

- +	current_file->lineno = yylineno;

- +	file->parent = current_file;

- +

- +	for (iter = current_file; iter; iter = iter->parent) {

- +		if (!strcmp(iter->name, file->name)) {

- +			fprintf(stderr,

- +				"Recursive inclusion detected.\n"

- +				"Inclusion path:\n"

- +				"  current file : %s\n", file->name);

- +			iter = file;

- +			do {

-  				iter = iter->parent;

- -			}

- -			if (iter)

- -				printf("  included from: '%s:%d'\n",

- -				       iter->name, iter->lineno+1);

- +				fprintf(stderr, "  included from: %s:%d\n",

- +					iter->name, iter->lineno - 1);

- +			} while (strcmp(iter->name, file->name));

-  			exit(1);

-  		}

-  	}

- -	file->lineno = 1;

- -	file->parent = current_file;

- +

- +	yylineno = 1;

-  	current_file = file;

-  }

-  

- @@ -352,6 +446,8 @@ static void zconf_endfile(void)

-  	struct buffer *parent;

-  

-  	current_file = current_file->parent;

- +	if (current_file)

- +		yylineno = current_file->lineno;

-  

-  	parent = current_buf->parent;

-  	if (parent) {

- diff --git a/carl9170fw/config/zconf.y b/carl9170fw/config/zconf.y

- index 79c4f04..60936c7 100644

- --- a/carl9170fw/config/zconf.y

- +++ b/carl9170fw/config/zconf.y

- @@ -1,8 +1,8 @@

- -%{

- +/* SPDX-License-Identifier: GPL-2.0 */

-  /*

-   * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>

- - * Released under the terms of the GNU GPL v2.0.

-   */

- +%{

-  

-  #include <ctype.h>

-  #include <stdarg.h>

- @@ -20,63 +20,69 @@

-  

-  int cdebug = PRINTD;

-  

- -extern int zconflex(void);

- +static void yyerror(const char *err);

-  static void zconfprint(const char *err, ...);

-  static void zconf_error(const char *err, ...);

- -static void zconferror(const char *err);

- -static bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtoken);

- +static bool zconf_endtoken(const char *tokenname,

- +			   const char *expected_tokenname);

-  

-  struct symbol *symbol_hash[SYMBOL_HASHSIZE];

-  

-  static struct menu *current_menu, *current_entry;

-  

-  %}

- -%expect 32

-  

-  %union

-  {

-  	char *string;

- -	struct file *file;

-  	struct symbol *symbol;

-  	struct expr *expr;

-  	struct menu *menu;

- -	const struct kconf_id *id;

- +	enum symbol_type type;

- +	enum variable_flavor flavor;

-  }

-  

- -%token <id>T_MAINMENU

- -%token <id>T_MENU

- -%token <id>T_ENDMENU

- -%token <id>T_SOURCE

- -%token <id>T_CHOICE

- -%token <id>T_ENDCHOICE

- -%token <id>T_COMMENT

- -%token <id>T_CONFIG

- -%token <id>T_MENUCONFIG

- -%token <id>T_HELP

-  %token <string> T_HELPTEXT

- -%token <id>T_IF

- -%token <id>T_ENDIF

- -%token <id>T_DEPENDS

- -%token <id>T_OPTIONAL

- -%token <id>T_PROMPT

- -%token <id>T_TYPE

- -%token <id>T_DEFAULT

- -%token <id>T_SELECT

- -%token <id>T_IMPLY

- -%token <id>T_RANGE

- -%token <id>T_VISIBLE

- -%token <id>T_OPTION

- -%token <id>T_ON

-  %token <string> T_WORD

-  %token <string> T_WORD_QUOTE

- -%token T_UNEQUAL

- -%token T_LESS

- -%token T_LESS_EQUAL

- -%token T_GREATER

- -%token T_GREATER_EQUAL

- +%token T_ALLNOCONFIG_Y

- +%token T_BOOL

- +%token T_CHOICE

-  %token T_CLOSE_PAREN

- +%token T_COLON_EQUAL

- +%token T_COMMENT

- +%token T_CONFIG

- +%token T_DEFAULT

- +%token T_DEFCONFIG_LIST

- +%token T_DEF_BOOL

- +%token T_DEF_TRISTATE

- +%token T_DEPENDS

- +%token T_ENDCHOICE

- +%token T_ENDIF

- +%token T_ENDMENU

- +%token T_HELP

- +%token T_HEX

- +%token T_IF

- +%token T_IMPLY

- +%token T_INT

- +%token T_MAINMENU

- +%token T_MENU

- +%token T_MENUCONFIG

- +%token T_MODULES

- +%token T_ON

-  %token T_OPEN_PAREN

- +%token T_OPTION

- +%token T_OPTIONAL

- +%token T_PLUS_EQUAL

- +%token T_PROMPT

- +%token T_RANGE

- +%token T_SELECT

- +%token T_SOURCE

- +%token T_STRING

- +%token T_TRISTATE

- +%token T_VISIBLE

-  %token T_EOL

- +%token <string> T_ASSIGN_VAL

-  

-  %left T_OR

-  %left T_AND

- @@ -85,13 +91,15 @@ static struct menu *current_menu, *current_entry;

-  %nonassoc T_NOT

-  

-  %type <string> prompt

- +%type <symbol> nonconst_symbol

-  %type <symbol> symbol

- +%type <type> type logic_type default

-  %type <expr> expr

-  %type <expr> if_expr

- -%type <id> end

- -%type <id> option_name

- +%type <string> end

-  %type <menu> if_entry menu_entry choice_entry

- -%type <string> symbol_option_arg word_opt

- +%type <string> word_opt assign_val

- +%type <flavor> assign_op

-  

-  %destructor {

-  	fprintf(stderr, "%s:%d: missing end statement for this entry\n",

- @@ -100,71 +108,53 @@ static struct menu *current_menu, *current_entry;

-  		menu_end_menu();

-  } if_entry menu_entry choice_entry

-  

- -%{

- -/* Include zconf_id.c here so it can see the token constants. */

- -#include "kconf_id.c"

- -%}

- -

-  %%

- -input: nl start | start;

- +input: mainmenu_stmt stmt_list | stmt_list;

-  

- -start: mainmenu_stmt stmt_list | stmt_list;

- +/* mainmenu entry */

- +

- +mainmenu_stmt: T_MAINMENU prompt T_EOL

- +{

- +	menu_add_prompt(P_MENU, $2, NULL);

- +};

-  

-  stmt_list:

-  	  /* empty */

-  	| stmt_list common_stmt

-  	| stmt_list choice_stmt

-  	| stmt_list menu_stmt

- -	| stmt_list end			{ zconf_error("unexpected end statement"); }

-  	| stmt_list T_WORD error T_EOL	{ zconf_error("unknown statement \"%s\"", $2); }

- -	| stmt_list option_name error T_EOL

- -{

- -	zconf_error("unexpected option \"%s\"", $2->name);

- -}

-  	| stmt_list error T_EOL		{ zconf_error("invalid statement"); }

-  ;

-  

- -option_name:

- -	T_DEPENDS | T_PROMPT | T_TYPE | T_SELECT | T_IMPLY | T_OPTIONAL | T_RANGE | T_DEFAULT | T_VISIBLE

- -;

- -

-  common_stmt:

- -	  T_EOL

- -	| if_stmt

- +	  if_stmt

-  	| comment_stmt

-  	| config_stmt

-  	| menuconfig_stmt

-  	| source_stmt

- +	| assignment_stmt

-  ;

-  

- -option_error:

- -	  T_WORD error T_EOL		{ zconf_error("unknown option \"%s\"", $1); }

- -	| error T_EOL			{ zconf_error("invalid option"); }

- -;

- -

- -

-  /* config/menuconfig entry */

-  

- -config_entry_start: T_CONFIG T_WORD T_EOL

- +config_entry_start: T_CONFIG nonconst_symbol T_EOL

-  {

- -	struct symbol *sym = sym_lookup($2, 0);

- -	sym->flags |= SYMBOL_OPTIONAL;

- -	menu_add_entry(sym);

- -	printd(DEBUG_PARSE, "%s:%d:config %s\n", zconf_curname(), zconf_lineno(), $2);

- +	$2->flags |= SYMBOL_OPTIONAL;

- +	menu_add_entry($2);

- +	printd(DEBUG_PARSE, "%s:%d:config %s\n", zconf_curname(), zconf_lineno(), $2->name);

-  };

-  

-  config_stmt: config_entry_start config_option_list

-  {

- -	menu_end_entry();

-  	printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno());

-  };

-  

- -menuconfig_entry_start: T_MENUCONFIG T_WORD T_EOL

- +menuconfig_entry_start: T_MENUCONFIG nonconst_symbol T_EOL

-  {

- -	struct symbol *sym = sym_lookup($2, 0);

- -	sym->flags |= SYMBOL_OPTIONAL;

- -	menu_add_entry(sym);

- -	printd(DEBUG_PARSE, "%s:%d:menuconfig %s\n", zconf_curname(), zconf_lineno(), $2);

- +	$2->flags |= SYMBOL_OPTIONAL;

- +	menu_add_entry($2);

- +	printd(DEBUG_PARSE, "%s:%d:menuconfig %s\n", zconf_curname(), zconf_lineno(), $2->name);

-  };

-  

-  menuconfig_stmt: menuconfig_entry_start config_option_list

- @@ -173,26 +163,22 @@ menuconfig_stmt: menuconfig_entry_start config_option_list

-  		current_entry->prompt->type = P_MENU;

-  	else

-  		zconfprint("warning: menuconfig statement without prompt");

- -	menu_end_entry();

-  	printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno());

-  };

-  

-  config_option_list:

-  	  /* empty */

-  	| config_option_list config_option

- -	| config_option_list symbol_option

-  	| config_option_list depends

-  	| config_option_list help

- -	| config_option_list option_error

- -	| config_option_list T_EOL

-  ;

-  

- -config_option: T_TYPE prompt_stmt_opt T_EOL

- +config_option: type prompt_stmt_opt T_EOL

-  {

- -	menu_set_type($1->stype);

- +	menu_set_type($1);

-  	printd(DEBUG_PARSE, "%s:%d:type(%u)\n",

-  		zconf_curname(), zconf_lineno(),

- -		$1->stype);

- +		$1);

-  };

-  

-  config_option: T_PROMPT prompt if_expr T_EOL

- @@ -201,25 +187,25 @@ config_option: T_PROMPT prompt if_expr T_EOL

-  	printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno());

-  };

-  

- -config_option: T_DEFAULT expr if_expr T_EOL

- +config_option: default expr if_expr T_EOL

-  {

-  	menu_add_expr(P_DEFAULT, $2, $3);

- -	if ($1->stype != S_UNKNOWN)

- -		menu_set_type($1->stype);

- +	if ($1 != S_UNKNOWN)

- +		menu_set_type($1);

-  	printd(DEBUG_PARSE, "%s:%d:default(%u)\n",

-  		zconf_curname(), zconf_lineno(),

- -		$1->stype);

- +		$1);

-  };

-  

- -config_option: T_SELECT T_WORD if_expr T_EOL

- +config_option: T_SELECT nonconst_symbol if_expr T_EOL

-  {

- -	menu_add_symbol(P_SELECT, sym_lookup($2, 0), $3);

- +	menu_add_symbol(P_SELECT, $2, $3);

-  	printd(DEBUG_PARSE, "%s:%d:select\n", zconf_curname(), zconf_lineno());

-  };

-  

- -config_option: T_IMPLY T_WORD if_expr T_EOL

- +config_option: T_IMPLY nonconst_symbol if_expr T_EOL

-  {

- -	menu_add_symbol(P_IMPLY, sym_lookup($2, 0), $3);

- +	menu_add_symbol(P_IMPLY, $2, $3);

-  	printd(DEBUG_PARSE, "%s:%d:imply\n", zconf_curname(), zconf_lineno());

-  };

-  

- @@ -229,34 +215,30 @@ config_option: T_RANGE symbol symbol if_expr T_EOL

-  	printd(DEBUG_PARSE, "%s:%d:range\n", zconf_curname(), zconf_lineno());

-  };

-  

- -symbol_option: T_OPTION symbol_option_list T_EOL

- -;

- +config_option: T_OPTION T_MODULES T_EOL

- +{

- +	menu_add_option_modules();

- +};

-  

- -symbol_option_list:

- -	  /* empty */

- -	| symbol_option_list T_WORD symbol_option_arg

- +config_option: T_OPTION T_DEFCONFIG_LIST T_EOL

-  {

- -	const struct kconf_id *id = kconf_id_lookup($2, strlen($2));

- -	if (id && id->flags & TF_OPTION)

- -		menu_add_option(id->token, $3);

- -	else

- -		zconfprint("warning: ignoring unknown option %s", $2);

- -	free($2);

- +	menu_add_option_defconfig_list();

-  };

-  

- -symbol_option_arg:

- -	  /* empty */		{ $$ = NULL; }

- -	| T_EQUAL prompt	{ $$ = $2; }

- -;

- +config_option: T_OPTION T_ALLNOCONFIG_Y T_EOL

- +{

- +	menu_add_option_allnoconfig_y();

- +};

-  

-  /* choice entry */

-  

-  choice: T_CHOICE word_opt T_EOL

-  {

-  	struct symbol *sym = sym_lookup($2, SYMBOL_CHOICE);

- -	sym->flags |= SYMBOL_AUTO;

- +	sym->flags |= SYMBOL_NO_WRITE;

-  	menu_add_entry(sym);

-  	menu_add_expr(P_CHOICE, NULL, NULL);

- +	free($2);

-  	printd(DEBUG_PARSE, "%s:%d:choice\n", zconf_curname(), zconf_lineno());

-  };

-  

- @@ -267,7 +249,7 @@ choice_entry: choice choice_option_list

-  

-  choice_end: end

-  {

- -	if (zconf_endtoken($1, T_CHOICE, T_ENDCHOICE)) {

- +	if (zconf_endtoken($1, "choice")) {

-  		menu_end_menu();

-  		printd(DEBUG_PARSE, "%s:%d:endchoice\n", zconf_curname(), zconf_lineno());

-  	}

- @@ -281,8 +263,6 @@ choice_option_list:

-  	| choice_option_list choice_option

-  	| choice_option_list depends

-  	| choice_option_list help

- -	| choice_option_list T_EOL

- -	| choice_option_list option_error

-  ;

-  

-  choice_option: T_PROMPT prompt if_expr T_EOL

- @@ -291,15 +271,11 @@ choice_option: T_PROMPT prompt if_expr T_EOL

-  	printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno());

-  };

-  

- -choice_option: T_TYPE prompt_stmt_opt T_EOL

- +choice_option: logic_type prompt_stmt_opt T_EOL

-  {

- -	if ($1->stype == S_BOOLEAN || $1->stype == S_TRISTATE) {

- -		menu_set_type($1->stype);

- -		printd(DEBUG_PARSE, "%s:%d:type(%u)\n",

- -			zconf_curname(), zconf_lineno(),

- -			$1->stype);

- -	} else

- -		YYERROR;

- +	menu_set_type($1);

- +	printd(DEBUG_PARSE, "%s:%d:type(%u)\n",

- +	       zconf_curname(), zconf_lineno(), $1);

-  };

-  

-  choice_option: T_OPTIONAL T_EOL

- @@ -308,16 +284,28 @@ choice_option: T_OPTIONAL T_EOL

-  	printd(DEBUG_PARSE, "%s:%d:optional\n", zconf_curname(), zconf_lineno());

-  };

-  

- -choice_option: T_DEFAULT T_WORD if_expr T_EOL

- +choice_option: T_DEFAULT nonconst_symbol if_expr T_EOL

-  {

- -	if ($1->stype == S_UNKNOWN) {

- -		menu_add_symbol(P_DEFAULT, sym_lookup($2, 0), $3);

- -		printd(DEBUG_PARSE, "%s:%d:default\n",

- -			zconf_curname(), zconf_lineno());

- -	} else

- -		YYERROR;

- +	menu_add_symbol(P_DEFAULT, $2, $3);

- +	printd(DEBUG_PARSE, "%s:%d:default\n",

- +	       zconf_curname(), zconf_lineno());

-  };

-  

- +type:

- +	  logic_type

- +	| T_INT			{ $$ = S_INT; }

- +	| T_HEX			{ $$ = S_HEX; }

- +	| T_STRING		{ $$ = S_STRING; }

- +

- +logic_type:

- +	  T_BOOL		{ $$ = S_BOOLEAN; }

- +	| T_TRISTATE		{ $$ = S_TRISTATE; }

- +

- +default:

- +	  T_DEFAULT		{ $$ = S_UNKNOWN; }

- +	| T_DEF_BOOL		{ $$ = S_BOOLEAN; }

- +	| T_DEF_TRISTATE	{ $$ = S_TRISTATE; }

- +

-  choice_block:

-  	  /* empty */

-  	| choice_block common_stmt

- @@ -325,7 +313,7 @@ choice_block:

-  

-  /* if entry */

-  

- -if_entry: T_IF expr nl

- +if_entry: T_IF expr T_EOL

-  {

-  	printd(DEBUG_PARSE, "%s:%d:if\n", zconf_curname(), zconf_lineno());

-  	menu_add_entry(NULL);

- @@ -335,29 +323,15 @@ if_entry: T_IF expr nl

-  

-  if_end: end

-  {

- -	if (zconf_endtoken($1, T_IF, T_ENDIF)) {

- +	if (zconf_endtoken($1, "if")) {

-  		menu_end_menu();

-  		printd(DEBUG_PARSE, "%s:%d:endif\n", zconf_curname(), zconf_lineno());

-  	}

-  };

-  

- -if_stmt: if_entry if_block if_end

- +if_stmt: if_entry stmt_list if_end

-  ;

-  

- -if_block:

- -	  /* empty */

- -	| if_block common_stmt

- -	| if_block menu_stmt

- -	| if_block choice_stmt

- -;

- -

- -/* mainmenu entry */

- -

- -mainmenu_stmt: T_MAINMENU prompt nl

- -{

- -	menu_add_prompt(P_MENU, $2, NULL);

- -};

- -

-  /* menu entry */

-  

-  menu: T_MENU prompt T_EOL

- @@ -367,33 +341,33 @@ menu: T_MENU prompt T_EOL

-  	printd(DEBUG_PARSE, "%s:%d:menu\n", zconf_curname(), zconf_lineno());

-  };

-  

- -menu_entry: menu visibility_list depends_list

- +menu_entry: menu menu_option_list

-  {

-  	$$ = menu_add_menu();

-  };

-  

-  menu_end: end

-  {

- -	if (zconf_endtoken($1, T_MENU, T_ENDMENU)) {

- +	if (zconf_endtoken($1, "menu")) {

-  		menu_end_menu();

-  		printd(DEBUG_PARSE, "%s:%d:endmenu\n", zconf_curname(), zconf_lineno());

-  	}

-  };

-  

- -menu_stmt: menu_entry menu_block menu_end

- +menu_stmt: menu_entry stmt_list menu_end

-  ;

-  

- -menu_block:

- +menu_option_list:

-  	  /* empty */

- -	| menu_block common_stmt

- -	| menu_block menu_stmt

- -	| menu_block choice_stmt

- +	| menu_option_list visible

- +	| menu_option_list depends

-  ;

-  

-  source_stmt: T_SOURCE prompt T_EOL

-  {

-  	printd(DEBUG_PARSE, "%s:%d:source %s\n", zconf_curname(), zconf_lineno(), $2);

-  	zconf_nextfile($2);

- +	free($2);

-  };

-  

-  /* comment entry */

- @@ -405,10 +379,13 @@ comment: T_COMMENT prompt T_EOL

-  	printd(DEBUG_PARSE, "%s:%d:comment\n", zconf_curname(), zconf_lineno());

-  };

-  

- -comment_stmt: comment depends_list

- -{

- -	menu_end_entry();

- -};

- +comment_stmt: comment comment_option_list

- +;

- +

- +comment_option_list:

- +	  /* empty */

- +	| comment_option_list depends

- +;

-  

-  /* help option */

-  

- @@ -420,18 +397,22 @@ help_start: T_HELP T_EOL

-  

-  help: help_start T_HELPTEXT

-  {

- +	if (current_entry->help) {

- +		free(current_entry->help);

- +		zconfprint("warning: '%s' defined with more than one help text -- only the last one will be used",

- +			   current_entry->sym->name ?: "<choice>");

- +	}

- +

- +	/* Is the help text empty or all whitespace? */

- +	if ($2[strspn($2, " \f\n\r\t\v")] == '\0')

- +		zconfprint("warning: '%s' defined with blank help text",

- +			   current_entry->sym->name ?: "<choice>");

- +

-  	current_entry->help = $2;

-  };

-  

-  /* depends option */

-  

- -depends_list:

- -	  /* empty */

- -	| depends_list depends

- -	| depends_list T_EOL

- -	| depends_list option_error

- -;

- -

-  depends: T_DEPENDS T_ON expr T_EOL

-  {

-  	menu_add_dep($3);

- @@ -439,14 +420,7 @@ depends: T_DEPENDS T_ON expr T_EOL

-  };

-  

-  /* visibility option */

- -

- -visibility_list:

- -	  /* empty */

- -	| visibility_list visible

- -	| visibility_list T_EOL

- -;

- -

- -visible: T_VISIBLE if_expr

- +visible: T_VISIBLE if_expr T_EOL

-  {

-  	menu_add_visibility($2);

-  };

- @@ -464,14 +438,9 @@ prompt:	  T_WORD

-  	| T_WORD_QUOTE

-  ;

-  

- -end:	  T_ENDMENU T_EOL	{ $$ = $1; }

- -	| T_ENDCHOICE T_EOL	{ $$ = $1; }

- -	| T_ENDIF T_EOL		{ $$ = $1; }

- -;

- -

- -nl:

- -	  T_EOL

- -	| nl T_EOL

- +end:	  T_ENDMENU T_EOL	{ $$ = "menu"; }

- +	| T_ENDCHOICE T_EOL	{ $$ = "choice"; }

- +	| T_ENDIF T_EOL		{ $$ = "if"; }

-  ;

-  

-  if_expr:  /* empty */			{ $$ = NULL; }

- @@ -491,13 +460,31 @@ expr:	  symbol				{ $$ = expr_alloc_symbol($1); }

-  	| expr T_AND expr			{ $$ = expr_alloc_two(E_AND, $1, $3); }

-  ;

-  

- -symbol:	  T_WORD	{ $$ = sym_lookup($1, 0); free($1); }

- +/* For symbol definitions, selects, etc., where quotes are not accepted */

- +nonconst_symbol: T_WORD { $$ = sym_lookup($1, 0); free($1); };

- +

- +symbol:	  nonconst_symbol

-  	| T_WORD_QUOTE	{ $$ = sym_lookup($1, SYMBOL_CONST); free($1); }

-  ;

-  

-  word_opt: /* empty */			{ $$ = NULL; }

-  	| T_WORD

-  

- +/* assignment statement */

- +

- +assignment_stmt:  T_WORD assign_op assign_val T_EOL	{ variable_add($1, $3, $2); free($1); free($3); }

- +

- +assign_op:

- +	  T_EQUAL	{ $$ = VAR_RECURSIVE; }

- +	| T_COLON_EQUAL	{ $$ = VAR_SIMPLE; }

- +	| T_PLUS_EQUAL	{ $$ = VAR_APPEND; }

- +;

- +

- +assign_val:

- +	/* empty */		{ $$ = xstrdup(""); };

- +	| T_ASSIGN_VAL

- +;

- +

-  %%

-  

-  void conf_parse(const char *name)

- @@ -507,61 +494,51 @@ void conf_parse(const char *name)

-  

-  	zconf_initscan(name);

-  

- -	sym_init();

-  	_menu_init();

- -	rootmenu.prompt = menu_add_prompt(P_MENU, "CARL9170 Firmware Configuration", NULL);

-  

-  	if (getenv("ZCONF_DEBUG"))

- -		zconfdebug = 1;

- -	zconfparse();

- -	if (zconfnerrs)

- +		yydebug = 1;

- +	yyparse();

- +

- +	/* Variables are expanded in the parse phase. We can free them here. */

- +	variable_all_del();

- +

- +	if (yynerrs)

-  		exit(1);

-  	if (!modules_sym)

-  		modules_sym = sym_find( "n" );

-  

- -	rootmenu.prompt->text = _(rootmenu.prompt->text);

- -	rootmenu.prompt->text = sym_expand_string_value(rootmenu.prompt->text);

- +	if (!menu_has_prompt(&rootmenu)) {

- +		current_entry = &rootmenu;

- +		menu_add_prompt(P_MENU, "Main menu", NULL);

- +	}

-  

-  	menu_finalize(&rootmenu);

-  	for_all_symbols(i, sym) {

-  		if (sym_check_deps(sym))

- -			zconfnerrs++;

- +			yynerrs++;

-  	}

- -	if (zconfnerrs)

- +	if (yynerrs)

-  		exit(1);

-  	sym_set_change_count(1);

-  }

-  

- -static const char *zconf_tokenname(int token)

- -{

- -	switch (token) {

- -	case T_MENU:		return "menu";

- -	case T_ENDMENU:		return "endmenu";

- -	case T_CHOICE:		return "choice";

- -	case T_ENDCHOICE:	return "endchoice";

- -	case T_IF:		return "if";

- -	case T_ENDIF:		return "endif";

- -	case T_DEPENDS:		return "depends";

- -	case T_VISIBLE:		return "visible";

- -	}

- -	return "<token>";

- -}

- -

- -static bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtoken)

- +static bool zconf_endtoken(const char *tokenname,

- +			   const char *expected_tokenname)

-  {

- -	if (id->token != endtoken) {

- +	if (strcmp(tokenname, expected_tokenname)) {

-  		zconf_error("unexpected '%s' within %s block",

- -			id->name, zconf_tokenname(starttoken));

- -		zconfnerrs++;

- +			    tokenname, expected_tokenname);

- +		yynerrs++;

-  		return false;

-  	}

-  	if (current_menu->file != current_file) {

-  		zconf_error("'%s' in different file than '%s'",

- -			id->name, zconf_tokenname(starttoken));

- +			    tokenname, expected_tokenname);

-  		fprintf(stderr, "%s:%d: location of the '%s'\n",

-  			current_menu->file->name, current_menu->lineno,

- -			zconf_tokenname(starttoken));

- -		zconfnerrs++;

- +			expected_tokenname);

- +		yynerrs++;

-  		return false;

-  	}

-  	return true;

- @@ -582,7 +559,7 @@ static void zconf_error(const char *err, ...)

-  {

-  	va_list ap;

-  

- -	zconfnerrs++;

- +	yynerrs++;

-  	fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno());

-  	va_start(ap, err);

-  	vfprintf(stderr, err, ap);

- @@ -590,7 +567,7 @@ static void zconf_error(const char *err, ...)

-  	fprintf(stderr, "\n");

-  }

-  

- -static void zconferror(const char *err)

- +static void yyerror(const char *err)

-  {

-  	fprintf(stderr, "%s:%d: %s\n", zconf_curname(), zconf_lineno() + 1, err);

-  }

- @@ -623,7 +600,7 @@ static void print_symbol(FILE *out, struct menu *menu)

-  		fprintf(out, "\nconfig %s\n", sym->name);

-  	switch (sym->type) {

-  	case S_BOOLEAN:

- -		fputs("  boolean\n", out);

- +		fputs("  bool\n", out);

-  		break;

-  	case S_TRISTATE:

-  		fputs("  tristate\n", out);

- @@ -686,6 +663,10 @@ static void print_symbol(FILE *out, struct menu *menu)

-  			print_quoted_string(out, prop->text);

-  			fputc('\n', out);

-  			break;

- +		case P_SYMBOL:

- +			fputs( "  symbol ", out);

- +			fprintf(out, "%s\n", prop->sym->name);

- +			break;

-  		default:

-  			fprintf(out, "  unknown prop %d!\n", prop->type);

-  			break;

- @@ -746,9 +727,5 @@ void zconfdump(FILE *out)

-  	}

-  }

-  

- -#include "zconf.lex.c"

-  #include "util.c"

- -#include "confdata.c"

- -#include "expr.c"

- -#include "symbol.c"

-  #include "menu.c"

- diff --git a/carl9170fw/include/linux/ieee80211.h b/carl9170fw/include/linux/ieee80211.h

- index 31c59ea..46ce6cf 100644

- --- a/carl9170fw/include/linux/ieee80211.h

- +++ b/carl9170fw/include/linux/ieee80211.h

- @@ -897,33 +897,33 @@ struct ieee80211_mgmt {

-  			__le16 status_code;

-  			/* possibly followed by Challenge text */

-  			u8 variable[0];

- -		} __packed auth;

- +		} __packed __aligned(4) auth;

-  		struct {

-  			__le16 reason_code;

- -		} __packed deauth;

- +		} __packed __aligned(4) deauth;

-  		struct {

-  			__le16 capab_info;

-  			__le16 listen_interval;

-  			/* followed by SSID and Supported rates */

-  			u8 variable[0];

- -		} __packed assoc_req;

- +		} __packed __aligned(4) assoc_req;

-  		struct {

-  			__le16 capab_info;

-  			__le16 status_code;

-  			__le16 aid;

-  			/* followed by Supported rates */

-  			u8 variable[0];

- -		} __packed assoc_resp, reassoc_resp;

- +		} __packed __aligned(4) assoc_resp, reassoc_resp;

-  		struct {

-  			__le16 capab_info;

-  			__le16 listen_interval;

-  			u8 current_ap[6];

-  			/* followed by SSID and Supported rates */

-  			u8 variable[0];

- -		} __packed reassoc_req;

- +		} __packed __aligned(4) reassoc_req;

-  		struct {

-  			__le16 reason_code;

- -		} __packed disassoc;

- +		} __packed __aligned(4) disassoc;

-  		struct {

-  			__le64 timestamp;

-  			__le16 beacon_int;

- @@ -931,11 +931,11 @@ struct ieee80211_mgmt {

-  			/* followed by some of SSID, Supported rates,

-  			 * FH Params, DS Params, CF Params, IBSS Params, TIM */

-  			u8 variable[0];

- -		} __packed beacon;

- +		} __packed __aligned(4) beacon;

-  		struct {

-  			/* only variable items: SSID, Supported rates */

-  			u8 variable[0];

- -		} __packed probe_req;

- +		} __packed __aligned(4) probe_req;

-  		struct {

-  			__le64 timestamp;

-  			__le16 beacon_int;

- @@ -943,7 +943,7 @@ struct ieee80211_mgmt {

-  			/* followed by some of SSID, Supported rates,

-  			 * FH Params, DS Params, CF Params, IBSS Params */

-  			u8 variable[0];

- -		} __packed probe_resp;

- +		} __packed __aligned(4) probe_resp;

-  		struct {

-  			u8 category;

-  			union {

- @@ -1041,8 +1041,8 @@ struct ieee80211_mgmt {

-  					u8 variable[0];

-  				} __packed ftm;

-  			} u;

- -		} __packed action;

- -	} u;

- +		} __packed __aligned(4) action;

- +	} u __aligned(2);

-  } __packed __aligned(2);

-  

-  /* Supported rates membership selectors */

- @@ -1245,7 +1245,7 @@ struct ieee80211_bar {

-  	__u8 ta[6];

-  	__le16 control;

-  	__le16 start_seq_num;

- -} __packed __aligned(4);

- +} __packed __aligned(2);

-  

-  /* 802.11 BA(R) control masks */

-  #define IEEE80211_BAR_CTRL_ACK_POLICY_NORMAL	0x0000

- diff --git a/carl9170fw/include/shared/wlan.h b/carl9170fw/include/shared/wlan.h

- index 9c6b7ff..117f005 100644

- --- a/carl9170fw/include/shared/wlan.h

- +++ b/carl9170fw/include/shared/wlan.h

- @@ -273,7 +273,7 @@ struct ar9170_tx_frame {

-  		struct ieee80211_hdr i3e;

-  		u8 payload[0];

-  	} data;

- -} __packed;

- +} __packed __aligned(4);

-  

-  struct carl9170_tx_superframe {

-  	struct carl9170_tx_superdesc s;

- diff --git a/carl9170fw/toolchain/Makefile b/carl9170fw/toolchain/Makefile

- index 11db906..43e546d 100644

- --- a/carl9170fw/toolchain/Makefile

- +++ b/carl9170fw/toolchain/Makefile

- @@ -1,16 +1,16 @@

- -BINUTILS_VER=2.31.1

- +BINUTILS_VER=2.32

-  BINUTILS_TAR=binutils-$(BINUTILS_VER).tar.xz

-  BINUTILS_URL="https://ftp.gnu.org/gnu/binutils/$(BINUTILS_TAR)"

-  

- -NEWLIB_VER=3.0.0

- +NEWLIB_VER=3.1.0

-  NEWLIB_TAR=newlib-$(NEWLIB_VER).tar.gz

-  NEWLIB_URL="ftp://sourceware.org/pub/newlib/$(NEWLIB_TAR)"

-  

- -GCC_VER=8.2.0

- +GCC_VER=9.1.0

-  GCC_TAR=gcc-$(GCC_VER).tar.xz

-  GCC_URL="https://ftp.gnu.org/gnu/gcc/gcc-$(GCC_VER)/$(GCC_TAR)"

-  

- -MPFR_VER=4.0.1

- +MPFR_VER=4.0.2

-  MPFR_TAR=mpfr-$(MPFR_VER).tar.xz

-  MPFR_URL="https://ftp.gnu.org/gnu/mpfr/$(MPFR_TAR)"

-  

- diff --git a/carl9170fw/toolchain/SHA256SUMS b/carl9170fw/toolchain/SHA256SUMS

- index 1b65040..3a53959 100644

- --- a/carl9170fw/toolchain/SHA256SUMS

- +++ b/carl9170fw/toolchain/SHA256SUMS

- @@ -1,16 +1,6 @@

- -1cf7adf8ff4b5aa49041c8734bbcf1ad18cc4c94d0029aae0f4e48841088479a  src/gcc-7.2.0.tar.xz

- -5b76a9b97c9464209772ed25ce55181a7bb144a66e5669aaec945aa64da3189b  src/newlib-2.5.0.tar.gz

- -0b871e271c4c620444f8264f72143b4d224aa305306d85dd77ab8dce785b1e85  src/binutils-2.29.tar.xz

-  87b565e89a9a684fe4ebeeddb8399dce2599f9c9049854ca8c0dfbdea0e21912  src/gmp-6.1.2.tar.xz

- -617decc6ea09889fb08ede330917a00b16809b8db88c29c31bfbb49cbf88ecc3  src/mpc-1.0.3.tar.gz

- -7a62ac1a04408614fccdc506e4844b10cf0ad2c2b1677097f8f35d3a1344a950  src/mpfr-3.1.6.tar.xz

-  6985c538143c1208dcb1ac42cedad6ff52e267b47e5f970183a3e75125b43c2e  src/mpc-1.1.0.tar.gz

- -fbe2cd1418b321f5c899ce4f0f0f4e73f5ecc7d02145b0e1fd096f5c3afb8a1d  src/mpfr-4.0.0.tar.xz

- -c8566335ee74e5fcaeb8595b4ebd0400c4b043d6acb3263ecb1314f8f5501332  src/newlib-3.0.0.tar.gz

- -832ca6ae04636adbb430e865a1451adf6979ab44ca1c8374f61fba65645ce15c  src/gcc-7.3.0.tar.xz

- -e7010a46969f9d3e53b650a518663f98a5dde3c3ae21b7d71e5e6803bc36b577  src/binutils-2.29.1.tar.xz

- -67874a60826303ee2fb6affc6dc0ddd3e749e9bfcb4c8655e3953d0458a6e16e  src/mpfr-4.0.1.tar.xz

- -6e46b8aeae2f727a36f0bd9505e405768a72218f1796f0d09757d45209871ae6  src/binutils-2.30.tar.xz

- -1d1866f992626e61349a1ccd0b8d5253816222cdc13390dcfaa74b093aa2b153  src/gcc-8.1.0.tar.xz

- -5d20086ecf5752cc7d9134246e9588fa201740d540f7eb84d795b1f7a93bca86  src/binutils-2.31.1.tar.xz

- -196c3c04ba2613f893283977e6011b2345d1cd1af9abeac58e916b1aab3e0080  src/gcc-8.2.0.tar.xz

- \ No newline at end of file

- +fb4fa1cc21e9060719208300a61420e4089d6de6ef59cf533b57fe74801d102a  src/newlib-3.1.0.tar.gz

- +1d3be708604eae0e42d578ba93b390c2a145f17743a744d8f3f8c2ad5855a38a  src/mpfr-4.0.2.tar.xz

- +0ab6c55dd86a92ed561972ba15b9b70a8b9f75557f896446c82e8b36e473ee04  src/binutils-2.32.tar.xz

- +79a66834e96a6050d8fe78db2c3b32fb285b230b855d0a66288235bc04b327a0  src/gcc-9.1.0.tar.xz

- -- 

- 2.26.0

- 

@@ -1,4893 +0,0 @@ 

- From dd4bc9ff49b9a7075e579fdd62fd930d27a9a7df Mon Sep 17 00:00:00 2001

- From: Jason Self <j@jxself.org>

- Date: Thu, 4 Jul 2019 15:55:48 -0700

- Subject: [PATCH 2/8] Add firmware for the ATUSB IEEE 802.15.4 USB Adapter

- 

- http://shop.sysmocom.de/products/atusb/

- ---

-  INSTALL                     |  20 +-

-  Makefile                    |   6 +-

-  WHENCE                      |  12 ++

-  atusb/Makefile              | 236 +++++++++++++++++++++

-  atusb/README                |  94 +++++++++

-  atusb/an/README             |  25 +++

-  atusb/an/dec.py             | 127 ++++++++++++

-  atusb/an/get.py             |  31 +++

-  atusb/an/plot               |  12 ++

-  atusb/atusb.c               |  63 ++++++

-  atusb/board.c               | 120 +++++++++++

-  atusb/board.h               |  95 +++++++++

-  atusb/board_app.c           | 173 ++++++++++++++++

-  atusb/board_atusb.c         | 162 +++++++++++++++

-  atusb/board_atusb.h         |  48 +++++

-  atusb/board_hulusb.c        | 179 ++++++++++++++++

-  atusb/board_hulusb.h        |  66 ++++++

-  atusb/board_rzusb.c         | 169 +++++++++++++++

-  atusb/board_rzusb.h         |  48 +++++

-  atusb/boot.c                |  77 +++++++

-  atusb/descr.c               | 104 ++++++++++

-  atusb/ep0.c                 | 338 ++++++++++++++++++++++++++++++

-  atusb/flash.c               |  97 +++++++++

-  atusb/include/at86rf230.h   | 402 ++++++++++++++++++++++++++++++++++++

-  atusb/include/atusb/atusb.h |  97 +++++++++

-  atusb/include/atusb/ep0.h   |  64 ++++++

-  atusb/mac.c                 | 250 ++++++++++++++++++++++

-  atusb/mac.h                 |  26 +++

-  atusb/sernum.c              |  47 +++++

-  atusb/sernum.h              |  37 ++++

-  atusb/spi.c                 |  51 +++++

-  atusb/spi.h                 |  30 +++

-  atusb/uart.c                |  64 ++++++

-  atusb/uart.h                |  25 +++

-  atusb/usb/atu2.c            | 247 ++++++++++++++++++++++

-  atusb/usb/dfu.c             | 260 +++++++++++++++++++++++

-  atusb/usb/dfu.h             | 119 +++++++++++

-  atusb/usb/dfu_common.c      | 101 +++++++++

-  atusb/usb/usb.c             | 181 ++++++++++++++++

-  atusb/usb/usb.h             | 189 +++++++++++++++++

-  atusb/version.h             |  23 +++

-  42 files changed, 4512 insertions(+), 3 deletions(-)

-  create mode 100644 atusb/Makefile

-  create mode 100644 atusb/README

-  create mode 100644 atusb/an/README

-  create mode 100755 atusb/an/dec.py

-  create mode 100755 atusb/an/get.py

-  create mode 100755 atusb/an/plot

-  create mode 100644 atusb/atusb.c

-  create mode 100644 atusb/board.c

-  create mode 100644 atusb/board.h

-  create mode 100644 atusb/board_app.c

-  create mode 100644 atusb/board_atusb.c

-  create mode 100644 atusb/board_atusb.h

-  create mode 100644 atusb/board_hulusb.c

-  create mode 100644 atusb/board_hulusb.h

-  create mode 100644 atusb/board_rzusb.c

-  create mode 100644 atusb/board_rzusb.h

-  create mode 100644 atusb/boot.c

-  create mode 100644 atusb/descr.c

-  create mode 100644 atusb/ep0.c

-  create mode 100644 atusb/flash.c

-  create mode 100644 atusb/include/at86rf230.h

-  create mode 100644 atusb/include/atusb/atusb.h

-  create mode 100644 atusb/include/atusb/ep0.h

-  create mode 100644 atusb/mac.c

-  create mode 100644 atusb/mac.h

-  create mode 100644 atusb/sernum.c

-  create mode 100644 atusb/sernum.h

-  create mode 100644 atusb/spi.c

-  create mode 100644 atusb/spi.h

-  create mode 100644 atusb/uart.c

-  create mode 100644 atusb/uart.h

-  create mode 100644 atusb/usb/atu2.c

-  create mode 100644 atusb/usb/dfu.c

-  create mode 100644 atusb/usb/dfu.h

-  create mode 100644 atusb/usb/dfu_common.c

-  create mode 100644 atusb/usb/usb.c

-  create mode 100644 atusb/usb/usb.h

-  create mode 100644 atusb/version.h

- 

- diff --git a/INSTALL b/INSTALL

- index 74c5cfd..7fb1116 100644

- --- a/INSTALL

- +++ b/INSTALL

- @@ -16,6 +16,8 @@ In order to build everything you will need the following on the host

-  system:

-  

-      * A C/C++ compiler, like GCC

- +    * AVR-GCC

- +    * Standard C library for AVR-GCC

-      * Cmake

-      * GNU Bison/YACC

-      * GNU Flex

- @@ -32,13 +34,27 @@ system:

-  

-  On GNU/Linux distros that use apt you can install these with:

-  

- -    apt install binutils-arm-linux-gnueabi binutils-arm-none-eabi bison \

- -    cmake flex g++ gcc gcc-arm-linux-gnueabi gcc-arm-none-eabi gperf make wget

- +    apt install avr-gcc avr-libc binutils-arm-linux-gnueabi \

- +    binutils-arm-none-eabi bison cmake flex g++ gcc \

- +    gcc-arm-linux-gnueabi gcc-arm-none-eabi gperf make wget

-  

-  CARL9170 Firmware Configuration

- +-------------------------------

-  When building the carl9170 firmware you will be prompted with

-  configuration questions.

-  

- +atusb: Firmware for the ATUSB IEEE 802.15.4 USB Adapter

- +-------------------------------------------------------

- +

- +To flash the firmware you need dfu-util on the host. Issue

- +

- +    make dfu

- +

- +right after plugging the device into the USB port while the red led is

- +still on.

- +

- +Refer to the included README file for more information.

- +

-  Licensing

-  ---------

-  

- diff --git a/Makefile b/Makefile

- index 21d16fb..8474b30 100644

- --- a/Makefile

- +++ b/Makefile

- @@ -17,7 +17,7 @@ shell=/bin/sh

-  prefix=/lib/firmware

-  install_program=install

-  

- -.PHONY:	all test clean install a56 as31 aica ath9k_htc_toolchain ath9k_htc av7110 b43-tools carl9170fw-toolchain carl9170fw cis-tools cis dsp56k ihex2fw isci keyspan_pda openfwwf usbdux

- +.PHONY:	all test clean install a56 as31 aica ath9k_htc_toolchain ath9k_htc atusb av7110 b43-tools carl9170fw-toolchain carl9170fw cis-tools cis dsp56k ihex2fw isci keyspan_pda openfwwf usbdux

-  

-  all: aica ath9k_htc av7110 carl9170fw cis dsp56k isci keyspan_pda openfwwf usbdux

-  

- @@ -36,6 +36,9 @@ ath9k_htc_toolchain:

-  ath9k_htc: ath9k_htc_toolchain

-  	cd ath9k_htc && $(MAKE) -C target_firmware

-  

- +atusb:

- +	cd atusb && $(MAKE)

- +

-  av7110:

-  	cd av7110 && $(MAKE)

-  

- @@ -81,6 +84,7 @@ clean:

-  	if [ -a as31/Makefile ]; then cd as31 && $(MAKE) clean; fi;

-  	cd ath9k_htc && $(MAKE) toolchain-clean

-  	cd ath9k_htc && $(MAKE) -C target_firmware clean

- +	cd atusb && $(MAKE) clean

-  	cd av7110 && $(MAKE) clean

-  	cd carl9170fw/toolchain && $(MAKE) clean

-  	if [ -a carl9170fw/Makefile ]; then cd carl9170fw && $(MAKE) clean; fi;

- diff --git a/WHENCE b/WHENCE

- index 2932155..756de43 100644

- --- a/WHENCE

- +++ b/WHENCE

- @@ -112,6 +112,18 @@ From https://github.com/qca/open-ath9k-htc-firmware

-  

-  --------------------------------------------------------------------------

-  

- +atusb: Firmware for the ATUSB IEEE 802.15.4 USB Adapter

- +http://shop.sysmocom.de/products/atusb/

- +

- +From http://projects.qi-hardware.com/index.php/p/ben-wpan/source/tree/master/atusb/fw

- +

- +License: GPL-2.0-or-later

- +

- +Version: Based on commit 805db6ebf5d80692158acadf88e239da9d3e67af 

- +dated September 13 2017

- +

- +--------------------------------------------------------------------------

- +

-  Driver: b43 - OpenFWWF -- Free firmware for some Broadcom 43xx series WLAN chips

-  

-  License: GPLv2

- diff --git a/atusb/Makefile b/atusb/Makefile

- new file mode 100644

- index 0000000..c79cb26

- --- /dev/null

- +++ b/atusb/Makefile

- @@ -0,0 +1,236 @@

- +#

- +# Makefile - Makefile of the ATUSB firmware

- +#

- +# Written 2010-2011, 2013 by Werner Almesberger

- +# Copyright 2010-2011, 2013 by Werner Almesberger

- +#

- +# This program is free software; you can redistribute it and/or modify

- +# it under the terms of the GNU General Public License as published by

- +# the Free Software Foundation; either version 2 of the License, or

- +# (at your option) any later version.

- +#

- +

- +SHELL = /bin/bash

- +

- +NAME = atusb

- +DEBUG = false

- +

- +CFLAGS = -g -mmcu=$(CHIP) -DBOOT_ADDR=$(BOOT_ADDR) \

- +	 -Wall -Wextra -Wshadow -Werror -Wno-unused-parameter \

- +	 -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes

- +

- +ifeq ($(DEBUG),true)

- +CFLAGS += -DDEBUG

- +endif

- +

- +ifeq ($(NAME),rzusb)

- +CHIP=at90usb1287

- +CFLAGS += -DRZUSB -DAT86RF230

- +else ifeq ($(NAME),hulusb)

- +CHIP=at90usb1287

- +CFLAGS += -DHULUSB -DAT86RF212

- +else

- +CHIP=atmega32u2

- +CFLAGS += -DATUSB -DAT86RF231

- +endif

- +HOST=jlime

- +BOOT_ADDR=0x7000

- +

- +AVR_PREFIX = $(BIN_PATH) avr-

- +CC = $(AVR_PREFIX)gcc

- +OBJCOPY = $(AVR_PREFIX)objcopy

- +#OBJDUMP = $(AVR_PREFIX)objdump

- +SIZE = $(AVR_PREFIX)size

- +

- +# BCD notion is 0xJJMM with JJ being major and MM being minor. Thus 0x0020 is

- +# version 0.2 */

- +USB_BCD_VERSION = 0030

- +USB_VENDOR_ID = 20b7

- +USB_PRODUCT_ID = 1540

- +USB_ID = $(USB_VENDOR_ID):$(USB_PRODUCT_ID)

- +

- +OBJS = atusb.o board.o board_app.o sernum.o spi.o descr.o ep0.o \

- +       dfu_common.o usb.o app-atu2.o mac.o

- +BOOT_OBJS = boot.o board.o sernum.o spi.o flash.o dfu.o \

- +            dfu_common.o usb.o boot-atu2.o

- +

- +ifeq ($(DEBUG),true)

- +OBJS +=  uart.o

- +endif

- +

- +ifeq ($(NAME),rzusb)

- +OBJS += board_rzusb.o

- +BOOT_OBJS += board_rzusb.o

- +else ifeq ($(NAME),hulusb)

- +OBJS += board_hulusb.o

- +BOOT_OBJS += board_hulusb.o

- +else

- +OBJS += board_atusb.o

- +BOOT_OBJS += board_atusb.o

- +endif

- +

- +

- +vpath %.c usb/

- +

- +CFLAGS += -Iinclude -Iusb -I.

- +

- +# ----- Verbosity control -----------------------------------------------------

- +

- +CC_normal	:= $(CC)

- +BUILD_normal	:=

- +DEPEND_normal	:= $(CPP) $(CFLAGS) -MM -MG

- +

- +CC_quiet	= @echo "  CC       " $@ && $(CC_normal)

- +BUILD_quiet	= @echo "  BUILD    " $@ && $(BUILD_normal)

- +DEPEND_quiet	= @$(DEPEND_normal)

- +

- +ifeq ($(V),1)

- +    CC		= $(CC_normal)

- +    BUILD	= $(BUILD_normal)

- +    DEPEND	= $(DEPEND_normal)

- +else

- +    CC		= $(CC_quiet)

- +    BUILD	= $(BUILD_quiet)

- +    DEPEND	= $(DEPEND_quiet)

- +endif

- +

- +# ----- Rules -----------------------------------------------------------------

- +

- +.PHONY:		all clean upload prog dfu update version.c bindist

- +.PHONY:		prog-app prog-read on off reset

- +

- +all:		$(NAME).bin boot.hex

- +

- +$(NAME).elf:	$(OBJS)

- +		$(MAKE) version.o

- +		$(CC) $(CFLAGS) -o $@ $(OBJS) version.o

- +		$(SIZE) $@

- +

- +boot.elf:	$(BOOT_OBJS)

- +		$(CC) $(CFLAGS) -o $@ $(BOOT_OBJS) \

- +		  -Wl,--section-start=.text=$(BOOT_ADDR)

- +		$(SIZE) $@

- +

- +%.bin:		%.elf

- +		$(BUILD) $(OBJCOPY) -j .text -j .data -O binary $< $@

- +		@echo "build #`cat .version`, `ls -l $@`"

- +

- +%.dfu:		%.bin

- +		cp $(NAME).bin $(NAME).dfu

- +		dfu-suffix -a $(NAME).dfu -d 0x$(USB_BCD_VERSION) \

- +		  -p 0x$(USB_PRODUCT_ID) -v 0x$(USB_VENDOR_ID)

- +

- +%.hex:		%.elf

- +		$(BUILD) $(OBJCOPY) -j .text -j .data -O ihex $< $@

- +		@echo "Size: `$(SIZE) -A boot.hex | sed '/Total */s///p;d'` B"

- +

- +# ----- Cleanup ---------------------------------------------------------------

- +

- +clean:

- +		rm -f $(NAME).bin $(NAME).elf $(NAME).dfu

- +		rm -f $(OBJS) $(OBJS:.o=.d)

- +		rm -f boot.hex boot.elf

- +		rm -f $(BOOT_OBJS) $(BOOT_OBJS:.o=.d)

- +		rm -f version.c version.d version.o

- +

- +# ----- Build version ---------------------------------------------------------

- +

- +version.c:

- +		@if [ -f .version ]; then \

- +		    v=`cat .version`; \

- +		    expr $$v + 1 >.version; \

- +		else \

- +		    echo 0 >.version; \

- +		fi

- +		@[ -s .version ] || echo 0 >.version

- +		@echo '/* MACHINE-GENERATED. DO NOT EDIT ! */' >version.c

- +		@echo '#include "version.h"' >>version.c

- +		@echo "const char *build_date = \"`date`\";" >>version.c

- +		@echo "const uint16_t build_number = `cat .version`;" \

- +		  >>version.c

- +

- +# ----- Dependencies ----------------------------------------------------------

- +

- +MKDEP =									\

- +	$(DEPEND) $< |							\

- +	  sed 								\

- +	    -e 's|^$(basename $(notdir $<)).o:|$@:|'			\

- +	    -e '/^\(.*:\)\? */{p;s///;s/ *\\\?$$/ /;s/  */:\n/g;H;}'	\

- +	    -e '$${g;p;}'						\

- +	    -e d >$(basename $@).d;					\

- +	  [ "$${PIPESTATUS[*]}" = "0 0" ] ||				\

- +	  { rm -f $(basename $@).d; exit 1; }

- +

- +%.o:            %.c

- +		$(CC) $(CFLAGS) -Os -c $<

- +		$(MKDEP)

- +

- +-include $(OBJS:.o=.d)

- +

- +# ----- Object file variants --------------------------------------------------

- +

- +app-%.o:	usb/%.c

- +		$(CC) $(CFLAGS) -Os -o $@ -c $<

- +		$(MKDEP)

- +

- +boot-%.o:	usb/%.c

- +		$(CC) $(CFLAGS) -DBOOT_LOADER -Os -o $@ -c $<

- +		$(MKDEP)

- +

- +# ----- Distribution ----------------------------------------------------------

- +

- +BINDIST_BASE=http://downloads.qi-hardware.com/people/werner/wpan/bindist

- +ATUSB_BIN_NAME=atusb-`git rev-parse HEAD | cut -c 1-7`.bin

- +

- +bindist:

- +		qippl atusb.bin wpan/bindist/$(ATUSB_BIN_NAME)

- +		@echo $(BINDIST_BASE)/$(ATUSB_BIN_NAME)

- +		@echo md5sum: `md5sum atusb.bin | sed 's/ .*//'`

- +		@echo atrf-id: \

- +		  `sed '/.*number = \(.*\);/s//#\1/p;d' version.c` \

- +		  `sed '/.*date = "\(.*\)";/s//\1/p;d' version.c`

- +

- +# ----- Programming and device control ----------------------------------------

- +

- +upload:		$(NAME).bin boot.hex

- +		scp $(NAME).bin boot.hex $(HOST):

- +

- +# lfuse: external clock, slow start-up

- +# hfuse: 4 kB boot loader, reset into boot loader

- +# lock: allow everything but SPM to the boot loader

- +#       Note: when trying to program 0xef, we get back 0x2f, failing

- +#	      verification. So we just program 0x2f.

- +

- +prog-app:

- +		ssh $(HOST) avrdude -F -p $(CHIP) -c nanonote_atusb -e \

- +		  -U flash:w:atusb.bin:r \

- +		  -U lfuse:w:0x60:m

- +

- +prog:

- +		ssh $(HOST) avrdude -F -p $(CHIP) -c nanonote_atusb -e \

- +		  -U flash:w:boot.hex:i \

- +		  -U lfuse:w:0x60:m \

- +		  -U hfuse:w:0xd8:m \

- +		  -U lock:w:0x2f:m

- +

- +prog-read:

- +		ssh $(HOST) avrdude -F -p $(CHIP) -c nanonote_atusb \

- +		  -U flash:r:mcu.bin:r

- +

- +dfu:		$(NAME).dfu

- +		dfu-util -d $(USB_ID) -D $(NAME).dfu

- +

- +update:		$(NAME).bin

- +		-atrf-reset -a

- +		usbwait -r -i 0.01 -t 5 $(USB_ID)

- +		$(MAKE) dfu

- +

- +on:

- +		ssh $(HOST) poke 0x10010318 4

- +

- +off:

- +		ssh $(HOST) poke 0x10010314 4

- +

- +reset:

- +		ssh $(HOST) poke 0x10010318 2048

- +		ssh $(HOST) poke 0x10010314 2048

- diff --git a/atusb/README b/atusb/README

- new file mode 100644

- index 0000000..99ceb22

- --- /dev/null

- +++ b/atusb/README

- @@ -0,0 +1,94 @@

- +Requires a very recent toolchain, because ATmega32U2 is relatively new.

- +

- +- Building:

- +

- +  make

- +

- +- Uploading the firmware to a Ben (for flashing with the atusb-pgm cable):

- +

- +  make HOST=<hostname> upload

- +

- +  Example:

- +

- +  make HOST=ben upload

- +

- +  HOST defaults to "jlime".

- +

- +- Flashing the boot loader:

- +

- +  Prerequisite: avrdude on the Ben.

- +

- +  Disconnect the atusb board from USB. Insert the atusb-pgm connector into

- +  the Ben. Place the atusb-pgm adapter on the exposed contact pads of the

- +  atusb board and push it down. Then run

- +

- +  make prog

- +

- +  This takes about 30 seconds. If the programming fails with an error

- +  message like "Yikes!  Invalid device signature.", verify that the

- +  atusb-pgm board is properly connected and placed, then try again.

- +

- +- Uploading the application:

- +

- +  Prerequisite: dfu-util installed on the PC.

- +

- +  Insert atusb into the PC, then run

- +

- +  make dfu

- +

- +  Note: since the boot loader resets the USB bus after timing out,

- +  this operation can fail with a message like "No DFU capable USB device

- +  found". Just retry, and it will eventually get through.

- +

- +

- +HULUSB notes:

- +-------------

- +To prepare and flash the firmware on a HULUSB device some additional steps are

- +needed;

- +

- +avr-objcopy -O ihex -R .signature -R .fuse -R .eeprom hulusb.elf hulusb.hex

- +dfu-programmer at90usb1287 flash hulusb.hex

- +dfu-programmer at90usb1287 reset

- +

- +--------------------------

- +

- +Making the toolchain:

- +

- +# patches according to

- +# http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&p=789527

- +

- +# some gcc prerequisites

- +

- +apt-get remove avr-libc gcc-avr binutils-avr

- +apt-get install libmpfr-dev libmpc-dev

- +

- +# binutils

- +

- +wget http://ftp.gnu.org/gnu/binutils/binutils-2.21.tar.bz2

- +tar xfj binutils-2.21.tar.bz2 

- +cd binutils-2.21

- +./configure --target=avr --disable-nls

- +make

- +make install

- +

- +# gcc

- +

- +wget http://ftpmirror.gnu.org/gcc/gcc-4.5.2/gcc-4.5.2.tar.bz2

- +wget -O gcc_452_avr.patch http://gcc.gnu.org/bugzilla/attachment.cgi?id=23050

- +tar xfj gcc-4.5.2.tar.bz2

- +cd gcc-4.5.2

- +patch -p1 -s <../gcc_452_avr.patch

- +mkdir obj-avr

- +cd obj-avr

- +../configure --target=avr --enable-languages=c \

- +    --disable-nls --disable-libssp --with-dwarf2

- +make

- +make install

- +

- +wget http://download.savannah.gnu.org/releases/avr-libc/avr-libc-1.7.1.tar.bz2

- +tar xfj avr-libc-1.7.1.tar.bz2 

- +cd avr-libc-1.7.1

- +./bootstrap	# the automake at the end takes a while

- +./configure --build=`./config.guess` --host=avr

- +make

- +make install

- diff --git a/atusb/an/README b/atusb/an/README

- new file mode 100644

- index 0000000..8e0d2fc

- --- /dev/null

- +++ b/atusb/an/README

- @@ -0,0 +1,25 @@

- +workflow:

- +

- +- connect zprobe (note: it currently inverts because it didn't have any

- +  other chips around. this may change later.)

- +

- +- capture the USB signals at an interesting moment with a sample rate of

- +  50 MSa/s

- +

- +- zoom into the frame(s) of interest

- +

- +- download the data with

- +  ./get.py

- +

- +- decode with

- +  ./dec.py

- +

- +  For manual decoding, set the coders to D+ and D- (we need D- for SE0

- +  and SE1 detection), then click on a rising clock edge left of the

- +  packet and move the cursor to the right.

- +

- +- if there are problems with the clock, the analog signal and digital

- +  signals derived from it can be examined after running dec.py with

- +  ./plot

- +

- +  (Note that the digital zprobe hides any analog anomalies.)

- diff --git a/atusb/an/dec.py b/atusb/an/dec.py

- new file mode 100755

- index 0000000..8534857

- --- /dev/null

- +++ b/atusb/an/dec.py

- @@ -0,0 +1,127 @@

- +#!/usr/bin/python

- +

- +from tmc.wave import *

- +from tmc.dxplore import dxplore

- +from tmc.decode import d_usb_stream

- +

- +

- +#

- +# Clock recovery: we assume that each change in the wave is triggered by a

- +# clock edge. We know the clock's nominal period and resynchronize on each

- +# edge. Additionally, we can obtain a list of times when a timing violation

- +# has occurred.

- +#

- +# Note that the timing violations logic doesn't make much sense in its present

- +# form, since it mainly measures noise (particularly if we're digitizing slow

- +# edges) and not clock drift.

- +#

- +# A more useful metric would be accumulated error from some point of reference

- +# or at least the timing of same edges, to eliminate (generally harmless) time

- +# offsets introduced by digitizing.

- +#

- +# So it would probably make more sense for "recover" not to check for timing

- +# violations at all, and leave this to more specialized functions.

- +#

- +def recover(self, period, min = None, max = None, t0 = None):

- +    if t0 is None:

- +	t0 = self.data[0]

- +    v = not self.initial

- +    res = []

- +    violations = []

- +    for t in self.data:

- +	v = not v

- +	if t <= t0:

- +	    continue

- +	n = 0

- +	while t0 < t-period/2:

- +	    res.append(t0)

- +	    t0 += period

- +	    n += 1

- +	if min is not None:

- +	    if t0-t > n*min:

- +		violations.append(t)

- +	if max is not None:

- +	    if t-t0 > n*max:

- +		violations.append(t)

- +	t0 = t

- +    return res, violations

- +

- +

- +#

- +# Load the analog waves saved by get.py

- +#

- +wv = waves()

- +wv.load("_wv")

- +

- +#

- +# Digitize the waves and save the result.

- +#

- +dp = wv[0].digitize(1.5, 1.8)

- +dm = wv[1].digitize(1.5, 1.8)

- +wv = waves(dp, dm, dp-dm)

- +wv.save("_dig")

- +

- +#

- +# Also record the differential signal.

- +#

- +wd = wv[1]-wv[0]

- +dd = wd.digitize(-0.5, 0.5)

- +wd.save("_diff")

- +

- +#

- +# Run clock recovery on D+/D-. We only need one, but check both to be sure.

- +#

- +#p = 1/1.5e6

- +p = 1/12e6

- +dp_t, viol = recover(dp, p, p*0.9, p*1.1)

- +print viol

- +dm_t, viol = recover(dm, p, p*.9, p*1.1, t0 = dp.data[0])

- +print viol

- +

- +#

- +# Shift the clock by half a period, add a few periods to get steady state and

- +# SE0s (if any), and then sample the data lines.

- +#

- +clk = map(lambda t: t+p/2, dp_t)

- +clk.extend((clk[-1]+p, clk[-1]+2*p, clk[-1]+3*p))

- +dp_bv = dp.get(clk)

- +dm_bv = dm.get(clk)

- +

- +#

- +# Save a wave with the recovered clock to make it easier to find the bits in

- +# analog graphs.

- +#

- +dd.data = dp_t;

- +dd.save("_clk")

- +

- +#

- +# For decoding, we need a fake bit clock. We generate it by doubling each data

- +# bit and generating a L->H transition during this bit.

- +#

- +dpd = []

- +dmd = []

- +dck = []

- +

- +# err, silly, seems that we've mixed up D+ and D- all over the place :-)

- +print d_usb_stream(dm_bv[:], dp_bv[:])

- +

- +for v in dp_bv:

- +    dpd.append(v)

- +    dpd.append(v)

- +    dck.append(0)

- +    dck.append(1)

- +

- +for v in dm_bv:

- +    dmd.append(v)

- +    dmd.append(v)

- +

- +#

- +# Display the reconstructed digital signal. Note that the absolute time is only

- +# correct at the beginning and that relative time is only accurate over

- +# intervals in which no significant clock resynchronization has occurred.

- +#

- +# In fact, dxplore should probably have an option to either turn off time

- +# entirely or to display a user-provided time axis. The latter may be a bit

- +# tricky to implement.

- +#

- +dxplore((dmd, dpd, dck), 0, p/2, labels = ("D+", "D-", "CLK"))

- diff --git a/atusb/an/get.py b/atusb/an/get.py

- new file mode 100755

- index 0000000..685e00f

- --- /dev/null

- +++ b/atusb/an/get.py

- @@ -0,0 +1,31 @@

- +#!/usr/bin/python

- +

- +from tmc.scope import rigol_ds1000c

- +

- +#-800, +1600

- +s = rigol_ds1000c()

- +#s.debug = False

- +

- +pos = s.hor.pos

- +scale = s.hor.scale

- +t0 = pos-scale*s.div_hor/2

- +t1 = pos+scale*s.div_hor/2

- +print t0, t1

- +

- +#zoom = 10

- +#step = scale/s.samples_per_div/zoom

- +#print step

- +step = 4e-9

- +step = 2e-9

- +

- +w = s.wave((s.ch[0], s.ch[1]), start = t0, end = t1, step = step)

- +w[0] = 3.3-w[0]

- +w[1] = 3.3-w[1]

- +

- +s.hor.pos = pos

- +s.hor.scale = scale

- +

- +w[0].label = "D+";

- +w[1].label = "D-";

- +

- +w.save("_wv")

- diff --git a/atusb/an/plot b/atusb/an/plot

- new file mode 100755

- index 0000000..1dea789

- --- /dev/null

- +++ b/atusb/an/plot

- @@ -0,0 +1,12 @@

- +#!/bin/sh

- +#

- +# Plot output of "dec"

- +#

- +gnuplot -persist <<EOF

- +set style data lines

- +plot "_wv" using 1:(\$2-4), \

- +  "_dig" using 1:(\$2*3.3-4) lw 2, \

- +  "_wv" using 1:3, \

- +  "_dig" using 1:(\$3*3.3) lw 2, \

- +  "_clk" using 1:(\$2+1) lt 7

- +EOF

- diff --git a/atusb/atusb.c b/atusb/atusb.c

- new file mode 100644

- index 0000000..28faf40

- --- /dev/null

- +++ b/atusb/atusb.c

- @@ -0,0 +1,63 @@

- +/*

- + * fw/atusb.c - ATUSB initialization and main loop

- + *

- + * Written 2008-2011 by Werner Almesberger

- + * Copyright 2008-2011 Werner Almesberger

- + *

- + * This program is free software; you can redistribute it and/or modify

- + * it under the terms of the GNU General Public License as published by

- + * the Free Software Foundation; either version 2 of the License, or

- + * (at your option) any later version.

- + */

- +

- +

- +#include <stdint.h>

- +

- +#include <avr/io.h>

- +#include <avr/sleep.h>

- +#include <avr/interrupt.h>

- +

- +#include "usb.h"

- +

- +#include "board.h"

- +#include "sernum.h"

- +#include "spi.h"

- +#include "atusb/ep0.h"

- +

- +#ifdef DEBUG

- +#include "uart.h"

- +#endif

- +

- +

- +int main(void)

- +{

- +	board_init();

- +	board_app_init();

- +	reset_rf();

- +

- +	user_get_descriptor = sernum_get_descr;

- +

- +	/* now we should be at 8 MHz */

- +

- +#ifdef DEBUG

- +	uart_init();

- +	static FILE atben_stdout = FDEV_SETUP_STREAM(uart_write_char, NULL,

- +						     _FDEV_SETUP_WRITE);

- +	stdout = &atben_stdout;

- +#endif

- +

- +	usb_init();

- +	ep0_init();

- +#ifdef ATUSB

- +	timer_init();

- +

- +	/* move interrupt vectors to 0 */

- +	MCUCR = 1 << IVCE;

- +	MCUCR = 0;

- +#endif

- +

- +	sei();

- +

- +	while (1)

- +		sleep_mode();

- +}

- diff --git a/atusb/board.c b/atusb/board.c

- new file mode 100644

- index 0000000..c3b8d26

- --- /dev/null

- +++ b/atusb/board.c

- @@ -0,0 +1,120 @@

- +/*

- + * fw/board.c - Board-specific functions (for boot loader and application)

- + *

- + * Written 2011, 2013 by Werner Almesberger

- + * Copyright 2011, 2013 Werner Almesberger

- + *

- + * This program is free software; you can redistribute it and/or modify

- + * it under the terms of the GNU General Public License as published by

- + * the Free Software Foundation; either version 2 of the License, or

- + * (at your option) any later version.

- + */

- +

- +

- +#include <stdbool.h>

- +#include <stdint.h>

- +

- +#include <avr/io.h>

- +#include <avr/interrupt.h>

- +#include <avr/boot.h>

- +

- +#define F_CPU   8000000UL

- +#include <util/delay.h>

- +

- +#include "usb.h"

- +#include "at86rf230.h"

- +#include "board.h"

- +#include "spi.h"

- +

- +

- +uint8_t board_sernum[42] = { 42, USB_DT_STRING };

- +

- +/* ----- Register access --------------------------------------------------- */

- +

- +void change_state(uint8_t new)

- +{

- +	while ((reg_read(REG_TRX_STATUS) & TRX_STATUS_MASK) ==

- +		TRX_STATUS_TRANSITION);

- +	reg_write(REG_TRX_STATE, new);

- +}

- +

- +

- +uint8_t reg_read(uint8_t reg)

- +{

- +	uint8_t value;

- +

- +	spi_begin();

- +	spi_send(AT86RF230_REG_READ | reg);

- +	value = spi_recv();

- +	spi_end();

- +

- +	return value;

- +}

- +

- +

- +uint8_t subreg_read(uint8_t address, uint8_t mask, uint8_t position)

- +{

- +	/* Read current register value and mask out subregister. */

- +	uint8_t register_value = reg_read(address);

- +	register_value &= mask;

- +	register_value >>= position; /* Align subregister value. */

- +

- +	return register_value;

- +}

- +

- +

- +void reg_write(uint8_t reg, uint8_t value)

- +{

- +	spi_begin();

- +	spi_send(AT86RF230_REG_WRITE | reg);

- +	spi_send(value);

- +	spi_end();

- +}

- +

- +

- +void subreg_write(uint8_t address, uint8_t mask, uint8_t position, uint8_t value)

- +{

- +	/* Read current register value and mask area outside the subregister. */

- +	uint8_t register_value = reg_read(address);

- +	register_value &= ~mask;

- +

- +	/* Start preparing the new subregister value. shift in place and mask. */

- +	value <<= position;

- +	value &= mask;

- +

- +	value |= register_value; /* Set the new subregister value. */

- +

- +	/* Write the modified register value. */

- +	reg_write(address, value);

- +}

- +

- +

- +void panic(void)

- +{

- +	cli();

- +	while (1) {

- +		SET(LED);

- +		_delay_ms(100);

- +		CLR(LED);

- +		_delay_ms(100);

- +	}

- +}

- +

- +

- +static char hex(uint8_t nibble)

- +{

- +	return nibble < 10 ? '0'+nibble : 'a'+nibble-10;

- +}

- +

- +

- +void get_sernum(void)

- +{

- +	uint8_t sig;

- +	uint8_t i;

- +

- +	for (i = 0; i != 10; i++) {

- +		sig = boot_signature_byte_get(i+0xe);

- +		board_sernum[(i << 2)+2] = hex(sig >> 4);

- +		board_sernum[(i << 2)+4] = hex(sig & 0xf);

- +	}

- +}

- diff --git a/atusb/board.h b/atusb/board.h

- new file mode 100644

- index 0000000..dbcd410

- --- /dev/null

- +++ b/atusb/board.h

- @@ -0,0 +1,95 @@

- +/*

- + * fw/board.h - Board-specific functions and definitions

- + *

- + * Written 2008-2011, 2013, 2013 by Werner Almesberger

- + * Copyright 2008-2011, 2013, 2013 Werner Almesberger

- + *

- + * This program is free software; you can redistribute it and/or modify

- + * it under the terms of the GNU General Public License as published by

- + * the Free Software Foundation; either version 2 of the License, or

- + * (at your option) any later version.

- + */

- +

- +#ifndef BOARD_H

- +#define	BOARD_H

- +

- +#include <stdbool.h>

- +#include <stdint.h>

- +

- +#include <atusb/atusb.h>

- +

- +#ifdef ATUSB

- +#include "board_atusb.h"

- +#endif

- +#ifdef RZUSB

- +#include "board_rzusb.h"

- +#endif

- +#ifdef HULUSB

- +#include "board_hulusb.h"

- +#endif

- +

- +#define	SET_2(p, b)	PORT##p |= 1 << (b)

- +#define	CLR_2(p, b)	PORT##p &= ~(1 << (b))

- +#define	IN_2(p, b)	DDR##p &= ~(1 << (b))

- +#define	OUT_2(p, b)	DDR##p |= 1 << (b)

- +#define	PIN_2(p, b)	((PIN##p >> (b)) & 1)

- +

- +#define	SET_1(p, b)	SET_2(p, b)

- +#define	CLR_1(p, b)	CLR_2(p, b)

- +#define	IN_1(p, b)	IN_2(p, b)

- +#define	OUT_1(p, b)	OUT_2(p, b)

- +#define	PIN_1(p, b)	PIN_2(p, b)

- +

- +#define	SET(n)		SET_1(n##_PORT, n##_BIT)

- +#define	CLR(n)		CLR_1(n##_PORT, n##_BIT)

- +#define	IN(n)		IN_1(n##_PORT, n##_BIT)

- +#define	OUT(n)		OUT_1(n##_PORT, n##_BIT)

- +#define	PIN(n)		PIN_1(n##_PORT, n##_BIT)

- +

- +

- +#define	USB_VENDOR	ATUSB_VENDOR_ID

- +#define	USB_PRODUCT	ATUSB_PRODUCT_ID

- +

- +#define	DFU_USB_VENDOR	USB_VENDOR

- +#define	DFU_USB_PRODUCT	USB_PRODUCT

- +

- +

- +#define	BOARD_MAX_mA	40

- +

- +#ifdef BOOT_LOADER

- +#define	NUM_EPS	1

- +#else

- +#define	NUM_EPS	2

- +#endif

- +

- +#define	HAS_BOARD_SERNUM

- +

- +extern uint8_t board_sernum[42];

- +extern uint8_t irq_serial;

- +

- +

- +void reset_rf(void);

- +void reset_cpu(void);

- +uint8_t read_irq(void);

- +void slp_tr(void);

- +

- +void led(bool on);

- +void panic(void);

- +

- +uint64_t timer_read(void);

- +void timer_init(void);

- +

- +bool gpio(uint8_t port, uint8_t data, uint8_t dir, uint8_t mask, uint8_t *res);

- +void gpio_cleanup(void);

- +

- +void get_sernum(void);

- +

- +void board_app_init(void);

- +

- +uint8_t reg_read(uint8_t reg);

- +uint8_t subreg_read(uint8_t address, uint8_t mask, uint8_t position);

- +void reg_write(uint8_t reg, uint8_t value);

- +void subreg_write(uint8_t address, uint8_t mask, uint8_t position, uint8_t value);

- +void change_state(uint8_t new);

- +

- +#endif /* !BOARD_H */

- diff --git a/atusb/board_app.c b/atusb/board_app.c

- new file mode 100644

- index 0000000..1fa9bf4

- --- /dev/null

- +++ b/atusb/board_app.c

- @@ -0,0 +1,173 @@

- +/*

- + * fw/board_app.c - Board-specific functions (for the application)

- + *

- + * Written 2011, 2013 by Werner Almesberger

- + * Copyright 2011, 2013 Werner Almesberger

- + *

- + * This program is free software; you can redistribute it and/or modify

- + * it under the terms of the GNU General Public License as published by

- + * the Free Software Foundation; either version 2 of the License, or

- + * (at your option) any later version.

- + */

- +

- +

- +#include <stddef.h>

- +#include <stdbool.h>

- +#include <stdint.h>

- +

- +#include <avr/io.h>

- +#include <avr/interrupt.h>

- +

- +#define F_CPU   8000000UL

- +#include <util/delay.h>

- +

- +#include "usb.h"

- +#include "at86rf230.h"

- +#include "spi.h"

- +#include "mac.h"

- +#include "board.h"

- +

- +

- +static volatile uint32_t timer_h = 0;	/* 2^(16+32) / 8 MHz = ~1.1 years */

- +

- +

- +void reset_cpu(void)

- +{

- +	WDTCSR = 1 << WDE;

- +}

- +

- +

- +uint8_t read_irq(void)

- +{

- +	return PIN(IRQ_RF);

- +}

- +

- +

- +void slp_tr(void)

- +{

- +	SET(SLP_TR);

- +	CLR(SLP_TR);

- +}

- +

- +

- +ISR(TIMER1_OVF_vect)

- +{

- +	timer_h++;

- +}

- +

- +

- +uint64_t timer_read(void)

- +{

- +	uint32_t high;

- +	uint8_t low, mid;

- +

- +	do {

- +		if (TIFR1 & (1 << TOV1)) {

- +			TIFR1 = 1 << TOV1;

- +			timer_h++;

- +		}

- +		high = timer_h;

- +		low = TCNT1L;

- +		mid = TCNT1H;

- +	}

- +	while (TIFR1 & (1 << TOV1));

- +

- +	/*

- +	 * We need all these casts because the intermediate results are handled

- +	 * as if they were signed and thus get sign-expanded. Sounds wrong-ish.

- +	 */

- +	return (uint64_t) high << 16 | (uint64_t) mid << 8 | (uint64_t) low;

- +}

- +

- +

- +void timer_init(void)

- +{

- +	/* configure timer 1 as a free-running CLK counter */

- +

- +	TCCR1A = 0;

- +	TCCR1B = 1 << CS10;

- +

- +	/* enable timer overflow interrupt */

- +

- +	TIMSK1 = 1 << TOIE1;

- +}

- +

- +

- +bool gpio(uint8_t port, uint8_t data, uint8_t dir, uint8_t mask, uint8_t *res)

- +{

- +	EIMSK = 0; /* recover INT_RF to ATUSB_GPIO_CLEANUP or an MCU reset */

- +

- +	switch (port) {

- +	case 1:

- +		DDRB = (DDRB & ~mask) | dir;

- +		PORTB = (PORTB & ~mask) | data;

- +		break;

- +	case 2:

- +		DDRC = (DDRC & ~mask) | dir;

- +		PORTC = (PORTC & ~mask) | data;

- +		break;

- +	case 3:

- +		DDRD = (DDRD & ~mask) | dir;

- +		PORTD = (PORTD & ~mask) | data;

- +		break;

- +	default:

- +		return 0;

- +	}

- +

- +	/* disable the UART so that we can meddle with these pins as well. */

- +	spi_off();

- +	_delay_ms(1);

- +

- +	switch (port) {

- +	case 1:

- +		res[0] = PINB;

- +		res[1] = PORTB;

- +		res[2] = DDRB;

- +		break;

- +	case 2:

- +		res[0] = PINC;

- +		res[1] = PORTC;

- +		res[2] = DDRC;

- +		break;

- +	case 3:

- +		res[0] = PIND;

- +		res[1] = PORTD;

- +		res[2] = DDRD;

- +		break;

- +	}

- +

- +	return 1;

- +}

- +

- +

- +void gpio_cleanup(void)

- +{

- +	EIMSK = 1 << 0;

- +}

- +

- +

- +static void done(void *user)

- +{

- +	led(0);

- +}

- +

- +

- +uint8_t irq_serial;

- +

- +#if defined(ATUSB) || defined(HULUSB)

- +ISR(INT0_vect)

- +#endif

- +#ifdef RZUSB

- +ISR(TIMER1_CAPT_vect)

- +#endif

- +{

- +	if (mac_irq) {

- +		if (mac_irq())

- +			return;

- +	}

- +	if (eps[1].state == EP_IDLE) {

- +		led(1);

- +		irq_serial = (irq_serial+1) | 0x80;

- +		usb_send(&eps[1], &irq_serial, 1, done, NULL);

- +	}

- +}

- diff --git a/atusb/board_atusb.c b/atusb/board_atusb.c

- new file mode 100644

- index 0000000..a02fb7f

- --- /dev/null

- +++ b/atusb/board_atusb.c

- @@ -0,0 +1,162 @@

- +/*

- + * fw/board_atusb.c - ATUSB Board-specific functions (for boot loader and application)

- + *

- + * Written 2016 by Stefan Schmidt

- + * Copyright 2016 Stefan Schmidt

- + *

- + * This program is free software; you can redistribute it and/or modify

- + * it under the terms of the GNU General Public License as published by

- + * the Free Software Foundation; either version 2 of the License, or

- + * (at your option) any later version.

- + */

- +

- +

- +#include <stdbool.h>

- +#include <stdint.h>

- +

- +#include <avr/io.h>

- +#include <avr/interrupt.h>

- +#include <avr/boot.h>

- +

- +#define F_CPU   8000000UL

- +#include <util/delay.h>

- +

- +#include "usb.h"

- +#include "at86rf230.h"

- +#include "board.h"

- +#include "spi.h"

- +#include "usb/usb.h"

- +

- +static bool spi_initialized = 0;

- +

- +void reset_rf(void)

- +{

- +	/* set up all the outputs; default port value is 0 */

- +

- +	DDRB = 0;

- +	DDRC = 0;

- +	DDRD = 0;

- +	PORTB = 0;

- +	PORTC = 0;

- +	PORTD = 0;

- +

- +	OUT(LED);

- +	OUT(nRST_RF);   /* this also resets the transceiver */

- +	OUT(SLP_TR);

- +

- +	spi_init();

- +

- +	/* AT86RF231 data sheet, 12.4.13, reset pulse width: 625 ns (min) */

- +

- +	CLR(nRST_RF);

- +	_delay_us(2);

- +	SET(nRST_RF);

- +

- +	/* 12.4.14: SPI access latency after reset: 625 ns (min) */

- +

- +	_delay_us(2);

- +

- +	/* we must restore TRX_CTRL_0 after each reset (9.6.4) */

- +

- +	set_clkm();

- +}

- +

- +void led(bool on)

- +{

- +	if (on)

- +		SET(LED);

- +	else

- +		CLR(LED);

- +}

- +

- +void set_clkm(void)

- +{

- +	/* switch CLKM to 8 MHz */

- +

- +	/*

- +	 * @@@ Note: Atmel advise against changing the external clock in

- +	 * mid-flight. We should therefore switch to the RC clock first, then

- +	 * crank up the external clock, and finally switch back to the external

- +	 * clock. The clock switching procedure is described in the ATmega32U2

- +	 * data sheet in secton 8.2.2.

- +	 */

- +	spi_begin();

- +	spi_send(AT86RF230_REG_WRITE | REG_TRX_CTRL_0);

- +	spi_send(CLKM_CTRL_8MHz);

- +	spi_end();

- +}

- +

- +void board_init(void)

- +{

- +	/* Disable the watchdog timer */

- +

- +	MCUSR = 0;		/* Remove override */

- +	WDTCSR |= 1 << WDCE;	/* Enable change */

- +	WDTCSR = 1 << WDCE;	/* Disable watchdog while still enabling

- +				   change */

- +

- +	CLKPR = 1 << CLKPCE;

- +	/* We start with a 1 MHz/8 clock. Disable the prescaler. */

- +	CLKPR = 0;

- +

- +	get_sernum();

- +}

- +

- +void spi_begin(void)

- +{

- +	if (!spi_initialized)

- +		spi_init();

- +	CLR(nSS);

- +}

- +

- +void spi_off(void)

- +{

- +	spi_initialized = 0;

- +	UCSR1B = 0;

- +}

- +

- +void spi_init(void)

- +{

- +	SET(nSS);

- +	OUT(SCLK);

- +	OUT(MOSI);

- +	OUT(nSS);

- +	IN(MISO);

- +

- +	UBRR1 = 0;	/* set bit rate to zero to begin */

- +	UCSR1C = 1 << UMSEL11 | 1 << UMSEL10;

- +			/* set MSPI, MSB first, SPI data mode 0 */

- +	UCSR1B = 1 << RXEN1 | 1 << TXEN1;

- +			/* enable receiver and transmitter */

- +	UBRR1 = 0;	/* reconfirm the bit rate */

- +

- +	spi_initialized = 1;

- +}

- +

- +void usb_init(void)

- +{

- +	USBCON |= 1 << FRZCLK;		/* freeze the clock */

- +

- +	/* enable the PLL and wait for it to lock */

- +	PLLCSR &= ~(1 << PLLP2 | 1 << PLLP1 | 1 << PLLP0);

- +	PLLCSR |= 1 << PLLE;

- +	while (!(PLLCSR & (1 << PLOCK)));

- +

- +	USBCON &= ~(1 << USBE);		/* reset the controller */

- +	USBCON |= 1 << USBE;

- +

- +	USBCON &= ~(1 << FRZCLK);	/* thaw the clock */

- +

- +	UDCON &= ~(1 << DETACH);	/* attach the pull-up */

- +	UDIEN = 1 << EORSTE;		/* enable device interrupts  */

- +//	UDCON |= 1 << RSTCPU;		/* reset CPU on bus reset */

- +

- +	ep_init();

- +}

- +

- +void board_app_init(void)

- +{

- +	/* enable INT0, trigger on rising edge */

- +	EICRA = 1 << ISC01 | 1 << ISC00;

- +	EIMSK = 1 << 0;

- +}

- diff --git a/atusb/board_atusb.h b/atusb/board_atusb.h

- new file mode 100644

- index 0000000..e5974c7

- --- /dev/null

- +++ b/atusb/board_atusb.h

- @@ -0,0 +1,48 @@

- +/*

- + * fw/board_atusb.h - ATUSB Board-specific functions and definitions

- + *

- + * Written 2016 by Stefan Schmidt

- + * Copyright 2016 Stefan Schmidt

- + *

- + * This program is free software; you can redistribute it and/or modify

- + * it under the terms of the GNU General Public License as published by

- + * the Free Software Foundation; either version 2 of the License, or

- + * (at your option) any later version.

- + */

- +

- +#ifndef BOARD_ATUSB_H

- +#define	BOARD_ATUSB_H

- +

- +#include <stdbool.h>

- +#include <stdint.h>

- +

- +#define	LED_PORT	B

- +#define	LED_BIT		  6

- +#define	nRST_RF_PORT	C

- +#define	nRST_RF_BIT	  7

- +#define	SLP_TR_PORT	B

- +#define	SLP_TR_BIT	  4

- +

- +#define SCLK_PORT	D

- +#define SCLK_BIT	  5

- +#define	MOSI_PORT	D

- +#define	MOSI_BIT	  3

- +

- +#define	MISO_PORT	D

- +#define	MISO_BIT	  2

- +#define	nSS_PORT	D

- +#define	nSS_BIT		  1

- +#define	IRQ_RF_PORT	D

- +#define	IRQ_RF_BIT	  0

- +

- +#define SPI_WAIT_DONE()	while (!(UCSR1A & 1 << RXC1))

- +#define SPI_DATA	UDR1

- +

- +void set_clkm(void);

- +void board_init(void);

- +

- +void spi_begin(void);

- +void spi_off(void);

- +void spi_init(void);

- +

- +#endif /* !BOARD_H */

- diff --git a/atusb/board_hulusb.c b/atusb/board_hulusb.c

- new file mode 100644

- index 0000000..084714e

- --- /dev/null

- +++ b/atusb/board_hulusb.c

- @@ -0,0 +1,179 @@

- +/*

- + * fw/board_hulusb.c - Busware HUL Board-specific functions (for boot loader and application)

- + *

- + * Written 2017 by Filzmaier Josef

- + * Based on fw/board_rzusb written and Copyright 2016 Stefan Schmidt

- + *

- + * This program is free software; you can redistribute it and/or modify

- + * it under the terms of the GNU General Public License as published by

- + * the Free Software Foundation; either version 2 of the License, or

- + * (at your option) any later version.

- + */

- +

- +

- +#include <stdbool.h>

- +#include <stdint.h>

- +

- +#include <avr/io.h>

- +#include <avr/interrupt.h>

- +#include <avr/boot.h>

- +

- +#define F_CPU   8000000UL

- +#include <util/delay.h>

- +

- +#include "usb.h"

- +#include "at86rf230.h"

- +#include "board.h"

- +#include "spi.h"

- +#include "usb/usb.h"

- +

- +static bool spi_initialized = 0;

- +

- +void reset_rf(void)

- +{

- +	/* set up all the outputs; default port value is 0 */

- +

- +	DDRB = 0;

- +	DDRC = 0;

- +	DDRD = 0;

- +	PORTB = 0;

- +	PORTC = 0;

- +	PORTD = 0;

- +

- +	OUT(LED_RED);

- +	OUT(LED_GREEN);

- +	SET(LED_RED); /* Leds are active low on HULUSB board */

- +	CLR(LED_GREEN); /* Green Led indicates the dongle is running */

- +	OUT(nRST_RF);   /* this also resets the transceiver */

- +	OUT(SLP_TR);

- +

- +	spi_init();

- +

- +	/* AT86RF212 data sheet, Appendix B, p166 Power-On Reset procedure */

- +	/*-----------------------------------------------------------------*/

- +	CLR(SLP_TR);

- +	SET(nRST_RF);

- +	SET(nSS);

- +	_delay_us(400);

- +

- +	CLR(nRST_RF);

- +	_delay_us(2);

- +	SET(nRST_RF);

- +

- +	/* 5.1.4.5: Wait t10: 625 ns (min) */

- +

- +	_delay_us(2);

- +

- +	reg_write(REG_TRX_CTRL_0, 0x19);

- +

- +	change_state(TRX_CMD_FORCE_TRX_OFF);

- +	/*-----------------------------------------------------------------*/

- +

- +	/* we must restore TRX_CTRL_0 after each reset (7.7.4) */

- +

- +	set_clkm();

- +}

- +

- +void led_red(bool on) {

- +	if (on)

- +		CLR(LED_RED);

- +	else

- +		SET(LED_RED);

- +}

- +

- +void led_green(bool on) {

- +	if (on)

- +		CLR(LED_GREEN);

- +	else

- +		SET(LED_GREEN);

- +}

- +

- +void led(bool on)

- +{

- +	led_red(on);

- +}

- +

- +void set_clkm(void)

- +{

- +	/* CLKM is not connected on BUSWARE HUL and therefore it is running in

- +	 * async mode. */

- +	reg_write(REG_TRX_CTRL_0, 0x00);

- +

- +	/* TX_AUTO_CRC_ON, default disabled */

- +	subreg_write(SR_TX_AUTO_CRC_ON, 1);

- +}

- +

- +void board_init(void)

- +{

- +	/* Disable the watchdog timer */

- +

- +	MCUSR = 0;		/* Remove override */

- +	WDTCSR |= 1 << WDCE;	/* Enable change */

- +	WDTCSR = 1 << WDCE;	/* Disable watchdog while still enabling

- +	change */

- +

- +	CLKPR = 1 << CLKPCE;

- +	/* We start with a 16 MHz/8 clock. Put the prescaler to 2. */

- +	CLKPR = 1 << CLKPS0;

- +

- +	get_sernum();

- +}

- +

- +void spi_begin(void)

- +{

- +	if (!spi_initialized)

- +		spi_init();

- +	CLR(nSS);

- +}

- +

- +void spi_off(void)

- +{

- +	spi_initialized = 0;

- +	SPCR &= ~(1 << SPE);

- +}

- +

- +void spi_init(void)

- +{

- +	SET(nSS);

- +	OUT(SCLK);

- +	OUT(MOSI);

- +	OUT(nSS);

- +	IN(MISO);

- +

- +	SPCR = (1 << SPE) | (1 << MSTR);

- +	SPSR = (1 << SPI2X);

- +

- +	spi_initialized = 1;

- +}

- +

- +void usb_init(void)

- +{

- +	USBCON |= 1 << FRZCLK;		/* freeze the clock */

- +

- +	/* enable the PLL and wait for it to lock */

- +	/* TODO sheet page 50 For Atmel AT90USB128x only. Do not use with Atmel AT90USB64x. */

- +	/*  FOR 8 XTAL Mhz only!!! */

- +	PLLCSR = ((1 << PLLP1) | (1 << PLLP0));

- +	PLLCSR |= 1 << PLLE;

- +	while (!(PLLCSR & (1 << PLOCK)));

- +

- +	UHWCON |= (1 << UVREGE);

- +

- +	USBCON &= ~((1 << USBE) | (1 << OTGPADE));		/* reset the controller */

- +	USBCON |= ((1 << USBE) | (1 << OTGPADE));

- +

- +	USBCON &= ~(1 << FRZCLK);	/* thaw the clock */

- +

- +	UDCON &= ~(1 << DETACH);	/* attach the pull-up */

- +	UDIEN = 1 << EORSTE;		/* enable device interrupts  */

- +	//	UDCON |= 1 << RSTCPU;		/* reset CPU on bus reset */

- +

- +	ep_init();

- +}

- +

- +void board_app_init(void)

- +{

- +	/* enable INT0, trigger on rising edge */

- +	EICRA = 1 << ISC01 | 1 << ISC00;

- +	EIMSK = 1 << INT0;

- +}

- diff --git a/atusb/board_hulusb.h b/atusb/board_hulusb.h

- new file mode 100644

- index 0000000..a1dadf0

- --- /dev/null

- +++ b/atusb/board_hulusb.h

- @@ -0,0 +1,66 @@

- +/*

- + * fw/board_hulusb.h - Busware HUL Board-specific functions (for boot loader and application)

- + *

- + * Written 2017 by Filzmaier Josef

- + * Based on fw/board_rzusb written and Copyright 2016 Stefan Schmidt

- + *

- + * This program is free software; you can redistribute it and/or modify

- + * it under the terms of the GNU General Public License as published by

- + * the Free Software Foundation; either version 2 of the License, or

- + * (at your option) any later version.

- + */

- +

- +#ifndef BOARD_HULUSB_H

- +#define	BOARD_HULUSB_H

- +

- +#include <stdbool.h>

- +#include <stdint.h>

- +

- +#define LED_RED_PORT		A

- +#define LED_GREEN_PORT		A

- +#define LED_RED_BIT		3

- +#define LED_GREEN_BIT 		4

- +#define LED_PORT		LED_RED_PORT

- +#define LED_BIT		  	LED_RED_BIT

- +

- +#define nRST_RF_PORT		B

- +#define nRST_RF_BIT	  	5

- +#define SLP_TR_PORT		B

- +#define SLP_TR_BIT	  	4

- +

- +#define SCLK_PORT		B

- +#define SCLK_BIT	  	1

- +#define MOSI_PORT		B

- +#define MOSI_BIT	  	2

- +

- +#define MISO_PORT		B

- +#define MISO_BIT	  	3

- +#define nSS_PORT		B

- +#define nSS_BIT		  	0

- +#define IRQ_RF_PORT		D

- +#define IRQ_RF_BIT	  	4

- +

- +#define SR_TX_AUTO_CRC_ON	0x04, 0x20, 5

- +#define SR_CHANNEL		0x08, 0x1f, 0

- +

- +#define RG_CC_CTRL_1		(0x14)

- +

- +#define SPI_WAIT_DONE()	while ((SPSR & (1 << SPIF)) == 0)

- +#define SPI_DATA	SPDR

- +

- +void set_clkm(void);

- +void board_init(void);

- +

- +void led_red(bool on);

- +void led_green(bool on);

- +

- +void spi_begin(void);

- +void spi_off(void);

- +void spi_init(void);

- +

- +#ifdef DEBUG

- +void printStatus(void);

- +#define PRINT_STATUS() printStatus()

- +#endif

- +

- +#endif /* !BOARD_HULUSB_H */

- diff --git a/atusb/board_rzusb.c b/atusb/board_rzusb.c

- new file mode 100644

- index 0000000..e83d6fa

- --- /dev/null

- +++ b/atusb/board_rzusb.c

- @@ -0,0 +1,169 @@

- +/*

- + * fw/board_rzusb.c - RZUSB Board-specific functions (for boot loader and application)

- + *

- + * Written 2016 by Stefan Schmidt

- + * Copyright 2016 Stefan Schmidt

- + *

- + * This program is free software; you can redistribute it and/or modify

- + * it under the terms of the GNU General Public License as published by

- + * the Free Software Foundation; either version 2 of the License, or

- + * (at your option) any later version.

- + */

- +

- +

- +#include <stdbool.h>

- +#include <stdint.h>

- +

- +#include <avr/io.h>

- +#include <avr/interrupt.h>

- +#include <avr/boot.h>

- +

- +#define F_CPU   8000000UL

- +#include <util/delay.h>

- +

- +#include "usb.h"

- +#include "at86rf230.h"

- +#include "board.h"

- +#include "spi.h"

- +#include "usb/usb.h"

- +

- +static bool spi_initialized = 0;

- +

- +void reset_rf(void)

- +{

- +	/* set up all the outputs; default port value is 0 */

- +

- +	DDRB = 0;

- +	DDRC = 0;

- +	DDRD = 0;

- +	PORTB = 0;

- +	PORTC = 0;

- +	PORTD = 0;

- +

- +	OUT(LED);

- +	OUT(nRST_RF);   /* this also resets the transceiver */

- +	OUT(SLP_TR);

- +

- +	spi_init();

- +

- +	/* AT86RF231 data sheet, 12.4.13, reset pulse width: 625 ns (min) */

- +

- +	CLR(nRST_RF);

- +	_delay_us(2);

- +	SET(nRST_RF);

- +

- +	/* 12.4.14: SPI access latency after reset: 625 ns (min) */

- +

- +	_delay_us(2);

- +

- +	/* we must restore TRX_CTRL_0 after each reset (9.6.4) */

- +

- +	set_clkm();

- +}

- +

- +void led(bool on)

- +{

- +	if (on)

- +		SET(LED);

- +	else

- +		CLR(LED);

- +}

- +

- +void set_clkm(void)

- +{

- +	/* switch CLKM to 8 MHz */

- +

- +	/*

- +	 * @@@ Note: Atmel advise against changing the external clock in

- +	 * mid-flight. We should therefore switch to the RC clock first, then

- +	 * crank up the external clock, and finally switch back to the external

- +	 * clock. The clock switching procedure is described in the ATmega32U2

- +	 * data sheet in secton 8.2.2.

- +	 */

- +	spi_begin();

- +	spi_send(AT86RF230_REG_WRITE | REG_TRX_CTRL_0);

- +	spi_send(0x10);

- +	spi_end();

- +

- +	/* TX_AUTO_CRC_ON, default disabled */

- +	spi_begin();

- +	spi_send(AT86RF230_REG_WRITE | 0x05);

- +	spi_send(0x80);

- +	spi_end();

- +}

- +

- +void board_init(void)

- +{

- +	/* Disable the watchdog timer */

- +

- +	MCUSR = 0;		/* Remove override */

- +	WDTCSR |= 1 << WDCE;	/* Enable change */

- +	WDTCSR = 1 << WDCE;	/* Disable watchdog while still enabling

- +				   change */

- +

- +	CLKPR = 1 << CLKPCE;

- +	/* We start with a 16 MHz/8 clock. Put the prescaler to 2. */

- +	CLKPR = 1 << CLKPS0;

- +

- +	get_sernum();

- +}

- +

- +void spi_begin(void)

- +{

- +	if (!spi_initialized)

- +		spi_init();

- +	CLR(nSS);

- +}

- +

- +void spi_off(void)

- +{

- +	spi_initialized = 0;

- +	SPCR &= ~(1 << SPE);

- +}

- +

- +void spi_init(void)

- +{

- +	SET(nSS);

- +	OUT(SCLK);

- +	OUT(MOSI);

- +	OUT(nSS);

- +	IN(MISO);

- +

- +	SPCR = (1 << SPE) | (1 << MSTR);

- +	SPSR = (1 << SPI2X);

- +

- +	spi_initialized = 1;

- +}

- +

- +void usb_init(void)

- +{

- +	USBCON |= 1 << FRZCLK;		/* freeze the clock */

- +

- +	/* enable the PLL and wait for it to lock */

- +	/* TODO sheet page 50 For Atmel AT90USB128x only. Do not use with Atmel AT90USB64x. */

- +	/*  FOR 8 XTAL Mhz only!!! */

- +	PLLCSR = ((1 << PLLP1) | (1 << PLLP0));

- +	PLLCSR |= 1 << PLLE;

- +	while (!(PLLCSR & (1 << PLOCK)));

- +

- +	UHWCON |= (1 << UVREGE);

- +

- +	USBCON &= ~((1 << USBE) | (1 << OTGPADE));		/* reset the controller */

- +	USBCON |= ((1 << USBE) | (1 << OTGPADE));

- +

- +	USBCON &= ~(1 << FRZCLK);	/* thaw the clock */

- +

- +	UDCON &= ~(1 << DETACH);	/* attach the pull-up */

- +	UDIEN = 1 << EORSTE;		/* enable device interrupts  */

- +//	UDCON |= 1 << RSTCPU;		/* reset CPU on bus reset */

- +

- +	ep_init();

- +}

- +

- +void board_app_init(void)

- +{

- +	/* enable timer input capture 1, trigger on rising edge */

- +	TCCR1B = (1 << ICES1);

- +	TIFR1 = (1 << ICF1);

- +	TIMSK1 = (1 << ICIE1);

- +}

- diff --git a/atusb/board_rzusb.h b/atusb/board_rzusb.h

- new file mode 100644

- index 0000000..c2e518f

- --- /dev/null

- +++ b/atusb/board_rzusb.h

- @@ -0,0 +1,48 @@

- +/*

- + * fw/board_rzusb.h - RZUSB Board-specific functions and definitions

- + *

- + * Written 2016 by Stefan Schmidt

- + * Copyright 2016 Stefan Schmidt

- + *

- + * This program is free software; you can redistribute it and/or modify

- + * it under the terms of the GNU General Public License as published by

- + * the Free Software Foundation; either version 2 of the License, or

- + * (at your option) any later version.

- + */

- +

- +#ifndef BOARD_RZUSB_H

- +#define	BOARD_RZUSB_H

- +

- +#include <stdbool.h>

- +#include <stdint.h>

- +

- +#define	LED_PORT	D

- +#define	LED_BIT		  7

- +#define	nRST_RF_PORT	B

- +#define	nRST_RF_BIT	  5

- +#define	SLP_TR_PORT	B

- +#define	SLP_TR_BIT	  4

- +

- +#define SCLK_PORT	B

- +#define SCLK_BIT	  1

- +#define	MOSI_PORT	B

- +#define	MOSI_BIT	  2

- +

- +#define	MISO_PORT	B

- +#define	MISO_BIT	  3

- +#define	nSS_PORT	B

- +#define	nSS_BIT		  0

- +#define	IRQ_RF_PORT	D

- +#define	IRQ_RF_BIT	  4

- +

- +#define SPI_WAIT_DONE()	while ((SPSR & (1 << SPIF)) == 0)

- +#define SPI_DATA	SPDR

- +

- +void set_clkm(void);

- +void board_init(void);

- +

- +void spi_begin(void);

- +void spi_off(void);

- +void spi_init(void);

- +

- +#endif /* !BOARD_H */

- diff --git a/atusb/boot.c b/atusb/boot.c

- new file mode 100644

- index 0000000..6826ac6

- --- /dev/null

- +++ b/atusb/boot.c

- @@ -0,0 +1,77 @@

- +/*

- + * fw/boot.c - DFU boot loader for ATUSB

- + *

- + * Written 2008-2011 by Werner Almesberger

- + * Copyright 2008-2011 Werner Almesberger

- + *

- + * This program is free software; you can redistribute it and/or modify

- + * it under the terms of the GNU General Public License as published by

- + * the Free Software Foundation; either version 2 of the License, or

- + * (at your option) any later version.

- + */

- +

- +

- +#include <stdint.h>

- +

- +#include <avr/io.h>

- +#include <avr/interrupt.h>

- +#include <avr/pgmspace.h>

- +

- +#define F_CPU   8000000UL

- +#include <util/delay.h>

- +

- +#include "usb.h"

- +#include "dfu.h"

- +

- +#include "board.h"

- +#include "spi.h"

- +#include "atusb/ep0.h"

- +

- +

- +#define	MS_TO_LOOPS(ms) ((uint32_t) (ms)*335)

- +

- +

- +static void (*run_payload)(void) = 0;

- +

- +

- +int main(void)

- +{

- +	/*

- +	 * pgm_read_byte gets cached and there doesn't seem to be any other

- +	 * way to dissuade gcc from doing this.

- +	 */

- +	volatile int zero = 0;

- +	uint32_t loop = 0;

- +

- +	board_init();

- +	reset_rf();

- +

- +	/* now we should be at 8 MHz */

- +

- +	usb_init();

- +	dfu_init();

- +

- +	/* move interrupt vectors to the boot loader */

- +	MCUCR = 1 << IVCE;

- +	MCUCR = 1 << IVSEL;

- +

- +	sei();

- +

- +	led(1);

- +

- +	while (loop != MS_TO_LOOPS(2500)) {

- +		if (dfu.state == dfuIDLE && pgm_read_byte(zero) != 0xff)

- +			loop++;

- +		else

- +			loop = 0;

- +	}

- +

- +	led(0);

- +

- +	cli();

- +

- +	usb_reset();

- +	run_payload();

- +

- +	while (1);	/* not reached */

- +}

- diff --git a/atusb/descr.c b/atusb/descr.c

- new file mode 100644

- index 0000000..f96b0ee

- --- /dev/null

- +++ b/atusb/descr.c

- @@ -0,0 +1,104 @@

- +/*

- + * fw/descr.c - USB descriptors

- + *

- + * Written 2008-2011, 2014 by Werner Almesberger

- + * Copyright 2008-2011, 2014 Werner Almesberger

- + *

- + * This program is free software; you can redistribute it and/or modify

- + * it under the terms of the GNU General Public License as published by

- + * the Free Software Foundation; either version 2 of the License, or

- + * (at your option) any later version.

- + */

- +

- +

- +#include "usb.h"

- +#include "dfu.h"

- +#include "board.h"

- +

- +

- +#define LE(x) ((uint16_t) (x) & 0xff), ((uint16_t) (x) >> 8)

- +

- +/*

- + * Device descriptor

- + */

- +

- +const uint8_t device_descriptor[18] = {

- +	18,			/* bLength */

- +	USB_DT_DEVICE,		/* bDescriptorType */

- +	LE(0x200),		/* bcdUSB */

- +	USB_CLASS_VENDOR_SPEC,	/* bDeviceClass */

- +	0x00,			/* bDeviceSubClass */

- +	0x00,			/* bDeviceProtocol */

- +	EP0_SIZE,		/* bMaxPacketSize */

- +	LE(USB_VENDOR),		/* idVendor */

- +	LE(USB_PRODUCT),	/* idProduct */

- +	LE(0x0001),		/* bcdDevice */

- +	0,			/* iManufacturer */

- +	0,			/* iProduct */

- +#ifdef HAS_BOARD_SERNUM

- +	1,			/* iSerialNumber */

- +#else

- +	0,			/* iSerialNumber */

- +#endif

- +	1			/* bNumConfigurations */

- +};

- +

- +

- +/*

- + * Our configuration

- + *

- + * We're always bus-powered.

- + */

- +

- +const uint8_t config_descriptor[] = {

- +	9,			/* bLength */

- +	USB_DT_CONFIG,		/* bDescriptorType */

- +#if 0

- +	LE(9+9+7+7),		/* wTotalLength */

- +#else

- +	LE(9+9+7+9),		/* wTotalLength */

- +#endif

- +	2,			/* bNumInterfaces */

- +	1,			/* bConfigurationValue (> 0 !) */

- +	0,			/* iConfiguration */

- +	USB_ATTR_BUS_POWERED,	/* bmAttributes */

- +	((BOARD_MAX_mA)+1)/2,	/* bMaxPower */

- +

- +	/* Interface #0 */

- +

- +	9,			/* bLength */

- +	USB_DT_INTERFACE,	/* bDescriptorType */

- +	0,			/* bInterfaceNumber */

- +	0,			/* bAlternateSetting */

- +	1,			/* bNumEndpoints */

- +	USB_CLASS_VENDOR_SPEC,	/* bInterfaceClass */

- +	0,			/* bInterfaceSubClass */

- +	0,			/* bInterfaceProtocol */

- +	0,			/* iInterface */

- +

- +#if 0

- +	/* EP OUT */

- +

- +	7,			/* bLength */

- +	USB_DT_ENDPOINT,	/* bDescriptorType */

- +	0x01,			/* bEndPointAddress */

- +	0x02,			/* bmAttributes (bulk) */

- +	LE(EP1_SIZE),		/* wMaxPacketSize */

- +	0,			/* bInterval */

- +#endif

- +

- +#if 1

- +	/* EP IN */

- +

- +	7,			/* bLength */

- +	USB_DT_ENDPOINT,	/* bDescriptorType */

- +	0x81,			/* bEndPointAddress */

- +	0x02,			/* bmAttributes (bulk) */

- +	LE(EP1_SIZE),		/* wMaxPacketSize */

- +	0,			/* bInterval */

- +#endif

- +

- +	/* Interface #1 */

- +

- +	DFU_ITF_DESCR(1, 0, dfu_proto_runtime, 0)

- +};

- diff --git a/atusb/ep0.c b/atusb/ep0.c

- new file mode 100644

- index 0000000..fa43f3b

- --- /dev/null

- +++ b/atusb/ep0.c

- @@ -0,0 +1,338 @@

- +/*

- + * fw/ep0.c - EP0 extension protocol

- + *

- + * Written 2008-2011, 2013 by Werner Almesberger

- + * Copyright 2008-2011, 2013 Werner Almesberger

- + * Copyright 2015-2016 Stefan Schmidt

- + *

- + * This program is free software; you can redistribute it and/or modify

- + * it under the terms of the GNU General Public License as published by

- + * the Free Software Foundation; either version 2 of the License, or

- + * (at your option) any later version.

- + */

- +

- +

- +#include <stdbool.h>

- +#include <stdint.h>

- +#include <string.h>

- +

- +#include <avr/io.h>

- +#include <avr/eeprom.h>

- +

- +#define F_CPU   8000000UL

- +#include <util/delay.h>

- +

- +#ifndef NULL

- +#define NULL 0

- +#endif

- +

- +#include "usb.h"

- +#include "dfu.h"

- +

- +#include "at86rf230.h"

- +#include "atusb/ep0.h"

- +#include "version.h"

- +#include "board.h"

- +#include "sernum.h"

- +#include "spi.h"

- +#include "mac.h"

- +

- +#ifdef ATUSB

- +#define	HW_TYPE		ATUSB_HW_TYPE_110131

- +#endif

- +

- +#ifdef RZUSB

- +#define	HW_TYPE		ATUSB_HW_TYPE_RZUSB

- +#endif

- +

- +#ifdef HULUSB

- +#define HW_TYPE		ATUSB_HW_TYPE_HULUSB

- +#endif

- +

- +#ifdef DEBUG

- +#include "uart.h"

- +#include <stdio.h>

- +#define debug(FORMAT,args...) printf(FORMAT,##args)

- +#define error(FORMAT,args...) printf(FORMAT,##args)

- +#else

- +#define debug(...)

- +#define error(...)

- +#endif

- +

- +

- +static const uint8_t id[] = { EP0ATUSB_MAJOR, EP0ATUSB_MINOR, HW_TYPE };

- +static uint8_t buf[MAX_PSDU+3]; /* command, PHDR, and LQI */

- +static uint8_t size;

- +

- +

- +static void do_eeprom_write(void *user)

- +{

- +	int i;

- +

- +	for (i = 0; i < size; i++)

- +		eeprom_update_byte((uint8_t*)i, buf[i]);

- +}

- +

- +static void do_buf_write(void *user)

- +{

- +	uint8_t i;

- +

- +	spi_begin();

- +	for (i = 0; i != size; i++)

- +		spi_send(buf[i]);

- +	spi_end();

- +}

- +

- +

- +#define	BUILD_OFFSET	7	/* '#' plus "65535" plus ' ' */

- +

- +

- +static bool my_setup(const struct setup_request *setup)

- +{

- +	uint16_t req = setup->bmRequestType | setup->bRequest << 8;

- +	unsigned tmp;

- +	uint8_t i;

- +	uint64_t tmp64;

- +

- +	switch (req) {

- +	case ATUSB_FROM_DEV(ATUSB_ID):

- +		debug("ATUSB_ID\n");

- +		if (setup->wLength > 3)

- +			return 0;

- +		usb_send(&eps[0], id, setup->wLength, NULL, NULL);

- +		return 1;

- +	case ATUSB_FROM_DEV(ATUSB_BUILD):

- +		debug("ATUSB_BUILD\n");

- +		tmp = build_number;

- +		for (i = BUILD_OFFSET-2; tmp; i--) {

- +			buf[i] = (tmp % 10)+'0';

- +			tmp /= 10;

- +		}

- +		buf[i] = '#';

- +		buf[BUILD_OFFSET-1] = ' ';

- +		for (size = 0; build_date[size]; size++)

- +			buf[BUILD_OFFSET+size] = build_date[size];

- +		size += BUILD_OFFSET-i;

- +		if (size > setup->wLength)

- +			return 0;

- +		usb_send(&eps[0], buf+i, size, NULL, NULL);

- +		return 1;

- +

- +	case ATUSB_TO_DEV(ATUSB_RESET):

- +		debug("ATUSB_RESET\n");

- +		reset_cpu();

- +		while (1);

- +

- +	case ATUSB_TO_DEV(ATUSB_RF_RESET):

- +		debug("ATUSB_RF_RESET\n");

- +		reset_rf();

- +		mac_reset();

- +		//ep_send_zlp(EP_CTRL);

- +		return 1;

- +

- +	case ATUSB_FROM_DEV(ATUSB_POLL_INT):

- +		debug("ATUSB_POLL_INT\n");

- +		if (setup->wLength < 1)

- +			return 0;

- +		*buf = read_irq();

- +		usb_send(&eps[0], buf, 1, NULL, NULL);

- +		return 1;

- +

- +	case ATUSB_FROM_DEV(ATUSB_TIMER):

- +		debug("ATUSB_TIMER\n");

- +		size = setup->wLength;

- +		if (size > sizeof(tmp64))

- +			size = sizeof(tmp64);

- +		tmp64 = timer_read();

- +		memcpy(buf, &tmp64, sizeof(tmp64));

- +		usb_send(&eps[0], buf, size, NULL, NULL);

- +		return 1;

- +

- +	case ATUSB_FROM_DEV(ATUSB_GPIO):

- +		debug("ATUSB_GPIO\n");

- +		if (setup->wLength < 3)

- +			return 0;

- +		if (!gpio(setup->wIndex, setup->wValue, setup->wValue >> 8,

- +		    setup->wIndex >> 8, buf))

- +			return 0;

- +		usb_send(&eps[0], buf, 3, NULL, NULL);

- +		return 1;

- +	case ATUSB_TO_DEV(ATUSB_GPIO_CLEANUP):

- +		gpio_cleanup();

- +		return 1;

- +

- +	case ATUSB_TO_DEV(ATUSB_SLP_TR):

- +		debug("ATUSB_SLP_TR\n");

- +		slp_tr();

- +		return 1;

- +

- +	case ATUSB_TO_DEV(ATUSB_REG_WRITE):

- +		debug("ATUSB_REG_WRITE\n");

- +		spi_begin();

- +		spi_send(AT86RF230_REG_WRITE | setup->wIndex);

- +		spi_send(setup->wValue);

- +		spi_end();

- +		//ep_send_zlp(EP_CTRL);

- +		return 1;

- +	case ATUSB_FROM_DEV(ATUSB_REG_READ):

- +		debug("ATUSB_REG_READ\n");

- +		spi_begin();

- +		spi_send(AT86RF230_REG_READ | setup->wIndex);

- +		*buf = spi_recv();

- +		spi_end();

- +		usb_send(&eps[0], buf, 1, NULL, NULL);

- +		return 1;

- +

- +	case ATUSB_TO_DEV(ATUSB_BUF_WRITE):

- +		debug("ATUSB_BUF_WRITE\n");

- +		if (setup->wLength < 1)

- +			return 0;

- +		if (setup->wLength > MAX_PSDU)

- +			return 0;

- +		buf[0] = AT86RF230_BUF_WRITE;

- +		buf[1] = setup->wLength;

- +		size = setup->wLength+2;

- +		usb_recv(&eps[0], buf+2, setup->wLength, do_buf_write, NULL);

- +		return 1;

- +	case ATUSB_FROM_DEV(ATUSB_BUF_READ):

- +		debug("ATUSB_BUF_READ\n");

- +		if (setup->wLength < 2)			/* PHR+LQI */

- +			return 0;

- +		if (setup->wLength > MAX_PSDU+2)	/* PHR+PSDU+LQI */

- +			return 0;

- +		spi_begin();

- +		spi_send(AT86RF230_BUF_READ);

- +		size = spi_recv();

- +		if (size >= setup->wLength)

- +			size = setup->wLength-1;

- +		for (i = 0; i != size+1; i++)

- +			buf[i] = spi_recv();

- +		spi_end();

- +		usb_send(&eps[0], buf, size+1, NULL, NULL);

- +		return 1;

- +

- +	case ATUSB_TO_DEV(ATUSB_SRAM_WRITE):

- +		debug("ATUSB_SRAM_WRITE\n");

- +		if (setup->wIndex > SRAM_SIZE)

- +			return 0;

- +		if (setup->wIndex+setup->wLength > SRAM_SIZE)

- +			return 0;

- +		buf[0] = AT86RF230_SRAM_WRITE;

- +		buf[1] = setup->wIndex;

- +		size = setup->wLength+2;

- +		usb_recv(&eps[0], buf+2, setup->wLength, do_buf_write, NULL);

- +		return 1;

- +	case ATUSB_FROM_DEV(ATUSB_SRAM_READ):

- +		debug("ATUSB_SRAM_READ\n");

- +		if (setup->wIndex > SRAM_SIZE)

- +			return 0;

- +		if (setup->wIndex+setup->wLength > SRAM_SIZE)

- +			return 0;

- +		spi_begin();

- +		spi_send(AT86RF230_SRAM_READ);

- +		spi_send(setup->wIndex);

- +		for (i = 0; i != setup->wLength; i++)

- +			buf[i] = spi_recv();

- +		spi_end();

- +		usb_send(&eps[0], buf, setup->wLength, NULL, NULL);

- +		return 1;

- +

- +	case ATUSB_TO_DEV(ATUSB_SPI_WRITE):

- +		size = setup->wLength+2;

- +		if (size > sizeof(buf))

- +			return 0;

- +		buf[0] = setup->wValue;

- +		buf[1] = setup->wIndex;

- +		if (setup->wLength)

- +			usb_recv(&eps[0], buf+2, setup->wLength,

- +			    do_buf_write, NULL);

- +		else

- +			do_buf_write(NULL);

- +		return 1;

- +	case ATUSB_FROM_DEV(ATUSB_SPI_WRITE2_SYNC):

- +		spi_begin();

- +		spi_send(setup->wValue);

- +		spi_send(setup->wIndex);

- +		spi_end();

- +		buf[0] = irq_serial;

- +		if (setup->wLength)

- +			usb_send(&eps[0], buf, 1, NULL, NULL);

- +		return 1;

- +

- +	case ATUSB_FROM_DEV(ATUSB_SPI_READ1):

- +	case ATUSB_FROM_DEV(ATUSB_SPI_READ2):

- +		spi_begin();

- +		spi_send(setup->wValue);

- +		if (req == ATUSB_FROM_DEV(ATUSB_SPI_READ2))

- +			spi_send(setup->wIndex);

- +		for (i = 0; i != setup->wLength; i++)

- +			buf[i] = spi_recv();

- +		spi_end();

- +		usb_send(&eps[0], buf, setup->wLength, NULL, NULL);

- +		return 1;

- +

- +	case ATUSB_TO_DEV(ATUSB_RX_MODE):

- +		return mac_rx(setup->wValue);

- +	case ATUSB_TO_DEV(ATUSB_TX):

- +		return mac_tx(setup->wValue, setup->wIndex, setup->wLength);

- +	case ATUSB_TO_DEV(ATUSB_EUI64_WRITE):

- +		debug("ATUSB_EUI64_WRITE\n");

- +		usb_recv(&eps[0], buf, setup->wLength, do_eeprom_write, NULL);

- +		_delay_ms(100);

- +		reset_cpu();

- +		return 1;

- +

- +	case ATUSB_FROM_DEV(ATUSB_EUI64_READ):

- +		debug("ATUSB_EUI64_READ\n");

- +		eeprom_read_block(buf, (const void*)0, 8);

- +		usb_send(&eps[0], buf, 8, NULL, NULL);

- +		return 1;

- +

- +	default:

- +		error("Unrecognized SETUP: 0x%02x 0x%02x ...\n",

- +		    setup->bmRequestType, setup->bRequest);

- +		return 0;

- +	}

- +}

- +

- +

- +static bool my_dfu_setup(const struct setup_request *setup)

- +{

- +	switch (setup->bmRequestType | setup->bRequest << 8) {

- +	case DFU_TO_DEV(DFU_DETACH):

- +		/* @@@ should use wTimeout */

- +		dfu.state = appDETACH;

- +		return 1;

- +	default:

- +		return dfu_setup_common(setup);

- +	}

- +}

- +

- +

- +static void my_set_interface(int nth)

- +{

- +	if (nth) {

- +		user_setup = my_dfu_setup;

- +		user_get_descriptor = dfu_my_descr;

- +		dfu.state = appIDLE;

- +	} else {

- +		user_setup = my_setup;

- +		user_get_descriptor = sernum_get_descr;

- +	}

- +}

- +

- +

- +static void my_reset(void)

- +{

- +	if (dfu.state == appDETACH)

- +		reset_cpu();

- +}

- +

- +

- +void ep0_init(void)

- +{

- +	user_setup = my_setup;

- +	user_set_interface = my_set_interface;

- +	my_set_interface(0);

- +	user_reset = my_reset;

- +}

- diff --git a/atusb/flash.c b/atusb/flash.c

- new file mode 100644

- index 0000000..1f8e59d

- --- /dev/null

- +++ b/atusb/flash.c

- @@ -0,0 +1,97 @@

- +/*

- + * fw/flash.c - Board-specific flash functions

- + *

- + * Written 2011, 2013-2015 by Werner Almesberger

- + * Copyright 2011, 2013-2015 Werner Almesberger

- + *

- + * This program is free software; you can redistribute it and/or modify

- + * it under the terms of the GNU General Public License as published by

- + * the Free Software Foundation; either version 2 of the License, or

- + * (at your option) any later version.

- + */

- +

- +

- +#include <stdbool.h>

- +#include <stdint.h>

- +

- +#include <avr/boot.h>

- +#include <avr/pgmspace.h>

- +

- +#include "dfu.h"

- +#include "board.h"

- +

- +

- +static uint32_t payload;

- +

- +

- +static void flash_start(void)

- +{

- +	payload = 0;

- +}

- +

- +

- +static bool flash_can_write(uint16_t size)

- +{

- +	return payload+size <= BOOT_ADDR;

- +}

- +

- +

- +static void flash_write(const uint8_t *buf, uint16_t size)

- +{

- +	static uint8_t last;

- +	const uint8_t *p;

- +

- +	for (p = buf; p != buf+size; p++) {

- +		if (!(payload & (SPM_PAGESIZE-1))) {

- +			boot_page_erase(payload);

- +			boot_spm_busy_wait();

- +		}

- +

- +		if (payload & 1)

- +			boot_page_fill(payload, last | (*p << 8));

- +		else

- +			last = *p;

- +		payload++;

- +

- +		if (!(payload & (SPM_PAGESIZE-1))) {

- +			boot_page_write(payload-SPM_PAGESIZE);

- +			boot_spm_busy_wait();

- +		}

- +	}

- +}

- +

- +

- +static void flash_end_write(void)

- +{

- +	if (payload & (SPM_PAGESIZE-1)) {

- +		boot_page_write(payload & ~(SPM_PAGESIZE-1));

- +		boot_spm_busy_wait();

- +	}

- +	boot_rww_enable();

- +}

- +

- +

- +static uint16_t flash_read(uint8_t *buf, uint16_t size)

- +{

- +	uint16_t got = 0;

- +

- +	while (size && payload != (uint32_t) FLASHEND+1) {

- +		*buf++ = pgm_read_byte(payload);

- +		payload++;

- +		size--;

- +		got++;

- +	}

- +	return got;

- +}

- +

- +

- +static const struct dfu_flash_ops flash_ops = {

- +	.start		= flash_start,

- +	.can_write	= flash_can_write,

- +	.write		= flash_write,

- +	.end_write	= flash_end_write,

- +	.read		= flash_read,

- +};

- +

- +

- +const struct dfu_flash_ops *dfu_flash_ops = &flash_ops;

- diff --git a/atusb/include/at86rf230.h b/atusb/include/at86rf230.h

- new file mode 100644

- index 0000000..4c3ae22

- --- /dev/null

- +++ b/atusb/include/at86rf230.h

- @@ -0,0 +1,402 @@

- +/*

- + * include/at86rf230.h - AT86RF230/AT86RF231 protocol and register definitions

- + *

- + * Written 2008-2011 by Werner Almesberger

- + * Copyright 2008-2011 Werner Almesberger

- + *

- + * This program is free software; you can redistribute it and/or modify

- + * it under the terms of the GNU General Public License as published by

- + * the Free Software Foundation; either version 2 of the License, or

- + * (at your option) any later version.

- + */

- +

- +

- +#ifndef AT86RF230_H

- +#define	AT86RF230_H

- +

- +enum {

- +	AT86RF230_REG_WRITE	= 0xc0, /* 11... */

- +	AT86RF230_REG_READ	= 0x80,	/* 10... */

- +	AT86RF230_BUF_WRITE	= 0x60,	/* 011... */

- +	AT86RF230_BUF_READ	= 0x20,	/* 001... */

- +	AT86RF230_SRAM_WRITE	= 0x40,	/* 010... */

- +	AT86RF230_SRAM_READ	= 0x00 	/* 000... */

- +};

- +

- +#define	MAX_PSDU	127	/* octets, see AT86RF230 manual section 8.1  */

- +#define	SRAM_SIZE	128

- +

- +

- +/* --- Registers ----------------------------------------------------------- */

- +

- +enum {

- +	REG_TRX_STATUS		= 0x01,

- +	REG_TRX_STATE		= 0x02,

- +	REG_TRX_CTRL_0		= 0x03,

- +

- +	REG_TRX_CTRL_1		= 0x04,	/* 231 only */

- +

- +	REG_PHY_TX_PWR		= 0x05,

- +	REG_PHY_RSSI		= 0x06,

- +	REG_PHY_ED_LEVEL	= 0x07,

- +	REG_PHY_CC_CCA		= 0x08,

- +	REG_CCA_THRES		= 0x09,

- +

- +	REG_RX_CTRL		= 0x0a,	/* 231 only */

- +	REG_SFD_VALUE		= 0x0b,	/* 231 only */

- +	REG_TRX_CTRL_2		= 0x0c,	/* 231 only */

- +	REG_ANT_DIV		= 0x0d,	/* 231 only */

- +

- +	REG_IRQ_MASK		= 0x0e,

- +	REG_IRQ_STATUS		= 0x0f,

- +	REG_VREG_CTRL		= 0x10,

- +	REG_BATMON		= 0x11,

- +	REG_XOSC_CTRL		= 0x12,

- +

- +	REG_RX_SYN		= 0x15,	/* 231 only */

- +	REG_XAH_CTRL_1		= 0x17,	/* 231 only */

- +	REG_FTN_CTRL		= 0x18,	/* 231 only */

- +

- +	REG_PLL_CF		= 0x1a,

- +	REL_PLL_DCU		= 0x1b,

- +	REG_PART_NUM		= 0x1c,

- +	REG_VERSION_NUM		= 0x1d,

- +	REG_MAN_ID_0		= 0x1e,

- +	REG_MAN_ID_1		= 0x1f,

- +	REG_SHORT_ADDR_0	= 0x20,

- +	REG_SHORT_ADDR_1	= 0x21,

- +	REG_PAN_ID_0		= 0x22,

- +	REG_PAN_ID_1		= 0x23,

- +	REG_IEEE_ADDR_0		= 0x24,

- +	REG_IEEE_ADDR_1		= 0x25,

- +	REG_IEEE_ADDR_2		= 0x26,

- +	REG_IEEE_ADDR_3		= 0x27,

- +	REG_IEEE_ADDR_4		= 0x28,

- +	REG_IEEE_ADDR_5		= 0x29,

- +	REG_IEEE_ADDR_6		= 0x2a,

- +	REG_IEEE_ADDR_7		= 0x2b,

- +

- +	REG_XAH_CTRL_0		= 0x2c,	/* XAH_CTRL in 230 */

- +	REG_CSMA_SEED_0		= 0x2d,

- +	REG_CSMA_SEED_1		= 0x2e,

- +	REG_CSMA_BE		= 0x2f,	/* 231 only */

- +

- +	REG_CONT_TX_0		= 0x36,

- +	REG_CONT_TX_1		= 0x3d,	/* 230 only */

- +};

- +

- +/* --- TRX_STATUS --- ------------------------------------------------------ */

- +

- +#define	CCA_DONE	(1 << 7)

- +#define	CCA_STATUS	(1 << 6)

- +

- +#define	TRX_STATUS_SHIFT	0

- +#define	TRX_STATUS_MASK		0x1f

- +

- +enum {

- +	TRX_STATUS_P_ON			= 0x00,	/* reset default */

- +	TRX_STATUS_BUSY_RX		= 0x01,

- +	TRX_STATUS_BUSY_TX		= 0x02,

- +	TRX_STATUS_RX_ON		= 0x06,

- +	TRX_STATUS_TRX_OFF		= 0x08,

- +	TRX_STATUS_PLL_ON		= 0x09,

- +	TRX_STATUS_SLEEP		= 0x0f,

- +	TRX_STATUS_BUSY_RX_AACK		= 0x11,

- +	TRX_STATUS_BUSY_TX_ARET		= 0x12,

- +	TRX_STATUS_RX_AACK_ON		= 0x16,

- +	TRX_STATUS_TX_ARET_ON		= 0x19,

- +	TRX_STATUS_RX_ON_NOCLK		= 0x1c,

- +	TRX_STATUS_RX_AACK_ON_NOCLK	= 0x1d,

- +	TRX_STATUS_BUSY_RX_AACK_NOCLK	= 0x1e,

- +	TRX_STATUS_TRANSITION		= 0x1f	/* ..._IN_PROGRESS */

- +};

- +

- +/* --- TRX_STATE ----------------------------------------------------------- */

- +

- +#define	TRAC_STATUS_SHIFT	5

- +#define	TRAC_STATUS_MASK	7

- +

- +enum {

- +	TRAC_STATUS_SUCCESS			= 0,	/* reset default */

- +	TRAC_STATUS_SUCCESS_DATA_PENDING	= 1,

- +	TRAC_STATUS_SUCCESS_WAIT_FOR_ACK	= 2,	/* 231 only */

- +	TRAC_STATUS_CHANNEL_ACCESS_FAILURE	= 3,

- +	TRAC_STATUS_NO_ACK			= 5,

- +	TRAC_STATUS_INVALID			= 7

- +};

- +

- +#define	TRX_CMD_SHIFT	0

- +#define	TRX_CMD_MASK	0x1f

- +

- +enum {

- +	TRX_CMD_NOP		= 0x00,	/* reset default */

- +	TRX_CMD_TX_START	= 0x02,

- +	TRX_CMD_FORCE_TRX_OFF	= 0x03,

- +	TRX_CMD_FORCE_PLL_ON	= 0x04,	/* 231 only */

- +	TRX_CMD_RX_ON		= 0x06,

- +	TRX_CMD_TRX_OFF		= 0x08,

- +	TRX_CMD_PLL_ON		= 0x09,

- +	TRX_CMD_RX_AACK_ON	= 0x16,

- +	TRX_CMD_TX_ARET_ON	= 0x19,

- +};

- +

- +/* --- TRX_CTRL_0 ---------------------------------------------------------- */

- +

- +#define	PAD_IO_SHIFT	6

- +#define	PAD_IO_MASK	3

- +

- +enum {

- +	PAD_IO_2mA,	/* reset default */

- +	PAD_IO_4mA,

- +	PAD_IO_6mA,

- +	PAD_IO_8mA

- +};

- +

- +#define	PAD_IO_CLKM_SHIFT	4

- +#define	PAD_IO_CLKM_MASK	3

- +

- +enum {

- +	PAD_IO_CLKM_2mA,

- +	PAD_IO_CLKM_4mA,	/* reset default */

- +	PAD_IO_CLKM_5mA,

- +	PAD_IO_CLKM_8mA,

- +};

- +

- +#define	CLKM_SHA_SEL		(1 << 3)

- +

- +#define	CLKM_CTRL_SHIFT	0

- +#define	CLKM_CTRL_MASK	7

- +

- +enum {

- +	CLKM_CTRL_OFF	= 0,

- +	CLKM_CTRL_1MHz	= 1,	/* reset default */

- +	CLKM_CTRL_2MHz	= 2,

- +	CLKM_CTRL_4MHz	= 3,

- +	CLKM_CTRL_8MHz	= 4,

- +	CLKM_CTRL_16MHz	= 5

- +};

- +

- +/* --- TRX_CTRL_1 (231 only) ----------------------------------------------- */

- +

- +#define	PA_EXT_EN		(1 << 7)

- +#define	IRQ_2_EXT_EN		(1 << 6)

- +#define	TX_AUTO_CRC_ON		(1 << 5)	/* 231 location */

- +#define	RX_BL_CTRL		(1 << 4)

- +

- +#define	SPI_CMD_MODE_SHIFT	2

- +#define	SPI_CMD_MODE_MASK	3

- +

- +enum {

- +	SPI_CMD_MODE_EMPTY	= 0,	/* reset default */

- +	SPI_CMD_MODE_TRX_STATUS	= 1,

- +	SPI_CMD_MODE_PHY_RSSI	= 2,

- +	SPI_CMD_MODE_IRQ_STATUS	= 3,

- +};

- +

- +#define	IRQ_MASK_MODE		(1 << 1)

- +#define	IRQ_POLARITY		(1 << 0)

- +

- +/* --- PHY_TX_PWR ---------------------------------------------------------- */

- +

- +#define	TX_AUTO_CRC_ON_230	(1 << 7)	/* 230 location */

- +

- +#define	PA_BUF_LT_SHIFT	6

- +#define	PA_BUF_LT_MASK	3

- +

- +#define	PA_LT_SHIFT	4

- +#define	PA_LT_MASK	3

- +

- +#define	TX_PWR_SHIFT	0

- +#define	TX_PWR_MASK	0x0f

- +

- +/* --- PHY_RSSI ------------------------------------------------------------ */

- +

- +#define	RX_CRC_VALID	(1 << 7)

- +

- +#define	RND_VALUE_SHIFT	5		/* 231 only */

- +#define	RND_VALUE_MASK	3

- +

- +#define	RSSI_SHIFT	0

- +#define	RSSI_MASK	0x1f

- +

- +/* --- PHY_CC_CCA ---------------------------------------------------------- */

- +

- +#define	CCA_REQUEST	(1 << 7)

- +

- +#define	CCA_MODE_SHIFT	5

- +#define	CCA_MODE_MASK	3

- +

- +enum {

- +	CCA_MODE_CARRIER_OR_ENERGY	= 0,	/* 231 only */

- +	CCA_MODE_ENERGY			= 1,	/* reset default */

- +	CCA_MODE_CARRIER		= 2,

- +	CCA_MODE_CARRIER_AND_ENERGY	= 3

- +};

- +

- +#define	CHANNEL_SHIFT	0

- +#define	CHANNEL_MASK	0x1f

- +

- +/* --- CCA_THRES ----------------------------------------------------------- */

- +

- +#define	CCA_ED_THRES_SHIFT	0

- +#define	CCA_ED_THRES_MASK	0x0f

- +

- +/* --- RX_CTRL (231 only) -------------------------------------------------- */

- +

- +#define	PDT_THRES_SHIFT	0

- +#define	PDT_THRES_MASK	0x0f

- +

- +enum {

- +	PDT_THRES_DEFAULT	= 0x07,	/* reset default */

- +	PDT_THRES_DIVERSITY	= 0x03,

- +};

- +

- +/* --- TRX_CTRL_2 (231 only) ----------------------------------------------- */

- +

- +#define	RX_SAFE_MODE		(1 << 7)

- +

- +#define	OQPSK_DATA_RATE_SHIFT	0

- +#define	OQPSK_DATA_RATE_MASK	3

- +

- +enum {

- +	OQPSK_DATA_RATE_250	= 0,	/* reset default */

- +	OQPSK_DATA_RATE_500	= 1,

- +	OQPSK_DATA_RATE_1000	= 2,

- +	OQPSK_DATA_RATE_2000	= 3

- +};

- +

- +/* --- ANT_DIV (231 only) -------------------------------------------------- */

- +

- +#define	ANT_SEL		(1 << 7)

- +#define	ANT_DIV_EN	(1 << 3)

- +#define	ANT_EXT_SW_EN	(1 << 2)

- +

- +#define	ANT_CTRL_SHIFT	0

- +#define	ANT_CTRL_MASK	3

- +

- +enum {

- +	ANT_CTRL_ANT_0	= 1,

- +	ANT_CTRL_ANT_1	= 2,

- +	ANT_CTRL_NODIV	= 3,	/* reset default */

- +};

- +

- +/* --- IRQ_MASK/IRQ_STATUS ------------------------------------------------- */

- +

- +enum {

- +	IRQ_PLL_LOCK	= 1 << 0,

- +	IRQ_PLL_UNLOCK	= 1 << 1,

- +	IRQ_RX_START	= 1 << 2,

- +	IRQ_TRX_END	= 1 << 3,

- +	IRQ_CCA_ED_DONE	= 1 << 4,	/* 231 only */

- +	IRQ_AMI		= 1 << 5,	/* 231 only */

- +	IRQ_TRX_UR	= 1 << 6,

- +	IRQ_BAT_LOW	= 1 << 7

- +};

- +

- +/* --- VREG_CTRL ----------------------------------------------------------- */

- +

- +#define	AVREG_EXT	(1 << 7)

- +#define	AVDD_OK		(1 << 6)

- +#define	DVREG_EXT	(1 << 3)

- +#define	DVDD_OK		(1 << 2)

- +

- +/* --- BATMON -------------------------------------------------------------- */

- +

- +#define	BATMON_OK	(1 << 5)

- +#define	BATMON_HR	(1 << 4)

- +

- +#define	BATMON_VTH_SHIFT	0

- +#define	BATMON_VTH_MASK		0x0f

- +

- +/* --- XOSC_CTRL ----------------------------------------------------------- */

- +

- +#define	XTAL_MODE_SHIFT	4

- +#define	XTAL_MODE_MASK	0x0f

- +

- +enum {

- +	XTAL_MODE_OFF	= 0x0,	/* 230 only */

- +	XTAL_MODE_EXT	= 0x4,

- +	XTAL_MODE_INT	= 0xf	/* reset default */

- +};

- +

- +#define	XTAL_TRIM_SHIFT	4

- +#define	XTAL_TRIM_MASK	0x0f

- +

- +/* --- RX_SYN (231 only) --------------------------------------------------- */

- +

- +#define	RX_PDT_DIS		(1 << 7)

- +

- +#define	RX_PDT_LEVEL_SHIFT	0

- +#define	RX_PDT_LEVEL_MASK	0xf

- +

- +/* --- XAH_CTRL_1 (231 only) ----------------------------------------------- */

- +

- +#define	AACK_FLTR_RES_FT	(1 << 5)

- +#define	AACK_UPLD_RES_FT	(1 << 4)

- +#define	AACK_ACK_TIME		(1 << 2)

- +#define	AACK_PROM_MODE		(1 << 1)

- +

- +/* --- FTN_CTRL (231 only) ------------------------------------------------- */

- +

- +#define	FTN_START		(1 << 7)

- +

- +/* --- PLL_CF -------------------------------------------------------------- */

- +

- +#define	PLL_CF_START	(1 << 7)

- +

- +/* --- PLL_DCU ------------------------------------------------------------- */

- +

- +#define	PLL_DCU_START	(1 << 7)

- +

- +/* --- XAH_CTRL_0 (XAH_CTRL in 230) ---------------------------------------- */

- +

- +#define	MAX_FRAME_RETRIES_SHIFT	4

- +#define	MAX_FRAME_RETRIES_MASK	0x0f

- +

- +#define	MAX_CSMA_RETRIES_SHIFT	1

- +#define	MAX_CSMA_RETRIES_MASK	0x07

- +

- +#define	SLOTTED_OPERATION	(1 << 0)	/* 231 only */

- +

- +/* --- CSMA_SEED_1 --------------------------------------------------------- */

- +

- +#define	MIN_BE_SHIFT_230	6	/* 230 location */

- +#define	MIN_BE_MASK_230		3

- +

- +#define	AACK_FVN_MODE_SHIFT	6	/* 231 only */

- +#define	AACK_FVN_MODE_MASK	3

- +

- +enum {

- +	AACK_FVN_MODE_0		= 0,

- +	AACK_FVN_MODE_01	= 1,	/* reset default */

- +	AACK_FVN_MODE_012	= 2,

- +	AACK_FVN_MODE_ANY	= 3

- +};

- +

- +#define	AACK_SET_PD		(1 << 5)

- +#define	AACK_DIS_ACK		(1 << 4)	/* 231 only */

- +#define	I_AM_COORD		(1 << 3)

- +

- +#define CSMA_SEED_1_SHIFT	0

- +#define	CSMA_SEED_1_MASK	7

- +

- +/* --- CSMA_BE ------------------------------------------------------------- */

- +

- +#define	MAX_BE_SHIFT		4

- +#define	MAX_BE_MASK		0x0f

- +

- +#define	MIN_BE_SHIFT		0	/* 231 location */

- +#define	MIN_BE_MASK		0x0f

- +

- +/* --- REG_CONT_TX_0 ------------------------------------------------------- */

- +

- +#define	CONT_TX_MAGIC		0x0f

- +

- +/* --- REG_CONT_TX_1 (230 only) -------------------------------------------- */

- +

- +#define	CONT_TX_MOD		0x00	/* modulated */

- +#define	CONT_TX_M2M		0x10	/* f_CH-2 MHz */

- +#define	CONT_TX_M500K		0x80	/* f_CH-0.5 MHz */

- +#define	CONT_TX_P500K		0xc0	/* f_CH+0.5 MHz */

- +

- +#endif /* !AT86RF230_H */

- diff --git a/atusb/include/atusb/atusb.h b/atusb/include/atusb/atusb.h

- new file mode 100644

- index 0000000..555d14b

- --- /dev/null

- +++ b/atusb/include/atusb/atusb.h

- @@ -0,0 +1,97 @@

- +/*

- + * atusb.h - Definitions shared between kernel and ATUSB firmware

- + *

- + * Written 2013 by Werner Almesberger <werner@almesberger.net>

- + *

- + * This program is free software; you can redistribute it and/or

- + * modify it under the terms of the GNU General Public License as

- + * published by the Free Software Foundation, version 2, or

- + * (at your option) any later version.

- + *

- + * This file should be identical for kernel and firmware.

- + * Kernel: drivers/net/ieee802154/atusb.h

- + * Firmware: ben-wpan/atusb/fw/include/atusb/atusb.h

- + */

- +

- +#ifndef	_ATUSB_H

- +#define	_ATUSB_H

- +

- +#define ATUSB_VENDOR_ID	0x20b7	/* Qi Hardware*/

- +#define ATUSB_PRODUCT_ID 0x1540	/* 802.15.4, device 0 */

- +				/*     -- -         - */

- +

- +#define ATUSB_BUILD_SIZE 256	/* maximum build version/date message length */

- +

- +/* Commands to our device. Make sure this is synced with the firmware */

- +enum atusb_requests {

- +	ATUSB_ID			= 0x00,	/* system status/control grp */

- +	ATUSB_BUILD,

- +	ATUSB_RESET,

- +	ATUSB_RF_RESET			= 0x10,	/* debug/test group */

- +	ATUSB_POLL_INT,

- +	ATUSB_TEST,			/* atusb-sil only */

- +	ATUSB_TIMER,

- +	ATUSB_GPIO,

- +	ATUSB_SLP_TR,

- +	ATUSB_GPIO_CLEANUP,

- +	ATUSB_REG_WRITE			= 0x20,	/* transceiver group */

- +	ATUSB_REG_READ,

- +	ATUSB_BUF_WRITE,

- +	ATUSB_BUF_READ,

- +	ATUSB_SRAM_WRITE,

- +	ATUSB_SRAM_READ,

- +	ATUSB_SPI_WRITE			= 0x30,	/* SPI group */

- +	ATUSB_SPI_READ1,

- +	ATUSB_SPI_READ2,

- +	ATUSB_SPI_WRITE2_SYNC,

- +	ATUSB_RX_MODE			= 0x40, /* HardMAC group */

- +	ATUSB_TX,

- +	ATUSB_EUI64_WRITE		= 0x50, /* Parameter in EEPROM grp */

- +	ATUSB_EUI64_READ,

- +};

- +

- +enum {

- +	ATUSB_HW_TYPE_100813,	/* 2010-08-13 */

- +	ATUSB_HW_TYPE_101216,	/* 2010-12-16 */

- +	ATUSB_HW_TYPE_110131,	/* 2011-01-31, ATmega32U2-based */

- +	ATUSB_HW_TYPE_RZUSB,	/* Atmel Raven USB dongle with at86rf230 */

- +	ATUSB_HW_TYPE_HULUSB,	/* Busware HUL USB dongle with at86rf212 */

- +};

- +

- +/*

- + * Direction	bRequest		wValue		wIndex	wLength

- + *

- + * ->host	ATUSB_ID		-		-	3

- + * ->host	ATUSB_BUILD		-		-	#bytes

- + * host->	ATUSB_RESET		-		-	0

- + *

- + * host->	ATUSB_RF_RESET		-		-	0

- + * ->host	ATUSB_POLL_INT		-		-	1

- + * host->	ATUSB_TEST		-		-	0

- + * ->host	ATUSB_TIMER		-		-	#bytes (6)

- + * ->host	ATUSB_GPIO		dir+data	mask+p#	3

- + * host->	ATUSB_SLP_TR		-		-	0

- + * host->	ATUSB_GPIO_CLEANUP	-		-	0

- + *

- + * host->	ATUSB_REG_WRITE		value		addr	0

- + * ->host	ATUSB_REG_READ		-		addr	1

- + * host->	ATUSB_BUF_WRITE		-		-	#bytes

- + * ->host	ATUSB_BUF_READ		-		-	#bytes

- + * host->	ATUSB_SRAM_WRITE	-		addr	#bytes

- + * ->host	ATUSB_SRAM_READ		-		addr	#bytes

- + *

- + * host->	ATUSB_SPI_WRITE		byte0		byte1	#bytes

- + * ->host	ATUSB_SPI_READ1		byte0		-	#bytes

- + * ->host	ATUSB_SPI_READ2		byte0		byte1	#bytes

- + * ->host	ATUSB_SPI_WRITE2_SYNC	byte0		byte1	0/1

- + *

- + * host->	ATUSB_RX_MODE		on		-	0

- + * host->	ATUSB_TX		flags		ack_seq	#bytes

- + * host->	ATUSB_EUI64_WRITE	-		-	#bytes (8)

- + * ->host	ATUSB_EUI64_READ	-		-	#bytes (8)

- + */

- +

- +#define ATUSB_REQ_FROM_DEV	(USB_TYPE_VENDOR | USB_DIR_IN)

- +#define ATUSB_REQ_TO_DEV	(USB_TYPE_VENDOR | USB_DIR_OUT)

- +

- +#endif /* !_ATUSB_H */

- diff --git a/atusb/include/atusb/ep0.h b/atusb/include/atusb/ep0.h

- new file mode 100644

- index 0000000..7777345

- --- /dev/null

- +++ b/atusb/include/atusb/ep0.h

- @@ -0,0 +1,64 @@

- +/*

- + * include/atusb/ep0.h - EP0 extension protocol

- + *

- + * Written 2008-2011, 2013 by Werner Almesberger

- + * Copyright 2008-2011, 2013 Werner Almesberger

- + *

- + * This program is free software; you can redistribute it and/or modify

- + * it under the terms of the GNU General Public License as published by

- + * the Free Software Foundation; either version 2 of the License, or

- + * (at your option) any later version.

- + */

- +

- +

- +#ifndef EP0_H

- +#define EP0_H

- +

- +#include <atusb/atusb.h>

- +

- +

- +/*

- + * EP0 protocol:

- + *

- + * 0.0	initial release

- + * 0.1  addition of ATUSB_TEST

- + * 0.2  First public release

- + * 0.3	ATUSB_EUI64_READ/WRITE for permanent EUI64 handling

- + * 	Support to run the firmware on Atmel Raven USB dongles

- + * 	Remove FCS frame check from firmware and leave it to the driver

- + * 	Use extended operation mode for TX for automatic ACK handling

- + */

- +

- +#define EP0ATUSB_MAJOR	0	/* EP0 protocol, major revision */

- +#define EP0ATUSB_MINOR	3	/* EP0 protocol, minor revision */

- +

- +

- +/*

- + * bmRequestType:

- + *

- + * D7 D6..5 D4...0

- + * |  |     |

- + * direction (0 = host->dev)

- + *    type (2 = vendor)

- + *          recipient (0 = device)

- + */

- +

- +#ifndef USB_TYPE_VENDOR

- +#define	USB_TYPE_VENDOR		0x40

- +#endif

- +

- +#ifndef USB_DIR_IN

- +#define	USB_DIR_IN		0x80

- +#endif

- +

- +#ifndef USB_DIR_OUT

- +#define	USB_DIR_OUT		0x00

- +#endif

- +

- +#define	ATUSB_FROM_DEV(req)	(ATUSB_REQ_FROM_DEV | (req) << 8)

- +#define	ATUSB_TO_DEV(req)	(ATUSB_REQ_TO_DEV | (req) << 8)

- +

- +

- +void ep0_init(void);

- +

- +#endif /* !EP0_H */

- diff --git a/atusb/mac.c b/atusb/mac.c

- new file mode 100644

- index 0000000..835002c

- --- /dev/null

- +++ b/atusb/mac.c

- @@ -0,0 +1,250 @@

- +/*

- + * fw/mac.c - HardMAC functions

- + *

- + * Written 2011, 2013 by Werner Almesberger

- + * Copyright 2011, 2013 Werner Almesberger

- + *

- + * This program is free software; you can redistribute it and/or modify

- + * it under the terms of the GNU General Public License as published by

- + * the Free Software Foundation; either version 2 of the License, or

- + * (at your option) any later version.

- + */

- +

- +#include <stddef.h>

- +#include <stdbool.h>

- +#include <stdint.h>

- +

- +#include "usb.h"

- +

- +#include "at86rf230.h"

- +#include "spi.h"

- +#include "board.h"

- +#include "mac.h"

- +

- +#define	RX_BUFS	3

- +

- +

- +bool (*mac_irq)(void) = NULL;

- +

- +

- +static uint8_t rx_buf[RX_BUFS][MAX_PSDU+2]; /* PHDR+payload+LQ */

- +static uint8_t tx_buf[MAX_PSDU];

- +static uint8_t tx_size = 0;

- +static bool txing = 0;

- +static bool queued_tx_ack = 0;

- +static uint8_t next_seq, this_seq, queued_seq;

- +

- +

- +/* ----- Receive buffer management ----------------------------------------- */

- +

- +

- +static uint8_t rx_in = 0, rx_out = 0;

- +

- +

- +static inline void next_buf(uint8_t *index)

- +{

- +	*index = (*index+1) % RX_BUFS;

- +}

- +

- +

- +/* ----- Interrupt handling ------------------------------------------------ */

- +

- +

- +static void rx_done(void *user);

- +static void tx_ack_done(void *user);

- +

- +

- +static void usb_next(void)

- +{

- +	const uint8_t *buf;

- +

- +	if (rx_in != rx_out) {

- +		buf = rx_buf[rx_out];

- +		led(1);

- +		usb_send(&eps[1], buf, buf[0]+2, rx_done, NULL);

- +	}

- +

- +	if (queued_tx_ack) {

- +		usb_send(&eps[1], &queued_seq, 1, tx_ack_done, NULL);

- +		queued_tx_ack = 0;	

- +	}

- +}

- +

- +

- +static void tx_ack_done(void *user)

- +{

- +	usb_next();

- +}

- +

- +static void rx_done(void *user)

- +{

- +	led(0);

- +	next_buf(&rx_out);

- +	usb_next();

- +#ifdef AT86RF230

- +	/* slap at86rf230 - reduce fragmentation issue */

- +	change_state(TRX_STATUS_RX_AACK_ON);

- +#endif

- +}

- +

- +

- +static void receive_frame(void)

- +{

- +	uint8_t size;

- +	uint8_t *buf;

- +

- +	spi_begin();

- +	spi_io(AT86RF230_BUF_READ);

- +

- +	size = spi_recv();

- +	if (!size || (size & 0x80)) {

- +		spi_end();

- +		return;

- +	}

- +

- +	buf = rx_buf[rx_in];

- +	spi_recv_block(buf+1, size+1);

- +	spi_end();

- +

- +	buf[0] = size;

- +	next_buf(&rx_in);

- +

- +	if (eps[1].state == EP_IDLE)

- +		usb_next();

- +}

- +

- +

- +static bool handle_irq(void)

- +{

- +	uint8_t irq;

- +

- +	irq = reg_read(REG_IRQ_STATUS);

- +	if (!(irq & IRQ_TRX_END))

- +		return 1;

- +

- +	if (txing) {

- +		if (eps[1].state == EP_IDLE) {

- +			usb_send(&eps[1], &this_seq, 1, tx_ack_done, NULL);

- +		} else {

- +			queued_tx_ack = 1;

- +			queued_seq = this_seq;

- +		}

- +		txing = 0;

- +		return 1;

- +	}

- +

- +	/* likely */

- +	if (eps[1].state == EP_IDLE || rx_in != rx_out)

- +		receive_frame();

- +

- +	return 1;

- +}

- +

- +

- +/* ----- TX/RX ------------------------------------------------------------- */

- +

- +

- +bool mac_rx(int on)

- +{

- +	if (on) {

- +		mac_irq = handle_irq;

- +		reg_read(REG_IRQ_STATUS);

- +		change_state(TRX_CMD_RX_AACK_ON);

- +	} else {

- +		mac_irq = NULL;

- +		change_state(TRX_CMD_FORCE_TRX_OFF);

- +		txing = 0;

- +	}

- +	return 1;

- +}

- +

- +

- +static void do_tx(void *user)

- +{

- +	uint16_t timeout = 0xffff;

- +	uint8_t status;

- +	uint8_t i;

- +

- +	/*

- +	 * If we time out here, the host driver will time out waiting for the

- +	 * TRX_END acknowledgement.

- +	 */

- +	do {

- +		if (!--timeout)

- +			return;

- +		status = reg_read(REG_TRX_STATUS) & TRX_STATUS_MASK;

- +	}

- +	while (status != TRX_STATUS_RX_ON && status != TRX_STATUS_RX_AACK_ON);

- +

- +#ifdef AT86RF231

- +	/*

- +	 * We use TRX_CMD_FORCE_PLL_ON instead of TRX_CMD_PLL_ON because a new

- +	 * reception may have begun while we were still working on the previous

- +	 * one.

- +	 */

- +	reg_write(REG_TRX_STATE, TRX_CMD_FORCE_PLL_ON);

- +#endif

- +#ifdef AT86RF230

- +	/*

- +	 * at86rf230 doesn't support force change, nevetherless this works

- +	 * somehow

- +	 */

- +	reg_write(REG_TRX_STATE, TRX_CMD_PLL_ON);

- +#endif

- +#ifdef AT86RF212

- +	/*

- +	* We use TRX_CMD_FORCE_PLL_ON instead of TRX_CMD_PLL_ON because a new

- +	* reception may have begun while we were still working on the previous

- +	* one.

- +	*/

- +	reg_write(REG_TRX_STATE, TRX_CMD_FORCE_PLL_ON);

- +#endif

- +

- +	handle_irq();

- +

- +	spi_begin();

- +	spi_send(AT86RF230_BUF_WRITE);

- +	spi_send(tx_size+2); /* CRC */

- +	for (i = 0; i != tx_size; i++)

- +		spi_send(tx_buf[i]);

- +	spi_end();

- +

- +	change_state(TRX_STATUS_TX_ARET_ON);

- +

- +	slp_tr();

- +

- +	txing = 1;

- +	this_seq = next_seq;

- +

- +	/*

- +	 * Wait until we reach BUSY_TX_ARET, so that we command the transition to

- +	 * RX_AACK_ON which will be executed upon TX completion.

- +	 */

- +	change_state(TRX_CMD_PLL_ON);

- +	change_state(TRX_CMD_RX_AACK_ON);

- +}

- +

- +

- +bool mac_tx(uint16_t flags, uint8_t seq, uint16_t len)

- +{

- +	if (len > MAX_PSDU)

- +		return 0;

- +	tx_size = len;

- +	next_seq = seq;

- +	usb_recv(&eps[0], tx_buf, len, do_tx, NULL);

- +	return 1;

- +}

- +

- +

- +void mac_reset(void)

- +{

- +	mac_irq = NULL;

- +	txing = 0;

- +	queued_tx_ack = 0;

- +	rx_in = rx_out = 0;

- +	next_seq = this_seq = queued_seq = 0;

- +

- +	/* enable CRC and PHY_RSSI (with RX_CRC_VALID) in SPI status return */

- +	reg_write(REG_TRX_CTRL_1,

- +	    TX_AUTO_CRC_ON | SPI_CMD_MODE_PHY_RSSI << SPI_CMD_MODE_SHIFT);

- +}

- diff --git a/atusb/mac.h b/atusb/mac.h

- new file mode 100644

- index 0000000..f3c92fb

- --- /dev/null

- +++ b/atusb/mac.h

- @@ -0,0 +1,26 @@

- +/*

- + * fw/mac.h - HardMAC functions

- + *

- + * Written 2011, 2013 by Werner Almesberger

- + * Copyright 2011, 2013 Werner Almesberger

- + *

- + * This program is free software; you can redistribute it and/or modify

- + * it under the terms of the GNU General Public License as published by

- + * the Free Software Foundation; either version 2 of the License, or

- + * (at your option) any later version.

- + */

- +

- +#ifndef MAC_H

- +#define	MAC_H

- +

- +#include <stdbool.h>

- +#include <stdint.h>

- +

- +

- +extern bool (*mac_irq)(void);

- +

- +bool mac_rx(int on);

- +bool mac_tx(uint16_t flags, uint8_t seq, uint16_t len);

- +void mac_reset(void);

- +

- +#endif /* !MAC_H */

- diff --git a/atusb/sernum.c b/atusb/sernum.c

- new file mode 100644

- index 0000000..41e434c

- --- /dev/null

- +++ b/atusb/sernum.c

- @@ -0,0 +1,47 @@

- +/*

- + * fw/sernum.c - ATUSB serial number

- + *

- + * Written 2008-2011, 2013 by Werner Almesberger

- + * Copyright 2008-2011, 2013 Werner Almesberger

- + *

- + * This program is free software; you can redistribute it and/or modify

- + * it under the terms of the GNU General Public License as published by

- + * the Free Software Foundation; either version 2 of the License, or

- + * (at your option) any later version.

- + */

- +

- +

- +#include <stdbool.h>

- +#include <stdint.h>

- +

- +#include "usb.h"

- +

- +#include "board.h"

- +#include "sernum.h"

- +

- +

- +static const uint8_t string_descriptor_0[] = {

- +	4,				/* blength */

- +	USB_DT_STRING,			/* bDescriptorType */

- +	LE(USB_LANGID_ENGLISH_US)	/* wLANGID[0]  */

- +};

- +

- +

- +bool sernum_get_descr(uint8_t type, uint8_t index, const uint8_t **reply,

- +    uint8_t *size)

- +{

- +	if (type != USB_DT_STRING)

- +		return 0;

- +	switch (index) {

- +	case 0:

- +		*reply = string_descriptor_0;

- +		*size = sizeof(string_descriptor_0);

- +		return 1;

- +	case 1:

- +		*reply = board_sernum;

- +		*size = sizeof(board_sernum);

- +		return 1;

- +	default:

- +		return 0;

- +	}

- +}

- diff --git a/atusb/sernum.h b/atusb/sernum.h

- new file mode 100644

- index 0000000..31a8e27

- --- /dev/null

- +++ b/atusb/sernum.h

- @@ -0,0 +1,37 @@

- +/*

- + * fw/sernum.h - ATUSB serial number

- + *

- + * Written 2011, 2013 by Werner Almesberger

- + * Copyright 2011, 2013 Werner Almesberger

- + *

- + * This program is free software; you can redistribute it and/or modify

- + * it under the terms of the GNU General Public License as published by

- + * the Free Software Foundation; either version 2 of the License, or

- + * (at your option) any later version.

- + */

- +

- +#ifndef SERNUM_H

- +#define	SERNUM_H

- +

- +#include <stdbool.h>

- +#include <stdint.h>

- +

- +#include "board.h"

- +

- +

- +#ifdef HAS_BOARD_SERNUM

- +

- +bool sernum_get_descr(uint8_t type, uint8_t index, const uint8_t **reply,

- +    uint8_t *size);

- +

- +#else /* HAS_BOARD_SERNUM */

- +

- +static inline bool sernum_get_descr(uint8_t type, uint8_t index,

- +    const uint8_t **reply, uint8_t *size)

- +{

- +	return 0;

- +}

- +

- +#endif /* !HAS_BOARD_SERNUM */

- +

- +#endif /* !SERNUM_H */

- diff --git a/atusb/spi.c b/atusb/spi.c

- new file mode 100644

- index 0000000..3fa5715

- --- /dev/null

- +++ b/atusb/spi.c

- @@ -0,0 +1,51 @@

- +/*

- + * fw/spi.c - ATmega8 family SPI I/O

- + *

- + * Written 2011, 2013 by Werner Almesberger

- + * Copyright 2011, 2013 Werner Almesberger

- + *

- + * This program is free software; you can redistribute it and/or modify

- + * it under the terms of the GNU General Public License as published by

- + * the Free Software Foundation; either version 2 of the License, or

- + * (at your option) any later version.

- + */

- +

- +

- +#include <stdbool.h>

- +#include <stdint.h>

- +

- +#include <avr/io.h>

- +

- +#include "board.h"

- +#include "spi.h"

- +

- +

- +uint8_t spi_io(uint8_t v)

- +{

- +//      while (!(UCSR1A & 1 << UDRE1));

- +	SPI_DATA = v;

- +	SPI_WAIT_DONE();

- +	return SPI_DATA;

- +}

- +

- +

- +void spi_end(void)

- +{

- +//      while (!(UCSR1A & 1 << TXC1));

- +	SET(nSS);

- +}

- +

- +

- +void spi_recv_block(uint8_t *buf, uint8_t n)

- +{

- +	if (!n)

- +		return;

- +	SPI_DATA = 0;

- +	while (--n) {

- +		SPI_WAIT_DONE();

- +		*buf++ = SPI_DATA;

- +		SPI_DATA = 0;

- +	}

- +	SPI_WAIT_DONE();

- +	*buf++ = SPI_DATA;

- +}

- diff --git a/atusb/spi.h b/atusb/spi.h

- new file mode 100644

- index 0000000..6e04f4e

- --- /dev/null

- +++ b/atusb/spi.h

- @@ -0,0 +1,30 @@

- +/*

- + * fw/spi.h - ATmega8 family SPI I/O

- + *

- + * Written 2011, 2013 by Werner Almesberger

- + * Copyright 2011, 2013 Werner Almesberger

- + *

- + * This program is free software; you can redistribute it and/or modify

- + * it under the terms of the GNU General Public License as published by

- + * the Free Software Foundation; either version 2 of the License, or

- + * (at your option) any later version.

- + */

- +

- +#ifndef SPI_H

- +#define	SPI_H

- +

- +#include <stdint.h>

- +

- +

- +void spi_begin(void);

- +uint8_t spi_io(uint8_t v);

- +void spi_end(void);

- +void spi_off(void);

- +void spi_init(void);

- +

- +#define	spi_send(v)	(void) spi_io(v)

- +#define	spi_recv(v)	spi_io(0)

- +

- +void spi_recv_block(uint8_t *buf, uint8_t n);

- +

- +#endif /* !SPI_H */

- diff --git a/atusb/uart.c b/atusb/uart.c

- new file mode 100644

- index 0000000..44bec27

- --- /dev/null

- +++ b/atusb/uart.c

- @@ -0,0 +1,64 @@

- +/*

- + * fw/uart.h - Functions needed for debugging over uart

- + *

- + * Code adapted from http://www.roboternetz.de/wissen/index.php/UART_mit_avr-gcc

- + * and http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial

- + *

- + * Published under the Creative Commons Share-Alike licence

- + * https://creativecommons.org/licenses/by-sa/2.0/de/

- + *

- + * S. Salewski 2007

- + *

- + * Adapted by

- + * Josef Filzmaier 2017

- + */

- +

- +#include <avr/io.h>

- +#include "uart.h"

- +

- +#define USART_BAUD 38400UL

- +#define F_CPU 8000000UL

- +

- +#define Wait_USART_Ready() while (!(UCSR1A & (1<<UDRE1)))

- +#define UART_UBRR (F_CPU/(16L*USART_BAUD)-1)

- +

- +// initialize USART, 8N1 mode

- +void

- +uart_init(void)

- +{

- +/* TODO: Find a working configuration for uart for the atmega32u2 */

- +#if CHIP == at90usb1287

- +	CLKPR = (1 << CLKPCE);

- +	CLKPR = 0; // clock prescaler == 0, so we have 16 MHz mpu frequency

- +	UBRR1 = UART_UBRR;

- +	UCSR1C = (1 << UCSZ10) | (1 << UCSZ11);

- +	UCSR1B = (1 << TXEN1);

- +	do

- +	{

- +		UDR1;

- +	}

- +	while (UCSR1A & (1 << RXC1));

- +#endif

- +

- +}

- +

- +int uart_write_char(char c, FILE* stream)

- +{

- +	if (c == '\n'){

- +		uart_new_line();

- +	}

- +	else {

- +		Wait_USART_Ready();

- +		UDR1 = c;

- +	}

- +	return 0;

- +}

- +

- +void

- +uart_new_line(void)

- +{

- +	Wait_USART_Ready();

- +	UDR1 = '\r';

- +	Wait_USART_Ready();

- +	UDR1 = '\n';

- +}

- diff --git a/atusb/uart.h b/atusb/uart.h

- new file mode 100644

- index 0000000..4810f9c

- --- /dev/null

- +++ b/atusb/uart.h

- @@ -0,0 +1,25 @@

- +/*

- + * fw/uart.h - Functions needed for debugging over uart

- + *

- + * Code adapted from http://www.roboternetz.de/wissen/index.php/UART_mit_avr-gcc

- + * and http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial

- + *

- + * Published under the Creative Commons Share-Alike licence

- + * https://creativecommons.org/licenses/by-sa/2.0/de/

- + *

- + * S. Salewski 2007

- + *

- + * Adapted by

- + * Josef Filzmaier 2017

- + */

- +

- +#ifndef UART_H_

- +#define	UART_H_

- +

- +#include <stdio.h>

- +

- +void uart_init(void);

- +int uart_write_char(char c, FILE* stream);

- +void uart_new_line(void);

- +

- +#endif /* UART_H_ */

- diff --git a/atusb/usb/atu2.c b/atusb/usb/atu2.c

- new file mode 100644

- index 0000000..98158bf

- --- /dev/null

- +++ b/atusb/usb/atu2.c

- @@ -0,0 +1,247 @@

- +/*

- + * fw/usb/atu2.c - Chip-specific driver for Atmel ATxxxU2 USB chips

- + *

- + * Written 2008-2011, 2013-2014 by Werner Almesberger

- + * Copyright 2008-2011, 2013-2014 Werner Almesberger

- + *

- + * This program is free software; you can redistribute it and/or modify

- + * it under the terms of the GNU General Public License as published by

- + * the Free Software Foundation; either version 2 of the License, or

- + * (at your option) any later version.

- + */

- +

- +/*

- + * Known issues:

- + * - no suspend/resume

- + * - we don't call back after failed transmissions,

- + * - we don't reset the EP buffer after failed receptions

- + * - enumeration often encounters an error -71 (from which it recovers)

- + */

- +

- +#include <stdbool.h>

- +#include <stdint.h>

- +

- +#define F_CPU   8000000UL

- +#include <util/delay.h>

- +

- +#include <avr/io.h>

- +#include <avr/interrupt.h>

- +#include "usb.h"

- +#include "board.h"

- +

- +

- +#ifndef NULL

- +#define NULL 0

- +#endif

- +

- +#if 1

- +#define BUG_ON(cond)    do { if (cond) panic(); } while (0)

- +#else

- +#define BUG_ON(cond)

- +#endif

- +

- +

- +struct ep_descr eps[NUM_EPS];

- +

- +

- +static uint16_t usb_read_word(void)

- +{

- +	uint8_t low;

- +

- +	low = UEDATX;

- +	return low | UEDATX << 8;

- +}

- +

- +

- +static void enable_addr(void *user)

- +{

- +	while (!(UEINTX & (1 << TXINI)));

- +	UDADDR |= 1 << ADDEN;

- +}

- +

- +

- +void set_addr(uint8_t addr)

- +{

- +	UDADDR = addr;

- +	usb_send(&eps[0], NULL, 0, enable_addr, NULL);

- +}

- +

- +

- +void usb_ep_change(struct ep_descr *ep)

- +{

- +	if (ep->state == EP_TX) {

- +		UENUM = ep-eps;

- +		UEIENX |= 1 << TXINE;

- +	}

- +}

- +

- +

- +static bool ep_setup(void)

- +{

- +	struct setup_request setup;

- +

- +	BUG_ON(UEBCLX < 8);

- +

- +	setup.bmRequestType = UEDATX;

- +	setup.bRequest = UEDATX;

- +	setup.wValue = usb_read_word();

- +	setup.wIndex = usb_read_word();

- +	setup.wLength = usb_read_word();

- +

- +	if (!handle_setup(&setup))

- +		return 0;

- +	if (!(setup.bmRequestType & 0x80) && eps[0].state == EP_IDLE)

- +		usb_send(&eps[0], NULL, 0, NULL, NULL);

- +	return 1;

- +}

- +

- +

- +static bool ep_rx(struct ep_descr *ep)

- +{

- +	uint8_t size;

- +

- +	size = UEBCLX;

- +	if (size > ep->end-ep->buf)

- +		return 0;

- +	while (size--)

- +		*ep->buf++ = UEDATX;

- +	if (ep->buf == ep->end) {

- +		ep->state = EP_IDLE;

- +		if (ep->callback)

- +			ep->callback(ep->user);

- +//		if (ep == &eps[0])

- +			usb_send(ep, NULL, 0, NULL, NULL);

- +	}

- +	return 1;

- +}

- +

- +

- +static void ep_tx(struct ep_descr *ep)

- +{

- +	uint8_t size = ep->end-ep->buf;

- +	uint8_t left;

- +

- +	if (size > ep->size)

- +		size = ep->size;

- +	for (left = size; left; left--)

- +		UEDATX = *ep->buf++;

- +	if (size == ep->size)

- +		return;

- +	ep->state = EP_IDLE;

- +}

- +

- +

- +static void handle_ep(int n)

- +{

- +	struct ep_descr *ep = eps+n;

- +	uint8_t mask;

- +

- +	UENUM = n;

- +	if (UEINTX & (1 << RXSTPI)) {

- +		/* @@@ EP_RX. EP_TX: cancel */

- +		ep->state = EP_IDLE;

- +		if (!ep_setup())

- +			goto stall;

- +		UEINTX = ~(1 << RXSTPI);

- +	}

- +	if (UEINTX & (1 << RXOUTI)) {

- +		/* @@ EP_TX: cancel */

- +		if (ep->state != EP_RX)

- +			goto stall;

- +		if (!ep_rx(ep))

- +			goto stall;

- +		/* @@@ gcc 4.5.2 wants this cast */

- +		UEINTX = (uint8_t) ~(1 << RXOUTI | 1 << FIFOCON);

- +	}

- +	if (UEINTX & (1 << STALLEDI)) {

- +		ep->state = EP_IDLE;

- +		UEINTX = ~(1 << STALLEDI);

- +	}

- +	if (UEINTX & (1 << TXINI)) {

- +		/* @@ EP_RX: cancel (?) */

- +		if (ep->state == EP_TX) {

- +			ep_tx(ep);

- +			mask = 1 << TXINI;

- +			if (n)

- +				mask |= 1 << FIFOCON;

- +			UEINTX = ~mask;

- +			if (ep->state == EP_IDLE && ep->callback)

- +				ep->callback(ep->user);

- +		} else {

- +			UEIENX &= ~(1 << TXINE);

- +		}

- +	}

- +	return;

- +

- +stall:

- +	UEINTX = ~(1 << RXSTPI | 1 << RXOUTI | 1 << STALLEDI);

- +	ep->state = EP_IDLE;

- +	UECONX |= 1 << STALLRQ;

- +}

- +

- +

- +void ep_init(void)

- +{

- +	UENUM = 0;

- +	UECONX = (1 << RSTDT) | (1 << EPEN);	/* enable */

- +	UECFG0X = 0;	/* control, direction is ignored */

- +	UECFG1X = 3 << EPSIZE0;	/* 64 bytes */

- +	UECFG1X |= 1 << ALLOC;

- +

- +	while (!(UESTA0X & (1 << CFGOK)));

- +

- +	UEIENX =

- +	    (1 << RXSTPE) | (1 << RXOUTE) | (1 << STALLEDE) | (1 << TXINE);

- +

- +	eps[0].state = EP_IDLE;

- +	eps[0].size = 64;

- +

- +#ifndef BOOT_LOADER

- +

- +	UENUM = 1;

- +	UECONX = (1 << RSTDT) | (1 << EPEN);	/* enable */

- +	UECFG0X = (1 << EPTYPE1) | (1 << EPDIR); /* bulk IN */

- +	UECFG1X = 3 << EPSIZE0;	/* 64 bytes */

- +	UECFG1X |= 1 << ALLOC;

- +

- +	while (!(UESTA0X & (1 << CFGOK)));

- +

- +	UEIENX = (1 << STALLEDE) | (1 << TXINE);

- +

- +	eps[1].state = EP_IDLE;

- +	eps[1].size = 64;

- +

- +#endif

- +}

- +

- +

- +ISR(USB_GEN_vect)

- +{

- +	uint8_t flags;

- +

- +	flags = UDINT;

- +	if (flags & (1 << EORSTI)) {

- +		if (user_reset)

- +			user_reset();

- +		ep_init();

- +		UDINT = ~(1 << EORSTI);

- +	}

- +}

- +

- +

- +ISR(USB_COM_vect)

- +{

- +	uint8_t flags, i;

- +

- +	flags = UEINT;

- +	for (i = 0; i != NUM_EPS; i++)

- +		if (flags & (1 << i))

- +			handle_ep(i);

- +}

- +

- +

- +void usb_reset(void)

- +{

- +	UDCON |= 1 << DETACH;	/* detach the pull-up */

- +	_delay_ms(1);

- +}

- diff --git a/atusb/usb/dfu.c b/atusb/usb/dfu.c

- new file mode 100644

- index 0000000..c84a28d

- --- /dev/null

- +++ b/atusb/usb/dfu.c

- @@ -0,0 +1,260 @@

- +/*

- + * boot/dfu.c - DFU protocol engine

- + *

- + * Written 2008-2011, 2013-2015 by Werner Almesberger

- + * Copyright 2008-2011, 2013-2015 Werner Almesberger

- + *

- + * This program is free software; you can redistribute it and/or modify

- + * it under the terms of the GNU General Public License as published by

- + * the Free Software Foundation; either version 2 of the License, or

- + * (at your option) any later version.

- + */

- +

- +/*

- + * http://www.usb.org/developers/devclass_docs/DFU_1.1.pdf

- + */

- +

- +/*

- + * A few, erm, shortcuts:

- + *

- + * - we don't bother with the app* states since DFU is all this firmware does

- + * - after DFU_DNLOAD, we just block until things are written, so we never

- + *   enter dfuDNLOAD_SYNC or dfuDNBUSY

- + * - no dfuMANIFEST_SYNC, dfuMANIFEST, or dfuMANIFEST_WAIT_RESET

- + * - to keep our buffers small, we only accept EP0-sized blocks

- + */

- +

- +

- +#include <stdbool.h>

- +#include <stdint.h>

- +

- +#include "usb.h"

- +#include "dfu.h"

- +

- +#include "board.h"

- +

- +

- +#ifndef NULL

- +#define NULL 0

- +#endif

- +

- +#define debug(...)

- +#define error(...)

- +

- +

- +#ifndef DFU_ALT_SETTINGS

- +#define	DFU_ALT_SETTINGS	1

- +#endif

- +

- +#ifndef DFU_ALT_NAME_0_IDX

- +#define	DFU_ALT_NAME_0_IDX	0

- +#endif

- +

- +#ifndef DFU_ALT_NAME_1_IDX

- +#define	DFU_ALT_NAME_1_IDX	0

- +#endif

- +

- +#ifndef DFU_ALT_NAME_2_IDX

- +#define	DFU_ALT_NAME_2_IDX	0

- +#endif

- +

- +

- +const uint8_t device_descriptor[] = {

- +	18,			/* bLength */

- +	USB_DT_DEVICE,		/* bDescriptorType */

- +	LE(0x100),		/* bcdUSB */

- +	USB_CLASS_APP_SPEC,	/* bDeviceClass */

- +	0x00,			/* bDeviceSubClass (per interface) */

- +	0x00,			/* bDeviceProtocol (per interface) */

- +	EP0_SIZE,		/* bMaxPacketSize */

- +	LE(DFU_USB_VENDOR),	/* idVendor */

- +	LE(DFU_USB_PRODUCT),	/* idProduct */

- +	LE(0x0001),		/* bcdDevice */

- +	0,			/* iManufacturer */

- +	0,			/* iProduct */

- +#ifdef HAS_BOARD_SERNUM

- +	1,			/* iSerialNumber */

- +#else

- +	0,			/* iSerialNumber */

- +#endif

- +	1			/* bNumConfigurations */

- +};

- +

- +

- +const uint8_t config_descriptor[] = {

- +	9,			/* bLength */

- +	USB_DT_CONFIG,		/* bDescriptorType */

- +	LE(9+9*DFU_ALT_SETTINGS), /* wTotalLength */

- +	1,			/* bNumInterfaces */

- +	1,			/* bConfigurationValue (> 0 !) */

- +	0,			/* iConfiguration */

- +//	USB_ATTR_SELF_POWERED | USB_ATTR_BUS_POWERED,

- +	USB_ATTR_BUS_POWERED,	/* bmAttributes */

- +	((BOARD_MAX_mA)+1)/2,	/* bMaxPower */

- +

- +	/* Interface #0 */

- +

- +	DFU_ITF_DESCR(0, 0, dfu_proto_dfu, DFU_ALT_NAME_0_IDX)

- +#if DFU_ALT_SETTINGS > 1

- +	DFU_ITF_DESCR(0, 1, dfu_proto_dfu, DFU_ALT_NAME_1_IDX)

- +#endif

- +#if DFU_ALT_SETTINGS > 2

- +	DFU_ITF_DESCR(0, 2, dfu_proto_dfu, DFU_ALT_NAME_2_IDX)

- +#endif

- +};

- +

- +

- +static uint16_t next_block = 0;

- +static bool did_download;

- +

- +

- +static uint8_t buf[EP0_SIZE];

- +

- +

- +static void block_write(void *user)

- +{

- +	uint16_t *size = user;

- +

- +	dfu_flash_ops->write(buf, *size);

- +}

- +

- +

- +static bool block_receive(uint16_t length)

- +{

- +	static uint16_t size;

- +

- +	if (!dfu_flash_ops->can_write(length)) {

- +		dfu.state = dfuERROR;	

- +		dfu.status = errADDRESS;

- +		return 0;

- +	}

- +	if (length > EP0_SIZE) {

- +		dfu.state = dfuERROR;	

- +		dfu.status = errUNKNOWN;

- +		return 0;

- +	}

- +	size = length;

- +	usb_recv(&eps[0], buf, size, block_write, &size);

- +	return 1;

- +}

- +

- +

- +static bool block_transmit(uint16_t length)

- +{

- +	uint16_t got;

- +

- +	if (length > EP0_SIZE) {

- +		dfu.state = dfuERROR;	

- +		dfu.status = errUNKNOWN;

- +		return 1;

- +	}

- +	got = dfu_flash_ops->read(buf, length);

- +	if (got < length) {

- +		length = got;

- +		dfu.state = dfuIDLE;

- +	}

- +	usb_send(&eps[0], buf, length, NULL, NULL);

- +	return 1;

- +}

- +

- +

- +static bool my_setup(const struct setup_request *setup)

- +{

- +	bool ok;

- +

- +	switch (setup->bmRequestType | setup->bRequest << 8) {

- +	case DFU_TO_DEV(DFU_DETACH):

- +		debug("DFU_DETACH\n");

- +		/*

- +		 * The DFU spec says thay this is sent in protocol 1 only.

- +		 * However, dfu-util also sends it to get out of DFU mode,

- +		 * so we just don't make a fuss and ignore it.

- +		 */

- +		return 1;

- +	case DFU_TO_DEV(DFU_DNLOAD):

- +		debug("DFU_DNLOAD\n");

- +		if (dfu.state == dfuIDLE) {

- +			next_block = setup->wValue;

- +			dfu_flash_ops->start();

- +		}

- +		else if (dfu.state != dfuDNLOAD_IDLE) {

- +			error("bad state\n");

- +			return 0;

- +		}

- +		if (dfu.state != dfuIDLE && setup->wValue == next_block-1) {

- +			debug("retransmisson\n");

- +			return 1;

- +		}

- +		if (setup->wValue != next_block) {

- +			debug("bad block (%d vs. %d)\n",

- +			    setup->wValue, next_block);

- +			dfu.state = dfuERROR;

- +			dfu.status = errUNKNOWN;

- +			return 1;

- +		}

- +		if (!setup->wLength) {

- +			debug("DONE\n");

- +			dfu_flash_ops->end_write();

- +			dfu.state = dfuIDLE;

- +			did_download = 1;

- +			return 1;

- +		}

- +		ok = block_receive(setup->wLength);

- +		next_block++;

- +		dfu.state = dfuDNLOAD_IDLE;

- +		return ok;

- +	case DFU_FROM_DEV(DFU_UPLOAD):

- +		debug("DFU_UPLOAD\n");

- +		if (dfu.state == dfuIDLE) {

- +			next_block = setup->wValue;

- +			dfu_flash_ops->start();

- +		}

- +		else if (dfu.state != dfuUPLOAD_IDLE)

- +			return 0;

- +		if (dfu.state != dfuIDLE && setup->wValue == next_block-1) {

- +			debug("retransmisson\n");

- +			/* @@@ try harder */

- +			dfu.state = dfuERROR;

- +			dfu.status = errUNKNOWN;

- +			return 1;

- +		}

- +		if (setup->wValue != next_block) {

- +			debug("bad block (%d vs. %d)\n",

- +			    setup->wValue, next_block);

- +			dfu.state = dfuERROR;

- +			dfu.status = errUNKNOWN;

- +			return 1;

- +		}

- +		ok = block_transmit(setup->wLength);

- +		next_block++;

- +		dfu.state = dfuUPLOAD_IDLE;

- +		return ok;

- +	case DFU_TO_DEV(DFU_ABORT):

- +		debug("DFU_ABORT\n");

- +		dfu.state = dfuIDLE;

- +		dfu.status = OK;

- +		return 1;

- +	default:

- +		return dfu_setup_common(setup);

- +	}

- +}

- +

- +

- +static void my_reset(void)

- +{

- +#if 0

- +	/* @@@ not nice -- think about where this should go */

- +	extern void run_payload(void);

- +

- +	if (did_download)

- +		run_payload();

- +#endif

- +}

- +

- +

- +void dfu_init(void)

- +{

- +	user_setup = my_setup;

- +	user_get_descriptor = dfu_my_descr;

- +	user_reset = my_reset;

- +}

- diff --git a/atusb/usb/dfu.h b/atusb/usb/dfu.h

- new file mode 100644

- index 0000000..bc35bbc

- --- /dev/null

- +++ b/atusb/usb/dfu.h

- @@ -0,0 +1,119 @@

- +/*

- + * boot/dfu.h - DFU protocol constants and data structures

- + *

- + * Written 2008, 2011, 2013-2015 by Werner Almesberger

- + * Copyright 2008, 2011, 2013-2015 Werner Almesberger

- + *

- + * This program is free software; you can redistribute it and/or modify

- + * it under the terms of the GNU General Public License as published by

- + * the Free Software Foundation; either version 2 of the License, or

- + * (at your option) any later version.

- + */

- +

- +

- +#ifndef DFU_H

- +#define DFU_H

- +

- +#include <stdbool.h>

- +#include <stdint.h>

- +

- +#include "usb.h"

- +

- +

- +enum dfu_request {

- +	DFU_DETACH,

- +	DFU_DNLOAD,

- +	DFU_UPLOAD,

- +	DFU_GETSTATUS,

- +	DFU_CLRSTATUS,

- +	DFU_GETSTATE,

- +	DFU_ABORT,

- +};

- +

- +

- +enum dfu_status {

- +	OK,

- +	errTARGET,

- +	errFILE,

- +	errWRITE,

- +	errERASE,

- +	errCHECK_ERASED,

- +	errPROG,

- +	errVERIFY,

- +	errADDRESS,

- +	errNOTDONE,

- +	errFIRMWARE,

- +	errVENDOR,

- +	errUSBR,

- +	errPOR,

- +	errUNKNOWN,

- +	errSTALLEDPKT,

- +};

- +

- +

- +enum dfu_state {

- +	appIDLE,

- +	appDETACH,

- +	dfuIDLE,

- +	dfuDNLOAD_SYNC,

- +	dfuDNBUSY,

- +	dfuDNLOAD_IDLE,

- +	dfuMANIFEST_SYNC,

- +	dfuMANIFEST,

- +	dfuMANIFEST_WAIT_RESET,

- +	dfuUPLOAD_IDLE,

- +	dfuERROR

- +};

- +

- +enum dfu_itf_proto {

- +	dfu_proto_runtime	= 1,	/* Runtime protocol */

- +	dfu_proto_dfu		= 2,	/* DFU mode protocol */

- +};

- +

- +

- +#define DFU_DT_FUNCTIONAL	0x21	/* DFU FUNCTIONAL descriptor type */

- +

- +

- +#define	DFU_TO_DEV(req)		(0x21 | (req) << 8)

- +#define	DFU_FROM_DEV(req)	(0xa1 | (req) << 8)

- +

- +

- +struct dfu {

- +	uint8_t status;		/* bStatus */

- +	uint8_t toL, toM, toH;	/* bwPollTimeout */

- +	uint8_t state;		/* bState */

- +	uint8_t iString;

- +};

- +

- +

- +#define	DFU_ITF_DESCR(itf, alt, proto, idx)				     \

- +	9,			/* bLength */				     \

- +	USB_DT_INTERFACE,	/* bDescriptorType */			     \

- +	(itf),			/* bInterfaceNumber */			     \

- +	(alt),			/* bAlternateSetting */			     \

- +	0,			/* bNumEndpoints */			     \

- +	0xfe,			/* bInterfaceClass (application specific) */ \

- +	0x01,			/* bInterfaceSubClass (device fw upgrade) */ \

- +	(proto),		/* bInterfaceProtocol (dfu_proto_*) */	     \

- +	(idx),			/* iInterface */

- +

- +

- +struct dfu_flash_ops {

- +	void (*start)(void);

- +	bool (*can_write)(uint16_t size);

- +	void (*write)(const uint8_t *buf, uint16_t size);

- +	void (*end_write)(void);

- +	uint16_t (*read)(uint8_t *buf, uint16_t size);

- +};

- +

- +extern struct dfu dfu;

- +extern const struct dfu_flash_ops *dfu_flash_ops;

- +

- +

- +bool dfu_setup_common(const struct setup_request *setup);

- +bool dfu_my_descr(uint8_t type, uint8_t index, const uint8_t **reply,

- +    uint8_t *size);

- +

- +void dfu_init(void);

- +

- +#endif /* !DFU_H */

- diff --git a/atusb/usb/dfu_common.c b/atusb/usb/dfu_common.c

- new file mode 100644

- index 0000000..9b6feef

- --- /dev/null

- +++ b/atusb/usb/dfu_common.c

- @@ -0,0 +1,101 @@

- +/*

- + * boot/dfu_common.c - DFU protocol engine parts common to App/DFU

- + *

- + * Written 2008-2011, 2013-2014 by Werner Almesberger

- + * Copyright 2008-2011, 2013-2014 Werner Almesberger

- + *

- + * This program is free software; you can redistribute it and/or modify

- + * it under the terms of the GNU General Public License as published by

- + * the Free Software Foundation; either version 2 of the License, or

- + * (at your option) any later version.

- + */

- +

- +/*

- + * http://www.usb.org/developers/devclass_docs/DFU_1.1.pdf

- + */

- +

- +/*

- + * A few, erm, shortcuts:

- + *

- + * - we don't bother with the app* states since DFU is all this firmware does

- + * - after DFU_DNLOAD, we just block until things are written, so we never

- + *   enter dfuDNLOAD_SYNC or dfuDNBUSY

- + * - no dfuMANIFEST_SYNC, dfuMANIFEST, or dfuMANIFEST_WAIT_RESET

- + * - to keep our buffers small, we only accept EP0-sized blocks

- + */

- +

- +

- +#include <stdbool.h>

- +#include <stdint.h>

- +

- +#include "usb.h"

- +#include "dfu.h"

- +

- +#include "board.h"

- +#include "../sernum.h"

- +

- +

- +#ifndef NULL

- +#define NULL 0

- +#endif

- +

- +#define debug(...)

- +#define error(...)

- +

- +

- +static const uint8_t functional_descriptor[] = {

- +	9,			/* bLength */

- +	DFU_DT_FUNCTIONAL,	/* bDescriptorType */

- +	0xf,			/* bmAttributes (claim omnipotence :-) */

- +	LE(0xffff),		/* wDetachTimeOut (we're very patient) */

- +	LE(EP0_SIZE),		/* wTransferSize */

- +	LE(0x101),		/* bcdDFUVersion */

- +};

- +

- +

- +/*

- + * The worst-case activity would be flashing a one page and erasing another

- + * one, would should take less than 10 ms. A 100 ms timeout ought to be plenty.

- + */

- +

- +struct dfu dfu = {

- +	OK,			/* bStatus */

- +	LE(100), 0,		/* bwPollTimeout, 100 ms */

- +	dfuIDLE,		/* bState */

- +	0,			/* iString */

- +};

- +

- +

- +bool dfu_setup_common(const struct setup_request *setup)

- +{

- +	switch (setup->bmRequestType | setup->bRequest << 8) {

- +	case DFU_FROM_DEV(DFU_GETSTATUS):

- +		debug("DFU_GETSTATUS\n");

- +		usb_send(&eps[0], (uint8_t *) &dfu, sizeof(dfu), NULL, NULL);

- +		return 1;

- +	case DFU_TO_DEV(DFU_CLRSTATUS):

- +		debug("DFU_CLRSTATUS\n");

- +		dfu.state = dfuIDLE;

- +		dfu.status = OK;

- +		return 1;

- +	case DFU_FROM_DEV(DFU_GETSTATE):

- +		debug("DFU_GETSTATE\n");

- +		usb_send(&eps[0], &dfu.state, 1, NULL, NULL);

- +		return 1;

- +	default:

- +		error("DFU rt %x, rq%x ?\n",

- +		    setup->bmRequestType, setup->bRequest);

- +		return 0;

- +	}

- +}

- +

- +

- +bool dfu_my_descr(uint8_t type, uint8_t index, const uint8_t **reply,

- +    uint8_t *size)

- +{

- +	if (type != DFU_DT_FUNCTIONAL)

- +		return sernum_get_descr(type, index, reply, size);

- +	*reply = functional_descriptor;

- +	*size = sizeof(functional_descriptor);

- +	return 1;

- +}

- diff --git a/atusb/usb/usb.c b/atusb/usb/usb.c

- new file mode 100644

- index 0000000..543d8c2

- --- /dev/null

- +++ b/atusb/usb/usb.c

- @@ -0,0 +1,181 @@

- +/*

- + * fw/usb/usb.c - USB hardware setup and standard device requests

- + *

- + * Written 2008-2011, 2013, 2015 by Werner Almesberger

- + * Copyright 2008-2011, 2013, 2015 Werner Almesberger

- + *

- + * This program is free software; you can redistribute it and/or modify

- + * it under the terms of the GNU General Public License as published by

- + * the Free Software Foundation; either version 2 of the License, or

- + * (at your option) any later version.

- + */

- +

- +/*

- + * Known issues:

- + * - no suspend/resume

- + * - should support EP clearing and stalling

- + */

- +

- +#include <stdbool.h>

- +#include <stdint.h>

- +

- +#include "usb.h"

- +#include "board.h"

- +

- +

- +#ifndef NULL

- +#define NULL 0

- +#endif

- +

- +#if 1

- +extern void panic(void);

- +#define BUG_ON(cond)	do { if (cond) panic(); } while (0)

- +#else

- +#define BUG_ON(cond)

- +#endif

- +

- +bool (*user_setup)(const struct setup_request *setup);

- +void (*user_set_interface)(int nth);

- +bool (*user_get_descriptor)(uint8_t type, uint8_t index,

- +    const uint8_t **reply, uint8_t *size);

- +void (*user_reset)(void);

- +

- +

- +void usb_io(struct ep_descr *ep, enum ep_state state, uint8_t *buf,

- +    uint8_t size, void (*callback)(void *user), void *user)

- +{

- +	BUG_ON(ep->state);

- +	ep->state = state;

- +	ep->buf = buf;

- +	ep->end = buf+size;

- +	ep->callback = callback;

- +	ep->user = user;

- +	usb_ep_change(ep);

- +}

- +

- +

- +static bool get_descriptor(uint8_t type, uint8_t index, uint16_t length)

- +{

- +	const uint8_t *reply;

- +	uint8_t size;

- +

- +	switch (type) {

- +	case USB_DT_DEVICE:

- +		reply = device_descriptor;

- +		size = reply[0];

- +		break;

- +	case USB_DT_CONFIG:

- +		if (index)

- +			return 0;

- +		reply = config_descriptor;

- +		size = reply[2];

- +		break;

- +	default:

- +		if (!user_get_descriptor)

- +			return 0;

- +		if (!user_get_descriptor(type, index, &reply, &size))

- +			return 0;

- +	}

- +	if (length < size)

- +		size = length;

- +	usb_send(&eps[0], reply, size, NULL, NULL);

- +	return 1;

- +}

- +

- +

- +bool handle_setup(const struct setup_request *setup)

- +{

- +	switch (setup->bmRequestType | setup->bRequest << 8) {

- +

- +	/*

- +	 * Device request

- +	 *

- +	 * See http://www.beyondlogic.org/usbnutshell/usb6.htm

- +	 */

- +

- +	case FROM_DEVICE(GET_STATUS):

- +		if (setup->wLength != 2)

- +			return 0;

- +		usb_send(&eps[0], "\000", 2, NULL, NULL);

- +		break;

- +	case TO_DEVICE(CLEAR_FEATURE):

- +		break;

- +	case TO_DEVICE(SET_FEATURE):

- +		return 0;

- +	case TO_DEVICE(SET_ADDRESS):

- +		set_addr(setup->wValue);

- +		break;

- +	case FROM_DEVICE(GET_DESCRIPTOR):

- +	case FROM_INTERFACE(GET_DESCRIPTOR):

- +		if (!get_descriptor(setup->wValue >> 8, setup->wValue,

- +		    setup->wLength))

- +			return 0;

- +		break;

- +	case TO_DEVICE(SET_DESCRIPTOR):

- +		return 0;

- +	case FROM_DEVICE(GET_CONFIGURATION):

- +		usb_send(&eps[0], "", 1, NULL, NULL);

- +		break;

- +	case TO_DEVICE(SET_CONFIGURATION):

- +		if (setup->wValue != config_descriptor[5])

- +			return 0;

- +		break;

- +

- +	/*

- +	 * Interface request

- +	 */

- +

- +	case FROM_INTERFACE(GET_STATUS):

- +		return 0;

- +	case TO_INTERFACE(CLEAR_FEATURE):

- +		return 0;

- +	case TO_INTERFACE(SET_FEATURE):

- +		return 0;

- +	case FROM_INTERFACE(GET_INTERFACE):

- +		return 0;

- +	case TO_INTERFACE(SET_INTERFACE):

- +		{

- +			const uint8_t *interface_descriptor =

- +			    config_descriptor+9;

- +			const uint8_t *p;

- +			int i;

- +

- +			i = 0;

- +			for (p = interface_descriptor;

- +			    p != config_descriptor+config_descriptor[2];

- +			    p += p[0]) {

- +				if (p[1] != USB_DT_INTERFACE)

- +					continue;

- +				if (p[2] == setup->wIndex &&

- +				    p[3] == setup->wValue) {

- +					if (user_set_interface)

- +						user_set_interface(i);

- +					return 1;

- +				}

- +				i++;

- +			}

- +			return 0;

- +		}

- +		break;

- +

- +	/*

- +	 * Endpoint request

- +	 */

- +

- +	case FROM_ENDPOINT(GET_STATUS):

- +		return 0;

- +	case TO_ENDPOINT(CLEAR_FEATURE):

- +		return 0;

- +	case TO_ENDPOINT(SET_FEATURE):

- +		return 0;

- +	case FROM_ENDPOINT(SYNCH_FRAME):

- +		return 0;

- +

- +	default:

- +		if (user_setup)

- +			return user_setup(setup);

- +		return 0;

- +	}

- +

- +	return 1;

- +}

- diff --git a/atusb/usb/usb.h b/atusb/usb/usb.h

- new file mode 100644

- index 0000000..cb40f9e

- --- /dev/null

- +++ b/atusb/usb/usb.h

- @@ -0,0 +1,189 @@

- +/*

- + * fw/usb//usb.h - USB hardware setup and standard device requests

- + *

- + * Written 2008, 2009, 2011, 2013, 2015 by Werner Almesberger

- + * Copyright 2008, 2009, 2011, 2013, 2015 Werner Almesberger

- + *

- + * This program is free software; you can redistribute it and/or modify

- + * it under the terms of the GNU General Public License as published by

- + * the Free Software Foundation; either version 2 of the License, or

- + * (at your option) any later version.

- + */

- +

- +

- +#ifndef USB_H

- +#define USB_H

- +

- +

- +#include <stdbool.h>

- +#include <stdint.h>

- +

- +

- +/*

- + * Packet identifier types

- + */

- +

- +#define	PID_OUT		0x1

- +#define	PID_IN		0x9

- +#define	PID_SOF		0x5

- +#define	PID_SETUP	0xd

- +#define	PID_DATA0	0x3

- +#define	PID_DATA1	0xb

- +#define	PID_ACK		0x2

- +#define	PID_NAK		0xa

- +#define	PID_STALL	0xe

- +

- +/*

- + * Descriptor types

- + *

- + * Reuse libusb naming scheme (/usr/include/usb.h)

- + */

- +

- +#define	USB_DT_DEVICE		1

- +#define	USB_DT_CONFIG		2

- +#define	USB_DT_STRING		3

- +#define	USB_DT_INTERFACE	4

- +#define	USB_DT_ENDPOINT		5

- +

- +/*

- + * Device classes

- + *

- + * Reuse libusb naming scheme (/usr/include/usb.h)

- + */

- +

- +#define USB_CLASS_PER_INTERFACE	0

- +#define	USB_CLASS_COMM		2

- +#define	USB_CLASS_HID		3

- +#define	USB_CLASS_MASS_STORAGE	8

- +#define	USB_CLASS_HUB		9

- +#define	USB_CLASS_DATA		10

- +#define	USB_CLASS_APP_SPEC	0xfe

- +#define USB_CLASS_VENDOR_SPEC	0xff

- +

- +/*

- + * Configuration attributes

- + */

- +

- +#define	USB_ATTR_BUS_POWERED	0x80

- +#define	USB_ATTR_SELF_POWERED	0x40

- +#define	USB_ATTR_REMOTE_WAKEUP	0x20

- +

- +/*

- + * Endpoint type

- + */

- +

- +#define	USB_ENDPOINT_TYPE_CONTROL	0

- +#define	USB_ENDPOINT_TYPE_ISOCHRONOUS	1

- +#define	USB_ENDPOINT_TYPE_BULK		2

- +#define	USB_ENDPOINT_TYPE_INTERRUPT	3

- +

- +/*

- + * Setup request types

- + */

- +

- +#define	TO_DEVICE(req)		(0x00 | (req) << 8)

- +#define	FROM_DEVICE(req)	(0x80 | (req) << 8)

- +#define	TO_INTERFACE(req)	(0x01 | (req) << 8)

- +#define	FROM_INTERFACE(req)	(0x81 | (req) << 8)

- +#define	TO_ENDPOINT(req)	(0x02 | (req) << 8)

- +#define	FROM_ENDPOINT(req)	(0x82 | (req) << 8)

- +

- +/*

- + * Setup requests

- + */

- +

- +#define	GET_STATUS		0x00

- +#define	CLEAR_FEATURE		0x01

- +#define	SET_FEATURE		0x03

- +#define	SET_ADDRESS		0x05

- +#define	GET_DESCRIPTOR		0x06

- +#define	SET_DESCRIPTOR		0x07

- +#define	GET_CONFIGURATION	0x08

- +#define	SET_CONFIGURATION	0x09

- +#define	GET_INTERFACE		0x0a

- +#define	SET_INTERFACE		0x0b

- +#define	SYNCH_FRAME		0x0c

- +

- +/*

- + * USB Language ID codes

- + *

- + * http://www.usb.org/developers/docs/USB_LANGIDs.pdf

- + */

- +

- +#define	USB_LANGID_ENGLISH_US	0x409

- +

- +

- +/*

- + * Odd. sdcc seems to think "x" assumes the size of the destination, i.e.,

- + * uint8_t. Hence the cast.

- + */

- +

- +#define LE(x) ((uint16_t) (x) & 0xff), ((uint16_t) (x) >> 8)

- +

- +#define LO(x) (((uint8_t *) &(x))[0])

- +#define HI(x) (((uint8_t *) &(x))[1])

- +

- +

- +#ifdef LOW_SPEED

- +#define	EP0_SIZE	8

- +#else

- +#define	EP0_SIZE	64

- +#endif

- +

- +#define	EP1_SIZE	64	/* simplify */

- +

- +

- +enum ep_state {

- +	EP_IDLE,

- +	EP_RX,

- +	EP_TX,

- +	EP_STALL,

- +};

- +

- +struct ep_descr {

- +	enum ep_state state;

- +	uint8_t *buf;

- +	uint8_t *end;

- +	uint8_t size;

- +	void (*callback)(void *user);

- +	void *user;

- +};

- +

- +struct setup_request {

- +	uint8_t bmRequestType;

- +	uint8_t bRequest;

- +	uint16_t wValue;

- +	uint16_t wIndex;

- +	uint16_t wLength;

- +};

- +

- +

- +extern const uint8_t device_descriptor[];

- +extern const uint8_t config_descriptor[];

- +extern struct ep_descr eps[];

- +

- +extern bool (*user_setup)(const struct setup_request *setup);

- +extern void (*user_set_interface)(int nth);

- +extern bool (*user_get_descriptor)(uint8_t type, uint8_t index,

- +    const uint8_t **reply, uint8_t *size);

- +extern void (*user_reset)(void);

- +

- +

- +#define	usb_left(ep) ((ep)->end-(ep)->buf)

- +#define usb_send(ep, buf, size, callback, user) \

- +	usb_io(ep, EP_TX, (void *) buf, size, callback, user)

- +#define usb_recv(ep, buf, size, callback, user) \

- +	usb_io(ep, EP_RX, buf, size, callback, user)

- +

- +void usb_io(struct ep_descr *ep, enum ep_state state, uint8_t *buf,

- +    uint8_t size, void (*callback)(void *user), void *user);

- +

- +bool handle_setup(const struct setup_request *setup);

- +void set_addr(uint8_t addr);

- +void usb_ep_change(struct ep_descr *ep);

- +void usb_reset(void);

- +void usb_init(void);

- +

- +void ep_init(void);

- +

- +#endif /* !USB_H */

- diff --git a/atusb/version.h b/atusb/version.h

- new file mode 100644

- index 0000000..8fd6a2c

- --- /dev/null

- +++ b/atusb/version.h

- @@ -0,0 +1,23 @@

- +/*

- + * fw/version.h - Automatically generated version string

- + *

- + * Written 2008, 2011 by Werner Almesberger

- + * Copyright 2008, 2011 Werner Almesberger

- + *

- + * This program is free software; you can redistribute it and/or modify

- + * it under the terms of the GNU General Public License as published by

- + * the Free Software Foundation; either version 2 of the License, or

- + * (at your option) any later version.

- + */

- +

- +

- +#ifndef VERSION_H

- +#define VERSION_H

- +

- +#include <stdint.h>

- +

- +

- +extern const char *build_date;

- +extern const uint16_t build_number;

- +

- +#endif /* !VERSION_H */

- -- 

- 2.26.0

- 

@@ -1,44 +0,0 @@ 

- From 02054c86c9fce8978cc7372b758339191cc9f6d6 Mon Sep 17 00:00:00 2001

- From: Jason Self <j@jxself.org>

- Date: Thu, 4 Jul 2019 16:34:28 -0700

- Subject: [PATCH 3/8] Update INSTALL document

- 

- To include the correct package name for GCC-AVR and improved

- descriptions.

- ---

-  INSTALL | 6 +++---

-  1 file changed, 3 insertions(+), 3 deletions(-)

- 

- diff --git a/INSTALL b/INSTALL

- index 7fb1116..9ea6dad 100644

- --- a/INSTALL

- +++ b/INSTALL

- @@ -16,14 +16,14 @@ In order to build everything you will need the following on the host

-  system:

-  

-      * A C/C++ compiler, like GCC

- -    * AVR-GCC

- -    * Standard C library for AVR-GCC

-      * Cmake

-      * GNU Bison/YACC

-      * GNU Flex

-      * GNU Gperf

-      * GNU Make

-      * GNU Wget

- +    * GNU C cross-compiler for AVR

- +    * Standard C library for Atmel AVR

-      * GNU C cross-compiler for ARM:

-          - arm-linux-gnueabi-gcc

-          - arm-linux-gnueabi-ld

- @@ -34,7 +34,7 @@ system:

-  

-  On GNU/Linux distros that use apt you can install these with:

-  

- -    apt install avr-gcc avr-libc binutils-arm-linux-gnueabi \

- +    apt install gcc-avr avr-libc binutils-arm-linux-gnueabi \

-      binutils-arm-none-eabi bison cmake flex g++ gcc \

-      gcc-arm-linux-gnueabi gcc-arm-none-eabi gperf make wget

-  

- -- 

- 2.26.0

- 

@@ -1,73 +0,0 @@ 

- From d6bb7bf71810db1b02dec985e8383594c193f55f Mon Sep 17 00:00:00 2001

- From: Jason Self <j@jxself.org>

- Date: Thu, 4 Jul 2019 16:57:58 -0700

- Subject: [PATCH 4/8] atusb: Build updates

- 

- Update the root level Makefile to both invoke "make atusb.dfu" when

- building.

- 

- Update the INSTALL document to mention the dependency on dfu-util.

- 

- Update the root level Makefile to install atusb.dfu if it's compiled.

- Even though the kernel itself doesn't load the firmware into the

- device this will ensure that pre-compiled firmware is included in the

- release tarballs.

- ---

-  INSTALL  | 5 +++--

-  Makefile | 3 ++-

-  2 files changed, 5 insertions(+), 3 deletions(-)

- 

- diff --git a/INSTALL b/INSTALL

- index 9ea6dad..70c4381 100644

- --- a/INSTALL

- +++ b/INSTALL

- @@ -17,6 +17,7 @@ system:

-  

-      * A C/C++ compiler, like GCC

-      * Cmake

- +    * dfu-util - Device Firmware Upgrade Utilities

-      * GNU Bison/YACC

-      * GNU Flex

-      * GNU Gperf

- @@ -35,7 +36,7 @@ system:

-  On GNU/Linux distros that use apt you can install these with:

-  

-      apt install gcc-avr avr-libc binutils-arm-linux-gnueabi \

- -    binutils-arm-none-eabi bison cmake flex g++ gcc \

- +    binutils-arm-none-eabi bison cmake dfu-util flex g++ gcc \

-      gcc-arm-linux-gnueabi gcc-arm-none-eabi gperf make wget

-  

-  CARL9170 Firmware Configuration

- @@ -48,7 +49,7 @@ atusb: Firmware for the ATUSB IEEE 802.15.4 USB Adapter

-  

-  To flash the firmware you need dfu-util on the host. Issue

-  

- -    make dfu

- +    dfu-util -d 20b7:1540 -D atusb.dfu

-  

-  right after plugging the device into the USB port while the red led is

-  still on.

- diff --git a/Makefile b/Makefile

- index 8474b30..51f708d 100644

- --- a/Makefile

- +++ b/Makefile

- @@ -37,7 +37,7 @@ ath9k_htc: ath9k_htc_toolchain

-  	cd ath9k_htc && $(MAKE) -C target_firmware

-  

-  atusb:

- -	cd atusb && $(MAKE)

- +	cd atusb && $(MAKE) atusb.dfu

-  

-  av7110:

-  	cd av7110 && $(MAKE)

- @@ -103,6 +103,7 @@ install:

-  		ln -s ath9k_htc/htc_9271-1.4.0.fw $(prefix)/htc_9271.fw; fi;

-  	if [ -a ath9k_htc/target_firmware/htc_7010.fw ]; then $(install_program) -D ath9k_htc/target_firmware/htc_7010.fw $(prefix)/ath9k_htc/htc_7010-1.4.0.fw && \

-  		ln -s ath9k_htc/htc_7010-1.4.0.fw $(prefix)/htc_7010.fw; fi;

- +        if [ -a atusb/atusb.dfu ]; then $(install_program) -D atusb/atusb.dfu $(prefix)/atusb/atusb.dfu; fi;

-  	if [ -a av7110/bootcode.bin ]; then $(install_program) -D av7110/bootcode.bin $(prefix)/av7110/bootcode.bin; fi;

-  	if [ -a cis/3CCFEM556.cis ]; then $(install_program) -D cis/3CCFEM556.cis $(prefix)/cis/3CCFEM556.cis; fi;

-  	if [ -a cis/3CXEM556.cis ]; then $(install_program) -D cis/3CXEM556.cis $(prefix)/cis/3CXEM556.cis; fi;

- -- 

- 2.26.0

- 

@@ -1,25 +0,0 @@ 

- From 06147f83be16e7ab5e08c280c61e015b60bd0acc Mon Sep 17 00:00:00 2001

- From: Jason Self <j@jxself.org>

- Date: Thu, 4 Jul 2019 17:14:30 -0700

- Subject: [PATCH 6/8] Makefile: Change spaces for atusb to tab

- 

- ---

-  Makefile | 2 +-

-  1 file changed, 1 insertion(+), 1 deletion(-)

- 

- diff --git a/Makefile b/Makefile

- index 51f708d..b5c5d05 100644

- --- a/Makefile

- +++ b/Makefile

- @@ -103,7 +103,7 @@ install:

-  		ln -s ath9k_htc/htc_9271-1.4.0.fw $(prefix)/htc_9271.fw; fi;

-  	if [ -a ath9k_htc/target_firmware/htc_7010.fw ]; then $(install_program) -D ath9k_htc/target_firmware/htc_7010.fw $(prefix)/ath9k_htc/htc_7010-1.4.0.fw && \

-  		ln -s ath9k_htc/htc_7010-1.4.0.fw $(prefix)/htc_7010.fw; fi;

- -        if [ -a atusb/atusb.dfu ]; then $(install_program) -D atusb/atusb.dfu $(prefix)/atusb/atusb.dfu; fi;

- +	if [ -a atusb/atusb.dfu ]; then $(install_program) -D atusb/atusb.dfu $(prefix)/atusb/atusb.dfu; fi;

-  	if [ -a av7110/bootcode.bin ]; then $(install_program) -D av7110/bootcode.bin $(prefix)/av7110/bootcode.bin; fi;

-  	if [ -a cis/3CCFEM556.cis ]; then $(install_program) -D cis/3CCFEM556.cis $(prefix)/cis/3CCFEM556.cis; fi;

-  	if [ -a cis/3CXEM556.cis ]; then $(install_program) -D cis/3CXEM556.cis $(prefix)/cis/3CXEM556.cis; fi;

- -- 

- 2.26.0

- 

@@ -1,25 +0,0 @@ 

- From b43de635d524d519e47bcba78d081a0f811584b1 Mon Sep 17 00:00:00 2001

- From: Jason Self <j@jxself.org>

- Date: Thu, 4 Jul 2019 18:34:05 -0700

- Subject: [PATCH 7/8] Makefile: Add atusb to 'all'

- 

- ---

-  Makefile | 2 +-

-  1 file changed, 1 insertion(+), 1 deletion(-)

- 

- diff --git a/Makefile b/Makefile

- index b5c5d05..b5bfb47 100644

- --- a/Makefile

- +++ b/Makefile

- @@ -19,7 +19,7 @@ install_program=install

-  

-  .PHONY:	all test clean install a56 as31 aica ath9k_htc_toolchain ath9k_htc atusb av7110 b43-tools carl9170fw-toolchain carl9170fw cis-tools cis dsp56k ihex2fw isci keyspan_pda openfwwf usbdux

-  

- -all: aica ath9k_htc av7110 carl9170fw cis dsp56k isci keyspan_pda openfwwf usbdux

- +all: aica ath9k_htc atusb av7110 carl9170fw cis dsp56k isci keyspan_pda openfwwf usbdux

-  

-  a56:

-  	cd a56 && $(MAKE)

- -- 

- 2.26.0

- 

@@ -1,25 +0,0 @@ 

- From a4d24e3a224a19404bc3ac98389ff376198c85ef Mon Sep 17 00:00:00 2001

- From: Jason Self <j@jxself.org>

- Date: Thu, 4 Jul 2019 18:37:45 -0700

- Subject: [PATCH 8/8] Makefile: Set shell to /bin/bash

- 

- ---

-  Makefile | 2 +-

-  1 file changed, 1 insertion(+), 1 deletion(-)

- 

- diff --git a/Makefile b/Makefile

- index b5bfb47..5e38d94 100644

- --- a/Makefile

- +++ b/Makefile

- @@ -13,7 +13,7 @@

-  # You should have received a copy of the GNU General Public License

-  # along with this program.  If not, see <http://www.gnu.org/licenses/>.

-  

- -shell=/bin/sh

- +shell=/bin/bash

-  prefix=/lib/firmware

-  install_program=install

-  

- -- 

- 2.26.0

- 

@@ -4,18 +4,18 @@ 

  # Contributor: Luke Shumaker <lukeshu@sbcglobal.net>

  

  pkgname=linux-libre-firmware

- pkgver=1.3.1

- pkgrel=2

+ pkgver=1.4

+ pkgrel=1

  epoch=1

  pkgdesc='Firmware files for Linux-libre'

  arch=(any)

  url='https://jxself.org/firmware'

  license=(GPL3)

- makedepends=(arm-linux-gnueabi-gcc # av7110

-              arm-none-eabi-gcc # aica

-              avr-gcc avr-libc dfu-util # atusb

-              sh-elf-gcc sh-elf-newlib cmake # carl9170fw

-              xtensa-elf-gcc # ath9k_htc

+ makedepends=(arm-linux-gnueabi-gcc           # av7110

+              arm-none-eabi-gcc               # aica

+              avr-gcc avr-libc dfu-util       # atusb

+              sh-elf-gcc sh-elf-newlib cmake  # carl9170fw

+              xtensa-elf-gcc                  # ath9k_htc

  )

  optdepends=('dfu-util: to flash the atusb firmware')

  provides=(linux-firmware)
@@ -36,29 +36,13 @@ 

             ath9k-htc-firmware)

  replaces=(${conflicts[@]})

  options=(!buildflags !makeflags)

- source=(

-   "$url/$pkgname-$pkgver.tar.lz"{,.asc}

-   0001-Update-carl9170-to-latest-upstream.patch

-   0002-Add-firmware-for-the-ATUSB-IEEE-802.15.4-USB-Adapter.patch

-   0003-Update-INSTALL-document.patch

-   0004-atusb-Build-updates.patch

-   0006-Makefile-Change-spaces-for-atusb-to-tab.patch

-   0007-Makefile-Add-atusb-to-all.patch

-   0008-Makefile-Set-shell-to-bin-bash.patch

- )

- sha512sums=('d827ec7024b4900dcdf6af8cdd4e72b02596d0ade5c2262460cd573785300498e6aa655b9a59cd22e38a6a787826a564ae33acfac52e68df1d082445e66f18df'

-             'SKIP'

-             '07263a406cb15c9f91f41c8fb6d4307875665b8106adf526353d64306611458e11ce311842caa9efa623091c897ec9f87cfe54584c9c47590195867958cf4086'

-             'a4e8752cfee8dfd0b17ff798d2b5ea7a773ebcf688f7614d1c1a92fe7f092c626a289069a472bc873a77c9cf52f1e37953b0ba47c37a9dfb2a763a695ca77625'

-             '1665ce62de148383fe4f30aa5714ef6bb1dfd4eed110415995069830b36a4b1aafb05e4cd6cf428dc0817e2affb91740e41b3fab8d2385683d6c18790bbf5afd'

-             '0168ba0f3a8f3938a96b7f72d081283ca04b7ba90c5474d8ccf0716d6964137980f49623c5489271158a48827319a20ee4f19bd94f5bb956ee97d5ba637070c1'

-             'fa006627935beb7ae78fad5b63423a54e4eae384761ff618fff173250fb5d0c7eef9d5a707733d037edc95259ef59c9053c4245b80a004928b6809ea1cb43cf8'

-             '8014d9eccb4c5193d1b4b056e163b5631c207adc78522e413650eb053c90e7b9e333c9e5cb6f73b63985e27020f4c69e7b791176702c55f711f6db95387e6bff'

-             '59560f16978b2fd7d8c828d7609ee4f71cbdc902b70cfb87feca686958dd4df05c61c5e1bfa5e0c2a060f23185a0b9e5d07d487e172764767cdc4b26a6240b79')

+ source=("$url/$pkgname-$pkgver.tar.lz"{,.asc})

+ sha512sums=('3b4c8afb63c55f05df0b2686459c6bb2c0cb56db8384d5527506ff4a14b8de80e1a3037a9b57cccccd6953d869c6a71a6500c4c7b735253ea0b57c79854d9457'

+             'SKIP')

  validpgpkeys=('F611A908FFA165C699584ED49D0DB31B545A3198') # Jason Self

  

  prepare(){

-   cd $pkgname-$pkgver/src

+   cd "$pkgname-$pkgver/src"

  

    local src

    for src in "${source[@]}"; do
@@ -69,25 +53,27 @@ 

      patch -Np1 < "$srcdir/$src"

    done

  

-   # Use our cross compilers and build carl9170fw with the default config

+   # Use our cross compilers

    sed -e 's|$PWD/../toolchain/inst/bin/||g' \

-       -e 's|${CMAKE_SOURCE_DIR}/toolchain/inst/bin/||g' \

+       -i ath9k_htc/target_firmware/configure

+   sed -e 's|${CMAKE_SOURCE_DIR}/toolchain/inst/bin/||g' \

        -e '/CMAKE_FIND_ROOT_PATH/d' \

-       -e 's/: ath9k_htc_toolchain$/:/' \

+       -i carl9170fw/extra/sh-elf-linux.cmake

+ 

+   # Remove toolchains and build carl9170fw with the default config

+   sed -e 's/: ath9k_htc_toolchain$/:/' \

        -e 's/: carl9170fw-toolchain$/:/' \

        -e '/cd carl9170fw && .\/autogen.sh$/ s/$/ --alldefconfig/' \

-       -i Makefile \

-          ath9k_htc/target_firmware/configure \

-          carl9170fw/extra/sh-elf-linux.cmake

+       -i Makefile

  }

  

  build(){

-   make -C $pkgname-$pkgver/src

+   make -C "$pkgname-$pkgver/src"

  }

  

  package(){

-   cd $pkgname-$pkgver/src

+   cd "$pkgname-$pkgver/src"

  

-   make prefix=$pkgdir/usr/lib/firmware install

-   install -Dm644 WHENCE $pkgdir/usr/share/licenses/$pkgname/WHENCE

+   make prefix="$pkgdir/usr/lib/firmware install"

+   install -Dm644 WHENCE "$pkgdir/usr/share/licenses/$pkgname/WHENCE"

  }

@@ -9,7 +9,7 @@ 

  _replacesoldmodules=() # '%' gets replaced with kernel suffix

  

  pkgbase=linux-libre-hardened

- pkgver=5.12.19.hardened1

+ pkgver=5.14.11.hardened1

  pkgrel=1

  pkgdesc='Security-Hardened Linux-libre'

  url='https://linux-libre.fsfla.org/'
@@ -20,7 +20,7 @@ 

    xmlto python-sphinx python-sphinx_rtd_theme graphviz imagemagick

  )

  options=('!strip')

- _srcname=linux-5.12

+ _srcname=linux-5.14

  _srctag=${pkgver%.*}-${pkgver##*.}

  source=(

    "https://linux-libre.fsfla.org/pub/linux-libre/releases/${_srcname##*-}-gnu/linux-libre-${_srcname##*-}-gnu.tar.xz"{,.sign}
@@ -36,7 +36,6 @@ 

    # https://labs.parabola.nu/issues/877

    # http://www.fsfla.org/pipermail/linux-libre/2015-November/003202.html

    0002-fix-Atmel-maXTouch-touchscreen-support.patch

-   # Arch Linux patches

  )

  validpgpkeys=(

    '474402C8C582DAFBE389C427BCB7CF877E7D47A7' # Alexandre Oliva
@@ -44,11 +43,11 @@ 

    '6DB9C4B4F0D8C0DC432CF6E4227CA7C556B2BA78' # David P.

    'E240B57E2C4630BA768E2F26FC1B547C8D8172C8' # Levente Polyak

  )

- sha512sums=('07730c51e4030dc9c1d01367098eabafd5665c40a69f8b102b2fa0aaae4f2124c32f60560b30a55fab18a76eb782650fac04a4aa2aaa558e96bfd13faaea328c'

+ sha512sums=('18798d032184ce141216ad72fcbb5ddb340809fe8d953acb50700aa0b47d36fca104dcedc7521fb3aea913d8fbeb4bd3eab1cf2c955388e6996c4154eac67d0c'

              'SKIP'

-             '9857f7c8e88f9a59faaea695245d668d7c73347bcf43feb60d61fa94dfc9c7bfdfcbca6a6afa32839991924644bd990a7fff2b60b68d4f14da74b343ede5ff15'

+             '951cdb68af3bbf3b841376f82fd9c82dfd7a159cae8564e5d772f99f3170deafcabc00cb0ecfa6e7669c22087577f2eafa47d3b50bc8ea6ee5edbc65821986e1'

              'SKIP'

-             'e5e427702841d941c605a9fe27ba051c7e947dc7c2ab5906cd19a40b9fe99863e41b9e860e8f00fad2f11922403d9ee042a94b9e7fefc85e89f333192b2bda85'

+             'ae0fb696bcea16040ffae245e874957aa797d977b73c8c84cb2c130ad858b03f7bf0848c374e33e521b5db30c77ade08230b9446f1700b1e32ac65d9463f7b90'

              'SKIP'

              '13cb5bc42542e7b8bb104d5f68253f6609e463b6799800418af33eb0272cc269aaa36163c3e6f0aacbdaaa1d05e2827a4a7c4a08a029238439ed08b89c564bb3'

              'SKIP'
@@ -56,7 +55,7 @@ 

              'SKIP'

              '267295aa0cea65684968420c68b32f1a66a22d018b9d2b2c1ef14267bcf4cb68aaf7099d073cbfefe6c25c8608bdcbbd45f7ac8893fdcecbf1e621abdfe9ecc1'

              'SKIP'

-             '17e5fead55a8bbffaaa4a37ed09bd38309b2dbcbebbd44fdd2f382732da8a0e41dded9ab78fbcb154788e8e0f7ddd5bf02a5f3dede630731bdd6e72773effcc7'

+             '71c0705f03b2c3937fb30ef07f81d6bc48f43e7433eec2dd52b94bb55d91123d200e9fa74f522fb6b66495e0ec8b56b2949dd2974d777e265471186ea6a0a033'

              '02af4dd2a007e41db0c63822c8ab3b80b5d25646af1906dc85d0ad9bb8bbf5236f8e381d7f91cf99ed4b0978c50aee37cb9567cdeef65b7ec3d91b882852b1af'

              'b8fe56e14006ab866970ddbd501c054ae37186ddc065bb869cf7d18db8c0d455118d5bda3255fb66a0dde38b544655cfe9040ffe46e41d19830b47959b2fb168')

    

file modified
+259 -113
@@ -1,11 +1,13 @@ 

  #

  # Automatically generated file; DO NOT EDIT.

- # Linux/x86 5.12.19-gnu-hardened1 Kernel Configuration

+ # Linux/x86 5.14.11-gnu-hardened1 Kernel Configuration

  #

  CONFIG_CC_VERSION_TEXT="gcc (GCC) 11.1.0"

  CONFIG_CC_IS_GCC=y

  CONFIG_GCC_VERSION=110100

  CONFIG_CLANG_VERSION=0

+ CONFIG_AS_IS_GNU=y

+ CONFIG_AS_VERSION=23601

  CONFIG_LD_IS_BFD=y

  CONFIG_LD_VERSION=23601

  CONFIG_LLD_VERSION=0
@@ -14,6 +16,7 @@ 

  CONFIG_CC_HAS_ASM_GOTO=y

  CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y

  CONFIG_CC_HAS_ASM_INLINE=y

+ CONFIG_CC_HAS_NO_PROFILE_FN_ATTR=y

  CONFIG_IRQ_WORK=y

  CONFIG_BUILDTIME_TABLE_SORT=y

  CONFIG_THREAD_INFO_IN_TASK=y
@@ -100,12 +103,29 @@ 

  CONFIG_HIGH_RES_TIMERS=y

  # end of Timers subsystem

  

+ CONFIG_BPF=y

+ CONFIG_HAVE_EBPF_JIT=y

+ CONFIG_ARCH_WANT_DEFAULT_BPF_JIT=y

+ 

+ #

+ # BPF subsystem

+ #

+ CONFIG_BPF_SYSCALL=y

+ CONFIG_BPF_JIT=y

+ CONFIG_BPF_JIT_ALWAYS_ON=y

+ CONFIG_BPF_JIT_DEFAULT_ON=y

+ CONFIG_BPF_UNPRIV_DEFAULT_OFF=y

+ # CONFIG_BPF_PRELOAD is not set

+ CONFIG_BPF_LSM=y

+ # end of BPF subsystem

+ 

  # CONFIG_PREEMPT_NONE is not set

  # CONFIG_PREEMPT_VOLUNTARY is not set

  CONFIG_PREEMPT=y

  CONFIG_PREEMPT_COUNT=y

  CONFIG_PREEMPTION=y

  CONFIG_PREEMPT_DYNAMIC=y

+ CONFIG_SCHED_CORE=y

  

  #

  # CPU/Task time and stats accounting
@@ -193,6 +213,7 @@ 

  CONFIG_CGROUP_CPUACCT=y

  CONFIG_CGROUP_PERF=y

  CONFIG_CGROUP_BPF=y

+ CONFIG_CGROUP_MISC=y

  # CONFIG_CGROUP_DEBUG is not set

  CONFIG_SOCK_CGROUP_DATA=y

  CONFIG_NAMESPACES=y
@@ -224,7 +245,6 @@ 

  CONFIG_HAVE_UID16=y

  CONFIG_SYSCTL_EXCEPTION_TRACE=y

  CONFIG_HAVE_PCSPKR_PLATFORM=y

- CONFIG_BPF=y

  # CONFIG_EXPERT is not set

  # CONFIG_UID16 is not set

  CONFIG_MULTIUSER=y
@@ -253,12 +273,6 @@ 

  CONFIG_KALLSYMS_ALL=y

  CONFIG_KALLSYMS_ABSOLUTE_PERCPU=y

  CONFIG_KALLSYMS_BASE_RELATIVE=y

- CONFIG_BPF_LSM=y

- CONFIG_BPF_SYSCALL=y

- CONFIG_ARCH_WANT_DEFAULT_BPF_JIT=y

- CONFIG_BPF_JIT_ALWAYS_ON=y

- CONFIG_BPF_JIT_DEFAULT_ON=y

- # CONFIG_BPF_PRELOAD is not set

  # CONFIG_USERFAULTFD is not set

  CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE=y

  CONFIG_KCMP=y
@@ -307,7 +321,6 @@ 

  CONFIG_ARCH_MAY_HAVE_PC_FDC=y

  CONFIG_GENERIC_CALIBRATE_DELAY=y

  CONFIG_ARCH_HAS_CPU_RELAX=y

- CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y

  CONFIG_ARCH_HAS_FILTER_PGPROT=y

  CONFIG_HAVE_SETUP_PER_CPU_AREA=y

  CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y
@@ -315,7 +328,6 @@ 

  CONFIG_ARCH_HIBERNATION_POSSIBLE=y

  CONFIG_ARCH_SUSPEND_POSSIBLE=y

  CONFIG_ARCH_WANT_GENERAL_HUGETLB=y

- CONFIG_ZONE_DMA32=y

  CONFIG_AUDIT_ARCH=y

  CONFIG_HAVE_INTEL_TXT=y

  CONFIG_X86_64_SMP=y
@@ -328,7 +340,6 @@ 

  #

  # Processor type and features

  #

- CONFIG_ZONE_DMA=y

  CONFIG_SMP=y

  CONFIG_X86_FEATURE_NAMES=y

  CONFIG_X86_X2APIC=y
@@ -445,7 +456,6 @@ 

  CONFIG_X86_PMEM_LEGACY=m

  CONFIG_X86_CHECK_BIOS_CORRUPTION=y

  CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y

- CONFIG_X86_RESERVE_LOW=64

  CONFIG_MTRR=y

  CONFIG_MTRR_SANITIZER=y

  CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=1
@@ -496,12 +506,8 @@ 

  # end of Processor type and features

  

  CONFIG_ARCH_HAS_ADD_PAGES=y

- CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y

- CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y

+ CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y

  CONFIG_USE_PERCPU_NUMA_NODE_ID=y

- CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK=y

- CONFIG_ARCH_ENABLE_HUGEPAGE_MIGRATION=y

- CONFIG_ARCH_ENABLE_THP_MIGRATION=y

  

  #

  # Power management and ACPI options
@@ -593,7 +599,9 @@ 

  CONFIG_CHT_WC_PMIC_OPREGION=y

  CONFIG_CHT_DC_TI_PMIC_OPREGION=y

  CONFIG_TPS68470_PMIC_OPREGION=y

+ CONFIG_ACPI_VIOT=y

  CONFIG_X86_PM_TIMER=y

+ CONFIG_ACPI_PRMT=y

  

  #

  # CPU Frequency scaling
@@ -738,9 +746,11 @@ 

  CONFIG_HAVE_KVM_IRQ_BYPASS=y

  CONFIG_HAVE_KVM_NO_POLL=y

  CONFIG_KVM_XFER_TO_GUEST_WORK=y

+ CONFIG_HAVE_KVM_PM_NOTIFIER=y

  CONFIG_VIRTUALIZATION=y

  CONFIG_KVM=m

  CONFIG_KVM_INTEL=m

+ CONFIG_X86_SGX_KVM=y

  CONFIG_KVM_AMD=m

  CONFIG_KVM_AMD_SEV=y

  CONFIG_KVM_XEN=y
@@ -781,6 +791,7 @@ 

  CONFIG_ARCH_HAS_SET_DIRECT_MAP=y

  CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y

  CONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT=y

+ CONFIG_ARCH_WANTS_NO_INSTR=y

  CONFIG_HAVE_ASM_MODVERSIONS=y

  CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y

  CONFIG_HAVE_RSEQ=y
@@ -845,6 +856,8 @@ 

  CONFIG_COMPAT_32BIT_TIME=y

  CONFIG_HAVE_ARCH_VMAP_STACK=y

  CONFIG_VMAP_STACK=y

+ CONFIG_HAVE_ARCH_RANDOMIZE_KSTACK_OFFSET=y

+ CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT=y

  CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y

  CONFIG_STRICT_KERNEL_RWX=y

  CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
@@ -891,10 +904,12 @@ 

  # CONFIG_MODULE_SIG_SHA384 is not set

  CONFIG_MODULE_SIG_SHA512=y

  CONFIG_MODULE_SIG_HASH="sha512"

- CONFIG_MODULE_COMPRESS=y

+ # CONFIG_MODULE_COMPRESS_NONE is not set

  # CONFIG_MODULE_COMPRESS_GZIP is not set

- CONFIG_MODULE_COMPRESS_XZ=y

+ # CONFIG_MODULE_COMPRESS_XZ is not set

+ CONFIG_MODULE_COMPRESS_ZSTD=y

  # CONFIG_MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS is not set

+ CONFIG_MODPROBE_PATH="/sbin/modprobe"

  CONFIG_MODULES_TREE_LOOKUP=y

  CONFIG_BLOCK=y

  CONFIG_BLK_RQ_ALLOC_TIME=y
@@ -909,9 +924,11 @@ 

  CONFIG_BLK_DEV_THROTTLING_LOW=y

  # CONFIG_BLK_CMDLINE_PARSER is not set

  CONFIG_BLK_WBT=y

+ CONFIG_BLK_WBT_MQ=y

  CONFIG_BLK_CGROUP_IOLATENCY=y

+ CONFIG_BLK_CGROUP_FC_APPID=y

  CONFIG_BLK_CGROUP_IOCOST=y

- CONFIG_BLK_WBT_MQ=y

+ CONFIG_BLK_CGROUP_IOPRIO=y

  CONFIG_BLK_DEBUG_FS=y

  CONFIG_BLK_DEBUG_FS_ZONED=y

  CONFIG_BLK_SED_OPAL=y
@@ -995,7 +1012,6 @@ 

  CONFIG_SELECT_MEMORY_MODEL=y

  CONFIG_SPARSEMEM_MANUAL=y

  CONFIG_SPARSEMEM=y

- CONFIG_NEED_MULTIPLE_NODES=y

  CONFIG_SPARSEMEM_EXTREME=y

  CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y

  CONFIG_SPARSEMEM_VMEMMAP=y
@@ -1003,19 +1019,24 @@ 

  CONFIG_NUMA_KEEP_MEMINFO=y

  CONFIG_MEMORY_ISOLATION=y

  CONFIG_HAVE_BOOTMEM_INFO_NODE=y

+ CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y

  CONFIG_MEMORY_HOTPLUG=y

  CONFIG_MEMORY_HOTPLUG_SPARSE=y

  CONFIG_MEMORY_HOTPLUG_DEFAULT_ONLINE=y

+ CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y

  CONFIG_MEMORY_HOTREMOVE=y

+ CONFIG_MHP_MEMMAP_ON_MEMORY=y

  CONFIG_SPLIT_PTLOCK_CPUS=4

+ CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK=y

  CONFIG_MEMORY_BALLOON=y

  CONFIG_BALLOON_COMPACTION=y

  CONFIG_COMPACTION=y

  CONFIG_PAGE_REPORTING=y

  CONFIG_MIGRATION=y

+ CONFIG_ARCH_ENABLE_HUGEPAGE_MIGRATION=y

+ CONFIG_ARCH_ENABLE_THP_MIGRATION=y

  CONFIG_CONTIG_ALLOC=y

  CONFIG_PHYS_ADDR_T_64BIT=y

- CONFIG_BOUNCE=y

  CONFIG_VIRT_TO_BUS=y

  CONFIG_MMU_NOTIFIER=y

  CONFIG_KSM=y
@@ -1033,6 +1054,7 @@ 

  CONFIG_CMA=y

  # CONFIG_CMA_DEBUG is not set

  # CONFIG_CMA_DEBUGFS is not set

+ CONFIG_CMA_SYSFS=y

  CONFIG_CMA_AREAS=7

  CONFIG_ZSWAP=y

  # CONFIG_ZSWAP_COMPRESSOR_DEFAULT_DEFLATE is not set
@@ -1055,7 +1077,10 @@ 

  CONFIG_GENERIC_EARLY_IOREMAP=y

  # CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set

  CONFIG_IDLE_PAGE_TRACKING=y

+ CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y

  CONFIG_ARCH_HAS_PTE_DEVMAP=y

+ CONFIG_ZONE_DMA=y

+ CONFIG_ZONE_DMA32=y

  CONFIG_ZONE_DEVICE=y

  CONFIG_DEV_PAGEMAP_OPS=y

  CONFIG_HMM_MIRROR=y
@@ -1068,6 +1093,7 @@ 

  CONFIG_READ_ONLY_THP_FOR_FS=y

  CONFIG_ARCH_HAS_PTE_SPECIAL=y

  CONFIG_MAPPING_DIRTY_HELPERS=y

+ CONFIG_SECRETMEM=y

  # end of Memory Management options

  

  CONFIG_NET=y
@@ -1213,13 +1239,13 @@ 

  CONFIG_NETFILTER_NETLINK=m

  CONFIG_NETFILTER_FAMILY_BRIDGE=y

  CONFIG_NETFILTER_FAMILY_ARP=y

+ CONFIG_NETFILTER_NETLINK_HOOK=m

  CONFIG_NETFILTER_NETLINK_ACCT=m

  CONFIG_NETFILTER_NETLINK_QUEUE=m

  CONFIG_NETFILTER_NETLINK_LOG=m

  CONFIG_NETFILTER_NETLINK_OSF=m

  CONFIG_NF_CONNTRACK=m

- CONFIG_NF_LOG_COMMON=m

- CONFIG_NF_LOG_NETDEV=m

+ CONFIG_NF_LOG_SYSLOG=m

  CONFIG_NETFILTER_CONNCOUNT=m

  CONFIG_NF_CONNTRACK_MARK=y

  CONFIG_NF_CONNTRACK_SECMARK=y
@@ -1293,6 +1319,7 @@ 

  CONFIG_NF_FLOW_TABLE_INET=m

  CONFIG_NF_FLOW_TABLE=m

  CONFIG_NETFILTER_XTABLES=m

+ CONFIG_NETFILTER_XTABLES_COMPAT=y

  

  #

  # Xtables combined modules
@@ -1533,7 +1560,6 @@ 

  CONFIG_NF_TABLES_BRIDGE=m

  CONFIG_NFT_BRIDGE_META=m

  CONFIG_NFT_BRIDGE_REJECT=m

- CONFIG_NF_LOG_BRIDGE=m

  CONFIG_NF_CONNTRACK_BRIDGE=m

  CONFIG_BRIDGE_NF_EBTABLES=m

  CONFIG_BRIDGE_EBT_BROUTE=m
@@ -1588,12 +1614,11 @@ 

  CONFIG_BRIDGE_VLAN_FILTERING=y

  CONFIG_BRIDGE_MRP=y

  CONFIG_BRIDGE_CFM=y

- CONFIG_HAVE_NET_DSA=y

  CONFIG_NET_DSA=m

- CONFIG_NET_DSA_TAG_8021Q=m

  CONFIG_NET_DSA_TAG_AR9331=m

  CONFIG_NET_DSA_TAG_BRCM_COMMON=m

  CONFIG_NET_DSA_TAG_BRCM=m

+ CONFIG_NET_DSA_TAG_BRCM_LEGACY=m

  CONFIG_NET_DSA_TAG_BRCM_PREPEND=m

  CONFIG_NET_DSA_TAG_HELLCREEK=m

  CONFIG_NET_DSA_TAG_GSWIP=m
@@ -1778,6 +1803,8 @@ 

  CONFIG_QRTR_MHI=m

  CONFIG_NET_NCSI=y

  CONFIG_NCSI_OEM_CMD_GET_MAC=y

+ CONFIG_NCSI_OEM_CMD_KEEP_PHY=y

+ CONFIG_PCPU_DEV_REFCNT=y

  CONFIG_RPS=y

  CONFIG_RFS_ACCEL=y

  CONFIG_SOCK_RX_QUEUE_MAPPING=y
@@ -1786,7 +1813,6 @@ 

  CONFIG_CGROUP_NET_CLASSID=y

  CONFIG_NET_RX_BUSY_POLL=y

  CONFIG_BQL=y

- CONFIG_BPF_JIT=y

  CONFIG_BPF_STREAM_PARSER=y

  CONFIG_NET_FLOW_LIMIT=y

  
@@ -1878,6 +1904,7 @@ 

  CONFIG_CAN_8DEV_USB=m

  CONFIG_CAN_EMS_USB=m

  CONFIG_CAN_ESD_USB2=m

+ CONFIG_CAN_ETAS_ES58X=m

  CONFIG_CAN_GS_USB=m

  CONFIG_CAN_KVASER_USB=m

  CONFIG_CAN_MCBA_USB=m
@@ -1902,6 +1929,7 @@ 

  CONFIG_BT_6LOWPAN=m

  CONFIG_BT_LEDS=y

  CONFIG_BT_MSFTEXT=y

+ CONFIG_BT_AOSPEXT=y

  # CONFIG_BT_DEBUGFS is not set

  # CONFIG_BT_SELFTEST is not set

  
@@ -1945,6 +1973,7 @@ 

  CONFIG_BT_MTKSDIO=m

  CONFIG_BT_MTKUART=m

  CONFIG_BT_HCIRSI=m

+ CONFIG_BT_VIRTIO=m

  # end of Bluetooth device drivers

  

  CONFIG_AF_RXRPC=m
@@ -2053,12 +2082,12 @@ 

  CONFIG_DST_CACHE=y

  CONFIG_GRO_CELLS=y

  CONFIG_SOCK_VALIDATE_XMIT=y

+ CONFIG_NET_SELFTESTS=m

  CONFIG_NET_SOCK_MSG=y

  CONFIG_NET_DEVLINK=y

  CONFIG_PAGE_POOL=y

  CONFIG_FAILOVER=m

  CONFIG_ETHTOOL_NETLINK=y

- CONFIG_HAVE_EBPF_JIT=y

  

  #

  # Device Drivers
@@ -2148,6 +2177,8 @@ 

  CONFIG_CXL_BUS=m

  CONFIG_CXL_MEM=m

  # CONFIG_CXL_MEM_RAW_COMMANDS is not set

+ CONFIG_CXL_ACPI=m

+ CONFIG_CXL_PMEM=m

  CONFIG_PCCARD=m

  CONFIG_PCMCIA=m

  CONFIG_PCMCIA_LOAD_CIS=y
@@ -2207,6 +2238,7 @@ 

  CONFIG_REGMAP_MMIO=y

  CONFIG_REGMAP_IRQ=y

  CONFIG_REGMAP_SOUNDWIRE=m

+ CONFIG_REGMAP_SOUNDWIRE_MBQ=m

  CONFIG_REGMAP_SCCB=m

  CONFIG_REGMAP_SPI_AVMM=m

  CONFIG_DMA_SHARED_BUFFER=y
@@ -2285,6 +2317,7 @@ 

  # CONFIG_MTD_PMC551 is not set

  # CONFIG_MTD_DATAFLASH is not set

  # CONFIG_MTD_MCHP23K256 is not set

+ # CONFIG_MTD_MCHP48L640 is not set

  # CONFIG_MTD_SST25L is not set

  # CONFIG_MTD_SLRAM is not set

  # CONFIG_MTD_PHRAM is not set
@@ -2387,7 +2420,6 @@ 

  CONFIG_ZRAM_DEF_COMP="lzo-rle"

  CONFIG_ZRAM_WRITEBACK=y

  # CONFIG_ZRAM_MEMORY_TRACKING is not set

- CONFIG_BLK_DEV_UMEM=m

  CONFIG_BLK_DEV_LOOP=m

  CONFIG_BLK_DEV_LOOP_MIN_COUNT=0

  CONFIG_BLK_DEV_CRYPTOLOOP=m
@@ -2457,10 +2489,10 @@ 

  CONFIG_VMWARE_BALLOON=m

  CONFIG_LATTICE_ECP3_CONFIG=m

  # CONFIG_SRAM is not set

+ CONFIG_DW_XDATA_PCIE=m

  CONFIG_PCI_ENDPOINT_TEST=m

  CONFIG_XILINX_SDFEC=m

  CONFIG_MISC_RTSX=m

- CONFIG_PVPANIC=m

  CONFIG_C2PORT=m

  CONFIG_C2PORT_DURAMAR_2150=m

  
@@ -2504,11 +2536,11 @@ 

  CONFIG_MISC_RTSX_USB=m

  CONFIG_HABANA_AI=m

  CONFIG_UACCE=m

+ CONFIG_PVPANIC=y

+ CONFIG_PVPANIC_MMIO=m

+ CONFIG_PVPANIC_PCI=m

  # end of Misc devices

  

- CONFIG_HAVE_IDE=y

- # CONFIG_IDE is not set

- 

  #

  # SCSI device support

  #
@@ -2590,6 +2622,7 @@ 

  CONFIG_SCSI_MPT2SAS_MAX_SGE=128

  CONFIG_SCSI_MPT3SAS_MAX_SGE=128

  CONFIG_SCSI_MPT2SAS=m

+ CONFIG_SCSI_MPI3MR=m

  CONFIG_SCSI_SMARTPQI=m

  CONFIG_SCSI_UFSHCD=m

  CONFIG_SCSI_UFSHCD_PCI=m
@@ -2642,6 +2675,7 @@ 

  CONFIG_QEDF=m

  CONFIG_SCSI_LPFC=m

  # CONFIG_SCSI_LPFC_DEBUG_FS is not set

+ CONFIG_SCSI_EFCT=m

  CONFIG_SCSI_DC395x=m

  CONFIG_SCSI_AM53C974=m

  CONFIG_SCSI_WD719X=m
@@ -2939,6 +2973,7 @@ 

  CONFIG_NET_DSA_MICROCHIP_KSZ9477_SPI=m

  CONFIG_NET_DSA_MICROCHIP_KSZ8795=m

  CONFIG_NET_DSA_MICROCHIP_KSZ8795_SPI=m

+ CONFIG_NET_DSA_MICROCHIP_KSZ8863_SMI=m

  CONFIG_NET_DSA_MV88E6XXX=m

  CONFIG_NET_DSA_MV88E6XXX_PTP=y

  CONFIG_NET_DSA_MSCC_SEVILLE=m
@@ -3101,6 +3136,8 @@ 

  CONFIG_ICE=m

  CONFIG_FM10K=m

  CONFIG_IGC=m

+ CONFIG_NET_VENDOR_MICROSOFT=y

+ CONFIG_MICROSOFT_MANA=m

  CONFIG_JME=m

  CONFIG_NET_VENDOR_MARVELL=y

  CONFIG_MVMDIO=m
@@ -3125,8 +3162,10 @@ 

  CONFIG_MLX5_EN_RXNFC=y

  CONFIG_MLX5_MPFS=y

  CONFIG_MLX5_ESWITCH=y

+ CONFIG_MLX5_BRIDGE=y

  CONFIG_MLX5_CLS_ACT=y

  CONFIG_MLX5_TC_CT=y

+ CONFIG_MLX5_TC_SAMPLE=y

  CONFIG_MLX5_CORE_EN_DCB=y

  CONFIG_MLX5_CORE_IPOIB=y

  CONFIG_MLX5_FPGA_IPSEC=y
@@ -3143,8 +3182,6 @@ 

  CONFIG_MLXSW_CORE_THERMAL=y

  CONFIG_MLXSW_PCI=m

  CONFIG_MLXSW_I2C=m

- CONFIG_MLXSW_SWITCHIB=m

- CONFIG_MLXSW_SWITCHX2=m

  CONFIG_MLXSW_SPECTRUM=m

  CONFIG_MLXSW_SPECTRUM_DCB=y

  CONFIG_MLXSW_MINIMAL=m
@@ -3252,6 +3289,7 @@ 

  CONFIG_STMMAC_PLATFORM=m

  CONFIG_DWMAC_GENERIC=m

  CONFIG_DWMAC_INTEL=m

+ CONFIG_DWMAC_LOONGSON=m

  CONFIG_STMMAC_PCI=m

  CONFIG_NET_VENDOR_SUN=y

  CONFIG_HAPPYMEAL=m
@@ -3285,7 +3323,6 @@ 

  CONFIG_PCMCIA_XIRC2PS=m

  CONFIG_FDDI=m

  CONFIG_DEFXX=m

- CONFIG_DEFXX_MMIO=y

  CONFIG_SKFP=m

  # CONFIG_HIPPI is not set

  CONFIG_NET_SB1000=m
@@ -3318,11 +3355,15 @@ 

  CONFIG_LSI_ET1011C_PHY=m

  CONFIG_MARVELL_PHY=m

  CONFIG_MARVELL_10G_PHY=m

+ CONFIG_MARVELL_88X2222_PHY=m

+ CONFIG_MEDIATEK_GE_PHY=m

  CONFIG_MICREL_PHY=m

  CONFIG_MICROCHIP_PHY=m

  CONFIG_MICROCHIP_T1_PHY=m

  CONFIG_MICROSEMI_PHY=m

+ CONFIG_MOTORCOMM_PHY=m

  CONFIG_NATIONAL_PHY=m

+ CONFIG_NXP_C45_TJA11XX_PHY=m

  CONFIG_NXP_TJA11XX_PHY=m

  CONFIG_AT803X_PHY=m

  CONFIG_QSEMI_PHY=m
@@ -3342,6 +3383,8 @@ 

  CONFIG_MICREL_KS8995MA=m

  CONFIG_MDIO_DEVICE=m

  CONFIG_MDIO_BUS=m

+ CONFIG_FWNODE_MDIO=m

+ CONFIG_ACPI_MDIO=m

  CONFIG_MDIO_DEVRES=m

  CONFIG_MDIO_BITBANG=m

  CONFIG_MDIO_BCM_UNIMAC=m
@@ -3730,6 +3773,17 @@ 

  # CONFIG_IEEE802154_CA8210_DEBUGFS is not set

  CONFIG_IEEE802154_MCR20A=m

  CONFIG_IEEE802154_HWSIM=m

+ 

+ #

+ # Wireless WAN

+ #

+ CONFIG_WWAN=y

+ CONFIG_WWAN_HWSIM=m

+ CONFIG_MHI_WWAN_CTRL=m

+ CONFIG_RPMSG_WWAN_CTRL=m

+ CONFIG_IOSM=m

+ # end of Wireless WAN

+ 

  CONFIG_XEN_NETDEV_FRONTEND=m

  CONFIG_XEN_NETDEV_BACKEND=m

  CONFIG_VMXNET3=m
@@ -3883,6 +3937,7 @@ 

  CONFIG_JOYSTICK_PSXPAD_SPI=m

  CONFIG_JOYSTICK_PSXPAD_SPI_FF=y

  CONFIG_JOYSTICK_PXRC=m

+ CONFIG_JOYSTICK_QWIIC=m

  CONFIG_JOYSTICK_FSIA6B=m

  CONFIG_INPUT_TABLET=y

  CONFIG_TABLET_USB_ACECAD=m
@@ -3892,7 +3947,6 @@ 

  CONFIG_TABLET_USB_PEGASUS=m

  CONFIG_TABLET_SERIAL_WACOM4=m

  CONFIG_INPUT_TOUCHSCREEN=y

- CONFIG_TOUCHSCREEN_PROPERTIES=y

  CONFIG_TOUCHSCREEN_88PM860X=m

  CONFIG_TOUCHSCREEN_ADS7846=m

  CONFIG_TOUCHSCREEN_AD7877=m
@@ -3924,7 +3978,9 @@ 

  CONFIG_TOUCHSCREEN_FUJITSU=m

  CONFIG_TOUCHSCREEN_GOODIX=m

  CONFIG_TOUCHSCREEN_HIDEEP=m

+ CONFIG_TOUCHSCREEN_HYCON_HY46XX=m

  CONFIG_TOUCHSCREEN_ILI210X=m

+ CONFIG_TOUCHSCREEN_ILITEK=m

  CONFIG_TOUCHSCREEN_S6SY761=m

  CONFIG_TOUCHSCREEN_GUNZE=m

  CONFIG_TOUCHSCREEN_EKTF2127=m
@@ -3936,6 +3992,7 @@ 

  CONFIG_TOUCHSCREEN_MCS5000=m

  CONFIG_TOUCHSCREEN_MMS114=m

  CONFIG_TOUCHSCREEN_MELFAS_MIP4=m

+ CONFIG_TOUCHSCREEN_MSG2638=m

  CONFIG_TOUCHSCREEN_MTOUCH=m

  CONFIG_TOUCHSCREEN_INEXIO=m

  CONFIG_TOUCHSCREEN_MK712=m
@@ -4001,6 +4058,7 @@ 

  CONFIG_INPUT_AD714X_I2C=m

  CONFIG_INPUT_AD714X_SPI=m

  CONFIG_INPUT_ARIZONA_HAPTICS=m

+ CONFIG_INPUT_ATC260X_ONKEY=m

  CONFIG_INPUT_BMA150=m

  CONFIG_INPUT_E3X0_BUTTON=m

  CONFIG_INPUT_PCSPKR=m
@@ -4044,6 +4102,7 @@ 

  CONFIG_INPUT_ADXL34X_SPI=m

  CONFIG_INPUT_IMS_PCU=m

  CONFIG_INPUT_IQS269A=m

+ CONFIG_INPUT_IQS626A=m

  CONFIG_INPUT_CMA3000=m

  CONFIG_INPUT_CMA3000_I2C=m

  CONFIG_INPUT_XEN_KBDDEV_FRONTEND=m
@@ -4169,19 +4228,13 @@ 

  

  CONFIG_SERIAL_MCTRL_GPIO=y

  CONFIG_SERIAL_NONSTANDARD=y

- CONFIG_ROCKETPORT=m

- CONFIG_CYCLADES=m

- CONFIG_CYZ_INTR=y

  CONFIG_MOXA_INTELLIO=m

  CONFIG_MOXA_SMARTIO=m

  CONFIG_SYNCLINK_GT=m

- CONFIG_ISI=m

  CONFIG_N_HDLC=m

  CONFIG_N_GSM=m

  CONFIG_NOZOMI=m

  CONFIG_NULL_TTY=m

- CONFIG_TRACE_ROUTER=m

- CONFIG_TRACE_SINK=m

  CONFIG_HVC_DRIVER=y

  CONFIG_HVC_IRQ=y

  CONFIG_HVC_XEN=y
@@ -4224,10 +4277,7 @@ 

  

  CONFIG_MWAVE=m

  # CONFIG_DEVMEM is not set

- # CONFIG_DEVKMEM is not set

  CONFIG_NVRAM=m

- CONFIG_RAW_DRIVER=m

- CONFIG_MAX_RAW_DEVS=8192

  # CONFIG_DEVPORT is not set

  CONFIG_HPET=y

  # CONFIG_HPET_MMAP is not set
@@ -4252,8 +4302,10 @@ 

  CONFIG_TCG_TIS_ST33ZP24_I2C=m

  CONFIG_TCG_TIS_ST33ZP24_SPI=m

  CONFIG_TELCLOCK=m

+ CONFIG_XILLYBUS_CLASS=m

  CONFIG_XILLYBUS=m

  CONFIG_XILLYBUS_PCIE=m

+ CONFIG_XILLYUSB=m

  # end of Character devices

  

  # CONFIG_RANDOM_TRUST_CPU is not set
@@ -4341,6 +4393,7 @@ 

  #

  CONFIG_I2C_DIOLAN_U2C=m

  CONFIG_I2C_DLN2=m

+ CONFIG_I2C_CP2615=m

  CONFIG_I2C_PARPORT=m

  CONFIG_I2C_ROBOTFUZZ_OSIF=m

  CONFIG_I2C_TAOS_EVM=m
@@ -4373,6 +4426,8 @@ 

  # SPI Master Controller Drivers

  #

  CONFIG_SPI_ALTERA=m

+ CONFIG_SPI_ALTERA_CORE=m

+ CONFIG_SPI_ALTERA_DFL=m

  CONFIG_SPI_AXI_SPI_ENGINE=m

  CONFIG_SPI_BITBANG=m

  CONFIG_SPI_BUTTERFLY=m
@@ -4637,6 +4692,7 @@ 

  # end of 1-wire Slaves

  

  CONFIG_POWER_RESET=y

+ CONFIG_POWER_RESET_ATC260X=m

  CONFIG_POWER_RESET_MT6323=y

  CONFIG_POWER_RESET_RESTART=y

  CONFIG_POWER_SUPPLY=y
@@ -4704,11 +4760,14 @@ 

  CONFIG_CHARGER_SMB347=m

  CONFIG_CHARGER_TPS65090=m

  CONFIG_BATTERY_GAUGE_LTC2941=m

+ CONFIG_BATTERY_GOLDFISH=m

  CONFIG_BATTERY_RT5033=m

  CONFIG_CHARGER_RT9455=m

  CONFIG_CHARGER_CROS_USBPD=m

  CONFIG_CHARGER_BD99954=m

  CONFIG_CHARGER_WILCO=m

+ CONFIG_BATTERY_SURFACE=m

+ CONFIG_CHARGER_SURFACE=m

  CONFIG_HWMON=y

  CONFIG_HWMON_VID=m

  # CONFIG_HWMON_DEBUG_CHIP is not set
@@ -4742,7 +4801,6 @@ 

  CONFIG_SENSORS_K8TEMP=m

  CONFIG_SENSORS_K10TEMP=m

  CONFIG_SENSORS_FAM15H_POWER=m

- CONFIG_SENSORS_AMD_ENERGY=m

  CONFIG_SENSORS_APPLESMC=m

  CONFIG_SENSORS_ASB100=m

  CONFIG_SENSORS_ASPEED=m
@@ -4833,15 +4891,20 @@ 

  CONFIG_SENSORS_NCT7802=m

  CONFIG_SENSORS_NCT7904=m

  CONFIG_SENSORS_NPCM7XX=m

+ CONFIG_SENSORS_NZXT_KRAKEN2=m

  CONFIG_SENSORS_PCF8591=m

  CONFIG_PMBUS=m

  CONFIG_SENSORS_PMBUS=m

  CONFIG_SENSORS_ADM1266=m

  CONFIG_SENSORS_ADM1275=m

  CONFIG_SENSORS_BEL_PFE=m

+ CONFIG_SENSORS_BPA_RS600=m

+ CONFIG_SENSORS_FSP_3Y=m

  CONFIG_SENSORS_IBM_CFFPS=m

+ CONFIG_SENSORS_DPS920AB=m

  CONFIG_SENSORS_INSPUR_IPSPS=m

  CONFIG_SENSORS_IR35221=m

+ CONFIG_SENSORS_IR36021=m

  CONFIG_SENSORS_IR38064=m

  CONFIG_SENSORS_IRPS5401=m

  CONFIG_SENSORS_ISL68137=m
@@ -4849,6 +4912,7 @@ 

  CONFIG_SENSORS_LTC2978=m

  # CONFIG_SENSORS_LTC2978_REGULATOR is not set

  CONFIG_SENSORS_LTC3815=m

+ CONFIG_SENSORS_MAX15301=m

  CONFIG_SENSORS_MAX16064=m

  CONFIG_SENSORS_MAX16601=m

  CONFIG_SENSORS_MAX20730=m
@@ -4856,10 +4920,13 @@ 

  CONFIG_SENSORS_MAX31785=m

  CONFIG_SENSORS_MAX34440=m

  CONFIG_SENSORS_MAX8688=m

+ CONFIG_SENSORS_MP2888=m

  CONFIG_SENSORS_MP2975=m

+ CONFIG_SENSORS_PIM4328=m

  CONFIG_SENSORS_PM6764TR=m

  CONFIG_SENSORS_PXE1610=m

  CONFIG_SENSORS_Q54SJ108A2=m

+ CONFIG_SENSORS_STPDDC60=m

  CONFIG_SENSORS_TPS40422=m

  CONFIG_SENSORS_TPS53679=m

  CONFIG_SENSORS_UCD9000=m
@@ -4870,6 +4937,7 @@ 

  CONFIG_SENSORS_SHT15=m

  CONFIG_SENSORS_SHT21=m

  CONFIG_SENSORS_SHT3x=m

+ CONFIG_SENSORS_SHT4x=m

  CONFIG_SENSORS_SHTC1=m

  CONFIG_SENSORS_SIS5595=m

  CONFIG_SENSORS_DME1737=m
@@ -4962,6 +5030,7 @@ 

  

  CONFIG_INTEL_BXT_PMIC_THERMAL=m

  CONFIG_INTEL_PCH_THERMAL=m

+ CONFIG_INTEL_TCC_COOLING=m

  # end of Intel thermal drivers

  

  CONFIG_GENERIC_ADC_THERMAL=m
@@ -4971,6 +5040,7 @@ 

  CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y

  CONFIG_WATCHDOG_OPEN_TIMEOUT=0

  CONFIG_WATCHDOG_SYSFS=y

+ # CONFIG_WATCHDOG_HRTIMER_PRETIMEOUT is not set

  

  #

  # Watchdog Pretimeout Governors
@@ -5153,16 +5223,13 @@ 

  CONFIG_PCF50633_GPIO=m

  CONFIG_UCB1400_CORE=m

  CONFIG_MFD_RDC321X=m

+ CONFIG_MFD_RT4831=m

  CONFIG_MFD_RT5033=m

  CONFIG_MFD_RC5T583=y

- CONFIG_MFD_SEC_CORE=y

  CONFIG_MFD_SI476X_CORE=m

  CONFIG_MFD_SM501=m

  CONFIG_MFD_SM501_GPIO=y

  CONFIG_MFD_SKY81452=m

- CONFIG_ABX500_CORE=y

- CONFIG_AB3100_CORE=y

- CONFIG_AB3100_OTP=y

  CONFIG_MFD_SYSCON=y

  CONFIG_MFD_TI_AM335X_TSCADC=m

  CONFIG_MFD_LP3943=m
@@ -5174,7 +5241,6 @@ 

  CONFIG_TPS6507X=m

  CONFIG_MFD_TPS65086=m

  CONFIG_MFD_TPS65090=y

- CONFIG_MFD_TPS68470=y

  CONFIG_MFD_TI_LP873X=m

  CONFIG_MFD_TPS6586X=y

  CONFIG_MFD_TPS65910=y
@@ -5189,7 +5255,7 @@ 

  CONFIG_MFD_LM3533=m

  CONFIG_MFD_TQMX86=m

  CONFIG_MFD_VX855=m

- CONFIG_MFD_ARIZONA=y

+ CONFIG_MFD_ARIZONA=m

  CONFIG_MFD_ARIZONA_I2C=m

  CONFIG_MFD_ARIZONA_SPI=m

  CONFIG_MFD_CS47L24=y
@@ -5205,6 +5271,8 @@ 

  CONFIG_MFD_WM8350_I2C=y

  CONFIG_MFD_WM8994=m

  CONFIG_MFD_WCD934X=m

+ CONFIG_MFD_ATC260X=m

+ CONFIG_MFD_ATC260X_I2C=m

  CONFIG_RAVE_SP_CORE=m

  CONFIG_MFD_INTEL_M10_BMC=m

  # end of Multifunction device drivers
@@ -5223,6 +5291,7 @@ 

  CONFIG_REGULATOR_ARIZONA_LDO1=m

  CONFIG_REGULATOR_ARIZONA_MICSUPP=m

  CONFIG_REGULATOR_AS3711=m

+ CONFIG_REGULATOR_ATC260X=m

  CONFIG_REGULATOR_AXP20X=m

  CONFIG_REGULATOR_BCM590XX=m

  CONFIG_REGULATOR_BD9571MWV=m
@@ -5248,6 +5317,7 @@ 

  CONFIG_REGULATOR_MAX1586=m

  CONFIG_REGULATOR_MAX8649=m

  CONFIG_REGULATOR_MAX8660=m

+ CONFIG_REGULATOR_MAX8893=m

  CONFIG_REGULATOR_MAX8907=m

  CONFIG_REGULATOR_MAX8925=m

  CONFIG_REGULATOR_MAX8952=m
@@ -5262,6 +5332,7 @@ 

  CONFIG_REGULATOR_MT6311=m

  CONFIG_REGULATOR_MT6323=m

  CONFIG_REGULATOR_MT6358=m

+ CONFIG_REGULATOR_MT6359=m

  CONFIG_REGULATOR_MT6360=m

  CONFIG_REGULATOR_MT6397=m

  CONFIG_REGULATOR_PALMAS=m
@@ -5275,11 +5346,11 @@ 

  CONFIG_REGULATOR_RASPBERRYPI_TOUCHSCREEN_ATTINY=m

  CONFIG_REGULATOR_RC5T583=m

  CONFIG_REGULATOR_RT4801=m

+ CONFIG_REGULATOR_RT4831=m

  CONFIG_REGULATOR_RT5033=m

+ CONFIG_REGULATOR_RT6160=m

+ CONFIG_REGULATOR_RT6245=m

  CONFIG_REGULATOR_RTMV20=m

- CONFIG_REGULATOR_S2MPA01=m

- CONFIG_REGULATOR_S2MPS11=m

- CONFIG_REGULATOR_S5M8767=m

  CONFIG_REGULATOR_SKY81452=m

  CONFIG_REGULATOR_SLG51000=m

  CONFIG_REGULATOR_TPS51632=m
@@ -5381,6 +5452,7 @@ 

  CONFIG_V4L2_MEM2MEM_DEV=m

  CONFIG_V4L2_FLASH_LED_CLASS=m

  CONFIG_V4L2_FWNODE=m

+ CONFIG_V4L2_ASYNC=m

  CONFIG_VIDEOBUF_GEN=m

  CONFIG_VIDEOBUF_DMA_SG=m

  CONFIG_VIDEOBUF_VMALLOC=m
@@ -5410,7 +5482,6 @@ 

  #

  # Drivers filtered as selected at 'Filter media drivers'

  #

- CONFIG_TTPCI_EEPROM=m

  CONFIG_MEDIA_USB_SUPPORT=y

  

  #
@@ -5581,7 +5652,6 @@ 

  # Media capture/analog TV support

  #

  CONFIG_VIDEO_IVTV=m

- # CONFIG_VIDEO_IVTV_DEPRECATED_IOCTLS is not set

  CONFIG_VIDEO_IVTV_ALSA=m

  CONFIG_VIDEO_FB_IVTV=m

  # CONFIG_VIDEO_FB_IVTV_FORCE_PAT is not set
@@ -5618,14 +5688,10 @@ 

  #

  # Media digital TV PCI Adapters

  #

- CONFIG_DVB_AV7110_IR=y

- CONFIG_DVB_AV7110=m

- CONFIG_DVB_AV7110_OSD=y

  CONFIG_DVB_BUDGET_CORE=m

  CONFIG_DVB_BUDGET=m

  CONFIG_DVB_BUDGET_CI=m

  CONFIG_DVB_BUDGET_AV=m

- CONFIG_DVB_BUDGET_PATCH=m

  CONFIG_DVB_B2C2_FLEXCOP_PCI=m

  # CONFIG_DVB_B2C2_FLEXCOP_PCI_DEBUG is not set

  CONFIG_DVB_PLUTO2=m
@@ -5672,6 +5738,7 @@ 

  #

  CONFIG_VIDEO_CX2341X=m

  CONFIG_VIDEO_TVEEPROM=m

+ CONFIG_TTPCI_EEPROM=m

  CONFIG_CYPRESS_FIRMWARE=m

  CONFIG_VIDEOBUF2_CORE=m

  CONFIG_VIDEOBUF2_V4L2=m
@@ -5761,6 +5828,7 @@ 

  CONFIG_VIDEO_APTINA_PLL=m

  CONFIG_VIDEO_CCS_PLL=m

  CONFIG_VIDEO_HI556=m

+ CONFIG_VIDEO_IMX208=m

  CONFIG_VIDEO_IMX214=m

  CONFIG_VIDEO_IMX219=m

  CONFIG_VIDEO_IMX258=m
@@ -5946,7 +6014,6 @@ 

  #

  # DVB-T (terrestrial) frontends

  #

- CONFIG_DVB_SP8870=m

  CONFIG_DVB_SP887X=m

  CONFIG_DVB_CX22700=m

  CONFIG_DVB_CX22702=m
@@ -6064,7 +6131,6 @@ 

  CONFIG_DRM_DP_AUX_CHARDEV=y

  # CONFIG_DRM_DEBUG_SELFTEST is not set

  CONFIG_DRM_KMS_HELPER=m

- CONFIG_DRM_KMS_FB_HELPER=y

  CONFIG_DRM_FBDEV_EMULATION=y

  CONFIG_DRM_FBDEV_OVERALLOC=100

  CONFIG_DRM_LOAD_EDID_FIRMWARE=y
@@ -6097,7 +6163,6 @@ 

  CONFIG_DRM_AMDGPU_SI=y

  CONFIG_DRM_AMDGPU_CIK=y

  CONFIG_DRM_AMDGPU_USERPTR=y

- # CONFIG_DRM_AMDGPU_GART_DEBUGFS is not set

  

  #

  # ACP (Audio CoProcessor) Configuration
@@ -6112,9 +6177,11 @@ 

  CONFIG_DRM_AMD_DC_DCN=y

  CONFIG_DRM_AMD_DC_HDCP=y

  CONFIG_DRM_AMD_DC_SI=y

+ CONFIG_DRM_AMD_SECURE_DISPLAY=y

  # end of Display Engine Configuration

  

  CONFIG_HSA_AMD=y

+ CONFIG_HSA_AMD_SVM=y

  CONFIG_DRM_NOUVEAU=m

  # CONFIG_NOUVEAU_LEGACY_CTX_SUPPORT is not set

  CONFIG_NOUVEAU_DEBUG=5
@@ -6130,6 +6197,7 @@ 

  CONFIG_DRM_I915_USERPTR=y

  CONFIG_DRM_I915_GVT=y

  CONFIG_DRM_I915_GVT_KVMGT=m

+ CONFIG_DRM_I915_REQUEST_TIMEOUT=20000

  CONFIG_DRM_I915_FENCE_TIMEOUT=10000

  CONFIG_DRM_I915_USERFAULT_AUTOSUSPEND=250

  CONFIG_DRM_I915_HEARTBEAT_INTERVAL=2500
@@ -6142,7 +6210,6 @@ 

  CONFIG_DRM_VMWGFX=m

  CONFIG_DRM_VMWGFX_FBCON=y

  CONFIG_DRM_GMA500=m

- CONFIG_DRM_GMA600=y

  CONFIG_DRM_UDL=m

  CONFIG_DRM_AST=m

  CONFIG_DRM_MGAG200=m
@@ -6170,6 +6237,7 @@ 

  # CONFIG_DRM_ETNAVIV is not set

  CONFIG_DRM_CIRRUS_QEMU=m

  CONFIG_DRM_GM12U320=m

+ CONFIG_DRM_SIMPLEDRM=m

  CONFIG_TINYDRM_HX8357D=m

  CONFIG_TINYDRM_ILI9225=m

  CONFIG_TINYDRM_ILI9341=m
@@ -6181,6 +6249,8 @@ 

  CONFIG_DRM_XEN=y

  CONFIG_DRM_XEN_FRONTEND=m

  CONFIG_DRM_VBOXVIDEO=m

+ CONFIG_DRM_GUD=m

+ CONFIG_DRM_HYPERV=m

  # CONFIG_DRM_LEGACY is not set

  CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y

  
@@ -6252,6 +6322,7 @@ 

  # CONFIG_FB_MB862XX is not set

  CONFIG_FB_HYPERV=m

  CONFIG_FB_SIMPLE=y

+ # CONFIG_FB_SSD1307 is not set

  # CONFIG_FB_SM712 is not set

  # end of Frame buffer Devices

  
@@ -6280,6 +6351,7 @@ 

  CONFIG_BACKLIGHT_MAX8925=m

  CONFIG_BACKLIGHT_APPLE=m

  CONFIG_BACKLIGHT_QCOM_WLED=m

+ CONFIG_BACKLIGHT_RT4831=m

  CONFIG_BACKLIGHT_SAHARA=m

  CONFIG_BACKLIGHT_WM831X=m

  CONFIG_BACKLIGHT_ADP5520=m
@@ -6355,6 +6427,7 @@ 

  # CONFIG_SND_JACK_INJECTION_DEBUG is not set

  CONFIG_SND_VMASTER=y

  CONFIG_SND_DMA_SGBUF=y

+ CONFIG_SND_CTL_LED=m

  CONFIG_SND_SEQUENCER=m

  CONFIG_SND_SEQ_DUMMY=m

  CONFIG_SND_SEQUENCER_OSS=m
@@ -6560,6 +6633,7 @@ 

  # CONFIG_SND_SOC_FSL_ESAI is not set

  # CONFIG_SND_SOC_FSL_MICFIL is not set

  CONFIG_SND_SOC_FSL_XCVR=m

+ CONFIG_SND_SOC_FSL_RPMSG=m

  # CONFIG_SND_SOC_IMX_AUDMUX is not set

  # end of SoC Audio for Freescale CPUs

  
@@ -6593,6 +6667,8 @@ 

  CONFIG_SND_SOC_ACPI_INTEL_MATCH=m

  CONFIG_SND_SOC_INTEL_MACH=y

  CONFIG_SND_SOC_INTEL_USER_FRIENDLY_LONG_NAMES=y

+ CONFIG_SND_SOC_INTEL_HDA_DSP_COMMON=m

+ CONFIG_SND_SOC_INTEL_SOF_MAXIM_COMMON=m

  CONFIG_SND_SOC_INTEL_HASWELL_MACH=m

  CONFIG_SND_SOC_INTEL_BDW_RT5650_MACH=m

  CONFIG_SND_SOC_INTEL_BDW_RT5677_MACH=m
@@ -6625,6 +6701,7 @@ 

  CONFIG_SND_SOC_INTEL_GLK_RT5682_MAX98357A_MACH=m

  CONFIG_SND_SOC_INTEL_SKL_HDA_DSP_GENERIC_MACH=m

  CONFIG_SND_SOC_INTEL_SOF_RT5682_MACH=m

+ CONFIG_SND_SOC_INTEL_SOF_CS42L42_MACH=m

  CONFIG_SND_SOC_INTEL_SOF_PCM512x_MACH=m

  CONFIG_SND_SOC_INTEL_CML_LP_DA7219_MAX98357A_MACH=m

  CONFIG_SND_SOC_INTEL_SOF_CML_RT1011_RT5682_MACH=m
@@ -6789,8 +6866,10 @@ 

  CONFIG_SND_SOC_RT298=m

  CONFIG_SND_SOC_RT1011=m

  CONFIG_SND_SOC_RT1015=m

+ CONFIG_SND_SOC_RT1015P=m

  CONFIG_SND_SOC_RT1308=m

  CONFIG_SND_SOC_RT1308_SDW=m

+ CONFIG_SND_SOC_RT1316_SDW=m

  CONFIG_SND_SOC_RT5514=m

  CONFIG_SND_SOC_RT5514_SPI=m

  CONFIG_SND_SOC_RT5616=m
@@ -6811,8 +6890,10 @@ 

  CONFIG_SND_SOC_RT700_SDW=m

  CONFIG_SND_SOC_RT711=m

  CONFIG_SND_SOC_RT711_SDW=m

+ CONFIG_SND_SOC_RT711_SDCA_SDW=m

  CONFIG_SND_SOC_RT715=m

  CONFIG_SND_SOC_RT715_SDW=m

+ CONFIG_SND_SOC_RT715_SDCA_SDW=m

  CONFIG_SND_SOC_SGTL5000=m

  CONFIG_SND_SOC_SI476X=m

  CONFIG_SND_SOC_SIGMADSP=m
@@ -6822,6 +6903,7 @@ 

  CONFIG_SND_SOC_SIMPLE_MUX=m

  CONFIG_SND_SOC_SPDIF=m

  CONFIG_SND_SOC_SSM2305=m

+ CONFIG_SND_SOC_SSM2518=m

  CONFIG_SND_SOC_SSM2602=m

  CONFIG_SND_SOC_SSM2602_SPI=m

  CONFIG_SND_SOC_SSM2602_I2C=m
@@ -6839,6 +6921,7 @@ 

  CONFIG_SND_SOC_TAS6424=m

  CONFIG_SND_SOC_TDA7419=m

  CONFIG_SND_SOC_TFA9879=m

+ CONFIG_SND_SOC_TFA989X=m

  CONFIG_SND_SOC_TLV320AIC23=m

  CONFIG_SND_SOC_TLV320AIC23_I2C=m

  CONFIG_SND_SOC_TLV320AIC23_SPI=m
@@ -6847,13 +6930,18 @@ 

  CONFIG_SND_SOC_TLV320AIC32X4_I2C=m

  CONFIG_SND_SOC_TLV320AIC32X4_SPI=m

  CONFIG_SND_SOC_TLV320AIC3X=m

+ CONFIG_SND_SOC_TLV320AIC3X_I2C=m

+ CONFIG_SND_SOC_TLV320AIC3X_SPI=m

  CONFIG_SND_SOC_TLV320ADCX140=m

  CONFIG_SND_SOC_TS3A227E=m

  CONFIG_SND_SOC_TSCS42XX=m

  CONFIG_SND_SOC_TSCS454=m

  CONFIG_SND_SOC_UDA1334=m

  CONFIG_SND_SOC_WCD9335=m

+ CONFIG_SND_SOC_WCD_MBHC=m

  CONFIG_SND_SOC_WCD934X=m

+ CONFIG_SND_SOC_WCD938X=m

+ CONFIG_SND_SOC_WCD938X_SDW=m

  CONFIG_SND_SOC_WM5102=m

  CONFIG_SND_SOC_WM8510=m

  CONFIG_SND_SOC_WM8523=m
@@ -6881,7 +6969,6 @@ 

  CONFIG_SND_SOC_WM8985=m

  CONFIG_SND_SOC_WSA881X=m

  CONFIG_SND_SOC_ZL38060=m

- CONFIG_SND_SOC_ZX_AUD96P22=m

  CONFIG_SND_SOC_MAX9759=m

  CONFIG_SND_SOC_MT6351=m

  CONFIG_SND_SOC_MT6358=m
@@ -6905,6 +6992,7 @@ 

  CONFIG_HDMI_LPE_AUDIO=m

  CONFIG_SND_SYNTH_EMUX=m

  CONFIG_SND_XEN_FRONTEND=m

+ CONFIG_SND_VIRTIO=m

  CONFIG_AC97_BUS=m

  

  #
@@ -6947,6 +7035,7 @@ 

  CONFIG_HID_ELECOM=m

  CONFIG_HID_ELO=m

  CONFIG_HID_EZKEY=m

+ CONFIG_HID_FT260=m

  CONFIG_HID_GEMBIRD=m

  CONFIG_HID_GFRM=m

  CONFIG_HID_GLORIOUS=m
@@ -7004,6 +7093,7 @@ 

  CONFIG_HID_ROCCAT=m

  CONFIG_HID_SAITEK=m

  CONFIG_HID_SAMSUNG=m

+ CONFIG_HID_SEMITEK=m

  CONFIG_HID_SONY=m

  CONFIG_SONY_FF=y

  CONFIG_HID_SPEEDLINK=m
@@ -7063,6 +7153,15 @@ 

  #

  CONFIG_AMD_SFH_HID=m

  # end of AMD SFH HID Support

+ 

+ #

+ # Surface System Aggregator Module HID support

+ #

+ CONFIG_SURFACE_HID=m

+ CONFIG_SURFACE_KBD=m

+ # end of Surface System Aggregator Module HID support

+ 

+ CONFIG_SURFACE_HID_CORE=m

  # end of HID support

  

  CONFIG_USB_OHCI_LITTLE_ENDIAN=y
@@ -7296,8 +7395,8 @@ 

  CONFIG_TYPEC_UCSI=m

  CONFIG_UCSI_CCG=m

  CONFIG_UCSI_ACPI=m

- CONFIG_TYPEC_HD3SS3220=m

  CONFIG_TYPEC_TPS6598X=m

+ CONFIG_TYPEC_HD3SS3220=m

  CONFIG_TYPEC_STUSB160X=m

  

  #
@@ -7407,6 +7506,7 @@ 

  CONFIG_LEDS_REGULATOR=m

  CONFIG_LEDS_BD2802=m

  CONFIG_LEDS_INTEL_SS4200=m

+ CONFIG_LEDS_LT3593=m

  CONFIG_LEDS_ADP5520=m

  CONFIG_LEDS_MC13783=m

  CONFIG_LEDS_TCA6507=m
@@ -7458,11 +7558,6 @@ 

  CONFIG_LEDS_TRIGGER_PATTERN=m

  CONFIG_LEDS_TRIGGER_AUDIO=m

  CONFIG_LEDS_TRIGGER_TTY=m

- 

- #

- # LED Blink

- #

- CONFIG_LEDS_BLINK=y

  CONFIG_ACCESSIBILITY=y

  CONFIG_A11Y_BRAILLE_CONSOLE=y

  
@@ -7497,7 +7592,7 @@ 

  CONFIG_INFINIBAND_QIB_DCA=y

  CONFIG_INFINIBAND_CXGB4=m

  CONFIG_INFINIBAND_EFA=m

- CONFIG_INFINIBAND_I40IW=m

+ CONFIG_INFINIBAND_IRDMA=m

  CONFIG_MLX4_INFINIBAND=m

  CONFIG_MLX5_INFINIBAND=m

  CONFIG_INFINIBAND_OCRDMA=m
@@ -7546,6 +7641,7 @@ 

  CONFIG_EDAC_SKX=m

  CONFIG_EDAC_I10NM=m

  CONFIG_EDAC_PND2=m

+ CONFIG_EDAC_IGEN6=m

  CONFIG_RTC_LIB=y

  CONFIG_RTC_MC146818_LIB=y

  CONFIG_RTC_CLASS=y
@@ -7610,7 +7706,6 @@ 

  CONFIG_RTC_DRV_RV3028=m

  CONFIG_RTC_DRV_RV3032=m

  CONFIG_RTC_DRV_RV8803=m

- CONFIG_RTC_DRV_S5M=m

  CONFIG_RTC_DRV_SD3078=m

  

  #
@@ -7685,6 +7780,7 @@ 

  # HID Sensor RTC drivers

  #

  CONFIG_RTC_DRV_HID_SENSOR_TIME=m

+ CONFIG_RTC_DRV_GOLDFISH=m

  CONFIG_RTC_DRV_WILCO_EC=m

  CONFIG_DMADEVICES=y

  # CONFIG_DMADEVICES_DEBUG is not set
@@ -7699,6 +7795,7 @@ 

  CONFIG_INTEL_IDMA64=m

  CONFIG_INTEL_IDXD=m

  CONFIG_INTEL_IDXD_SVM=y

+ CONFIG_INTEL_IDXD_PERFMON=y

  CONFIG_INTEL_IOATDMA=m

  CONFIG_PLX_DMA=m

  CONFIG_QCOM_HIDMA_MGMT=m
@@ -7764,6 +7861,7 @@ 

  CONFIG_UIO_PRUSS=m

  CONFIG_UIO_MF624=m

  CONFIG_UIO_HV_GENERIC=m

+ CONFIG_UIO_DFL=m

  CONFIG_VFIO_IOMMU_TYPE1=m

  CONFIG_VFIO_VIRQFD=m

  CONFIG_VFIO=m
@@ -7774,13 +7872,13 @@ 

  CONFIG_VFIO_PCI_INTX=y

  CONFIG_VFIO_PCI_IGD=y

  CONFIG_VFIO_MDEV=m

- CONFIG_VFIO_MDEV_DEVICE=m

  CONFIG_IRQ_BYPASS_MANAGER=m

  CONFIG_VIRT_DRIVERS=y

  CONFIG_VBOXGUEST=m

  CONFIG_NITRO_ENCLAVES=m

  CONFIG_ACRN_HSM=m

  CONFIG_VIRTIO=y

+ CONFIG_ARCH_HAS_RESTRICTED_VIRTIO_MEMORY_ACCESS=y

  CONFIG_VIRTIO_PCI_LIB=m

  CONFIG_VIRTIO_MENU=y

  CONFIG_VIRTIO_PCI=m
@@ -7796,9 +7894,11 @@ 

  CONFIG_VDPA=m

  CONFIG_VDPA_SIM=m

  CONFIG_VDPA_SIM_NET=m

+ CONFIG_VDPA_SIM_BLOCK=m

  CONFIG_IFCVF=m

  CONFIG_MLX5_VDPA=y

  CONFIG_MLX5_VDPA_NET=m

+ CONFIG_VP_VDPA=m

  CONFIG_VHOST_IOTLB=m

  CONFIG_VHOST_RING=m

  CONFIG_VHOST=m
@@ -7854,9 +7954,9 @@ 

  # end of Xen driver support

  

  # CONFIG_GREYBUS is not set

+ # CONFIG_COMEDI is not set

  CONFIG_STAGING=y

  CONFIG_PRISM2_USB=m

- # CONFIG_COMEDI is not set

  CONFIG_RTL8192U=m

  CONFIG_RTLLIB=m

  CONFIG_RTLLIB_CRYPTO_CCMP=m
@@ -7900,7 +8000,6 @@ 

  #

  # Capacitance to digital converters

  #

- CONFIG_AD7150=m

  CONFIG_AD7746=m

  # end of Capacitance to digital converters

  
@@ -7947,6 +8046,11 @@ 

  CONFIG_VIDEO_ATOMISP_LM3554=m

  # CONFIG_VIDEO_ZORAN is not set

  CONFIG_VIDEO_IPU3_IMGU=m

+ CONFIG_DVB_AV7110_IR=y

+ CONFIG_DVB_AV7110=m

+ CONFIG_DVB_AV7110_OSD=y

+ CONFIG_DVB_BUDGET_PATCH=m

+ CONFIG_DVB_SP8870=m

  

  #

  # Android
@@ -7965,31 +8069,12 @@ 

  # CONFIG_FB_TFT is not set

  CONFIG_MOST_COMPONENTS=m

  CONFIG_MOST_NET=m

- CONFIG_MOST_SOUND=m

  CONFIG_MOST_VIDEO=m

  CONFIG_MOST_I2C=m

  CONFIG_KS7010=m

  CONFIG_PI433=m

- 

- #

- # Gasket devices

- #

- CONFIG_STAGING_GASKET_FRAMEWORK=m

- CONFIG_STAGING_APEX_DRIVER=m

- # end of Gasket devices

- 

  CONFIG_FIELDBUS_DEV=m

- CONFIG_KPC2000=y

- CONFIG_KPC2000_CORE=m

- CONFIG_KPC2000_SPI=m

- CONFIG_KPC2000_I2C=m

- CONFIG_KPC2000_DMA=m

  CONFIG_QLGE=m

- CONFIG_WIMAX=m

- CONFIG_WIMAX_DEBUG_LEVEL=8

- CONFIG_WIMAX_I2400M=m

- CONFIG_WIMAX_I2400M_USB=m

- CONFIG_WIMAX_I2400M_DEBUG_LEVEL=8

  CONFIG_WFX=m

  CONFIG_X86_PLATFORM_DEVICES=y

  CONFIG_ACPI_WMI=m
@@ -8000,10 +8085,12 @@ 

  CONFIG_MXM_WMI=m

  CONFIG_PEAQ_WMI=m

  CONFIG_XIAOMI_WMI=m

+ CONFIG_GIGABYTE_WMI=m

  CONFIG_ACERHDF=m

  CONFIG_ACER_WIRELESS=m

  CONFIG_ACER_WMI=m

  CONFIG_AMD_PMC=m

+ CONFIG_ADV_SWBUTTON=m

  CONFIG_APPLE_GMUX=m

  CONFIG_ASUS_LAPTOP=m

  CONFIG_ASUS_WIRELESS=m
@@ -8022,6 +8109,7 @@ 

  CONFIG_DELL_SMBIOS_SMM=y

  CONFIG_DELL_SMO8800=m

  CONFIG_DELL_WMI=m

+ CONFIG_DELL_WMI_PRIVACY=y

  CONFIG_DELL_WMI_AIO=m

  CONFIG_DELL_WMI_DESCRIPTOR=m

  CONFIG_DELL_WMI_LED=m
@@ -8031,7 +8119,7 @@ 

  CONFIG_FUJITSU_TABLET=m

  CONFIG_GPD_POCKET_FAN=m

  CONFIG_HP_ACCEL=m

- CONFIG_HP_WIRELESS=m

+ CONFIG_WIRELESS_HOTKEY=m

  CONFIG_HP_WMI=m

  CONFIG_IBM_RTL=m

  CONFIG_IDEAPAD_LAPTOP=m
@@ -8043,8 +8131,11 @@ 

  # CONFIG_THINKPAD_ACPI_UNSAFE_LEDS is not set

  CONFIG_THINKPAD_ACPI_VIDEO=y

  CONFIG_THINKPAD_ACPI_HOTKEY_POLL=y

- CONFIG_INTEL_ATOMISP2_LED=m

+ CONFIG_THINKPAD_LMI=m

+ CONFIG_X86_PLATFORM_DRIVERS_INTEL=y

  CONFIG_INTEL_CHT_INT33FE=m

+ CONFIG_INTEL_SKL_INT3472=m

+ CONFIG_INTEL_ATOMISP2_LED=m

  CONFIG_INTEL_HID_EVENT=m

  CONFIG_INTEL_INT0002_VGPIO=m

  CONFIG_INTEL_MENLOW=m
@@ -8070,6 +8161,7 @@ 

  CONFIG_I2C_MULTI_INSTANTIATE=m

  CONFIG_MLX_PLATFORM=m

  CONFIG_TOUCHSCREEN_DMI=y

+ CONFIG_FW_ATTR_CLASS=m

  CONFIG_INTEL_IPS=m

  CONFIG_INTEL_RST=m

  CONFIG_INTEL_SMARTCONNECT=m
@@ -8129,24 +8221,34 @@ 

  CONFIG_SURFACE_3_POWER_OPREGION=m

  CONFIG_SURFACE_ACPI_NOTIFY=m

  CONFIG_SURFACE_AGGREGATOR_CDEV=m

+ CONFIG_SURFACE_AGGREGATOR_REGISTRY=m

+ CONFIG_SURFACE_DTX=m

  CONFIG_SURFACE_GPE=m

  CONFIG_SURFACE_HOTPLUG=m

+ CONFIG_SURFACE_PLATFORM_PROFILE=m

  CONFIG_SURFACE_PRO3_BUTTON=m

  CONFIG_SURFACE_AGGREGATOR=m

  CONFIG_SURFACE_AGGREGATOR_BUS=y

  # CONFIG_SURFACE_AGGREGATOR_ERROR_INJECTION is not set

  CONFIG_HAVE_CLK=y

- CONFIG_CLKDEV_LOOKUP=y

  CONFIG_HAVE_CLK_PREPARE=y

  CONFIG_COMMON_CLK=y

  CONFIG_COMMON_CLK_WM831X=m

+ 

+ #

+ # Clock driver for ARM Reference designs

+ #

+ # CONFIG_ICST is not set

+ # CONFIG_CLK_SP810 is not set

+ # end of Clock driver for ARM Reference designs

+ 

+ CONFIG_LMK04832=m

  CONFIG_COMMON_CLK_MAX9485=m

  CONFIG_COMMON_CLK_SI5341=m

  CONFIG_COMMON_CLK_SI5351=m

  CONFIG_COMMON_CLK_SI544=m

  CONFIG_COMMON_CLK_CDCE706=m

  CONFIG_COMMON_CLK_CS2000_CP=m

- CONFIG_COMMON_CLK_S2MPS11=m

  CONFIG_CLK_TWL6040=m

  CONFIG_COMMON_CLK_PALMAS=m

  CONFIG_COMMON_CLK_PWM=m
@@ -8178,6 +8280,7 @@ 

  # CONFIG_IOMMU_DEBUGFS is not set

  # CONFIG_IOMMU_DEFAULT_PASSTHROUGH is not set

  CONFIG_IOMMU_DMA=y

+ CONFIG_IOMMU_SVA_LIB=y

  CONFIG_AMD_IOMMU=y

  CONFIG_AMD_IOMMU_V2=y

  CONFIG_DMAR_TABLE=y
@@ -8188,6 +8291,7 @@ 

  CONFIG_INTEL_IOMMU_SCALABLE_MODE_DEFAULT_ON=y

  CONFIG_IRQ_REMAP=y

  CONFIG_HYPERV_IOMMU=y

+ CONFIG_VIRTIO_IOMMU=m

  

  #

  # Remoteproc drivers
@@ -8281,7 +8385,6 @@ 

  # Extcon Device Drivers

  #

  CONFIG_EXTCON_ADC_JACK=m

- CONFIG_EXTCON_ARIZONA=m

  CONFIG_EXTCON_AXP288=m

  CONFIG_EXTCON_FSA9480=m

  CONFIG_EXTCON_GPIO=m
@@ -8332,10 +8435,15 @@ 

  CONFIG_BMC150_ACCEL=m

  CONFIG_BMC150_ACCEL_I2C=m

  CONFIG_BMC150_ACCEL_SPI=m

+ CONFIG_BMI088_ACCEL=m

+ CONFIG_BMI088_ACCEL_SPI=m

  CONFIG_DA280=m

  CONFIG_DA311=m

  CONFIG_DMARD09=m

  CONFIG_DMARD10=m

+ CONFIG_FXLS8962AF=m

+ CONFIG_FXLS8962AF_I2C=m

+ CONFIG_FXLS8962AF_SPI=m

  CONFIG_HID_SENSOR_ACCEL_3D=m

  CONFIG_IIO_CROS_EC_ACCEL_LEGACY=m

  CONFIG_IIO_ST_ACCEL_3AXIS=m
@@ -8357,6 +8465,7 @@ 

  CONFIG_MXC4005=m

  CONFIG_MXC6255=m

  CONFIG_SCA3000=m

+ CONFIG_SCA3300=m

  CONFIG_STK8312=m

  CONFIG_STK8BA50=m

  # end of Accelerometers
@@ -8422,8 +8531,10 @@ 

  CONFIG_TI_ADC161S626=m

  CONFIG_TI_ADS1015=m

  CONFIG_TI_ADS7950=m

+ CONFIG_TI_ADS131E08=m

  CONFIG_TI_AM335X_ADC=m

  CONFIG_TI_TLC4541=m

+ CONFIG_TI_TSC2046=m

  CONFIG_TWL4030_MADC=m

  CONFIG_TWL6030_GPADC=m

  CONFIG_VIPERBOARD_ADC=m
@@ -8443,6 +8554,12 @@ 

  # end of Amplifiers

  

  #

+ # Capacitance to digital converters

+ #

+ CONFIG_AD7150=m

+ # end of Capacitance to digital converters

+ 

+ #

  # Chemical Sensors

  #

  CONFIG_ATLAS_PH_SENSOR=m
@@ -8458,6 +8575,8 @@ 

  CONFIG_SCD30_SERIAL=m

  CONFIG_SENSIRION_SGP30=m

  CONFIG_SPS30=m

+ CONFIG_SPS30_I2C=m

+ CONFIG_SPS30_SERIAL=m

  CONFIG_VZ89X=m

  # end of Chemical Sensors

  
@@ -8475,6 +8594,11 @@ 

  CONFIG_IIO_MS_SENSORS_I2C=m

  

  #

+ # IIO SCMI Sensors

+ #

+ # end of IIO SCMI Sensors

+ 

+ #

  # SSP Sensor Common

  #

  CONFIG_IIO_SSP_SENSORS_COMMONS=m
@@ -8625,6 +8749,9 @@ 

  CONFIG_IIO_ST_LSM6DSX=m

  CONFIG_IIO_ST_LSM6DSX_I2C=m

  CONFIG_IIO_ST_LSM6DSX_SPI=m

+ CONFIG_IIO_ST_LSM9DS0=m

+ CONFIG_IIO_ST_LSM9DS0_I2C=m

+ CONFIG_IIO_ST_LSM9DS0_SPI=m

  # end of Inertial measurement units

  

  CONFIG_IIO_ADIS_LIB=m
@@ -8676,6 +8803,7 @@ 

  CONFIG_TCS3472=m

  CONFIG_SENSORS_TSL2563=m

  CONFIG_TSL2583=m

+ CONFIG_TSL2591=m

  CONFIG_TSL2772=m

  CONFIG_TSL4531=m

  CONFIG_US5182D=m
@@ -8799,6 +8927,7 @@ 

  #

  # Proximity and distance sensors

  #

+ CONFIG_CROS_EC_MKBP_PROXIMITY=m

  CONFIG_ISL29501=m

  CONFIG_LIDAR_LITE_V2=m

  CONFIG_MB1232=m
@@ -8830,6 +8959,7 @@ 

  CONFIG_MLX90632=m

  CONFIG_TMP006=m

  CONFIG_TMP007=m

+ CONFIG_TMP117=m

  CONFIG_TSYS01=m

  CONFIG_TSYS02D=m

  CONFIG_MAX31856=m
@@ -8873,7 +9003,6 @@ 

  CONFIG_BOARD_TPCI200=m

  CONFIG_SERIAL_IPOCTAL=m

  CONFIG_RESET_CONTROLLER=y

- CONFIG_RESET_BRCMSTB_RESCAL=y

  CONFIG_RESET_TI_SYSCON=m

  

  #
@@ -8881,6 +9010,7 @@ 

  #

  CONFIG_GENERIC_PHY=y

  CONFIG_USB_LGM_PHY=m

+ CONFIG_PHY_CAN_TRANSCEIVER=m

  CONFIG_BCM_KONA_USB2_PHY=m

  CONFIG_PHY_PXA_28NM_HSIC=m

  CONFIG_PHY_PXA_28NM_USB2=m
@@ -9005,9 +9135,12 @@ 

  CONFIG_SLIM_QCOM_CTRL=m

  CONFIG_INTERCONNECT=y

  CONFIG_COUNTER=m

+ CONFIG_INTERRUPT_CNT=m

+ CONFIG_INTEL_QEP=m

  CONFIG_MOST=m

  CONFIG_MOST_USB_HDM=m

  CONFIG_MOST_CDEV=m

+ CONFIG_MOST_SND=m

  # end of Device Drivers

  

  #
@@ -9117,6 +9250,8 @@ 

  #

  # Caches

  #

+ CONFIG_NETFS_SUPPORT=m

+ CONFIG_NETFS_STATS=y

  CONFIG_FSCACHE=m

  CONFIG_FSCACHE_STATS=y

  # CONFIG_FSCACHE_HISTOGRAM is not set
@@ -9169,6 +9304,8 @@ 

  CONFIG_TMPFS_INODE64=y

  CONFIG_HUGETLBFS=y

  CONFIG_HUGETLB_PAGE=y

+ CONFIG_HUGETLB_PAGE_FREE_VMEMMAP=y

+ # CONFIG_HUGETLB_PAGE_FREE_VMEMMAP_DEFAULT_ON is not set

  CONFIG_MEMFD_CREATE=y

  CONFIG_ARCH_HAS_GIGANTIC_PAGE=y

  CONFIG_CONFIGFS_FS=y
@@ -9265,7 +9402,6 @@ 

  CONFIG_EROFS_FS_POSIX_ACL=y

  CONFIG_EROFS_FS_SECURITY=y

  CONFIG_EROFS_FS_ZIP=y

- CONFIG_EROFS_FS_CLUSTER_PAGE_LIMIT=2

  CONFIG_VBOXSF_FS=m

  CONFIG_NETWORK_FILESYSTEMS=y

  CONFIG_NFS_FS=m
@@ -9303,7 +9439,7 @@ 

  CONFIG_LOCKD_V4=y

  CONFIG_NFS_ACL_SUPPORT=m

  CONFIG_NFS_COMMON=y

- CONFIG_NFS_V4_2_SSC_HELPER=m

+ CONFIG_NFS_V4_2_SSC_HELPER=y

  CONFIG_SUNRPC=m

  CONFIG_SUNRPC_GSS=m

  CONFIG_SUNRPC_BACKCHANNEL=y
@@ -9452,6 +9588,7 @@ 

  CONFIG_LOCK_DOWN_KERNEL_FORCE_NONE=y

  # CONFIG_LOCK_DOWN_KERNEL_FORCE_INTEGRITY is not set

  # CONFIG_LOCK_DOWN_KERNEL_FORCE_CONFIDENTIALITY is not set

+ CONFIG_SECURITY_LANDLOCK=y

  # CONFIG_INTEGRITY is not set

  # CONFIG_IMA_SECURE_AND_OR_TRUSTED_BOOT is not set

  # CONFIG_DEFAULT_SECURITY_SELINUX is not set
@@ -9459,7 +9596,7 @@ 

  # CONFIG_DEFAULT_SECURITY_TOMOYO is not set

  # CONFIG_DEFAULT_SECURITY_APPARMOR is not set

  CONFIG_DEFAULT_SECURITY_DAC=y

- CONFIG_LSM="lockdown,yama,bpf"

+ CONFIG_LSM="landlock,lockdown,yama,bpf"

  

  #

  # Kernel hardening options
@@ -9534,6 +9671,7 @@ 

  CONFIG_CRYPTO_DH=y

  CONFIG_CRYPTO_ECC=m

  CONFIG_CRYPTO_ECDH=m

+ CONFIG_CRYPTO_ECDSA=m

  CONFIG_CRYPTO_ECRDSA=m

  CONFIG_CRYPTO_SM2=m

  CONFIG_CRYPTO_CURVE25519=m
@@ -9789,10 +9927,10 @@ 

  CONFIG_842_DECOMPRESS=m

  CONFIG_ZLIB_INFLATE=y

  CONFIG_ZLIB_DEFLATE=y

- CONFIG_LZO_COMPRESS=y

+ CONFIG_LZO_COMPRESS=m

  CONFIG_LZO_DECOMPRESS=y

  CONFIG_LZ4_COMPRESS=y

- CONFIG_LZ4HC_COMPRESS=y

+ CONFIG_LZ4HC_COMPRESS=m

  CONFIG_LZ4_DECOMPRESS=y

  CONFIG_ZSTD_COMPRESS=y

  CONFIG_ZSTD_DECOMPRESS=y
@@ -9890,10 +10028,10 @@ 

  CONFIG_SBITMAP=y

  CONFIG_PARMAN=m

  CONFIG_OBJAGG=m

- # CONFIG_STRING_SELFTEST is not set

  # end of Library routines

  

  CONFIG_PLDMFW=y

+ CONFIG_ASN1_ENCODER=m

  

  #

  # Kernel hacking
@@ -9904,6 +10042,7 @@ 

  #

  CONFIG_PRINTK_TIME=y

  # CONFIG_PRINTK_CALLER is not set

+ # CONFIG_STACKTRACE_BUILD_ID is not set

  CONFIG_CONSOLE_LOGLEVEL_DEFAULT=4

  CONFIG_CONSOLE_LOGLEVEL_QUIET=1

  CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
@@ -9993,9 +10132,10 @@ 

  CONFIG_HAVE_ARCH_KFENCE=y

  CONFIG_KFENCE=y

  CONFIG_KFENCE_STATIC_KEYS=y

- CONFIG_KFENCE_SAMPLE_INTERVAL=0

+ CONFIG_KFENCE_SAMPLE_INTERVAL=100

  CONFIG_KFENCE_NUM_OBJECTS=255

  CONFIG_KFENCE_STRESS_TEST_FAULTS=0

+ CONFIG_KFENCE_BUG_ON_DATA_CORRUPTION=y

  # end of Memory Debugging

  

  CONFIG_DEBUG_SHIRQ=y
@@ -10080,7 +10220,6 @@ 

  CONFIG_RCU_CPU_STALL_TIMEOUT=60

  # CONFIG_RCU_TRACE is not set

  # CONFIG_RCU_EQS_DEBUG is not set

- # CONFIG_RCU_STRICT_GRACE_PERIOD is not set

  # end of RCU Debugging

  

  # CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set
@@ -10115,12 +10254,15 @@ 

  CONFIG_DYNAMIC_FTRACE=y

  CONFIG_DYNAMIC_FTRACE_WITH_REGS=y

  CONFIG_DYNAMIC_FTRACE_WITH_DIRECT_CALLS=y

+ CONFIG_DYNAMIC_FTRACE_WITH_ARGS=y

  CONFIG_FUNCTION_PROFILER=y

  CONFIG_STACK_TRACER=y

  # CONFIG_IRQSOFF_TRACER is not set

  # CONFIG_PREEMPT_TRACER is not set

  CONFIG_SCHED_TRACER=y

  CONFIG_HWLAT_TRACER=y

+ CONFIG_OSNOISE_TRACER=y

+ CONFIG_TIMERLAT_TRACER=y

  CONFIG_MMIOTRACE=y

  CONFIG_FTRACE_SYSCALLS=y

  CONFIG_TRACER_SNAPSHOT=y
@@ -10195,9 +10337,9 @@ 

  # CONFIG_KCOV is not set

  CONFIG_RUNTIME_TESTING_MENU=y

  # CONFIG_LKDTM is not set

- # CONFIG_TEST_LIST_SORT is not set

  # CONFIG_TEST_MIN_HEAP is not set

  # CONFIG_TEST_SORT is not set

+ # CONFIG_TEST_DIV64 is not set

  # CONFIG_KPROBES_SANITY_TEST is not set

  # CONFIG_BACKTRACE_SELF_TEST is not set

  # CONFIG_RBTREE_TEST is not set
@@ -10207,10 +10349,12 @@ 

  CONFIG_ATOMIC64_SELFTEST=y

  CONFIG_ASYNC_RAID6_TEST=m

  # CONFIG_TEST_HEXDUMP is not set

+ # CONFIG_STRING_SELFTEST is not set

  # CONFIG_TEST_STRING_HELPERS is not set

  # CONFIG_TEST_STRSCPY is not set

  CONFIG_TEST_KSTRTOX=y

  # CONFIG_TEST_PRINTF is not set

+ # CONFIG_TEST_SCANF is not set

  # CONFIG_TEST_BITMAP is not set

  # CONFIG_TEST_UUID is not set

  # CONFIG_TEST_XARRAY is not set
@@ -10239,6 +10383,8 @@ 

  # CONFIG_TEST_HMM is not set

  # CONFIG_TEST_FREE_PAGES is not set

  # CONFIG_TEST_FPU is not set

+ # CONFIG_TEST_CLOCKSOURCE_WATCHDOG is not set

+ CONFIG_ARCH_USE_MEMTEST=y

  # CONFIG_MEMTEST is not set

  # CONFIG_HYPERV_TESTING is not set

  # end of Kernel Testing and Coverage

@@ -0,0 +1,76 @@ 

+ From 50b29ce228d0622eae2b9854c5e4b9334c540a7a Mon Sep 17 00:00:00 2001

+ From: Levente Polyak <levente@leventepolyak.net>

+ Date: Thu, 1 Sep 2021 22:19:19 +0200

+ Subject: [PATCH] gcc-plugins: modern gcc plugin infrastructure requres c++11

+  std

+ 

+ Bump the used std to c++11 to avoid detection failure. This fixes the

+ support check on modern gcc plugin infrastructure that requires a

+ minimum standard of c++11 to compile.

+ 

+ This effectively requires GCC 4.8.1.

+ 

+ Signed-off-by: Levente Polyak <levente@leventepolyak.net>

+ ---

+  scripts/gcc-plugin.sh | 2 +-

+  1 file changed, 1 insertion(+), 1 deletion(-)

+ 

+ diff --git a/scripts/gcc-plugin.sh b/scripts/gcc-plugin.sh

+ index b79fd0bea838..7abc00f60a8b 100755

+ --- a/scripts/gcc-plugin.sh

+ +++ b/scripts/gcc-plugin.sh

+ @@ -8,7 +8,7 @@ srctree=$(dirname "$0")

+  gccplugins_dir=$($* -print-file-name=plugin)

+  

+  # we need a c++ compiler that supports the designated initializer GNU extension

+ -$HOSTCC -c -x c++ -std=gnu++98 - -fsyntax-only -I $srctree/gcc-plugins -I $gccplugins_dir/include 2>/dev/null <<EOF

+ +$HOSTCC -c -x c++ -std=gnu++11 - -fsyntax-only -I $srctree/gcc-plugins -I $gccplugins_dir/include 2>/dev/null <<EOF

+  #include "gcc-common.h"

+  class test {

+  public:

+ -- 

+ 2.33.0

+ 

+ commit 67a5a68013056cbcf0a647e36cb6f4622fb6a470

+ Author: Valdis Kletnieks <valdis.kletnieks@vt.edu>

+ Date:   Sat Dec 26 13:21:58 2020 -0500

+ 

+     gcc-plugins: fix gcc 11 indigestion with plugins...

+     

+     Fedora Rawhide has started including gcc 11,and the g++ compiler

+     throws a wobbly when it hits scripts/gcc-plugins:

+     

+       HOSTCXX scripts/gcc-plugins/latent_entropy_plugin.so

+     In file included from /usr/include/c++/11/type_traits:35,

+                      from /usr/lib/gcc/x86_64-redhat-linux/11/plugin/include/system.h:244,

+                      from /usr/lib/gcc/x86_64-redhat-linux/11/plugin/include/gcc-plugin.h:28,

+                      from scripts/gcc-plugins/gcc-common.h:7,

+                      from scripts/gcc-plugins/latent_entropy_plugin.c:78:

+     /usr/include/c++/11/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO

+      C++ 2011 standard. This support must be enabled with the -std=c++11 or -std=gnu++11 compiler options.

+        32 | #error This file requires compiler and library support \

+     

+     In fact, it works just fine with c++11, which has been in gcc since 4.8,

+     and we now require 4.9 as a minimum.

+     

+     Signed-off-by: Valdis Kletnieks <valdis.kletnieks@vt.edu>

+     Acked-by: Josh Poimboeuf <jpoimboe@redhat.com>

+     Signed-off-by: Kees Cook <keescook@chromium.org>

+     Link: https://lore.kernel.org/r/82487.1609006918@turing-police

+ 

+ diff --git a/scripts/gcc-plugins/Makefile b/scripts/gcc-plugins/Makefile

+ index d66949bfeba4..b5487cce69e8 100644

+ --- a/scripts/gcc-plugins/Makefile

+ +++ b/scripts/gcc-plugins/Makefile

+ @@ -22,9 +22,9 @@ always-y += $(GCC_PLUGIN)

+  GCC_PLUGINS_DIR = $(shell $(CC) -print-file-name=plugin)

+  

+  plugin_cxxflags	= -Wp,-MMD,$(depfile) $(KBUILD_HOSTCXXFLAGS) -fPIC \

+ -		   -I $(GCC_PLUGINS_DIR)/include -I $(obj) -std=gnu++98 \

+ +		   -I $(GCC_PLUGINS_DIR)/include -I $(obj) -std=gnu++11 \

+  		   -fno-rtti -fno-exceptions -fasynchronous-unwind-tables \

+ -		   -ggdb -Wno-narrowing -Wno-unused-variable -Wno-c++11-compat \

+ +		   -ggdb -Wno-narrowing -Wno-unused-variable \

+  		   -Wno-format-diag

+  

+  plugin_ldflags	= -shared

file modified
+14 -12
@@ -16,11 +16,11 @@ 

  _replacesoldmodules=() # '%' gets replaced with kernel suffix

  

  pkgbase=linux-libre-lts

- pkgver=5.10.56

+ pkgver=5.10.72

  pkgrel=1

  pkgdesc='LTS Linux-libre'

- rcnver=5.10.56

- rcnrel=armv7-x45

+ rcnver=5.10.72

+ rcnrel=armv7-x53

  url='https://linux-libre.fsfla.org/'

  arch=(i686 x86_64 armv7h)

  license=(GPL2)
@@ -31,8 +31,8 @@ 

  options=('!strip')

  _srcname=linux-5.10

  source=(

-   "https://linux-libre.fsfla.org/pub/linux-libre/releases/${_srcname##*-}-gnu/linux-libre-${_srcname##*-}-gnu.tar.xz"{,.sign}

-   "https://linux-libre.fsfla.org/pub/linux-libre/releases/$pkgver-gnu/patch-${_srcname##*-}-gnu-$pkgver-gnu.xz"{,.sign}

+   "https://linux-libre.fsfla.org/pub/linux-libre/releases/${_srcname##*-}-gnu1/linux-libre-${_srcname##*-}-gnu1.tar.xz"{,.sign}

+   "https://linux-libre.fsfla.org/pub/linux-libre/releases/$pkgver-gnu1/patch-${_srcname##*-}-gnu1-$pkgver-gnu1.xz"{,.sign}

    "https://repo.parabola.nu/other/linux-libre/logos/logo_linux_"{clut224.ppm,vga16.ppm,mono.pbm}{,.sig}

    config.i686 config.x86_64 config.armv7h    # the main kernel config files

    linux-armv7h.preset                        # armv7h preset file for mkinitcpio ramdisk
@@ -46,6 +46,7 @@ 

    0002-fix-Atmel-maXTouch-touchscreen-support.patch

    # Arch Linux patches

    0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch

+   0002-gcc-plugins-modern-gcc-plugin-infrastructure-requres.patch

  )

  source_i686=(

    # avoid using zstd compression in ultra mode (exhausts virtual memory)
@@ -59,9 +60,9 @@ 

    '474402C8C582DAFBE389C427BCB7CF877E7D47A7' # Alexandre Oliva

    '6DB9C4B4F0D8C0DC432CF6E4227CA7C556B2BA78' # David P.

  )

- sha512sums=('ccc52db049a66ff146d9fc84fb00e783f2d04211156233a382f87589fec7631b8fbb3e76bfd94279607b883d25f9745e6c7d2bd62b13311dc6b425002bd42ec0'

+ sha512sums=('4bf48611e8a217931c2347f1aa3257da5ba210f263fb35edef43e935fd3fcab5333fc884198fe6ab180cc11ed11dd48b71dff4071b85f18830a6bf9e1c2cf97f'

              'SKIP'

-             '44f57270e8c973d03515ff8526865e5cecd7e7ae29c4c10468a2ee33b98baa20cdca07fe64910740a3b38c4a08eeb5727fb26d415cfd719403b976685d0e2b86'

+             'a25bf1a32e8dba38a910eae4d6436f2a6716807e810655f0170f8ea90d136aa353057fd8cc5d05281ca8a684efef7ef4036ac96039f8d122f62d5b1f362229c3'

              'SKIP'

              '13cb5bc42542e7b8bb104d5f68253f6609e463b6799800418af33eb0272cc269aaa36163c3e6f0aacbdaaa1d05e2827a4a7c4a08a029238439ed08b89c564bb3'

              'SKIP'
@@ -70,14 +71,15 @@ 

              '267295aa0cea65684968420c68b32f1a66a22d018b9d2b2c1ef14267bcf4cb68aaf7099d073cbfefe6c25c8608bdcbbd45f7ac8893fdcecbf1e621abdfe9ecc1'

              'SKIP'

              '42e5e4913993650bb9bb22accbc1c272e8e0be4891e5bb82fb7c0f140d56bdc6f5282f353d53d49e4aa3a010d464c64001fb6d14d615c6778c10bec204435ea3'

-             'f7397cfec791ba8df9e342a850f4794acc5e69707a5c4e5f9c03b14c75f975317055a2be59ee51c3fd22bb8c534639454931bac79d9f3761453a62fc085d8801'

+             'd6e61670635d717e84c2c3caca17fcc284d23cab85768246fece85b274e8668933392fe66c2d2f0d742fe5b4fab2e799a18389b32c21c075f8c54c68ea224950'

              '6012fa7b97c15ada82f0c205ea983bebac8b672ca498e22f524d219bdd8715784b24ce7d457803e8221a945c3daff95c4e467f70a420b9c2aa95d627f2d160a9'

              '53103bf55b957b657039510527df0df01279dec59cda115a4d6454e4135025d4546167fa30bdc99107f232561c1e096d8328609ab5a876cf7017176f92ad3e0b'

              '02af4dd2a007e41db0c63822c8ab3b80b5d25646af1906dc85d0ad9bb8bbf5236f8e381d7f91cf99ed4b0978c50aee37cb9567cdeef65b7ec3d91b882852b1af'

              'b8fe56e14006ab866970ddbd501c054ae37186ddc065bb869cf7d18db8c0d455118d5bda3255fb66a0dde38b544655cfe9040ffe46e41d19830b47959b2fb168'

-             'aed7844c51ec705ef1ef5d9f1adf27939073c99d4fcc97051bed2fba1ec161fdde4c57cbe039209fb86c72918493bea55ed26189c1dda3dbea3a3a7019363818')

+             'aed7844c51ec705ef1ef5d9f1adf27939073c99d4fcc97051bed2fba1ec161fdde4c57cbe039209fb86c72918493bea55ed26189c1dda3dbea3a3a7019363818'

+             'd1db702f9e3a09288ad591361b89ec35b991e421494553e61cc3998037cb6c60627d77d7b7e41f7e7fdab90245a4ee2e4844d68ce96eeaa021dde8548f2673f7')

  sha512sums_i686=('3a346ff5e0fdefafd28bc3dd0e4b6cd68e3f0014e59d1611d99f2edb8d074fd32649eeb0894a7e340e4f907b5cfc0e08e0753e0427a68dc113bb22835a892968')

- sha512sums_armv7h=('8105ecb83dd3afa8b20f1a0846ff63ae5e6368a46e3e2f5a270d94e1ef5886b2b48eb9a8ff6ce9be2d0474abcc793c760984cd9df37b53914d0a8f68e010f20e'

+ sha512sums_armv7h=('cf29c386ccfaa33a14bb9028bbc8d783b2e872b420e96174e6040faf93d0a1d73d4df75a7d4fb0b8a0dbaae32593b698d16da47436aa29b8b483bdf4c91bb515'

                     'SKIP')

  

  _replacesarchkernel=("${_replacesarchkernel[@]/\%/${pkgbase#linux-libre}}")
@@ -98,7 +100,7 @@ 

  

    if [ "${_srcname##*-}" != "$pkgver" ]; then

      echo "Applying upstream patch..."

-     patch -Np1 < "../patch-${_srcname##*-}-gnu-$pkgver-gnu"

+     patch -Np1 < "../patch-${_srcname##*-}-gnu1-$pkgver-gnu1"

    fi

  

    echo "Adding freedo as boot logo..."
@@ -144,7 +146,7 @@ 

    echo "Setting config..."

    cp ../config.$CARCH .config

    make olddefconfig

- 

+ #return 1

    make -s kernelrelease > version

    echo "Prepared $pkgbase version $(<version)"

  }

@@ -1,6 +1,6 @@ 

  #

  # Automatically generated file; DO NOT EDIT.

- # Linux/x86 5.10.56-gnu Kernel Configuration

+ # Linux/x86 5.10.72-gnu1 Kernel Configuration

  #

  CONFIG_CC_VERSION_TEXT="gcc (GCC) 11.1.0"

  CONFIG_CC_IS_GCC=y
@@ -864,6 +864,9 @@ 

  # end of GCOV-based kernel profiling

  

  CONFIG_HAVE_GCC_PLUGINS=y

+ CONFIG_GCC_PLUGINS=y

+ # CONFIG_GCC_PLUGIN_LATENT_ENTROPY is not set

+ # CONFIG_GCC_PLUGIN_RANDSTRUCT is not set

  # end of General architecture-dependent options

  

  CONFIG_RT_MUTEXES=y
@@ -9541,11 +9544,17 @@ 

  #

  # Kernel hardening options

  #

+ CONFIG_GCC_PLUGIN_STRUCTLEAK=y

  

  #

  # Memory initialization

  #

- CONFIG_INIT_STACK_NONE=y

+ # CONFIG_INIT_STACK_NONE is not set

+ # CONFIG_GCC_PLUGIN_STRUCTLEAK_USER is not set

+ # CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF is not set

+ CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF_ALL=y

+ # CONFIG_GCC_PLUGIN_STRUCTLEAK_VERBOSE is not set

+ # CONFIG_GCC_PLUGIN_STACKLEAK is not set

  CONFIG_INIT_ON_ALLOC_DEFAULT_ON=y

  # CONFIG_INIT_ON_FREE_DEFAULT_ON is not set

  # end of Memory initialization
@@ -9813,7 +9822,8 @@ 

  CONFIG_SECONDARY_TRUSTED_KEYRING=y

  CONFIG_SYSTEM_BLACKLIST_KEYRING=y

  CONFIG_SYSTEM_BLACKLIST_HASH_LIST=""

- # CONFIG_SYSTEM_REVOCATION_LIST is not set

+ CONFIG_SYSTEM_REVOCATION_LIST=y

+ CONFIG_SYSTEM_REVOCATION_KEYS=""

  # end of Certificates for signature checking

  

  CONFIG_BINARY_PRINTF=y

@@ -1,7 +1,7 @@ 

- From 90de407f12e8ed9cb361678882c2af236b06107e Mon Sep 17 00:00:00 2001

+ From f76db6fc04fadf872a138740592b4e8ec9ba9149 Mon Sep 17 00:00:00 2001

  From: "Jan Alexander Steffens (heftig)" <jan.steffens@gmail.com>

  Date: Mon, 16 Sep 2019 04:53:20 +0200

- Subject: [PATCH 1/2] ZEN: Add sysctl and CONFIG to disallow unprivileged

+ Subject: [PATCH 1/6] ZEN: Add sysctl and CONFIG to disallow unprivileged

   CLONE_NEWUSER

  

  Our default behavior continues to match the vanilla kernel.
@@ -14,10 +14,10 @@ 

   5 files changed, 53 insertions(+)

  

  diff --git a/include/linux/user_namespace.h b/include/linux/user_namespace.h

- index bfa6463f8a95..27aa2bd5e50a 100644

+ index eb70cabe6e7f..dda54e3bc47c 100644

  --- a/include/linux/user_namespace.h

  +++ b/include/linux/user_namespace.h

- @@ -116,6 +116,8 @@ void put_ucounts(struct ucounts *ucounts);

+ @@ -137,6 +137,8 @@ static inline void set_rlimit_ucount_max(struct user_namespace *ns,

   

   #ifdef CONFIG_USER_NS

   
@@ -26,7 +26,7 @@ 

   static inline struct user_namespace *get_user_ns(struct user_namespace *ns)

   {

   	if (ns)

- @@ -149,6 +151,8 @@ extern bool current_in_userns(const struct user_namespace *target_ns);

+ @@ -170,6 +172,8 @@ extern bool current_in_userns(const struct user_namespace *target_ns);

   struct ns_common *ns_get_owner(struct ns_common *ns);

   #else

   
@@ -36,10 +36,10 @@ 

   {

   	return &init_user_ns;

  diff --git a/init/Kconfig b/init/Kconfig

- index a61c92066c2e..6a2920f2e2ad 100644

+ index 55f9f7738ebb..33c6a820ac08 100644

  --- a/init/Kconfig

  +++ b/init/Kconfig

- @@ -1195,6 +1195,22 @@ config USER_NS

+ @@ -1198,6 +1198,22 @@ config USER_NS

   

   	  If unsure, say N.

   
@@ -63,7 +63,7 @@ 

   	bool "PID Namespaces"

   	default y

  diff --git a/kernel/fork.c b/kernel/fork.c

- index 567fee340500..f8ad32116152 100644

+ index cbba21e3a58d..7267d46c29ea 100644

  --- a/kernel/fork.c

  +++ b/kernel/fork.c

  @@ -98,6 +98,10 @@
@@ -77,7 +77,7 @@ 

   #include <asm/pgalloc.h>

   #include <linux/uaccess.h>

   #include <asm/mmu_context.h>

- @@ -1871,6 +1875,10 @@ static __latent_entropy struct task_struct *copy_process(

+ @@ -1877,6 +1881,10 @@ static __latent_entropy struct task_struct *copy_process(

   	if ((clone_flags & (CLONE_NEWUSER|CLONE_FS)) == (CLONE_NEWUSER|CLONE_FS))

   		return ERR_PTR(-EINVAL);

   
@@ -88,7 +88,7 @@ 

   	/*

   	 * Thread groups must share signals as well, and detached threads

   	 * can only be started up within the thread group.

- @@ -2973,6 +2981,12 @@ int ksys_unshare(unsigned long unshare_flags)

+ @@ -2981,6 +2989,12 @@ int ksys_unshare(unsigned long unshare_flags)

   	if (unshare_flags & CLONE_NEWNS)

   		unshare_flags |= CLONE_FS;

   
@@ -102,10 +102,10 @@ 

   	if (err)

   		goto bad_unshare_out;

  diff --git a/kernel/sysctl.c b/kernel/sysctl.c

- index d4a78e08f6d8..0260dfe2daff 100644

+ index 272f4a272f8c..760e8a2d815d 100644

  --- a/kernel/sysctl.c

  +++ b/kernel/sysctl.c

- @@ -103,6 +103,9 @@

+ @@ -105,6 +105,9 @@

   #ifdef CONFIG_LOCKUP_DETECTOR

   #include <linux/nmi.h>

   #endif
@@ -115,7 +115,7 @@ 

   

   #if defined(CONFIG_SYSCTL)

   

- @@ -1896,6 +1899,15 @@ static struct ctl_table kern_table[] = {

+ @@ -1908,6 +1911,15 @@ static struct ctl_table kern_table[] = {

   		.proc_handler	= proc_dointvec,

   	},

   #endif
@@ -132,7 +132,7 @@ 

   	{

   		.procname	= "tainted",

  diff --git a/kernel/user_namespace.c b/kernel/user_namespace.c

- index 27670ab7a4ed..300c72d2a381 100644

+ index ef82d401dde8..5a6c2e07174b 100644

  --- a/kernel/user_namespace.c

  +++ b/kernel/user_namespace.c

  @@ -21,6 +21,13 @@
@@ -150,5 +150,5 @@ 

   static DEFINE_MUTEX(userns_state_mutex);

   

  -- 

- 2.32.0

+ 2.33.0

  

@@ -0,0 +1,79 @@ 

+ From 810821eb3b1894f2cfcc29cffd42d193b8fe54a6 Mon Sep 17 00:00:00 2001

+ From: Wai Paulo Valerio Wang <waicool20@gmail.com>

+ Date: Thu, 8 Jul 2021 04:00:59 +0800

+ Subject: [PATCH 2/6] Bluetooth: btusb: Add support for IMC Networks Mediatek

+  Chip

+ 

+ This add supports for IMC Networks Wireless_Device Media Chip

+ which contains the MT7921 chipset.

+ 

+ $ lsusb

+ 

+ Bus 001 Device 004: ID 13d3:3563 IMC Networks Wireless_Device

+ 

+ $ cat /sys/kernel/debug/usb/devices

+ 

+ T:  Bus=01 Lev=01 Prnt=01 Port=03 Cnt=03 Dev#=  4 Spd=480  MxCh= 0

+ D:  Ver= 2.10 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1

+ P:  Vendor=13d3 ProdID=3563 Rev= 1.00

+ S:  Manufacturer=MediaTek Inc.

+ S:  Product=Wireless_Device

+ S:  SerialNumber=000000000

+ C:* #Ifs= 3 Cfg#= 1 Atr=e0 MxPwr=100mA

+ A:  FirstIf#= 0 IfCount= 3 Cls=e0(wlcon) Sub=01 Prot=01

+ I:* If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb

+ E:  Ad=81(I) Atr=03(Int.) MxPS=  16 Ivl=125us

+ E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

+ E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

+ I:* If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb

+ E:  Ad=83(I) Atr=01(Isoc) MxPS=   0 Ivl=1ms

+ E:  Ad=03(O) Atr=01(Isoc) MxPS=   0 Ivl=1ms

+ I:  If#= 1 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb

+ E:  Ad=83(I) Atr=01(Isoc) MxPS=   9 Ivl=1ms

+ E:  Ad=03(O) Atr=01(Isoc) MxPS=   9 Ivl=1ms

+ I:  If#= 1 Alt= 2 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb

+ E:  Ad=83(I) Atr=01(Isoc) MxPS=  17 Ivl=1ms

+ E:  Ad=03(O) Atr=01(Isoc) MxPS=  17 Ivl=1ms

+ I:  If#= 1 Alt= 3 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb

+ E:  Ad=83(I) Atr=01(Isoc) MxPS=  25 Ivl=1ms

+ E:  Ad=03(O) Atr=01(Isoc) MxPS=  25 Ivl=1ms

+ I:  If#= 1 Alt= 4 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb

+ E:  Ad=83(I) Atr=01(Isoc) MxPS=  33 Ivl=1ms

+ E:  Ad=03(O) Atr=01(Isoc) MxPS=  33 Ivl=1ms

+ I:  If#= 1 Alt= 5 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb

+ E:  Ad=83(I) Atr=01(Isoc) MxPS=  49 Ivl=1ms

+ E:  Ad=03(O) Atr=01(Isoc) MxPS=  49 Ivl=1ms

+ I:  If#= 1 Alt= 6 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb

+ E:  Ad=83(I) Atr=01(Isoc) MxPS=  63 Ivl=1ms

+ E:  Ad=03(O) Atr=01(Isoc) MxPS=  63 Ivl=1ms

+ I:* If#= 2 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=(none)

+ E:  Ad=8a(I) Atr=03(Int.) MxPS=  64 Ivl=125us

+ E:  Ad=0a(O) Atr=03(Int.) MxPS=  64 Ivl=125us

+ I:  If#= 2 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=(none)

+ E:  Ad=8a(I) Atr=03(Int.) MxPS= 512 Ivl=125us

+ E:  Ad=0a(O) Atr=03(Int.) MxPS= 512 Ivl=125us

+ 

+ Signed-off-by: Wai Paulo Valerio Wang <waicool20@gmail.com>

+ Signed-off-by: Marcel Holtmann <marcel@holtmann.org>

+ For: https://bugs.archlinux.org/task/72138

+ ---

+  drivers/bluetooth/btusb.c | 3 +++

+  1 file changed, 3 insertions(+)

+ 

+ diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c

+ index bd37d6fb88c2..e13a510e1698 100644

+ --- a/drivers/bluetooth/btusb.c

+ +++ b/drivers/bluetooth/btusb.c

+ @@ -414,6 +414,9 @@ static const struct usb_device_id blacklist_table[] = {

+  	{ USB_DEVICE(0x04ca, 0x3802), .driver_info = BTUSB_MEDIATEK |

+  						     BTUSB_WIDEBAND_SPEECH |

+  						     BTUSB_VALID_LE_STATES },

+ +	{ USB_DEVICE(0x13d3, 0x3563), .driver_info = BTUSB_MEDIATEK |

+ +						     BTUSB_WIDEBAND_SPEECH |

+ +						     BTUSB_VALID_LE_STATES },

+  

+  	/* Additional Realtek 8723AE Bluetooth devices */

+  	{ USB_DEVICE(0x0930, 0x021d), .driver_info = BTUSB_REALTEK },

+ -- 

+ 2.33.0

+ 

@@ -1,85 +0,0 @@ 

- From bdb12383a58d6989a0b1c2f925890948146bbc90 Mon Sep 17 00:00:00 2001

- From: Pauli Virtanen <pav@iki.fi>

- Date: Mon, 26 Jul 2021 21:02:06 +0300

- Subject: [PATCH 2/2] Bluetooth: btusb: check conditions before enabling USB

-  ALT 3 for WBS

- MIME-Version: 1.0

- Content-Type: text/plain; charset=UTF-8

- Content-Transfer-Encoding: 8bit

- 

- Some USB BT adapters don't satisfy the MTU requirement mentioned in

- commit e848dbd364ac ("Bluetooth: btusb: Add support USB ALT 3 for WBS")

- and have ALT 3 setting that produces no/garbled audio. Some adapters

- with larger MTU were also reported to have problems with ALT 3.

- 

- Add a flag and check it and MTU before selecting ALT 3, falling back to

- ALT 1. Enable the flag for Realtek, restoring the previous behavior for

- non-Realtek devices.

- 

- Tested with USB adapters (mtu<72, no/garbled sound with ALT3, ALT1

- works) BCM20702A1 0b05:17cb, CSR8510A10 0a12:0001, and (mtu>=72, ALT3

- works) RTL8761BU 0bda:8771, Intel AX200 8087:0029 (after disabling

- ALT6). Also got reports for (mtu>=72, ALT 3 reported to produce bad

- audio) Intel 8087:0a2b.

- 

- Signed-off-by: Pauli Virtanen <pav@iki.fi>

- Fixes: e848dbd364ac ("Bluetooth: btusb: Add support USB ALT 3 for WBS")

- Tested-by: Michał Kępień <kernel@kempniu.pl>

- 

- Fixes: https://bugs.archlinux.org/task/71567

- ---

-  drivers/bluetooth/btusb.c | 22 ++++++++++++++--------

-  1 file changed, 14 insertions(+), 8 deletions(-)

- 

- diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c

- index 6d23308119d1..e8062d0b7d4d 100644

- --- a/drivers/bluetooth/btusb.c

- +++ b/drivers/bluetooth/btusb.c

- @@ -516,6 +516,7 @@ static const struct dmi_system_id btusb_needs_reset_resume_table[] = {

-  #define BTUSB_HW_RESET_ACTIVE	12

-  #define BTUSB_TX_WAIT_VND_EVT	13

-  #define BTUSB_WAKEUP_DISABLE	14

- +#define BTUSB_USE_ALT3_FOR_WBS	15

-  

-  struct btusb_data {

-  	struct hci_dev       *hdev;

- @@ -1748,16 +1749,20 @@ static void btusb_work(struct work_struct *work)

-  			/* Bluetooth USB spec recommends alt 6 (63 bytes), but

-  			 * many adapters do not support it.  Alt 1 appears to

-  			 * work for all adapters that do not have alt 6, and

- -			 * which work with WBS at all.

- +			 * which work with WBS at all.  Some devices prefer

- +			 * alt 3 (HCI payload >= 60 Bytes let air packet

- +			 * data satisfy 60 bytes), requiring

- +			 * MTU >= 3 (packets) * 25 (size) - 3 (headers) = 72

- +			 * see also Core spec 5, vol 4, B 2.1.1 & Table 2.1.

-  			 */

- -			new_alts = btusb_find_altsetting(data, 6) ? 6 : 1;

- -			/* Because mSBC frames do not need to be aligned to the

- -			 * SCO packet boundary. If support the Alt 3, use the

- -			 * Alt 3 for HCI payload >= 60 Bytes let air packet

- -			 * data satisfy 60 bytes.

- -			 */

- -			if (new_alts == 1 && btusb_find_altsetting(data, 3))

- +			if (btusb_find_altsetting(data, 6))

- +				new_alts = 6;

- +			else if (test_bit(BTUSB_USE_ALT3_FOR_WBS, &data->flags) &&

- +					hdev->sco_mtu >= 72 &&

- +					btusb_find_altsetting(data, 3))

-  				new_alts = 3;

- +			else

- +				new_alts = 1;

-  		}

-  

-  		if (btusb_switch_alt_setting(hdev, new_alts) < 0)

- @@ -4733,6 +4738,7 @@ static int btusb_probe(struct usb_interface *intf,

-  		 * (DEVICE_REMOTE_WAKEUP)

-  		 */

-  		set_bit(BTUSB_WAKEUP_DISABLE, &data->flags);

- +		set_bit(BTUSB_USE_ALT3_FOR_WBS, &data->flags);

-  	}

-  

-  	if (!reset)

- -- 

- 2.32.0

- 

@@ -0,0 +1,71 @@ 

+ From 38c2ca84b97f9d6021c2607e214f99acd84dac2d Mon Sep 17 00:00:00 2001

+ From: Aaron Ma <aaron.ma@canonical.com>

+ Date: Fri, 23 Jul 2021 01:17:18 +0800

+ Subject: [PATCH 3/6] Bluetooth: btusb: Add support for Foxconn Mediatek Chip

+ 

+ Add support for another Foxconn / Hon Hai device with MT7921 chip.

+ 

+ T:  Bus=05 Lev=01 Prnt=01 Port=03 Cnt=02 Dev#=  3 Spd=480  MxCh= 0

+ D:  Ver= 2.10 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1

+ P:  Vendor=0489 ProdID=e0cd Rev= 1.00

+ S:  Manufacturer=MediaTek Inc.

+ S:  Product=Wireless_Device

+ S:  SerialNumber=000000000

+ C:* #Ifs= 3 Cfg#= 1 Atr=e0 MxPwr=100mA

+ A:  FirstIf#= 0 IfCount= 3 Cls=e0(wlcon) Sub=01 Prot=01

+ I:* If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb

+ E:  Ad=81(I) Atr=03(Int.) MxPS=  16 Ivl=125us

+ E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

+ E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

+ I:* If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb

+ E:  Ad=83(I) Atr=01(Isoc) MxPS=   0 Ivl=1ms

+ E:  Ad=03(O) Atr=01(Isoc) MxPS=   0 Ivl=1ms

+ I:  If#= 1 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb

+ E:  Ad=83(I) Atr=01(Isoc) MxPS=   9 Ivl=1ms

+ E:  Ad=03(O) Atr=01(Isoc) MxPS=   9 Ivl=1ms

+ I:  If#= 1 Alt= 2 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb

+ E:  Ad=83(I) Atr=01(Isoc) MxPS=  17 Ivl=1ms

+ E:  Ad=03(O) Atr=01(Isoc) MxPS=  17 Ivl=1ms

+ I:  If#= 1 Alt= 3 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb

+ E:  Ad=83(I) Atr=01(Isoc) MxPS=  25 Ivl=1ms

+ E:  Ad=03(O) Atr=01(Isoc) MxPS=  25 Ivl=1ms

+ I:  If#= 1 Alt= 4 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb

+ E:  Ad=83(I) Atr=01(Isoc) MxPS=  33 Ivl=1ms

+ E:  Ad=03(O) Atr=01(Isoc) MxPS=  33 Ivl=1ms

+ I:  If#= 1 Alt= 5 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb

+ E:  Ad=83(I) Atr=01(Isoc) MxPS=  49 Ivl=1ms

+ E:  Ad=03(O) Atr=01(Isoc) MxPS=  49 Ivl=1ms

+ I:  If#= 1 Alt= 6 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb

+ E:  Ad=83(I) Atr=01(Isoc) MxPS=  63 Ivl=1ms

+ E:  Ad=03(O) Atr=01(Isoc) MxPS=  63 Ivl=1ms

+ I:* If#= 2 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=(none)

+ E:  Ad=8a(I) Atr=03(Int.) MxPS=  64 Ivl=125us

+ E:  Ad=0a(O) Atr=03(Int.) MxPS=  64 Ivl=125us

+ I:  If#= 2 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=(none)

+ E:  Ad=8a(I) Atr=03(Int.) MxPS= 512 Ivl=125us

+ E:  Ad=0a(O) Atr=03(Int.) MxPS= 512 Ivl=125us

+ 

+ Signed-off-by: Aaron Ma <aaron.ma@canonical.com>

+ Signed-off-by: Marcel Holtmann <marcel@holtmann.org>

+ For: https://bugs.archlinux.org/task/72138

+ ---

+  drivers/bluetooth/btusb.c | 3 +++

+  1 file changed, 3 insertions(+)

+ 

+ diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c

+ index e13a510e1698..aac732cc9612 100644

+ --- a/drivers/bluetooth/btusb.c

+ +++ b/drivers/bluetooth/btusb.c

+ @@ -417,6 +417,9 @@ static const struct usb_device_id blacklist_table[] = {

+  	{ USB_DEVICE(0x13d3, 0x3563), .driver_info = BTUSB_MEDIATEK |

+  						     BTUSB_WIDEBAND_SPEECH |

+  						     BTUSB_VALID_LE_STATES },

+ +	{ USB_DEVICE(0x0489, 0xe0cd), .driver_info = BTUSB_MEDIATEK |

+ +						     BTUSB_WIDEBAND_SPEECH |

+ +						     BTUSB_VALID_LE_STATES },

+  

+  	/* Additional Realtek 8723AE Bluetooth devices */

+  	{ USB_DEVICE(0x0930, 0x021d), .driver_info = BTUSB_REALTEK },

+ -- 

+ 2.33.0

+ 

@@ -0,0 +1,64 @@ 

+ From ab60c2d0242fc428a436c25c1144f6acd9d6f419 Mon Sep 17 00:00:00 2001

+ From: Takashi Iwai <tiwai@suse.de>

+ Date: Mon, 9 Aug 2021 09:18:27 +0200

+ Subject: [PATCH 4/6] ALSA: pcm: Check mmap capability of runtime dma buffer at

+  first

+ 

+ Currently we check only the substream->dma_buffer as the preset of the

+ buffer configuration for verifying the availability of mmap.  But a

+ few drivers rather set up the buffer in the own way without the

+ standard buffer preallocation using substream->dma_buffer, and they

+ miss the proper checks.  (Now it's working more or less fine as most

+ of them are running only on x86).

+ 

+ Actually, they may set up the runtime dma_buffer (referred via

+ snd_pcm_get_dma_buf()) at the open callback, though.  That is, this

+ could have been used as the primary source.

+ 

+ This patch changes the hw_support_mmap() function to check the runtime

+ dma buffer at first.  It's usually NULL with the standard buffer

+ preallocation, and in that case, we continue checking

+ substream->dma_buffer as fallback.

+ 

+ Signed-off-by: Takashi Iwai <tiwai@suse.de>

+ Fixes: https://bugs.archlinux.org/task/72059

+ ---

+  sound/core/pcm_native.c | 9 +++++++--

+  1 file changed, 7 insertions(+), 2 deletions(-)

+ 

+ diff --git a/sound/core/pcm_native.c b/sound/core/pcm_native.c

+ index 71323d807dbf..dc9fa312fadd 100644

+ --- a/sound/core/pcm_native.c

+ +++ b/sound/core/pcm_native.c

+ @@ -243,13 +243,18 @@ int snd_pcm_info_user(struct snd_pcm_substream *substream,

+  

+  static bool hw_support_mmap(struct snd_pcm_substream *substream)

+  {

+ +	struct snd_dma_buffer *dmabuf;

+ +

+  	if (!(substream->runtime->hw.info & SNDRV_PCM_INFO_MMAP))

+  		return false;

+  

+  	if (substream->ops->mmap || substream->ops->page)

+  		return true;

+  

+ -	switch (substream->dma_buffer.dev.type) {

+ +	dmabuf = snd_pcm_get_dma_buf(substream);

+ +	if (!dmabuf)

+ +		dmabuf = &substream->dma_buffer;

+ +	switch (dmabuf->dev.type) {

+  	case SNDRV_DMA_TYPE_UNKNOWN:

+  		/* we can't know the device, so just assume that the driver does

+  		 * everything right

+ @@ -259,7 +264,7 @@ static bool hw_support_mmap(struct snd_pcm_substream *substream)

+  	case SNDRV_DMA_TYPE_VMALLOC:

+  		return true;

+  	default:

+ -		return dma_can_mmap(substream->dma_buffer.dev.dev);

+ +		return dma_can_mmap(dmabuf->dev.dev);

+  	}

+  }

+  

+ -- 

+ 2.33.0

+ 

@@ -0,0 +1,75 @@ 

+ From 7b0c23ec626e579ffa7ef239cac20dc7fa1797e9 Mon Sep 17 00:00:00 2001

+ From: Takashi Iwai <tiwai@suse.de>

+ Date: Mon, 9 Aug 2021 09:18:28 +0200

+ Subject: [PATCH 5/6] ALSA: pci: rme: Set up buffer type properly

+ 

+ Although the regression of the mmap was fixed in the recent commit

+ dc0dc8a73e8e ("ALSA: pcm: Fix mmap breakage without explicit buffer

+ setup"), RME9652 and HDSP drivers have still potential issues with

+ their mmap handling.  Namely, they use the default mmap handler

+ without the standard buffer preallocation, and PCM core wouldn't use

+ the coherent DMA mapping.  It's practically OK on x86, but on some

+ exotic architectures, it wouldn't work.

+ 

+ This patch addresses the potential breakage by replacing the buffer

+ setup with the proper macro.  It also simplifies the source code,

+ too.

+ 

+ Signed-off-by: Takashi Iwai <tiwai@suse.de>

+ Fixes: https://bugs.archlinux.org/task/72059

+ ---

+  sound/pci/rme9652/hdsp.c    | 6 ++----

+  sound/pci/rme9652/rme9652.c | 6 ++----

+  2 files changed, 4 insertions(+), 8 deletions(-)

+ 

+ diff --git a/sound/pci/rme9652/hdsp.c b/sound/pci/rme9652/hdsp.c

+ index 8457a4bbc3df..22b8b3357918 100644

+ --- a/sound/pci/rme9652/hdsp.c

+ +++ b/sound/pci/rme9652/hdsp.c

+ @@ -4518,8 +4518,7 @@ static int snd_hdsp_playback_open(struct snd_pcm_substream *substream)

+  	snd_pcm_set_sync(substream);

+  

+          runtime->hw = snd_hdsp_playback_subinfo;

+ -	runtime->dma_area = hdsp->playback_buffer;

+ -	runtime->dma_bytes = HDSP_DMA_AREA_BYTES;

+ +	snd_pcm_set_runtime_buffer(substream, &hdsp->playback_dma_buf);

+  

+  	hdsp->playback_pid = current->pid;

+  	hdsp->playback_substream = substream;

+ @@ -4595,8 +4594,7 @@ static int snd_hdsp_capture_open(struct snd_pcm_substream *substream)

+  	snd_pcm_set_sync(substream);

+  

+  	runtime->hw = snd_hdsp_capture_subinfo;

+ -	runtime->dma_area = hdsp->capture_buffer;

+ -	runtime->dma_bytes = HDSP_DMA_AREA_BYTES;

+ +	snd_pcm_set_runtime_buffer(substream, &hdsp->capture_dma_buf);

+  

+  	hdsp->capture_pid = current->pid;

+  	hdsp->capture_substream = substream;

+ diff --git a/sound/pci/rme9652/rme9652.c b/sound/pci/rme9652/rme9652.c

+ index f1aad38760d6..9ad2533925c4 100644

+ --- a/sound/pci/rme9652/rme9652.c

+ +++ b/sound/pci/rme9652/rme9652.c

+ @@ -2279,8 +2279,7 @@ static int snd_rme9652_playback_open(struct snd_pcm_substream *substream)

+  	snd_pcm_set_sync(substream);

+  

+          runtime->hw = snd_rme9652_playback_subinfo;

+ -	runtime->dma_area = rme9652->playback_buffer;

+ -	runtime->dma_bytes = RME9652_DMA_AREA_BYTES;

+ +	snd_pcm_set_runtime_buffer(substream, &rme9652->playback_dma_buf);

+  

+  	if (rme9652->capture_substream == NULL) {

+  		rme9652_stop(rme9652);

+ @@ -2339,8 +2338,7 @@ static int snd_rme9652_capture_open(struct snd_pcm_substream *substream)

+  	snd_pcm_set_sync(substream);

+  

+  	runtime->hw = snd_rme9652_capture_subinfo;

+ -	runtime->dma_area = rme9652->capture_buffer;

+ -	runtime->dma_bytes = RME9652_DMA_AREA_BYTES;

+ +	snd_pcm_set_runtime_buffer(substream, &rme9652->capture_dma_buf);

+  

+  	if (rme9652->playback_substream == NULL) {

+  		rme9652_stop(rme9652);

+ -- 

+ 2.33.0

+ 

@@ -0,0 +1,95 @@ 

+ From b5ed7b38f5551c5dfca87ab29d679f3d6d327557 Mon Sep 17 00:00:00 2001

+ From: Takashi Iwai <tiwai@suse.de>

+ Date: Mon, 9 Aug 2021 09:18:29 +0200

+ Subject: [PATCH 6/6] ALSA: pci: cs46xx: Fix set up buffer type properly

+ 

+ CS46xx driver switches the buffer depending on the number of periods,

+ and in some cases it switches to the own buffer without updating the

+ buffer type properly.  This may cause a problem with the mmap on

+ exotic architectures that require the own mmap call for the coherent

+ DMA buffer.

+ 

+ This patch addresses the potential breakage by replacing the buffer

+ setup with the proper macro.  It also simplifies the source code,

+ too.

+ 

+ Signed-off-by: Takashi Iwai <tiwai@suse.de>

+ Fixes: https://bugs.archlinux.org/task/72059

+ ---

+  sound/pci/cs46xx/cs46xx_lib.c | 30 ++++++++----------------------

+  1 file changed, 8 insertions(+), 22 deletions(-)

+ 

+ diff --git a/sound/pci/cs46xx/cs46xx_lib.c b/sound/pci/cs46xx/cs46xx_lib.c

+ index 1e1eb17f8e07..d43927dcd61e 100644

+ --- a/sound/pci/cs46xx/cs46xx_lib.c

+ +++ b/sound/pci/cs46xx/cs46xx_lib.c

+ @@ -1121,9 +1121,7 @@ static int snd_cs46xx_playback_hw_params(struct snd_pcm_substream *substream,

+  	if (params_periods(hw_params) == CS46XX_FRAGS) {

+  		if (runtime->dma_area != cpcm->hw_buf.area)

+  			snd_pcm_lib_free_pages(substream);

+ -		runtime->dma_area = cpcm->hw_buf.area;

+ -		runtime->dma_addr = cpcm->hw_buf.addr;

+ -		runtime->dma_bytes = cpcm->hw_buf.bytes;

+ +		snd_pcm_set_runtime_buffer(substream, &cpcm->hw_buf);

+  

+  

+  #ifdef CONFIG_SND_CS46XX_NEW_DSP

+ @@ -1143,11 +1141,8 @@ static int snd_cs46xx_playback_hw_params(struct snd_pcm_substream *substream,

+  #endif

+  

+  	} else {

+ -		if (runtime->dma_area == cpcm->hw_buf.area) {

+ -			runtime->dma_area = NULL;

+ -			runtime->dma_addr = 0;

+ -			runtime->dma_bytes = 0;

+ -		}

+ +		if (runtime->dma_area == cpcm->hw_buf.area)

+ +			snd_pcm_set_runtime_buffer(substream, NULL);

+  		err = snd_pcm_lib_malloc_pages(substream, params_buffer_bytes(hw_params));

+  		if (err < 0) {

+  #ifdef CONFIG_SND_CS46XX_NEW_DSP

+ @@ -1196,9 +1191,7 @@ static int snd_cs46xx_playback_hw_free(struct snd_pcm_substream *substream)

+  	if (runtime->dma_area != cpcm->hw_buf.area)

+  		snd_pcm_lib_free_pages(substream);

+      

+ -	runtime->dma_area = NULL;

+ -	runtime->dma_addr = 0;

+ -	runtime->dma_bytes = 0;

+ +	snd_pcm_set_runtime_buffer(substream, NULL);

+  

+  	return 0;

+  }

+ @@ -1287,16 +1280,11 @@ static int snd_cs46xx_capture_hw_params(struct snd_pcm_substream *substream,

+  	if (runtime->periods == CS46XX_FRAGS) {

+  		if (runtime->dma_area != chip->capt.hw_buf.area)

+  			snd_pcm_lib_free_pages(substream);

+ -		runtime->dma_area = chip->capt.hw_buf.area;

+ -		runtime->dma_addr = chip->capt.hw_buf.addr;

+ -		runtime->dma_bytes = chip->capt.hw_buf.bytes;

+ +		snd_pcm_set_runtime_buffer(substream, &chip->capt.hw_buf);

+  		substream->ops = &snd_cs46xx_capture_ops;

+  	} else {

+ -		if (runtime->dma_area == chip->capt.hw_buf.area) {

+ -			runtime->dma_area = NULL;

+ -			runtime->dma_addr = 0;

+ -			runtime->dma_bytes = 0;

+ -		}

+ +		if (runtime->dma_area == chip->capt.hw_buf.area)

+ +			snd_pcm_set_runtime_buffer(substream, NULL);

+  		err = snd_pcm_lib_malloc_pages(substream, params_buffer_bytes(hw_params));

+  		if (err < 0)

+  			return err;

+ @@ -1313,9 +1301,7 @@ static int snd_cs46xx_capture_hw_free(struct snd_pcm_substream *substream)

+  

+  	if (runtime->dma_area != chip->capt.hw_buf.area)

+  		snd_pcm_lib_free_pages(substream);

+ -	runtime->dma_area = NULL;

+ -	runtime->dma_addr = 0;

+ -	runtime->dma_bytes = 0;

+ +	snd_pcm_set_runtime_buffer(substream, NULL);

+  

+  	return 0;

+  }

+ -- 

+ 2.33.0

+ 

@@ -9,7 +9,7 @@ 

  _replacesoldmodules=() # '%' gets replaced with kernel suffix

  

  pkgbase=linux-libre-pae

- pkgver=5.13.9

+ pkgver=5.14.11

  pkgrel=1

  pkgdesc='Linux-libre PAE (physical address extension)'

  url='https://linux-libre.fsfla.org/'
@@ -20,7 +20,7 @@ 

    xmlto python-sphinx python-sphinx_rtd_theme graphviz imagemagick

  )

  options=('!strip')

- _srcname=linux-5.13

+ _srcname=linux-5.14

  source=(

    "https://linux-libre.fsfla.org/pub/linux-libre/releases/${_srcname##*-}-gnu/linux-libre-${_srcname##*-}-gnu.tar.xz"{,.sign}

    "https://linux-libre.fsfla.org/pub/linux-libre/releases/$pkgver-gnu/patch-${_srcname##*-}-gnu-$pkgver-gnu.xz"{,.sign}
@@ -36,15 +36,19 @@ 

    0002-fix-Atmel-maXTouch-touchscreen-support.patch

    # Arch Linux patches

    0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch

-   0002-Bluetooth-btusb-check-conditions-before-enabling-USB.patch

+   0002-Bluetooth-btusb-Add-support-for-IMC-Networks-Mediate.patch

+   0003-Bluetooth-btusb-Add-support-for-Foxconn-Mediatek-Chi.patch

+   0004-ALSA-pcm-Check-mmap-capability-of-runtime-dma-buffer.patch

+   0005-ALSA-pci-rme-Set-up-buffer-type-properly.patch

+   0006-ALSA-pci-cs46xx-Fix-set-up-buffer-type-properly.patch

  )

  validpgpkeys=(

    '474402C8C582DAFBE389C427BCB7CF877E7D47A7' # Alexandre Oliva

    '6DB9C4B4F0D8C0DC432CF6E4227CA7C556B2BA78' # David P.

  )

- sha512sums=('a24f2db9316297127447b3d7fd7a1e9e7b9a8bdb5e59e6e341568cbf877c4b65d2ccdb27ec1c23b07af6c365b2930b040bcef0d989202b503bc55b107c04d121'

+ sha512sums=('18798d032184ce141216ad72fcbb5ddb340809fe8d953acb50700aa0b47d36fca104dcedc7521fb3aea913d8fbeb4bd3eab1cf2c955388e6996c4154eac67d0c'

              'SKIP'

-             '8f1b7cb25e22f241567f3b78c66a2203d6c3746e464be7f7ddfcc42198fb41f7a4a179820ca2aa751c53098652b14789c204d9057bdfe6b6927dec68c1d26eec'

+             '951cdb68af3bbf3b841376f82fd9c82dfd7a159cae8564e5d772f99f3170deafcabc00cb0ecfa6e7669c22087577f2eafa47d3b50bc8ea6ee5edbc65821986e1'

              'SKIP'

              '13cb5bc42542e7b8bb104d5f68253f6609e463b6799800418af33eb0272cc269aaa36163c3e6f0aacbdaaa1d05e2827a4a7c4a08a029238439ed08b89c564bb3'

              'SKIP'
@@ -52,11 +56,15 @@ 

              'SKIP'

              '267295aa0cea65684968420c68b32f1a66a22d018b9d2b2c1ef14267bcf4cb68aaf7099d073cbfefe6c25c8608bdcbbd45f7ac8893fdcecbf1e621abdfe9ecc1'

              'SKIP'

-             '2f35c40ecff2de26048122dac3b60639012a8aaaa887f2de20c4865c6607e6f8caad540bfcec21cb3d7f38cdba94c975f0867a13b69116723ce6683403ccea32'

+             '176fe512658e8a958214225c7873aa1df597c5d69c515ab20f7495fa922b2b3e9b6715be96d5b7eb2438476db4a70992e4caa946b0f85401923ab402d6e41c63'

              '02af4dd2a007e41db0c63822c8ab3b80b5d25646af1906dc85d0ad9bb8bbf5236f8e381d7f91cf99ed4b0978c50aee37cb9567cdeef65b7ec3d91b882852b1af'

              'b8fe56e14006ab866970ddbd501c054ae37186ddc065bb869cf7d18db8c0d455118d5bda3255fb66a0dde38b544655cfe9040ffe46e41d19830b47959b2fb168'

-             'fac53c8ce68e9f56c8930a9392c89377c909f6a43a318010194949def91a104f34f46c2b32457e571435a8b326c47a48737ceb6255644bb6d42c59b27b07449a'

-             '722d92b750f0a5af39b850c18ff0c57dac0165e3c0219415843ec5207945971448790fec3fca570b62c8726c89b0ca6b7a5b16fd503e4581b3a63b3adfcf2c50')

+             'dba36283b9ea3db5fcc9a72051a8e9cf4d409ec59769e6da9db4d321b72972242670210ad961a37f62aba68f7262e9f2f6308cfe62cda9fa050c72363a0c404a'

+             '693ac0e0e32cd0ab6c485deb43d6408dc9fc31234e4113206cf901a302eddf1a965f97f82ed7186f6426c085176ce95c48e116e9824d92bfd1f6656447da18dc'

+             'c4a19ccec8b7636f1b5b1cf8e135e46d3aa4d233af4a1e72c2aaa83536505013f0c83602fe05ce08212b4327bebfb4f8a84b57c0d81509f0b48df5dfcc334254'

+             '4d81c2995e7cc5fc36929eb5bf9cc68ec02cb24147f18a88da79facd3e25182b156ca4430bf2765ff1e4c6be237d3a3e527498cd49d75217a5e16b62a478be6d'

+             '12c0da7fbd4e4e6ffc473ecd6dffee1dd61c201dad854347400c8f551adc35c033d6fa623cc5c1b2fe7930cdab868a8c99c6874ee171c9143e0f370398759c96'

+             '7f6fd402d8c29ee4f6c98ed2236318ab3f57f3dd47a92911e1b556df251b67fc83f7256223f06d1fefa849a3ceb5e40d247d2d5664ddd7cd9749bab4bc1ecb36')

  

  _replacesarchkernel=("${_replacesarchkernel[@]/\%/${pkgbase#linux-libre}}")

  _replacesoldkernels=("${_replacesoldkernels[@]/\%/${pkgbase#linux-libre}}")
@@ -95,6 +103,7 @@ 

    echo "Setting config..."

    cp ../config .config

    make olddefconfig

+   diff -u ../config .config || :

  

    make -s kernelrelease > version

    echo "Prepared $pkgbase version $(<version)"

file modified
+93 -40
@@ -1,6 +1,6 @@ 

  #

  # Automatically generated file; DO NOT EDIT.

- # Linux/x86 5.13.9-gnu Kernel Configuration

+ # Linux/x86 5.14.11-gnu Kernel Configuration

  #

  CONFIG_CC_VERSION_TEXT="gcc (GCC) 11.1.0"

  CONFIG_CC_IS_GCC=y
@@ -16,6 +16,7 @@ 

  CONFIG_CC_HAS_ASM_GOTO=y

  CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y

  CONFIG_CC_HAS_ASM_INLINE=y

+ CONFIG_CC_HAS_NO_PROFILE_FN_ATTR=y

  CONFIG_IRQ_WORK=y

  CONFIG_BUILDTIME_TABLE_SORT=y

  CONFIG_THREAD_INFO_IN_TASK=y
@@ -118,6 +119,7 @@ 

  CONFIG_PREEMPT_COUNT=y

  CONFIG_PREEMPTION=y

  CONFIG_PREEMPT_DYNAMIC=y

+ # CONFIG_SCHED_CORE is not set

  

  #

  # CPU/Task time and stats accounting
@@ -321,7 +323,6 @@ 

  #

  # Processor type and features

  #

- CONFIG_ZONE_DMA=y

  CONFIG_SMP=y

  CONFIG_X86_FEATURE_NAMES=y

  CONFIG_X86_MPPARSE=y
@@ -455,7 +456,6 @@ 

  # CONFIG_HIGHPTE is not set

  CONFIG_X86_CHECK_BIOS_CORRUPTION=y

  CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y

- CONFIG_X86_RESERVE_LOW=64

  CONFIG_MTRR=y

  CONFIG_MTRR_SANITIZER=y

  CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=1
@@ -581,7 +581,6 @@ 

  CONFIG_XPOWER_PMIC_OPREGION=y

  CONFIG_CHT_WC_PMIC_OPREGION=y

  CONFIG_CHT_DC_TI_PMIC_OPREGION=y

- CONFIG_TPS68470_PMIC_OPREGION=y

  CONFIG_X86_PM_TIMER=y

  CONFIG_X86_APM_BOOT=y

  CONFIG_APM=y
@@ -747,6 +746,7 @@ 

  CONFIG_HAVE_KVM_IRQ_BYPASS=y

  CONFIG_HAVE_KVM_NO_POLL=y

  CONFIG_KVM_XFER_TO_GUEST_WORK=y

+ CONFIG_HAVE_KVM_PM_NOTIFIER=y

  CONFIG_VIRTUALIZATION=y

  CONFIG_KVM=m

  # CONFIG_KVM_WERROR is not set
@@ -792,6 +792,7 @@ 

  CONFIG_ARCH_HAS_SET_DIRECT_MAP=y

  CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y

  CONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT=y

+ CONFIG_ARCH_WANTS_NO_INSTR=y

  CONFIG_ARCH_32BIT_OFF_T=y

  CONFIG_HAVE_ASM_MODVERSIONS=y

  CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
@@ -822,6 +823,8 @@ 

  CONFIG_HAVE_STACKPROTECTOR=y

  CONFIG_STACKPROTECTOR=y

  CONFIG_STACKPROTECTOR_STRONG=y

+ CONFIG_ARCH_SUPPORTS_LTO_CLANG=y

+ CONFIG_ARCH_SUPPORTS_LTO_CLANG_THIN=y

  CONFIG_LTO_NONE=y

  CONFIG_HAVE_ARCH_WITHIN_STACK_FRAMES=y

  CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
@@ -902,9 +905,11 @@ 

  CONFIG_BLK_DEV_THROTTLING_LOW=y

  # CONFIG_BLK_CMDLINE_PARSER is not set

  CONFIG_BLK_WBT=y

+ CONFIG_BLK_WBT_MQ=y

  CONFIG_BLK_CGROUP_IOLATENCY=y

+ # CONFIG_BLK_CGROUP_FC_APPID is not set

  # CONFIG_BLK_CGROUP_IOCOST is not set

- CONFIG_BLK_WBT_MQ=y

+ # CONFIG_BLK_CGROUP_IOPRIO is not set

  CONFIG_BLK_DEBUG_FS=y

  CONFIG_BLK_DEBUG_FS_ZONED=y

  CONFIG_BLK_SED_OPAL=y
@@ -985,7 +990,6 @@ 

  CONFIG_SELECT_MEMORY_MODEL=y

  CONFIG_SPARSEMEM_MANUAL=y

  CONFIG_SPARSEMEM=y

- CONFIG_NEED_MULTIPLE_NODES=y

  CONFIG_SPARSEMEM_STATIC=y

  CONFIG_HAVE_FAST_GUP=y

  CONFIG_MEMORY_ISOLATION=y
@@ -1035,6 +1039,8 @@ 

  CONFIG_GENERIC_EARLY_IOREMAP=y

  # CONFIG_IDLE_PAGE_TRACKING is not set

  CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y

+ CONFIG_ARCH_HAS_ZONE_DMA_SET=y

+ CONFIG_ZONE_DMA=y

  CONFIG_HMM_MIRROR=y

  CONFIG_VMAP_PFN=y

  # CONFIG_PERCPU_STATS is not set
@@ -1044,6 +1050,7 @@ 

  CONFIG_ARCH_HAS_PTE_SPECIAL=y

  CONFIG_MAPPING_DIRTY_HELPERS=y

  CONFIG_KMAP_LOCAL=y

+ CONFIG_SECRETMEM=y

  # end of Memory Management options

  

  CONFIG_NET=y
@@ -1185,6 +1192,7 @@ 

  CONFIG_NETFILTER_NETLINK=m

  CONFIG_NETFILTER_FAMILY_BRIDGE=y

  CONFIG_NETFILTER_FAMILY_ARP=y

+ # CONFIG_NETFILTER_NETLINK_HOOK is not set

  CONFIG_NETFILTER_NETLINK_ACCT=m

  CONFIG_NETFILTER_NETLINK_QUEUE=m

  CONFIG_NETFILTER_NETLINK_LOG=m
@@ -1581,7 +1589,6 @@ 

  # CONFIG_BRIDGE_MRP is not set

  # CONFIG_BRIDGE_CFM is not set

  CONFIG_NET_DSA=m

- CONFIG_NET_DSA_TAG_8021Q=m

  CONFIG_NET_DSA_TAG_AR9331=m

  CONFIG_NET_DSA_TAG_BRCM_COMMON=m

  CONFIG_NET_DSA_TAG_BRCM=m
@@ -1767,6 +1774,7 @@ 

  # CONFIG_QRTR is not set

  CONFIG_NET_NCSI=y

  # CONFIG_NCSI_OEM_CMD_GET_MAC is not set

+ # CONFIG_NCSI_OEM_CMD_KEEP_PHY is not set

  CONFIG_PCPU_DEV_REFCNT=y

  CONFIG_RPS=y

  CONFIG_RFS_ACCEL=y
@@ -2351,6 +2359,7 @@ 

  # CONFIG_MTD_DATAFLASH_WRITE_VERIFY is not set

  CONFIG_MTD_DATAFLASH_OTP=y

  CONFIG_MTD_MCHP23K256=m

+ # CONFIG_MTD_MCHP48L640 is not set

  CONFIG_MTD_SST25L=m

  CONFIG_MTD_SLRAM=m

  CONFIG_MTD_PHRAM=m
@@ -2599,9 +2608,6 @@ 

  # CONFIG_PVPANIC is not set

  # end of Misc devices

  

- CONFIG_HAVE_IDE=y

- # CONFIG_IDE is not set

- 

  #

  # SCSI device support

  #
@@ -2685,6 +2691,7 @@ 

  CONFIG_SCSI_MPT2SAS_MAX_SGE=128

  CONFIG_SCSI_MPT3SAS_MAX_SGE=128

  CONFIG_SCSI_MPT2SAS=m

+ # CONFIG_SCSI_MPI3MR is not set

  CONFIG_SCSI_SMARTPQI=m

  CONFIG_SCSI_UFSHCD=m

  CONFIG_SCSI_UFSHCD_PCI=m
@@ -2738,6 +2745,7 @@ 

  CONFIG_QEDF=m

  CONFIG_SCSI_LPFC=m

  # CONFIG_SCSI_LPFC_DEBUG_FS is not set

+ # CONFIG_SCSI_EFCT is not set

  CONFIG_SCSI_DC395x=m

  CONFIG_SCSI_AM53C974=m

  CONFIG_SCSI_NSP32=m
@@ -3233,6 +3241,7 @@ 

  CONFIG_MLX5_EN_RXNFC=y

  CONFIG_MLX5_MPFS=y

  CONFIG_MLX5_ESWITCH=y

+ CONFIG_MLX5_BRIDGE=y

  CONFIG_MLX5_CLS_ACT=y

  CONFIG_MLX5_TC_SAMPLE=y

  CONFIG_MLX5_CORE_EN_DCB=y
@@ -3246,8 +3255,6 @@ 

  CONFIG_MLXSW_CORE_THERMAL=y

  CONFIG_MLXSW_PCI=m

  CONFIG_MLXSW_I2C=m

- CONFIG_MLXSW_SWITCHIB=m

- CONFIG_MLXSW_SWITCHX2=m

  CONFIG_MLXSW_SPECTRUM=m

  CONFIG_MLXSW_SPECTRUM_DCB=y

  CONFIG_MLXSW_MINIMAL=m
@@ -3363,6 +3370,7 @@ 

  CONFIG_DWMAC_GENERIC=m

  # CONFIG_DWMAC_INTEL_PLAT is not set

  # CONFIG_DWMAC_INTEL is not set

+ # CONFIG_DWMAC_LOONGSON is not set

  CONFIG_STMMAC_PCI=m

  CONFIG_NET_VENDOR_SUN=y

  CONFIG_HAPPYMEAL=m
@@ -3429,10 +3437,12 @@ 

  CONFIG_MARVELL_PHY=m

  CONFIG_MARVELL_10G_PHY=m

  # CONFIG_MARVELL_88X2222_PHY is not set

+ # CONFIG_MEDIATEK_GE_PHY is not set

  CONFIG_MICREL_PHY=m

  CONFIG_MICROCHIP_PHY=m

  CONFIG_MICROCHIP_T1_PHY=m

  CONFIG_MICROSEMI_PHY=m

+ # CONFIG_MOTORCOMM_PHY is not set

  CONFIG_NATIONAL_PHY=m

  # CONFIG_NXP_C45_TJA11XX_PHY is not set

  CONFIG_NXP_TJA11XX_PHY=m
@@ -3454,7 +3464,9 @@ 

  CONFIG_MICREL_KS8995MA=m

  CONFIG_MDIO_DEVICE=m

  CONFIG_MDIO_BUS=m

+ CONFIG_FWNODE_MDIO=m

  CONFIG_OF_MDIO=m

+ CONFIG_ACPI_MDIO=m

  CONFIG_MDIO_DEVRES=m

  CONFIG_MDIO_BITBANG=m

  CONFIG_MDIO_BCM_UNIMAC=m
@@ -4017,6 +4029,7 @@ 

  CONFIG_JOYSTICK_WALKERA0701=m

  # CONFIG_JOYSTICK_PSXPAD_SPI is not set

  CONFIG_JOYSTICK_PXRC=m

+ # CONFIG_JOYSTICK_QWIIC is not set

  CONFIG_JOYSTICK_FSIA6B=m

  CONFIG_INPUT_TABLET=y

  CONFIG_TABLET_USB_ACECAD=m
@@ -4386,8 +4399,6 @@ 

  CONFIG_NSC_GPIO=m

  CONFIG_DEVMEM=y

  CONFIG_NVRAM=m

- CONFIG_RAW_DRIVER=m

- CONFIG_MAX_RAW_DEVS=256

  CONFIG_DEVPORT=y

  CONFIG_HPET=y

  CONFIG_HPET_MMAP=y
@@ -4412,9 +4423,11 @@ 

  CONFIG_TCG_TIS_ST33ZP24_I2C=m

  CONFIG_TCG_TIS_ST33ZP24_SPI=m

  CONFIG_TELCLOCK=m

+ CONFIG_XILLYBUS_CLASS=m

  CONFIG_XILLYBUS=m

  CONFIG_XILLYBUS_PCIE=m

  CONFIG_XILLYBUS_OF=m

+ # CONFIG_XILLYUSB is not set

  # end of Character devices

  

  # CONFIG_RANDOM_TRUST_CPU is not set
@@ -4596,6 +4609,7 @@ 

  CONFIG_SPI_SLAVE_SYSTEM_CONTROL=m

  CONFIG_SPI_DYNAMIC=y

  CONFIG_SPMI=m

+ # CONFIG_SPMI_HISI3670 is not set

  CONFIG_HSI=m

  CONFIG_HSI_BOARDINFO=y

  
@@ -4783,7 +4797,6 @@ 

  CONFIG_GPIO_TPS6586X=y

  CONFIG_GPIO_TPS65910=y

  CONFIG_GPIO_TPS65912=m

- CONFIG_GPIO_TPS68470=y

  CONFIG_GPIO_TQMX86=m

  CONFIG_GPIO_TWL4030=m

  CONFIG_GPIO_TWL6040=m
@@ -4955,7 +4968,6 @@ 

  CONFIG_CHARGER_RT9455=m

  CONFIG_CHARGER_CROS_USBPD=m

  CONFIG_CHARGER_UCS1002=m

- CONFIG_CHARGER_BD70528=m

  # CONFIG_CHARGER_BD99954 is not set

  CONFIG_CHARGER_WILCO=m

  # CONFIG_RN5T618_POWER is not set
@@ -5092,6 +5104,7 @@ 

  # CONFIG_SENSORS_BPA_RS600 is not set

  # CONFIG_SENSORS_FSP_3Y is not set

  CONFIG_SENSORS_IBM_CFFPS=m

+ # CONFIG_SENSORS_DPS920AB is not set

  CONFIG_SENSORS_INSPUR_IPSPS=m

  CONFIG_SENSORS_IR35221=m

  # CONFIG_SENSORS_IR36021 is not set
@@ -5110,7 +5123,9 @@ 

  CONFIG_SENSORS_MAX31785=m

  CONFIG_SENSORS_MAX34440=m

  CONFIG_SENSORS_MAX8688=m

+ # CONFIG_SENSORS_MP2888 is not set

  # CONFIG_SENSORS_MP2975 is not set

+ # CONFIG_SENSORS_PIM4328 is not set

  # CONFIG_SENSORS_PM6764TR is not set

  CONFIG_SENSORS_PXE1610=m

  # CONFIG_SENSORS_Q54SJ108A2 is not set
@@ -5126,6 +5141,7 @@ 

  CONFIG_SENSORS_SHT15=m

  CONFIG_SENSORS_SHT21=m

  CONFIG_SENSORS_SHT3x=m

+ # CONFIG_SENSORS_SHT4x is not set

  CONFIG_SENSORS_SHTC1=m

  CONFIG_SENSORS_SIS5595=m

  CONFIG_SENSORS_DME1737=m
@@ -5233,6 +5249,7 @@ 

  CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y

  CONFIG_WATCHDOG_OPEN_TIMEOUT=0

  CONFIG_WATCHDOG_SYSFS=y

+ # CONFIG_WATCHDOG_HRTIMER_PRETIMEOUT is not set

  

  #

  # Watchdog Pretimeout Governors
@@ -5439,6 +5456,7 @@ 

  CONFIG_PCF50633_GPIO=m

  CONFIG_UCB1400_CORE=m

  CONFIG_MFD_RDC321X=m

+ # CONFIG_MFD_RT4831 is not set

  CONFIG_MFD_RT5033=m

  CONFIG_MFD_RC5T583=y

  CONFIG_MFD_RK808=m
@@ -5469,7 +5487,6 @@ 

  CONFIG_MFD_TPS65086=m

  CONFIG_MFD_TPS65090=y

  CONFIG_MFD_TPS65217=m

- CONFIG_MFD_TPS68470=y

  CONFIG_MFD_TI_LP873X=m

  CONFIG_MFD_TI_LP87565=m

  CONFIG_MFD_TPS65218=m
@@ -5489,7 +5506,7 @@ 

  CONFIG_MFD_TQMX86=m

  CONFIG_MFD_VX855=m

  # CONFIG_MFD_LOCHNAGAR is not set

- CONFIG_MFD_ARIZONA=y

+ CONFIG_MFD_ARIZONA=m

  CONFIG_MFD_ARIZONA_I2C=m

  CONFIG_MFD_ARIZONA_SPI=m

  CONFIG_MFD_CS47L24=y
@@ -5512,6 +5529,7 @@ 

  CONFIG_MFD_STMFX=m

  CONFIG_MFD_WCD934X=m

  # CONFIG_MFD_ATC260X_I2C is not set

+ # CONFIG_MFD_QCOM_PM8008 is not set

  CONFIG_RAVE_SP_CORE=m

  # CONFIG_MFD_INTEL_M10_BMC is not set

  # end of Multifunction device drivers
@@ -5534,7 +5552,6 @@ 

  CONFIG_REGULATOR_AS3722=m

  CONFIG_REGULATOR_AXP20X=m

  CONFIG_REGULATOR_BCM590XX=m

- CONFIG_REGULATOR_BD70528=m

  # CONFIG_REGULATOR_BD71815 is not set

  CONFIG_REGULATOR_BD71828=m

  CONFIG_REGULATOR_BD718XX=m
@@ -5572,6 +5589,7 @@ 

  CONFIG_REGULATOR_MAX77650=m

  CONFIG_REGULATOR_MAX8649=m

  CONFIG_REGULATOR_MAX8660=m

+ # CONFIG_REGULATOR_MAX8893 is not set

  CONFIG_REGULATOR_MAX8907=m

  CONFIG_REGULATOR_MAX8925=m

  CONFIG_REGULATOR_MAX8952=m
@@ -5594,6 +5612,7 @@ 

  # CONFIG_REGULATOR_MT6315 is not set

  CONFIG_REGULATOR_MT6323=m

  # CONFIG_REGULATOR_MT6358 is not set

+ # CONFIG_REGULATOR_MT6359 is not set

  CONFIG_REGULATOR_MT6397=m

  CONFIG_REGULATOR_PALMAS=m

  CONFIG_REGULATOR_PCA9450=m
@@ -5614,6 +5633,8 @@ 

  CONFIG_REGULATOR_ROHM=m

  # CONFIG_REGULATOR_RT4801 is not set

  CONFIG_REGULATOR_RT5033=m

+ # CONFIG_REGULATOR_RT6160 is not set

+ # CONFIG_REGULATOR_RT6245 is not set

  # CONFIG_REGULATOR_RTMV20 is not set

  CONFIG_REGULATOR_S2MPA01=m

  CONFIG_REGULATOR_S2MPS11=m
@@ -5735,6 +5756,7 @@ 

  CONFIG_V4L2_MEM2MEM_DEV=m

  CONFIG_V4L2_FLASH_LED_CLASS=m

  CONFIG_V4L2_FWNODE=m

+ CONFIG_V4L2_ASYNC=m

  CONFIG_VIDEOBUF_GEN=m

  CONFIG_VIDEOBUF_DMA_SG=m

  CONFIG_VIDEOBUF_VMALLOC=m
@@ -5765,7 +5787,6 @@ 

  #

  # Media drivers

  #

- CONFIG_TTPCI_EEPROM=m

  CONFIG_MEDIA_USB_SUPPORT=y

  

  #
@@ -5943,7 +5964,6 @@ 

  # Media capture/analog TV support

  #

  CONFIG_VIDEO_IVTV=m

- # CONFIG_VIDEO_IVTV_DEPRECATED_IOCTLS is not set

  CONFIG_VIDEO_IVTV_ALSA=m

  CONFIG_VIDEO_FB_IVTV=m

  # CONFIG_VIDEO_FB_IVTV_FORCE_PAT is not set
@@ -5980,14 +6000,10 @@ 

  #

  # Media digital TV PCI Adapters

  #

- CONFIG_DVB_AV7110_IR=y

- CONFIG_DVB_AV7110=m

- CONFIG_DVB_AV7110_OSD=y

  CONFIG_DVB_BUDGET_CORE=m

  CONFIG_DVB_BUDGET=m

  CONFIG_DVB_BUDGET_CI=m

  CONFIG_DVB_BUDGET_AV=m

- CONFIG_DVB_BUDGET_PATCH=m

  CONFIG_DVB_B2C2_FLEXCOP_PCI=m

  # CONFIG_DVB_B2C2_FLEXCOP_PCI_DEBUG is not set

  CONFIG_DVB_PLUTO2=m
@@ -6035,6 +6051,7 @@ 

  #

  CONFIG_VIDEO_CX2341X=m

  CONFIG_VIDEO_TVEEPROM=m

+ CONFIG_TTPCI_EEPROM=m

  CONFIG_CYPRESS_FIRMWARE=m

  CONFIG_VIDEOBUF2_CORE=m

  CONFIG_VIDEOBUF2_V4L2=m
@@ -6204,6 +6221,7 @@ 

  #

  CONFIG_VIDEO_APTINA_PLL=m

  # CONFIG_VIDEO_HI556 is not set

+ # CONFIG_VIDEO_IMX208 is not set

  CONFIG_VIDEO_IMX214=m

  CONFIG_VIDEO_IMX219=m

  CONFIG_VIDEO_IMX258=m
@@ -6396,7 +6414,6 @@ 

  #

  # DVB-T (terrestrial) frontends

  #

- CONFIG_DVB_SP8870=m

  CONFIG_DVB_SP887X=m

  CONFIG_DVB_CX22700=m

  CONFIG_DVB_CX22702=m
@@ -6533,7 +6550,6 @@ 

  CONFIG_DRM_DP_AUX_CHARDEV=y

  CONFIG_DRM_DEBUG_SELFTEST=m

  CONFIG_DRM_KMS_HELPER=m

- CONFIG_DRM_KMS_FB_HELPER=y

  # CONFIG_DRM_DEBUG_DP_MST_TOPOLOGY_REFS is not set

  CONFIG_DRM_FBDEV_EMULATION=y

  CONFIG_DRM_FBDEV_OVERALLOC=100
@@ -6716,10 +6732,12 @@ 

  CONFIG_DRM_CDNS_DSI=m

  # CONFIG_DRM_CHIPONE_ICN6211 is not set

  # CONFIG_DRM_CHRONTEL_CH7033 is not set

+ # CONFIG_DRM_CROS_EC_ANX7688 is not set

  CONFIG_DRM_DISPLAY_CONNECTOR=m

  # CONFIG_DRM_LONTIUM_LT8912B is not set

  # CONFIG_DRM_LONTIUM_LT9611 is not set

  # CONFIG_DRM_LONTIUM_LT9611UXC is not set

+ # CONFIG_DRM_ITE_IT66121 is not set

  CONFIG_DRM_LVDS_CODEC=m

  CONFIG_DRM_MEGACHIPS_STDPXXXX_GE_B850V3_FW=m

  # CONFIG_DRM_NWL_MIPI_DSI is not set
@@ -6737,6 +6755,7 @@ 

  CONFIG_DRM_TOSHIBA_TC358768=m

  # CONFIG_DRM_TOSHIBA_TC358775 is not set

  CONFIG_DRM_TI_TFP410=m

+ # CONFIG_DRM_TI_SN65DSI83 is not set

  CONFIG_DRM_TI_SN65DSI86=m

  CONFIG_DRM_TI_TPD12S015=m

  CONFIG_DRM_ANALOGIX_ANX6345=m
@@ -6760,6 +6779,7 @@ 

  CONFIG_DRM_ARCPGU=m

  CONFIG_DRM_CIRRUS_QEMU=m

  CONFIG_DRM_GM12U320=m

+ # CONFIG_DRM_SIMPLEDRM is not set

  CONFIG_TINYDRM_HX8357D=m

  CONFIG_TINYDRM_ILI9225=m

  CONFIG_TINYDRM_ILI9341=m
@@ -6770,6 +6790,7 @@ 

  CONFIG_TINYDRM_ST7735R=m

  CONFIG_DRM_VBOXVIDEO=m

  # CONFIG_DRM_GUD is not set

+ # CONFIG_DRM_HYPERV is not set

  CONFIG_DRM_LEGACY=y

  CONFIG_DRM_TDFX=m

  CONFIG_DRM_R128=m
@@ -7386,6 +7407,7 @@ 

  CONFIG_SND_SOC_PCM512x_I2C=m

  CONFIG_SND_SOC_PCM512x_SPI=m

  CONFIG_SND_SOC_RK3328=m

+ # CONFIG_SND_SOC_RK817 is not set

  CONFIG_SND_SOC_RL6231=m

  CONFIG_SND_SOC_RL6347A=m

  CONFIG_SND_SOC_RT286=m
@@ -7425,6 +7447,7 @@ 

  # CONFIG_SND_SOC_SIMPLE_MUX is not set

  CONFIG_SND_SOC_SPDIF=m

  CONFIG_SND_SOC_SSM2305=m

+ # CONFIG_SND_SOC_SSM2518 is not set

  CONFIG_SND_SOC_SSM2602=m

  CONFIG_SND_SOC_SSM2602_SPI=m

  CONFIG_SND_SOC_SSM2602_I2C=m
@@ -7442,6 +7465,7 @@ 

  CONFIG_SND_SOC_TAS6424=m

  CONFIG_SND_SOC_TDA7419=m

  CONFIG_SND_SOC_TFA9879=m

+ # CONFIG_SND_SOC_TFA989X is not set

  CONFIG_SND_SOC_TLV320AIC23=m

  CONFIG_SND_SOC_TLV320AIC23_I2C=m

  CONFIG_SND_SOC_TLV320AIC23_SPI=m
@@ -7457,7 +7481,9 @@ 

  CONFIG_SND_SOC_TSCS454=m

  CONFIG_SND_SOC_UDA1334=m

  CONFIG_SND_SOC_WCD9335=m

+ CONFIG_SND_SOC_WCD_MBHC=m

  CONFIG_SND_SOC_WCD934X=m

+ # CONFIG_SND_SOC_WCD938X_SDW is not set

  CONFIG_SND_SOC_WM8510=m

  CONFIG_SND_SOC_WM8523=m

  CONFIG_SND_SOC_WM8524=m
@@ -7484,7 +7510,6 @@ 

  CONFIG_SND_SOC_WM8985=m

  CONFIG_SND_SOC_WSA881X=m

  # CONFIG_SND_SOC_ZL38060 is not set

- CONFIG_SND_SOC_ZX_AUD96P22=m

  CONFIG_SND_SOC_MAX9759=m

  CONFIG_SND_SOC_MT6351=m

  CONFIG_SND_SOC_MT6358=m
@@ -8279,7 +8304,7 @@ 

  CONFIG_INFINIBAND_MTHCA=m

  CONFIG_INFINIBAND_MTHCA_DEBUG=y

  CONFIG_INFINIBAND_CXGB4=m

- CONFIG_INFINIBAND_I40IW=m

+ # CONFIG_INFINIBAND_IRDMA is not set

  CONFIG_MLX4_INFINIBAND=m

  CONFIG_MLX5_INFINIBAND=m

  CONFIG_INFINIBAND_OCRDMA=m
@@ -8560,7 +8585,6 @@ 

  CONFIG_VFIO_PCI_INTX=y

  CONFIG_VFIO_PCI_IGD=y

  CONFIG_VFIO_MDEV=m

- CONFIG_VFIO_MDEV_DEVICE=m

  CONFIG_IRQ_BYPASS_MANAGER=m

  CONFIG_VIRT_DRIVERS=y

  CONFIG_VBOXGUEST=m
@@ -8825,6 +8849,11 @@ 

  # CONFIG_INTEL_ATOMISP is not set

  # CONFIG_VIDEO_ZORAN is not set

  CONFIG_VIDEO_IPU3_IMGU=m

+ CONFIG_DVB_AV7110_IR=y

+ CONFIG_DVB_AV7110=m

+ CONFIG_DVB_AV7110_OSD=y

+ CONFIG_DVB_BUDGET_PATCH=m

+ CONFIG_DVB_SP8870=m

  

  #

  # Android
@@ -8838,6 +8867,7 @@ 

  CONFIG_FWTTY_MAX_CARD_PORTS=32

  CONFIG_GS_FPGABOOT=m

  CONFIG_UNISYSSPAR=y

+ # CONFIG_COMMON_CLK_XLNX_CLKWZRD is not set

  # CONFIG_FB_TFT is not set

  CONFIG_MOST_COMPONENTS=m

  CONFIG_MOST_NET=m
@@ -8851,10 +8881,8 @@ 

  CONFIG_HMS_ANYBUSS_BUS=m

  CONFIG_ARCX_ANYBUS_CONTROLLER=m

  CONFIG_HMS_PROFINET=m

- # CONFIG_KPC2000 is not set

  CONFIG_QLGE=m

  # CONFIG_WFX is not set

- # CONFIG_SPMI_HISI3670 is not set

  # CONFIG_MFD_HI6421_SPMI is not set

  CONFIG_X86_PLATFORM_DEVICES=y

  CONFIG_ACPI_WMI=m
@@ -8884,7 +8912,7 @@ 

  CONFIG_FUJITSU_TABLET=m

  CONFIG_GPD_POCKET_FAN=m

  CONFIG_HP_ACCEL=m

- CONFIG_HP_WIRELESS=m

+ # CONFIG_WIRELESS_HOTKEY is not set

  CONFIG_HP_WMI=m

  CONFIG_TC1100_WMI=m

  CONFIG_IBM_RTL=m
@@ -8897,9 +8925,12 @@ 

  # CONFIG_THINKPAD_ACPI_UNSAFE_LEDS is not set

  CONFIG_THINKPAD_ACPI_VIDEO=y

  CONFIG_THINKPAD_ACPI_HOTKEY_POLL=y

+ # CONFIG_THINKPAD_LMI is not set

+ CONFIG_X86_PLATFORM_DRIVERS_INTEL=y

+ CONFIG_INTEL_CHT_INT33FE=m

+ # CONFIG_INTEL_SKL_INT3472 is not set

  CONFIG_INTEL_ATOMISP2_LED=m

  CONFIG_INTEL_ATOMISP2_PM=m

- CONFIG_INTEL_CHT_INT33FE=m

  CONFIG_INTEL_HID_EVENT=m

  CONFIG_INTEL_INT0002_VGPIO=m

  CONFIG_INTEL_MENLOW=m
@@ -8970,10 +9001,18 @@ 

  CONFIG_SURFACE_PRO3_BUTTON=m

  # CONFIG_SURFACE_AGGREGATOR is not set

  CONFIG_HAVE_CLK=y

- CONFIG_CLKDEV_LOOKUP=y

  CONFIG_HAVE_CLK_PREPARE=y

  CONFIG_COMMON_CLK=y

  CONFIG_COMMON_CLK_WM831X=m

+ 

+ #

+ # Clock driver for ARM Reference designs

+ #

+ # CONFIG_ICST is not set

+ # CONFIG_CLK_SP810 is not set

+ # end of Clock driver for ARM Reference designs

+ 

+ # CONFIG_LMK04832 is not set

  CONFIG_COMMON_CLK_MAX77686=m

  CONFIG_COMMON_CLK_MAX9485=m

  CONFIG_COMMON_CLK_RK808=m
@@ -9032,6 +9071,7 @@ 

  CONFIG_INTEL_IOMMU_FLOPPY_WA=y

  # CONFIG_INTEL_IOMMU_SCALABLE_MODE_DEFAULT_ON is not set

  CONFIG_HYPERV_IOMMU=y

+ # CONFIG_VIRTIO_IOMMU is not set

  

  #

  # Remoteproc drivers
@@ -9179,6 +9219,8 @@ 

  CONFIG_DMARD06=m

  CONFIG_DMARD09=m

  CONFIG_DMARD10=m

+ # CONFIG_FXLS8962AF_I2C is not set

+ # CONFIG_FXLS8962AF_SPI is not set

  CONFIG_HID_SENSOR_ACCEL_3D=m

  CONFIG_IIO_CROS_EC_ACCEL_LEGACY=m

  CONFIG_IIO_ST_ACCEL_3AXIS=m
@@ -9200,6 +9242,7 @@ 

  CONFIG_MXC4005=m

  CONFIG_MXC6255=m

  CONFIG_SCA3000=m

+ # CONFIG_SCA3300 is not set

  CONFIG_STK8312=m

  CONFIG_STK8BA50=m

  # end of Accelerometers
@@ -9278,6 +9321,7 @@ 

  # CONFIG_TI_ADS131E08 is not set

  CONFIG_TI_AM335X_ADC=m

  CONFIG_TI_TLC4541=m

+ # CONFIG_TI_TSC2046 is not set

  CONFIG_TWL4030_MADC=m

  CONFIG_TWL6030_GPADC=m

  CONFIG_VF610_ADC=m
@@ -9319,7 +9363,8 @@ 

  CONFIG_SCD30_I2C=m

  CONFIG_SCD30_SERIAL=m

  CONFIG_SENSIRION_SGP30=m

- CONFIG_SPS30=m

+ # CONFIG_SPS30_I2C is not set

+ # CONFIG_SPS30_SERIAL is not set

  CONFIG_VZ89X=m

  # end of Chemical Sensors

  
@@ -9495,6 +9540,7 @@ 

  CONFIG_IIO_ST_LSM6DSX_I2C=m

  CONFIG_IIO_ST_LSM6DSX_SPI=m

  CONFIG_IIO_ST_LSM6DSX_I3C=m

+ # CONFIG_IIO_ST_LSM9DS0 is not set

  # end of Inertial measurement units

  

  CONFIG_IIO_ADIS_LIB=m
@@ -9547,6 +9593,7 @@ 

  CONFIG_TCS3472=m

  CONFIG_SENSORS_TSL2563=m

  CONFIG_TSL2583=m

+ # CONFIG_TSL2591 is not set

  CONFIG_TSL2772=m

  CONFIG_TSL4531=m

  CONFIG_US5182D=m
@@ -9704,6 +9751,7 @@ 

  CONFIG_MLX90632=m

  CONFIG_TMP006=m

  CONFIG_TMP007=m

+ # CONFIG_TMP117 is not set

  CONFIG_TSYS01=m

  CONFIG_TSYS02D=m

  CONFIG_MAX31856=m
@@ -9776,6 +9824,7 @@ 

  CONFIG_GENERIC_PHY=y

  CONFIG_GENERIC_PHY_MIPI_DPHY=y

  # CONFIG_USB_LGM_PHY is not set

+ # CONFIG_PHY_CAN_TRANSCEIVER is not set

  CONFIG_BCM_KONA_USB2_PHY=m

  CONFIG_PHY_CADENCE_TORRENT=m

  CONFIG_PHY_CADENCE_DPHY=m
@@ -9907,6 +9956,7 @@ 

  # CONFIG_INTERRUPT_CNT is not set

  CONFIG_FTM_QUADDEC=m

  CONFIG_MICROCHIP_TCB_CAPTURE=m

+ # CONFIG_INTEL_QEP is not set

  CONFIG_MOST=m

  CONFIG_MOST_USB_HDM=m

  CONFIG_MOST_CDEV=m
@@ -10721,7 +10771,6 @@ 

  CONFIG_SBITMAP=y

  CONFIG_PARMAN=m

  CONFIG_OBJAGG=m

- # CONFIG_STRING_SELFTEST is not set

  # end of Library routines

  

  CONFIG_PLDMFW=y
@@ -10736,6 +10785,7 @@ 

  #

  CONFIG_PRINTK_TIME=y

  # CONFIG_PRINTK_CALLER is not set

+ # CONFIG_STACKTRACE_BUILD_ID is not set

  CONFIG_CONSOLE_LOGLEVEL_DEFAULT=4

  CONFIG_CONSOLE_LOGLEVEL_QUIET=4

  CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
@@ -10756,7 +10806,7 @@ 

  # CONFIG_HEADERS_INSTALL is not set

  # CONFIG_DEBUG_SECTION_MISMATCH is not set

  CONFIG_SECTION_MISMATCH_WARN_ONLY=y

- # CONFIG_DEBUG_FORCE_FUNCTION_ALIGN_32B is not set

+ # CONFIG_DEBUG_FORCE_FUNCTION_ALIGN_64B is not set

  CONFIG_FRAME_POINTER=y

  # CONFIG_VMLINUX_MAP is not set

  # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
@@ -10901,7 +10951,6 @@ 

  CONFIG_RCU_CPU_STALL_TIMEOUT=60

  # CONFIG_RCU_TRACE is not set

  # CONFIG_RCU_EQS_DEBUG is not set

- # CONFIG_RCU_STRICT_GRACE_PERIOD is not set

  # end of RCU Debugging

  

  # CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set
@@ -10940,6 +10989,8 @@ 

  # CONFIG_PREEMPT_TRACER is not set

  CONFIG_SCHED_TRACER=y

  CONFIG_HWLAT_TRACER=y

+ # CONFIG_OSNOISE_TRACER is not set

+ # CONFIG_TIMERLAT_TRACER is not set

  CONFIG_MMIOTRACE=y

  CONFIG_FTRACE_SYSCALLS=y

  CONFIG_TRACER_SNAPSHOT=y
@@ -11015,7 +11066,6 @@ 

  CONFIG_CC_HAS_SANCOV_TRACE_PC=y

  CONFIG_RUNTIME_TESTING_MENU=y

  CONFIG_LKDTM=m

- # CONFIG_TEST_LIST_SORT is not set

  CONFIG_TEST_MIN_HEAP=m

  # CONFIG_TEST_SORT is not set

  # CONFIG_TEST_DIV64 is not set
@@ -11028,10 +11078,12 @@ 

  # CONFIG_ATOMIC64_SELFTEST is not set

  # CONFIG_ASYNC_RAID6_TEST is not set

  # CONFIG_TEST_HEXDUMP is not set

+ # CONFIG_STRING_SELFTEST is not set

  # CONFIG_TEST_STRING_HELPERS is not set

  CONFIG_TEST_STRSCPY=m

  # CONFIG_TEST_KSTRTOX is not set

  # CONFIG_TEST_PRINTF is not set

+ # CONFIG_TEST_SCANF is not set

  # CONFIG_TEST_BITMAP is not set

  # CONFIG_TEST_UUID is not set

  CONFIG_TEST_XARRAY=m
@@ -11058,6 +11110,7 @@ 

  CONFIG_TEST_MEMINIT=m

  CONFIG_TEST_FREE_PAGES=m

  CONFIG_TEST_FPU=m

+ # CONFIG_TEST_CLOCKSOURCE_WATCHDOG is not set

  CONFIG_ARCH_USE_MEMTEST=y

  # CONFIG_MEMTEST is not set

  # CONFIG_HYPERV_TESTING is not set

file modified
+11 -10
@@ -13,7 +13,7 @@ 

  _replacesoldmodules=()

  

  pkgbase=linux-libre-pck

- pkgver=5.13.9.pck1

+ pkgver=5.14.11.pck2

  pkgrel=1

  pkgdesc='Linux-libre PCK'

  url='https://wiki.parabola.nu/PCK'
@@ -21,10 +21,10 @@ 

  license=(GPL2)

  makedepends=(

    bc kmod libelf pahole cpio perl tar xz

- #  xmlto python-sphinx python-sphinx_rtd_theme graphviz imagemagick

+   xmlto python-sphinx python-sphinx_rtd_theme graphviz imagemagick

  )

  options=('!strip')

- _srcname=linux-5.13

+ _srcname=linux-5.14

  source=(

    "https://linux-libre.fsfla.org/pub/linux-libre/releases/${_srcname##*-}-gnu/linux-libre-${_srcname##*-}-gnu.tar.xz"{,.sign}

    "https://linux-libre.fsfla.org/pub/linux-libre/releases/${pkgver%.*}-gnu/patch-${_srcname##*-}-gnu-${pkgver%.*}-gnu.xz"{,.sign}
@@ -36,14 +36,14 @@ 

    '474402C8C582DAFBE389C427BCB7CF877E7D47A7' # Alexandre Oliva

    '6DB9C4B4F0D8C0DC432CF6E4227CA7C556B2BA78' # David P.

  )

- sha512sums=('a24f2db9316297127447b3d7fd7a1e9e7b9a8bdb5e59e6e341568cbf877c4b65d2ccdb27ec1c23b07af6c365b2930b040bcef0d989202b503bc55b107c04d121'

+ sha512sums=('18798d032184ce141216ad72fcbb5ddb340809fe8d953acb50700aa0b47d36fca104dcedc7521fb3aea913d8fbeb4bd3eab1cf2c955388e6996c4154eac67d0c'

              'SKIP'

-             '8f1b7cb25e22f241567f3b78c66a2203d6c3746e464be7f7ddfcc42198fb41f7a4a179820ca2aa751c53098652b14789c204d9057bdfe6b6927dec68c1d26eec'

+             '951cdb68af3bbf3b841376f82fd9c82dfd7a159cae8564e5d772f99f3170deafcabc00cb0ecfa6e7669c22087577f2eafa47d3b50bc8ea6ee5edbc65821986e1'

              'SKIP'

-             '07173b3bf2f0bd9b11f803d0946ce42f981c7f4ec57078efc349386d5dda8c0db37692ffeccb1d2dbb7fe6e243645baafd57c547c1dd0386e4becf257df8510e'

+             'a2ea7c7d8cb863d9e9d41f3cb3cab26f2f86940ee0dacd2fc56689304fe309d0f6b7ed8d4ddf5e4ec05445c3ad4a5fff03e33f9e82a32f4bad338af3168947aa'

              'SKIP'

-             '1e7c176717e3295ce96c7b4d5d8f9efe28a3fd51095368d4ca985661f0b8ae38d92312598b14a1b37ffb29d97a5fe09b9ee75db3f461e4af3b7b5ff8913030cb'

-             'd92eb8d42a3d87c6ced2ef54536141f55ebe5a101d71f7a90b853fe890954388a5460917d2f1c51c73208a8e727c3c1c203525b83554f67d8512e533ba25f832'

+             '443f93a4086bbfe096be06ad084185c0c9ec9ba7913969ffeb426f75052fa6a5fb28d3f61f39f0086720633bc33ffd6f4985d1db53395e0bd43309469cd0ae64'

+             'e5fd36b0ae7b91d0d9590ddcf1dbcd23c0fe772366a6088fb35c09cfd85486913edb65c45a42c1a590cc144c5d092b5925d824146837f42ba326f8b3fefeec7e'

              '6728253ca04a603ef35ceb06b284c509d8ffda6a8c6403fe687afe5d956425588ebbd62bfc5dd1d7fd9a03071a30c7cd86ac72a1fd67cbbf1ebdac85ee703caf'

              '53103bf55b957b657039510527df0df01279dec59cda115a4d6454e4135025d4546167fa30bdc99107f232561c1e096d8328609ab5a876cf7017176f92ad3e0b')

  
@@ -85,6 +85,7 @@ 

    echo "Setting config..."

    cp ../config.$CARCH .config

    make olddefconfig

+   diff -u ../config .config || :

  

    make -s kernelrelease > version

    echo "Prepared $pkgbase version $(<version)"
@@ -93,7 +94,7 @@ 

  build() {

    cd $_srcname

    make all

- #  make htmldocs

+   make htmldocs

  }

  

  _package() {
@@ -260,7 +261,7 @@ 

    ln -sr "$builddir/Documentation" "$pkgdir/usr/share/doc/$pkgbase"

  }

  

- pkgname=("$pkgbase" "$pkgbase-headers") # "$pkgbase-docs"

+ pkgname=("$pkgbase" "$pkgbase-headers" "$pkgbase-docs")

  for _p in "${pkgname[@]}"; do

    eval "package_$_p() {

      $(declare -f "_package${_p#$pkgbase}")

@@ -1,6 +1,6 @@ 

  #

  # Automatically generated file; DO NOT EDIT.

- # Linux/x86 5.13.9-gnu-pck1 Kernel Configuration

+ # Linux/x86 5.14.11-gnu-pck1 Kernel Configuration

  #

  CONFIG_CC_VERSION_TEXT="gcc (GCC) 11.1.0"

  CONFIG_CC_IS_GCC=y
@@ -16,6 +16,7 @@ 

  CONFIG_CC_HAS_ASM_GOTO=y

  CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y

  CONFIG_CC_HAS_ASM_INLINE=y

+ CONFIG_CC_HAS_NO_PROFILE_FN_ATTR=y

  CONFIG_IRQ_WORK=y

  CONFIG_BUILDTIME_TABLE_SORT=y

  CONFIG_THREAD_INFO_IN_TASK=y
@@ -23,7 +24,6 @@ 

  #

  # General setup

  #

- # CONFIG_SCHED_MUQSS is not set

  CONFIG_PCK_INTERACTIVE=y

  CONFIG_INIT_ENV_ARG_LIMIT=32

  # CONFIG_COMPILE_TEST is not set
@@ -123,6 +123,7 @@ 

  CONFIG_PREEMPT_COUNT=y

  CONFIG_PREEMPTION=y

  CONFIG_PREEMPT_DYNAMIC=y

+ CONFIG_SCHED_CORE=y

  

  #

  # CPU/Task time and stats accounting
@@ -177,6 +178,7 @@ 

  #

  # Scheduler features

  #

+ # CONFIG_SCHED_ALT is not set

  CONFIG_UCLAMP_TASK=y

  CONFIG_UCLAMP_BUCKETS_COUNT=5

  # end of Scheduler features
@@ -329,7 +331,6 @@ 

  #

  # Processor type and features

  #

- CONFIG_ZONE_DMA=y

  CONFIG_SMP=y

  CONFIG_X86_FEATURE_NAMES=y

  CONFIG_X86_MPPARSE=y
@@ -441,8 +442,6 @@ 

  CONFIG_SCHED_SMT=y

  CONFIG_SCHED_MC=y

  CONFIG_SCHED_MC_PRIO=y

- CONFIG_RQ_NONE=y

- CONFIG_SHARERQ=0

  CONFIG_X86_LOCAL_APIC=y

  CONFIG_X86_IO_APIC=y

  CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y
@@ -489,7 +488,6 @@ 

  # CONFIG_HIGHPTE is not set

  CONFIG_X86_CHECK_BIOS_CORRUPTION=y

  CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y

- CONFIG_X86_RESERVE_LOW=64

  CONFIG_MTRR=y

  CONFIG_MTRR_SANITIZER=y

  CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=1
@@ -612,6 +610,7 @@ 

  CONFIG_CHT_WC_PMIC_OPREGION=y

  CONFIG_CHT_DC_TI_PMIC_OPREGION=y

  CONFIG_TPS68470_PMIC_OPREGION=y

+ CONFIG_ACPI_VIOT=y

  CONFIG_X86_PM_TIMER=y

  CONFIG_X86_APM_BOOT=y

  CONFIG_APM=y
@@ -785,6 +784,7 @@ 

  CONFIG_HAVE_KVM_IRQ_BYPASS=y

  CONFIG_HAVE_KVM_NO_POLL=y

  CONFIG_KVM_XFER_TO_GUEST_WORK=y

+ CONFIG_HAVE_KVM_PM_NOTIFIER=y

  CONFIG_VIRTUALIZATION=y

  CONFIG_KVM=m

  CONFIG_KVM_INTEL=m
@@ -829,6 +829,7 @@ 

  CONFIG_ARCH_HAS_SET_DIRECT_MAP=y

  CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y

  CONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT=y

+ CONFIG_ARCH_WANTS_NO_INSTR=y

  CONFIG_ARCH_32BIT_OFF_T=y

  CONFIG_HAVE_ASM_MODVERSIONS=y

  CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
@@ -859,6 +860,8 @@ 

  CONFIG_HAVE_STACKPROTECTOR=y

  CONFIG_STACKPROTECTOR=y

  CONFIG_STACKPROTECTOR_STRONG=y

+ CONFIG_ARCH_SUPPORTS_LTO_CLANG=y

+ CONFIG_ARCH_SUPPORTS_LTO_CLANG_THIN=y

  CONFIG_LTO_NONE=y

  CONFIG_HAVE_ARCH_WITHIN_STACK_FRAMES=y

  CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
@@ -879,7 +882,7 @@ 

  CONFIG_OLD_SIGACTION=y

  CONFIG_COMPAT_32BIT_TIME=y

  CONFIG_HAVE_ARCH_RANDOMIZE_KSTACK_OFFSET=y

- # CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT is not set

+ CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT=y

  CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y

  CONFIG_STRICT_KERNEL_RWX=y

  CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
@@ -945,9 +948,11 @@ 

  CONFIG_BLK_DEV_THROTTLING_LOW=y

  # CONFIG_BLK_CMDLINE_PARSER is not set

  CONFIG_BLK_WBT=y

+ CONFIG_BLK_WBT_MQ=y

  CONFIG_BLK_CGROUP_IOLATENCY=y

+ CONFIG_BLK_CGROUP_FC_APPID=y

  CONFIG_BLK_CGROUP_IOCOST=y

- CONFIG_BLK_WBT_MQ=y

+ CONFIG_BLK_CGROUP_IOPRIO=y

  CONFIG_BLK_DEBUG_FS=y

  CONFIG_BLK_DEBUG_FS_ZONED=y

  CONFIG_BLK_SED_OPAL=y
@@ -1030,8 +1035,8 @@ 

  CONFIG_FLATMEM_MANUAL=y

  # CONFIG_SPARSEMEM_MANUAL is not set

  CONFIG_FLATMEM=y

- CONFIG_FLAT_NODE_MEM_MAP=y

  CONFIG_SPARSEMEM_STATIC=y

+ CONFIG_ANON_MIN_KBYTES=0

  CONFIG_CLEAN_LOW_KBYTES=262144

  CONFIG_CLEAN_MIN_KBYTES=0

  CONFIG_HAVE_FAST_GUP=y
@@ -1085,6 +1090,7 @@ 

  CONFIG_GENERIC_EARLY_IOREMAP=y

  CONFIG_IDLE_PAGE_TRACKING=y

  CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y

+ CONFIG_ZONE_DMA=y

  CONFIG_HMM_MIRROR=y

  CONFIG_VMAP_PFN=y

  # CONFIG_PERCPU_STATS is not set
@@ -1093,6 +1099,7 @@ 

  CONFIG_ARCH_HAS_PTE_SPECIAL=y

  CONFIG_MAPPING_DIRTY_HELPERS=y

  CONFIG_KMAP_LOCAL=y

+ CONFIG_SECRETMEM=y

  CONFIG_LRU_GEN=y

  CONFIG_LRU_GEN_ENABLED=y

  # CONFIG_LRU_GEN_STATS is not set
@@ -1240,6 +1247,7 @@ 

  CONFIG_NETFILTER_NETLINK=m

  CONFIG_NETFILTER_FAMILY_BRIDGE=y

  CONFIG_NETFILTER_FAMILY_ARP=y

+ CONFIG_NETFILTER_NETLINK_HOOK=m

  CONFIG_NETFILTER_NETLINK_ACCT=m

  CONFIG_NETFILTER_NETLINK_QUEUE=m

  CONFIG_NETFILTER_NETLINK_LOG=m
@@ -1621,7 +1629,6 @@ 

  # CONFIG_BRIDGE_MRP is not set

  CONFIG_BRIDGE_CFM=y

  CONFIG_NET_DSA=m

- CONFIG_NET_DSA_TAG_8021Q=m

  CONFIG_NET_DSA_TAG_AR9331=m

  CONFIG_NET_DSA_TAG_BRCM_COMMON=m

  CONFIG_NET_DSA_TAG_BRCM=m
@@ -1815,6 +1822,7 @@ 

  CONFIG_QRTR_MHI=m

  CONFIG_NET_NCSI=y

  CONFIG_NCSI_OEM_CMD_GET_MAC=y

+ CONFIG_NCSI_OEM_CMD_KEEP_PHY=y

  CONFIG_PCPU_DEV_REFCNT=y

  CONFIG_RPS=y

  CONFIG_RFS_ACCEL=y
@@ -2198,6 +2206,7 @@ 

  CONFIG_CXL_BUS=m

  CONFIG_CXL_MEM=m

  # CONFIG_CXL_MEM_RAW_COMMANDS is not set

+ CONFIG_CXL_ACPI=m

  CONFIG_PCCARD=m

  CONFIG_PCMCIA=m

  CONFIG_PCMCIA_LOAD_CIS=y
@@ -2340,6 +2349,7 @@ 

  # CONFIG_MTD_PMC551 is not set

  # CONFIG_MTD_DATAFLASH is not set

  # CONFIG_MTD_MCHP23K256 is not set

+ # CONFIG_MTD_MCHP48L640 is not set

  # CONFIG_MTD_SST25L is not set

  # CONFIG_MTD_SLRAM is not set

  CONFIG_MTD_PHRAM=m
@@ -2574,9 +2584,6 @@ 

  CONFIG_PVPANIC_PCI=m

  # end of Misc devices

  

- CONFIG_HAVE_IDE=y

- # CONFIG_IDE is not set

- 

  #

  # SCSI device support

  #
@@ -2660,6 +2667,7 @@ 

  CONFIG_SCSI_MPT2SAS_MAX_SGE=128

  CONFIG_SCSI_MPT3SAS_MAX_SGE=128

  CONFIG_SCSI_MPT2SAS=m

+ CONFIG_SCSI_MPI3MR=m

  CONFIG_SCSI_SMARTPQI=m

  CONFIG_SCSI_UFSHCD=m

  CONFIG_SCSI_UFSHCD_PCI=m
@@ -2713,6 +2721,7 @@ 

  CONFIG_QEDF=m

  CONFIG_SCSI_LPFC=m

  # CONFIG_SCSI_LPFC_DEBUG_FS is not set

+ CONFIG_SCSI_EFCT=m

  CONFIG_SCSI_DC395x=m

  CONFIG_SCSI_AM53C974=m

  CONFIG_SCSI_NSP32=m
@@ -3211,6 +3220,7 @@ 

  CONFIG_MLX5_EN_RXNFC=y

  CONFIG_MLX5_MPFS=y

  CONFIG_MLX5_ESWITCH=y

+ CONFIG_MLX5_BRIDGE=y

  CONFIG_MLX5_CLS_ACT=y

  CONFIG_MLX5_TC_CT=y

  CONFIG_MLX5_TC_SAMPLE=y
@@ -3227,8 +3237,6 @@ 

  CONFIG_MLXSW_CORE_THERMAL=y

  CONFIG_MLXSW_PCI=m

  CONFIG_MLXSW_I2C=m

- CONFIG_MLXSW_SWITCHIB=m

- CONFIG_MLXSW_SWITCHX2=m

  CONFIG_MLXSW_SPECTRUM=m

  CONFIG_MLXSW_SPECTRUM_DCB=y

  CONFIG_MLXSW_MINIMAL=m
@@ -3343,6 +3351,7 @@ 

  CONFIG_DWMAC_GENERIC=m

  # CONFIG_DWMAC_INTEL_PLAT is not set

  CONFIG_DWMAC_INTEL=m

+ CONFIG_DWMAC_LOONGSON=m

  CONFIG_STMMAC_PCI=m

  CONFIG_NET_VENDOR_SUN=y

  CONFIG_HAPPYMEAL=m
@@ -3409,10 +3418,12 @@ 

  CONFIG_MARVELL_PHY=m

  CONFIG_MARVELL_10G_PHY=m

  CONFIG_MARVELL_88X2222_PHY=m

+ CONFIG_MEDIATEK_GE_PHY=m

  CONFIG_MICREL_PHY=m

  CONFIG_MICROCHIP_PHY=m

  # CONFIG_MICROCHIP_T1_PHY is not set

  CONFIG_MICROSEMI_PHY=m

+ CONFIG_MOTORCOMM_PHY=m

  CONFIG_NATIONAL_PHY=m

  CONFIG_NXP_C45_TJA11XX_PHY=m

  CONFIG_NXP_TJA11XX_PHY=m
@@ -3434,7 +3445,9 @@ 

  CONFIG_MICREL_KS8995MA=m

  CONFIG_MDIO_DEVICE=m

  CONFIG_MDIO_BUS=m

+ CONFIG_FWNODE_MDIO=m

  CONFIG_OF_MDIO=m

+ CONFIG_ACPI_MDIO=m

  CONFIG_MDIO_DEVRES=m

  CONFIG_MDIO_BITBANG=m

  CONFIG_MDIO_BCM_UNIMAC=m
@@ -3841,7 +3854,10 @@ 

  # Wireless WAN

  #

  CONFIG_WWAN=y

+ CONFIG_WWAN_HWSIM=m

  CONFIG_MHI_WWAN_CTRL=m

+ CONFIG_RPMSG_WWAN_CTRL=m

+ CONFIG_IOSM=m

  # end of Wireless WAN

  

  CONFIG_VMXNET3=m
@@ -4002,6 +4018,7 @@ 

  CONFIG_JOYSTICK_WALKERA0701=m

  # CONFIG_JOYSTICK_PSXPAD_SPI is not set

  CONFIG_JOYSTICK_PXRC=m

+ CONFIG_JOYSTICK_QWIIC=m

  CONFIG_JOYSTICK_FSIA6B=m

  CONFIG_INPUT_TABLET=y

  CONFIG_TABLET_USB_ACECAD=m
@@ -4364,8 +4381,6 @@ 

  CONFIG_NSC_GPIO=m

  CONFIG_DEVMEM=y

  CONFIG_NVRAM=y

- CONFIG_RAW_DRIVER=m

- CONFIG_MAX_RAW_DEVS=8192

  CONFIG_DEVPORT=y

  CONFIG_HPET=y

  # CONFIG_HPET_MMAP is not set
@@ -4389,9 +4404,11 @@ 

  CONFIG_TCG_TIS_ST33ZP24_I2C=m

  CONFIG_TCG_TIS_ST33ZP24_SPI=m

  CONFIG_TELCLOCK=m

+ CONFIG_XILLYBUS_CLASS=m

  CONFIG_XILLYBUS=m

  CONFIG_XILLYBUS_PCIE=m

  # CONFIG_XILLYBUS_OF is not set

+ CONFIG_XILLYUSB=m

  # end of Character devices

  

  # CONFIG_RANDOM_TRUST_CPU is not set
@@ -5036,6 +5053,7 @@ 

  CONFIG_SENSORS_BPA_RS600=m

  CONFIG_SENSORS_FSP_3Y=m

  CONFIG_SENSORS_IBM_CFFPS=m

+ CONFIG_SENSORS_DPS920AB=m

  CONFIG_SENSORS_INSPUR_IPSPS=m

  CONFIG_SENSORS_IR35221=m

  CONFIG_SENSORS_IR36021=m
@@ -5054,7 +5072,9 @@ 

  CONFIG_SENSORS_MAX31785=m

  CONFIG_SENSORS_MAX34440=m

  CONFIG_SENSORS_MAX8688=m

+ CONFIG_SENSORS_MP2888=m

  CONFIG_SENSORS_MP2975=m

+ CONFIG_SENSORS_PIM4328=m

  CONFIG_SENSORS_PM6764TR=m

  CONFIG_SENSORS_PXE1610=m

  CONFIG_SENSORS_Q54SJ108A2=m
@@ -5070,6 +5090,7 @@ 

  CONFIG_SENSORS_SHT15=m

  CONFIG_SENSORS_SHT21=m

  CONFIG_SENSORS_SHT3x=m

+ CONFIG_SENSORS_SHT4x=m

  CONFIG_SENSORS_SHTC1=m

  CONFIG_SENSORS_SIS5595=m

  CONFIG_SENSORS_DME1737=m
@@ -5174,6 +5195,7 @@ 

  CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y

  CONFIG_WATCHDOG_OPEN_TIMEOUT=0

  CONFIG_WATCHDOG_SYSFS=y

+ # CONFIG_WATCHDOG_HRTIMER_PRETIMEOUT is not set

  

  #

  # Watchdog Pretimeout Governors
@@ -5376,11 +5398,12 @@ 

  CONFIG_PCF50633_GPIO=m

  CONFIG_UCB1400_CORE=m

  CONFIG_MFD_RDC321X=m

+ CONFIG_MFD_RT4831=m

  CONFIG_MFD_RT5033=m

  CONFIG_MFD_RC5T583=y

  # CONFIG_MFD_RK808 is not set

  # CONFIG_MFD_RN5T618 is not set

- CONFIG_MFD_SEC_CORE=y

+ # CONFIG_MFD_SEC_CORE is not set

  CONFIG_MFD_SI476X_CORE=m

  CONFIG_MFD_SM501=m

  CONFIG_MFD_SM501_GPIO=y
@@ -5398,7 +5421,6 @@ 

  CONFIG_MFD_TPS65086=m

  CONFIG_MFD_TPS65090=y

  # CONFIG_MFD_TPS65217 is not set

- CONFIG_MFD_TPS68470=y

  CONFIG_MFD_TI_LP873X=m

  # CONFIG_MFD_TI_LP87565 is not set

  # CONFIG_MFD_TPS65218 is not set
@@ -5418,7 +5440,7 @@ 

  CONFIG_MFD_TQMX86=m

  CONFIG_MFD_VX855=m

  # CONFIG_MFD_LOCHNAGAR is not set

- CONFIG_MFD_ARIZONA=y

+ CONFIG_MFD_ARIZONA=m

  CONFIG_MFD_ARIZONA_I2C=m

  CONFIG_MFD_ARIZONA_SPI=m

  CONFIG_MFD_CS47L24=y
@@ -5442,6 +5464,7 @@ 

  CONFIG_MFD_WCD934X=m

  CONFIG_MFD_ATC260X=m

  CONFIG_MFD_ATC260X_I2C=m

+ # CONFIG_MFD_QCOM_PM8008 is not set

  CONFIG_RAVE_SP_CORE=m

  CONFIG_MFD_INTEL_M10_BMC=m

  # end of Multifunction device drivers
@@ -5491,6 +5514,7 @@ 

  CONFIG_REGULATOR_MAX1586=m

  CONFIG_REGULATOR_MAX8649=m

  CONFIG_REGULATOR_MAX8660=m

+ CONFIG_REGULATOR_MAX8893=m

  CONFIG_REGULATOR_MAX8907=m

  CONFIG_REGULATOR_MAX8925=m

  CONFIG_REGULATOR_MAX8952=m
@@ -5510,6 +5534,7 @@ 

  CONFIG_REGULATOR_MT6311=m

  CONFIG_REGULATOR_MT6323=m

  # CONFIG_REGULATOR_MT6358 is not set

+ CONFIG_REGULATOR_MT6359=m

  CONFIG_REGULATOR_MT6397=m

  CONFIG_REGULATOR_PALMAS=m

  CONFIG_REGULATOR_PCA9450=m
@@ -5524,11 +5549,11 @@ 

  CONFIG_REGULATOR_RASPBERRYPI_TOUCHSCREEN_ATTINY=m

  CONFIG_REGULATOR_RC5T583=m

  CONFIG_REGULATOR_RT4801=m

+ CONFIG_REGULATOR_RT4831=m

  CONFIG_REGULATOR_RT5033=m

+ CONFIG_REGULATOR_RT6160=m

+ CONFIG_REGULATOR_RT6245=m

  CONFIG_REGULATOR_RTMV20=m

- CONFIG_REGULATOR_S2MPA01=m

- CONFIG_REGULATOR_S2MPS11=m

- CONFIG_REGULATOR_S5M8767=m

  CONFIG_REGULATOR_SKY81452=m

  CONFIG_REGULATOR_SLG51000=m

  # CONFIG_REGULATOR_SY8106A is not set
@@ -5639,6 +5664,7 @@ 

  CONFIG_V4L2_MEM2MEM_DEV=m

  CONFIG_V4L2_FLASH_LED_CLASS=m

  CONFIG_V4L2_FWNODE=m

+ CONFIG_V4L2_ASYNC=m

  CONFIG_VIDEOBUF_GEN=m

  CONFIG_VIDEOBUF_DMA_SG=m

  CONFIG_VIDEOBUF_VMALLOC=m
@@ -5673,7 +5699,6 @@ 

  #

  # Drivers filtered as selected at 'Filter media drivers'

  #

- CONFIG_TTPCI_EEPROM=m

  CONFIG_MEDIA_USB_SUPPORT=y

  

  #
@@ -5844,7 +5869,6 @@ 

  # Media capture/analog TV support

  #

  CONFIG_VIDEO_IVTV=m

- # CONFIG_VIDEO_IVTV_DEPRECATED_IOCTLS is not set

  CONFIG_VIDEO_IVTV_ALSA=m

  CONFIG_VIDEO_FB_IVTV=m

  # CONFIG_VIDEO_FB_IVTV_FORCE_PAT is not set
@@ -5881,14 +5905,10 @@ 

  #

  # Media digital TV PCI Adapters

  #

- CONFIG_DVB_AV7110_IR=y

- CONFIG_DVB_AV7110=m

- CONFIG_DVB_AV7110_OSD=y

  CONFIG_DVB_BUDGET_CORE=m

  CONFIG_DVB_BUDGET=m

  CONFIG_DVB_BUDGET_CI=m

  CONFIG_DVB_BUDGET_AV=m

- CONFIG_DVB_BUDGET_PATCH=m

  CONFIG_DVB_B2C2_FLEXCOP_PCI=m

  # CONFIG_DVB_B2C2_FLEXCOP_PCI_DEBUG is not set

  CONFIG_DVB_PLUTO2=m
@@ -5936,6 +5956,7 @@ 

  #

  CONFIG_VIDEO_CX2341X=m

  CONFIG_VIDEO_TVEEPROM=m

+ CONFIG_TTPCI_EEPROM=m

  CONFIG_CYPRESS_FIRMWARE=m

  CONFIG_VIDEOBUF2_CORE=m

  CONFIG_VIDEOBUF2_V4L2=m
@@ -6035,6 +6056,7 @@ 

  CONFIG_VIDEO_APTINA_PLL=m

  CONFIG_VIDEO_CCS_PLL=m

  CONFIG_VIDEO_HI556=m

+ CONFIG_VIDEO_IMX208=m

  CONFIG_VIDEO_IMX214=m

  CONFIG_VIDEO_IMX219=m

  CONFIG_VIDEO_IMX258=m
@@ -6223,7 +6245,6 @@ 

  #

  # DVB-T (terrestrial) frontends

  #

- CONFIG_DVB_SP8870=m

  CONFIG_DVB_SP887X=m

  CONFIG_DVB_CX22700=m

  CONFIG_DVB_CX22702=m
@@ -6352,7 +6373,6 @@ 

  CONFIG_DRM_DP_AUX_CHARDEV=y

  # CONFIG_DRM_DEBUG_SELFTEST is not set

  CONFIG_DRM_KMS_HELPER=m

- CONFIG_DRM_KMS_FB_HELPER=y

  CONFIG_DRM_FBDEV_EMULATION=y

  CONFIG_DRM_FBDEV_OVERALLOC=100

  CONFIG_DRM_LOAD_EDID_FIRMWARE=y
@@ -6510,10 +6530,12 @@ 

  # CONFIG_DRM_CDNS_DSI is not set

  # CONFIG_DRM_CHIPONE_ICN6211 is not set

  # CONFIG_DRM_CHRONTEL_CH7033 is not set

+ # CONFIG_DRM_CROS_EC_ANX7688 is not set

  # CONFIG_DRM_DISPLAY_CONNECTOR is not set

  # CONFIG_DRM_LONTIUM_LT8912B is not set

  # CONFIG_DRM_LONTIUM_LT9611 is not set

  # CONFIG_DRM_LONTIUM_LT9611UXC is not set

+ # CONFIG_DRM_ITE_IT66121 is not set

  # CONFIG_DRM_LVDS_CODEC is not set

  # CONFIG_DRM_MEGACHIPS_STDPXXXX_GE_B850V3_FW is not set

  # CONFIG_DRM_NWL_MIPI_DSI is not set
@@ -6531,6 +6553,7 @@ 

  # CONFIG_DRM_TOSHIBA_TC358768 is not set

  # CONFIG_DRM_TOSHIBA_TC358775 is not set

  # CONFIG_DRM_TI_TFP410 is not set

+ # CONFIG_DRM_TI_SN65DSI83 is not set

  # CONFIG_DRM_TI_SN65DSI86 is not set

  # CONFIG_DRM_TI_TPD12S015 is not set

  # CONFIG_DRM_ANALOGIX_ANX6345 is not set
@@ -6546,6 +6569,7 @@ 

  # CONFIG_DRM_ARCPGU is not set

  CONFIG_DRM_CIRRUS_QEMU=m

  CONFIG_DRM_GM12U320=m

+ CONFIG_DRM_SIMPLEDRM=m

  CONFIG_TINYDRM_HX8357D=m

  CONFIG_TINYDRM_ILI9225=m

  CONFIG_TINYDRM_ILI9341=m
@@ -6556,6 +6580,7 @@ 

  CONFIG_TINYDRM_ST7735R=m

  CONFIG_DRM_VBOXVIDEO=m

  CONFIG_DRM_GUD=m

+ CONFIG_DRM_HYPERV=m

  # CONFIG_DRM_LEGACY is not set

  CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y

  
@@ -6629,7 +6654,7 @@ 

  # CONFIG_FB_VIRTUAL is not set

  # CONFIG_FB_METRONOME is not set

  # CONFIG_FB_MB862XX is not set

- CONFIG_FB_HYPERV=m

+ # CONFIG_FB_HYPERV is not set

  CONFIG_FB_SIMPLE=y

  # CONFIG_FB_SSD1307 is not set

  # CONFIG_FB_SM712 is not set
@@ -6660,6 +6685,7 @@ 

  CONFIG_BACKLIGHT_MAX8925=m

  CONFIG_BACKLIGHT_APPLE=m

  CONFIG_BACKLIGHT_QCOM_WLED=m

+ CONFIG_BACKLIGHT_RT4831=m

  CONFIG_BACKLIGHT_SAHARA=m

  CONFIG_BACKLIGHT_WM831X=m

  CONFIG_BACKLIGHT_ADP5520=m
@@ -6918,7 +6944,7 @@ 

  CONFIG_SND_INTEL_NHLT=y

  CONFIG_SND_INTEL_DSP_CONFIG=m

  CONFIG_SND_INTEL_SOUNDWIRE_ACPI=m

- CONFIG_SND_INTEL_BYT_PREFER_SOF=y

+ # CONFIG_SND_INTEL_BYT_PREFER_SOF is not set

  CONFIG_SND_SPI=y

  CONFIG_SND_USB=y

  CONFIG_SND_USB_AUDIO=m
@@ -7054,6 +7080,7 @@ 

  CONFIG_SND_SOC_INTEL_GLK_RT5682_MAX98357A_MACH=m

  CONFIG_SND_SOC_INTEL_SKL_HDA_DSP_GENERIC_MACH=m

  CONFIG_SND_SOC_INTEL_SOF_RT5682_MACH=m

+ CONFIG_SND_SOC_INTEL_SOF_CS42L42_MACH=m

  CONFIG_SND_SOC_INTEL_SOF_PCM512x_MACH=m

  CONFIG_SND_SOC_INTEL_CML_LP_DA7219_MAX98357A_MACH=m

  CONFIG_SND_SOC_INTEL_SOF_CML_RT1011_RT5682_MACH=m
@@ -7256,6 +7283,7 @@ 

  CONFIG_SND_SOC_SIMPLE_MUX=m

  CONFIG_SND_SOC_SPDIF=m

  # CONFIG_SND_SOC_SSM2305 is not set

+ CONFIG_SND_SOC_SSM2518=m

  CONFIG_SND_SOC_SSM2602=m

  CONFIG_SND_SOC_SSM2602_SPI=m

  CONFIG_SND_SOC_SSM2602_I2C=m
@@ -7273,6 +7301,7 @@ 

  CONFIG_SND_SOC_TAS6424=m

  CONFIG_SND_SOC_TDA7419=m

  CONFIG_SND_SOC_TFA9879=m

+ CONFIG_SND_SOC_TFA989X=m

  CONFIG_SND_SOC_TLV320AIC23=m

  CONFIG_SND_SOC_TLV320AIC23_I2C=m

  CONFIG_SND_SOC_TLV320AIC23_SPI=m
@@ -7289,7 +7318,10 @@ 

  # CONFIG_SND_SOC_TSCS454 is not set

  CONFIG_SND_SOC_UDA1334=m

  CONFIG_SND_SOC_WCD9335=m

+ CONFIG_SND_SOC_WCD_MBHC=m

  CONFIG_SND_SOC_WCD934X=m

+ CONFIG_SND_SOC_WCD938X=m

+ CONFIG_SND_SOC_WCD938X_SDW=m

  CONFIG_SND_SOC_WM5102=m

  CONFIG_SND_SOC_WM8510=m

  CONFIG_SND_SOC_WM8523=m
@@ -7317,7 +7349,6 @@ 

  CONFIG_SND_SOC_WM8985=m

  CONFIG_SND_SOC_WSA881X=m

  # CONFIG_SND_SOC_ZL38060 is not set

- CONFIG_SND_SOC_ZX_AUD96P22=m

  CONFIG_SND_SOC_MAX9759=m

  # CONFIG_SND_SOC_MT6351 is not set

  CONFIG_SND_SOC_MT6358=m
@@ -8022,7 +8053,7 @@ 

  CONFIG_LEDS_REGULATOR=m

  CONFIG_LEDS_BD2802=m

  CONFIG_LEDS_INTEL_SS4200=m

- # CONFIG_LEDS_LT3593 is not set

+ CONFIG_LEDS_LT3593=m

  CONFIG_LEDS_ADP5520=m

  CONFIG_LEDS_MC13783=m

  CONFIG_LEDS_TCA6507=m
@@ -8119,7 +8150,7 @@ 

  CONFIG_INFINIBAND_MTHCA=m

  CONFIG_INFINIBAND_MTHCA_DEBUG=y

  CONFIG_INFINIBAND_CXGB4=m

- CONFIG_INFINIBAND_I40IW=m

+ CONFIG_INFINIBAND_IRDMA=m

  CONFIG_MLX4_INFINIBAND=m

  CONFIG_MLX5_INFINIBAND=m

  CONFIG_INFINIBAND_OCRDMA=m
@@ -8226,7 +8257,6 @@ 

  CONFIG_RTC_DRV_RV3028=m

  CONFIG_RTC_DRV_RV3032=m

  CONFIG_RTC_DRV_RV8803=m

- CONFIG_RTC_DRV_S5M=m

  CONFIG_RTC_DRV_SD3078=m

  

  #
@@ -8396,7 +8426,6 @@ 

  CONFIG_VFIO_PCI_INTX=y

  CONFIG_VFIO_PCI_IGD=y

  CONFIG_VFIO_MDEV=m

- CONFIG_VFIO_MDEV_DEVICE=m

  CONFIG_IRQ_BYPASS_MANAGER=m

  CONFIG_VIRT_DRIVERS=y

  CONFIG_VBOXGUEST=m
@@ -8523,6 +8552,11 @@ 

  # CONFIG_INTEL_ATOMISP is not set

  # CONFIG_VIDEO_ZORAN is not set

  CONFIG_VIDEO_IPU3_IMGU=m

+ CONFIG_DVB_AV7110_IR=y

+ CONFIG_DVB_AV7110=m

+ CONFIG_DVB_AV7110_OSD=y

+ CONFIG_DVB_BUDGET_PATCH=m

+ CONFIG_DVB_SP8870=m

  

  #

  # Android
@@ -8537,6 +8571,7 @@ 

  CONFIG_FWTTY_MAX_CARD_PORTS=32

  CONFIG_GS_FPGABOOT=m

  CONFIG_UNISYSSPAR=y

+ # CONFIG_COMMON_CLK_XLNX_CLKWZRD is not set

  # CONFIG_FB_TFT is not set

  CONFIG_MOST_COMPONENTS=m

  CONFIG_MOST_NET=m
@@ -8548,11 +8583,6 @@ 

  # CONFIG_XIL_AXIS_FIFO is not set

  CONFIG_FIELDBUS_DEV=m

  # CONFIG_HMS_ANYBUSS_BUS is not set

- CONFIG_KPC2000=y

- CONFIG_KPC2000_CORE=m

- CONFIG_KPC2000_SPI=m

- CONFIG_KPC2000_I2C=m

- CONFIG_KPC2000_DMA=m

  CONFIG_QLGE=m

  CONFIG_WFX=m

  CONFIG_X86_PLATFORM_DEVICES=y
@@ -8588,6 +8618,7 @@ 

  CONFIG_DELL_SMBIOS_SMM=y

  CONFIG_DELL_SMO8800=m

  CONFIG_DELL_WMI=m

+ CONFIG_DELL_WMI_PRIVACY=y

  CONFIG_DELL_WMI_AIO=m

  CONFIG_DELL_WMI_DESCRIPTOR=m

  CONFIG_DELL_WMI_LED=m
@@ -8597,7 +8628,7 @@ 

  CONFIG_FUJITSU_TABLET=m

  CONFIG_GPD_POCKET_FAN=m

  CONFIG_HP_ACCEL=m

- CONFIG_HP_WIRELESS=m

+ CONFIG_WIRELESS_HOTKEY=m

  CONFIG_HP_WMI=m

  CONFIG_TC1100_WMI=m

  CONFIG_IBM_RTL=m
@@ -8610,9 +8641,12 @@ 

  # CONFIG_THINKPAD_ACPI_UNSAFE_LEDS is not set

  CONFIG_THINKPAD_ACPI_VIDEO=y

  CONFIG_THINKPAD_ACPI_HOTKEY_POLL=y

+ CONFIG_THINKPAD_LMI=m

+ CONFIG_X86_PLATFORM_DRIVERS_INTEL=y

+ CONFIG_INTEL_CHT_INT33FE=m

+ CONFIG_INTEL_SKL_INT3472=m

  CONFIG_INTEL_ATOMISP2_LED=m

  CONFIG_INTEL_ATOMISP2_PM=m

- CONFIG_INTEL_CHT_INT33FE=m

  CONFIG_INTEL_HID_EVENT=m

  CONFIG_INTEL_INT0002_VGPIO=m

  CONFIG_INTEL_MENLOW=m
@@ -8640,6 +8674,7 @@ 

  CONFIG_I2C_MULTI_INSTANTIATE=m

  CONFIG_MLX_PLATFORM=m

  CONFIG_TOUCHSCREEN_DMI=y

+ CONFIG_FW_ATTR_CLASS=m

  CONFIG_INTEL_IPS=m

  CONFIG_INTEL_RST=m

  CONFIG_INTEL_SMARTCONNECT=m
@@ -8696,10 +8731,18 @@ 

  CONFIG_SURFACE_AGGREGATOR_BUS=y

  # CONFIG_SURFACE_AGGREGATOR_ERROR_INJECTION is not set

  CONFIG_HAVE_CLK=y

- CONFIG_CLKDEV_LOOKUP=y

  CONFIG_HAVE_CLK_PREPARE=y

  CONFIG_COMMON_CLK=y

  CONFIG_COMMON_CLK_WM831X=m

+ 

+ #

+ # Clock driver for ARM Reference designs

+ #

+ # CONFIG_ICST is not set

+ # CONFIG_CLK_SP810 is not set

+ # end of Clock driver for ARM Reference designs

+ 

+ CONFIG_LMK04832=m

  CONFIG_COMMON_CLK_MAX9485=m

  CONFIG_COMMON_CLK_SI5341=m

  CONFIG_COMMON_CLK_SI5351=m
@@ -8709,7 +8752,6 @@ 

  CONFIG_COMMON_CLK_CDCE706=m

  # CONFIG_COMMON_CLK_CDCE925 is not set

  CONFIG_COMMON_CLK_CS2000_CP=m

- CONFIG_COMMON_CLK_S2MPS11=m

  CONFIG_CLK_TWL6040=m

  # CONFIG_COMMON_CLK_AXI_CLKGEN is not set

  CONFIG_COMMON_CLK_PALMAS=m
@@ -8755,6 +8797,7 @@ 

  CONFIG_INTEL_IOMMU_FLOPPY_WA=y

  CONFIG_INTEL_IOMMU_SCALABLE_MODE_DEFAULT_ON=y

  CONFIG_HYPERV_IOMMU=y

+ CONFIG_VIRTIO_IOMMU=m

  

  #

  # Remoteproc drivers
@@ -8905,6 +8948,9 @@ 

  # CONFIG_DMARD06 is not set

  CONFIG_DMARD09=m

  CONFIG_DMARD10=m

+ CONFIG_FXLS8962AF=m

+ CONFIG_FXLS8962AF_I2C=m

+ CONFIG_FXLS8962AF_SPI=m

  CONFIG_HID_SENSOR_ACCEL_3D=m

  CONFIG_IIO_CROS_EC_ACCEL_LEGACY=m

  CONFIG_IIO_ST_ACCEL_3AXIS=m
@@ -8926,6 +8972,7 @@ 

  CONFIG_MXC4005=m

  CONFIG_MXC6255=m

  CONFIG_SCA3000=m

+ CONFIG_SCA3300=m

  CONFIG_STK8312=m

  CONFIG_STK8BA50=m

  # end of Accelerometers
@@ -8997,6 +9044,7 @@ 

  CONFIG_TI_ADS131E08=m

  CONFIG_TI_AM335X_ADC=m

  CONFIG_TI_TLC4541=m

+ CONFIG_TI_TSC2046=m

  CONFIG_TWL4030_MADC=m

  CONFIG_TWL6030_GPADC=m

  # CONFIG_VF610_ADC is not set
@@ -9039,6 +9087,8 @@ 

  CONFIG_SCD30_SERIAL=m

  CONFIG_SENSIRION_SGP30=m

  CONFIG_SPS30=m

+ CONFIG_SPS30_I2C=m

+ CONFIG_SPS30_SERIAL=m

  CONFIG_VZ89X=m

  # end of Chemical Sensors

  
@@ -9213,6 +9263,9 @@ 

  CONFIG_IIO_ST_LSM6DSX=m

  CONFIG_IIO_ST_LSM6DSX_I2C=m

  CONFIG_IIO_ST_LSM6DSX_SPI=m

+ CONFIG_IIO_ST_LSM9DS0=m

+ CONFIG_IIO_ST_LSM9DS0_I2C=m

+ CONFIG_IIO_ST_LSM9DS0_SPI=m

  # end of Inertial measurement units

  

  CONFIG_IIO_ADIS_LIB=m
@@ -9265,6 +9318,7 @@ 

  CONFIG_TCS3472=m

  CONFIG_SENSORS_TSL2563=m

  CONFIG_TSL2583=m

+ CONFIG_TSL2591=m

  # CONFIG_TSL2772 is not set

  CONFIG_TSL4531=m

  CONFIG_US5182D=m
@@ -9422,6 +9476,7 @@ 

  CONFIG_MLX90632=m

  CONFIG_TMP006=m

  CONFIG_TMP007=m

+ CONFIG_TMP117=m

  CONFIG_TSYS01=m

  CONFIG_TSYS02D=m

  CONFIG_MAX31856=m
@@ -9475,6 +9530,7 @@ 

  #

  CONFIG_GENERIC_PHY=y

  CONFIG_USB_LGM_PHY=m

+ CONFIG_PHY_CAN_TRANSCEIVER=m

  CONFIG_BCM_KONA_USB2_PHY=m

  # CONFIG_PHY_CADENCE_TORRENT is not set

  # CONFIG_PHY_CADENCE_DPHY is not set
@@ -9604,6 +9660,7 @@ 

  CONFIG_INTERRUPT_CNT=m

  # CONFIG_FTM_QUADDEC is not set

  # CONFIG_MICROCHIP_TCB_CAPTURE is not set

+ CONFIG_INTEL_QEP=m

  CONFIG_MOST=m

  CONFIG_MOST_USB_HDM=m

  CONFIG_MOST_CDEV=m
@@ -10471,7 +10528,6 @@ 

  CONFIG_SBITMAP=y

  CONFIG_PARMAN=m

  CONFIG_OBJAGG=m

- # CONFIG_STRING_SELFTEST is not set

  # end of Library routines

  

  CONFIG_PLDMFW=y
@@ -10486,6 +10542,7 @@ 

  #

  CONFIG_PRINTK_TIME=y

  # CONFIG_PRINTK_CALLER is not set

+ CONFIG_STACKTRACE_BUILD_ID=y

  CONFIG_CONSOLE_LOGLEVEL_DEFAULT=4

  CONFIG_CONSOLE_LOGLEVEL_QUIET=1

  CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
@@ -10579,7 +10636,7 @@ 

  CONFIG_HAVE_ARCH_KFENCE=y

  CONFIG_KFENCE=y

  CONFIG_KFENCE_STATIC_KEYS=y

- CONFIG_KFENCE_SAMPLE_INTERVAL=0

+ CONFIG_KFENCE_SAMPLE_INTERVAL=100

  CONFIG_KFENCE_NUM_OBJECTS=255

  CONFIG_KFENCE_STRESS_TEST_FAULTS=0

  # end of Memory Debugging
@@ -10664,7 +10721,6 @@ 

  CONFIG_RCU_CPU_STALL_TIMEOUT=60

  # CONFIG_RCU_TRACE is not set

  # CONFIG_RCU_EQS_DEBUG is not set

- # CONFIG_RCU_STRICT_GRACE_PERIOD is not set

  # end of RCU Debugging

  

  # CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set
@@ -10703,6 +10759,8 @@ 

  # CONFIG_PREEMPT_TRACER is not set

  CONFIG_SCHED_TRACER=y

  CONFIG_HWLAT_TRACER=y

+ CONFIG_OSNOISE_TRACER=y

+ CONFIG_TIMERLAT_TRACER=y

  CONFIG_MMIOTRACE=y

  CONFIG_FTRACE_SYSCALLS=y

  CONFIG_TRACER_SNAPSHOT=y
@@ -10778,7 +10836,6 @@ 

  CONFIG_CC_HAS_SANCOV_TRACE_PC=y

  CONFIG_RUNTIME_TESTING_MENU=y

  # CONFIG_LKDTM is not set

- # CONFIG_TEST_LIST_SORT is not set

  # CONFIG_TEST_MIN_HEAP is not set

  # CONFIG_TEST_SORT is not set

  # CONFIG_TEST_DIV64 is not set
@@ -10791,10 +10848,12 @@ 

  # CONFIG_ATOMIC64_SELFTEST is not set

  CONFIG_ASYNC_RAID6_TEST=m

  # CONFIG_TEST_HEXDUMP is not set

+ # CONFIG_STRING_SELFTEST is not set

  # CONFIG_TEST_STRING_HELPERS is not set

  # CONFIG_TEST_STRSCPY is not set

  # CONFIG_TEST_KSTRTOX is not set

  # CONFIG_TEST_PRINTF is not set

+ # CONFIG_TEST_SCANF is not set

  # CONFIG_TEST_BITMAP is not set

  # CONFIG_TEST_UUID is not set

  # CONFIG_TEST_XARRAY is not set
@@ -10821,6 +10880,7 @@ 

  # CONFIG_TEST_MEMINIT is not set

  # CONFIG_TEST_FREE_PAGES is not set

  # CONFIG_TEST_FPU is not set

+ # CONFIG_TEST_CLOCKSOURCE_WATCHDOG is not set

  CONFIG_ARCH_USE_MEMTEST=y

  # CONFIG_MEMTEST is not set

  # CONFIG_HYPERV_TESTING is not set

@@ -1,6 +1,6 @@ 

  #

  # Automatically generated file; DO NOT EDIT.

- # Linux/x86 5.13.9-gnu-pck1 Kernel Configuration

+ # Linux/x86 5.14.11-gnu-pck1 Kernel Configuration

  #

  CONFIG_CC_VERSION_TEXT="gcc (GCC) 11.1.0"

  CONFIG_CC_IS_GCC=y
@@ -16,6 +16,7 @@ 

  CONFIG_CC_HAS_ASM_GOTO=y

  CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y

  CONFIG_CC_HAS_ASM_INLINE=y

+ CONFIG_CC_HAS_NO_PROFILE_FN_ATTR=y

  CONFIG_IRQ_WORK=y

  CONFIG_BUILDTIME_TABLE_SORT=y

  CONFIG_THREAD_INFO_IN_TASK=y
@@ -23,7 +24,6 @@ 

  #

  # General setup

  #

- # CONFIG_SCHED_MUQSS is not set

  CONFIG_PCK_INTERACTIVE=y

  CONFIG_INIT_ENV_ARG_LIMIT=32

  # CONFIG_COMPILE_TEST is not set
@@ -130,6 +130,7 @@ 

  CONFIG_PREEMPT_COUNT=y

  CONFIG_PREEMPTION=y

  CONFIG_PREEMPT_DYNAMIC=y

+ CONFIG_SCHED_CORE=y

  

  #

  # CPU/Task time and stats accounting
@@ -185,6 +186,7 @@ 

  #

  # Scheduler features

  #

+ # CONFIG_SCHED_ALT is not set

  CONFIG_UCLAMP_TASK=y

  CONFIG_UCLAMP_BUCKETS_COUNT=5

  # end of Scheduler features
@@ -335,7 +337,6 @@ 

  CONFIG_ARCH_HIBERNATION_POSSIBLE=y

  CONFIG_ARCH_SUSPEND_POSSIBLE=y

  CONFIG_ARCH_WANT_GENERAL_HUGETLB=y

- CONFIG_ZONE_DMA32=y

  CONFIG_AUDIT_ARCH=y

  CONFIG_HAVE_INTEL_TXT=y

  CONFIG_X86_64_SMP=y
@@ -348,7 +349,6 @@ 

  #

  # Processor type and features

  #

- CONFIG_ZONE_DMA=y

  CONFIG_SMP=y

  CONFIG_X86_FEATURE_NAMES=y

  CONFIG_X86_X2APIC=y
@@ -454,8 +454,6 @@ 

  CONFIG_SCHED_SMT=y

  CONFIG_SCHED_MC=y

  CONFIG_SCHED_MC_PRIO=y

- CONFIG_RQ_NONE=y

- CONFIG_SHARERQ=0

  CONFIG_X86_LOCAL_APIC=y

  CONFIG_X86_IO_APIC=y

  CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y
@@ -506,7 +504,6 @@ 

  CONFIG_X86_PMEM_LEGACY=m

  CONFIG_X86_CHECK_BIOS_CORRUPTION=y

  CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y

- CONFIG_X86_RESERVE_LOW=64

  CONFIG_MTRR=y

  CONFIG_MTRR_SANITIZER=y

  CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=1
@@ -654,7 +651,9 @@ 

  CONFIG_CHT_WC_PMIC_OPREGION=y

  CONFIG_CHT_DC_TI_PMIC_OPREGION=y

  CONFIG_TPS68470_PMIC_OPREGION=y

+ CONFIG_ACPI_VIOT=y

  CONFIG_X86_PM_TIMER=y

+ CONFIG_ACPI_PRMT=y

  

  #

  # CPU Frequency scaling
@@ -800,6 +799,7 @@ 

  CONFIG_HAVE_KVM_IRQ_BYPASS=y

  CONFIG_HAVE_KVM_NO_POLL=y

  CONFIG_KVM_XFER_TO_GUEST_WORK=y

+ CONFIG_HAVE_KVM_PM_NOTIFIER=y

  CONFIG_VIRTUALIZATION=y

  CONFIG_KVM=m

  CONFIG_KVM_INTEL=m
@@ -846,6 +846,7 @@ 

  CONFIG_ARCH_HAS_SET_DIRECT_MAP=y

  CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y

  CONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT=y

+ CONFIG_ARCH_WANTS_NO_INSTR=y

  CONFIG_HAVE_ASM_MODVERSIONS=y

  CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y

  CONFIG_HAVE_RSEQ=y
@@ -888,7 +889,6 @@ 

  CONFIG_HAVE_MOVE_PMD=y

  CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y

  CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD=y

- CONFIG_HAVE_ARCH_PARENT_PMD_YOUNG=y

  CONFIG_HAVE_ARCH_HUGE_VMAP=y

  CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y

  CONFIG_HAVE_ARCH_SOFT_DIRTY=y
@@ -912,7 +912,7 @@ 

  CONFIG_HAVE_ARCH_VMAP_STACK=y

  CONFIG_VMAP_STACK=y

  CONFIG_HAVE_ARCH_RANDOMIZE_KSTACK_OFFSET=y

- # CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT is not set

+ CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT=y

  CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y

  CONFIG_STRICT_KERNEL_RWX=y

  CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
@@ -927,6 +927,7 @@ 

  CONFIG_ARCH_WANT_LD_ORPHAN_WARN=y

  CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y

  CONFIG_ARCH_HAS_ELFCORE_COMPAT=y

+ CONFIG_ARCH_HAS_NONLEAF_PMD_YOUNG=y

  

  #

  # GCOV-based kernel profiling
@@ -979,9 +980,11 @@ 

  CONFIG_BLK_DEV_THROTTLING_LOW=y

  # CONFIG_BLK_CMDLINE_PARSER is not set

  CONFIG_BLK_WBT=y

+ CONFIG_BLK_WBT_MQ=y

  CONFIG_BLK_CGROUP_IOLATENCY=y

+ CONFIG_BLK_CGROUP_FC_APPID=y

  CONFIG_BLK_CGROUP_IOCOST=y

- CONFIG_BLK_WBT_MQ=y

+ CONFIG_BLK_CGROUP_IOPRIO=y

  CONFIG_BLK_DEBUG_FS=y

  CONFIG_BLK_DEBUG_FS_ZONED=y

  CONFIG_BLK_SED_OPAL=y
@@ -1066,10 +1069,10 @@ 

  CONFIG_SELECT_MEMORY_MODEL=y

  CONFIG_SPARSEMEM_MANUAL=y

  CONFIG_SPARSEMEM=y

- CONFIG_NEED_MULTIPLE_NODES=y

  CONFIG_SPARSEMEM_EXTREME=y

  CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y

  CONFIG_SPARSEMEM_VMEMMAP=y

+ CONFIG_ANON_MIN_KBYTES=0

  CONFIG_CLEAN_LOW_KBYTES=262144

  CONFIG_CLEAN_MIN_KBYTES=0

  CONFIG_HAVE_FAST_GUP=y
@@ -1139,6 +1142,8 @@ 

  CONFIG_IDLE_PAGE_TRACKING=y

  CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y

  CONFIG_ARCH_HAS_PTE_DEVMAP=y

+ CONFIG_ZONE_DMA=y

+ CONFIG_ZONE_DMA32=y

  CONFIG_ZONE_DEVICE=y

  CONFIG_DEV_PAGEMAP_OPS=y

  CONFIG_HMM_MIRROR=y
@@ -1151,6 +1156,7 @@ 

  CONFIG_READ_ONLY_THP_FOR_FS=y

  CONFIG_ARCH_HAS_PTE_SPECIAL=y

  CONFIG_MAPPING_DIRTY_HELPERS=y

+ CONFIG_SECRETMEM=y

  CONFIG_LRU_GEN=y

  CONFIG_LRU_GEN_ENABLED=y

  # CONFIG_LRU_GEN_STATS is not set
@@ -1301,6 +1307,7 @@ 

  CONFIG_NETFILTER_NETLINK=m

  CONFIG_NETFILTER_FAMILY_BRIDGE=y

  CONFIG_NETFILTER_FAMILY_ARP=y

+ CONFIG_NETFILTER_NETLINK_HOOK=m

  CONFIG_NETFILTER_NETLINK_ACCT=m

  CONFIG_NETFILTER_NETLINK_QUEUE=m

  CONFIG_NETFILTER_NETLINK_LOG=m
@@ -1683,7 +1690,6 @@ 

  CONFIG_BRIDGE_MRP=y

  CONFIG_BRIDGE_CFM=y

  CONFIG_NET_DSA=m

- CONFIG_NET_DSA_TAG_8021Q=m

  CONFIG_NET_DSA_TAG_AR9331=m

  CONFIG_NET_DSA_TAG_BRCM_COMMON=m

  CONFIG_NET_DSA_TAG_BRCM=m
@@ -1875,6 +1881,7 @@ 

  CONFIG_QRTR_MHI=m

  CONFIG_NET_NCSI=y

  CONFIG_NCSI_OEM_CMD_GET_MAC=y

+ CONFIG_NCSI_OEM_CMD_KEEP_PHY=y

  CONFIG_PCPU_DEV_REFCNT=y

  CONFIG_RPS=y

  CONFIG_RFS_ACCEL=y
@@ -2248,6 +2255,8 @@ 

  CONFIG_CXL_BUS=m

  CONFIG_CXL_MEM=m

  # CONFIG_CXL_MEM_RAW_COMMANDS is not set

+ CONFIG_CXL_ACPI=m

+ CONFIG_CXL_PMEM=m

  CONFIG_PCCARD=m

  CONFIG_PCMCIA=m

  CONFIG_PCMCIA_LOAD_CIS=y
@@ -2386,6 +2395,7 @@ 

  # CONFIG_MTD_PMC551 is not set

  # CONFIG_MTD_DATAFLASH is not set

  # CONFIG_MTD_MCHP23K256 is not set

+ # CONFIG_MTD_MCHP48L640 is not set

  # CONFIG_MTD_SST25L is not set

  # CONFIG_MTD_SLRAM is not set

  CONFIG_MTD_PHRAM=m
@@ -2609,9 +2619,6 @@ 

  CONFIG_PVPANIC_PCI=m

  # end of Misc devices

  

- CONFIG_HAVE_IDE=y

- # CONFIG_IDE is not set

- 

  #

  # SCSI device support

  #
@@ -2693,6 +2700,7 @@ 

  CONFIG_SCSI_MPT2SAS_MAX_SGE=128

  CONFIG_SCSI_MPT3SAS_MAX_SGE=128

  CONFIG_SCSI_MPT2SAS=m

+ CONFIG_SCSI_MPI3MR=m

  CONFIG_SCSI_SMARTPQI=m

  CONFIG_SCSI_UFSHCD=m

  CONFIG_SCSI_UFSHCD_PCI=m
@@ -2745,6 +2753,7 @@ 

  CONFIG_QEDF=m

  CONFIG_SCSI_LPFC=m

  # CONFIG_SCSI_LPFC_DEBUG_FS is not set

+ CONFIG_SCSI_EFCT=m

  CONFIG_SCSI_DC395x=m

  CONFIG_SCSI_AM53C974=m

  CONFIG_SCSI_WD719X=m
@@ -3233,6 +3242,7 @@ 

  CONFIG_MLX5_EN_RXNFC=y

  CONFIG_MLX5_MPFS=y

  CONFIG_MLX5_ESWITCH=y

+ CONFIG_MLX5_BRIDGE=y

  CONFIG_MLX5_CLS_ACT=y

  CONFIG_MLX5_TC_CT=y

  CONFIG_MLX5_TC_SAMPLE=y
@@ -3252,8 +3262,6 @@ 

  CONFIG_MLXSW_CORE_THERMAL=y

  CONFIG_MLXSW_PCI=m

  CONFIG_MLXSW_I2C=m

- CONFIG_MLXSW_SWITCHIB=m

- CONFIG_MLXSW_SWITCHX2=m

  CONFIG_MLXSW_SPECTRUM=m

  CONFIG_MLXSW_SPECTRUM_DCB=y

  CONFIG_MLXSW_MINIMAL=m
@@ -3361,6 +3369,7 @@ 

  CONFIG_STMMAC_PLATFORM=m

  CONFIG_DWMAC_GENERIC=m

  CONFIG_DWMAC_INTEL=m

+ CONFIG_DWMAC_LOONGSON=m

  CONFIG_STMMAC_PCI=m

  CONFIG_NET_VENDOR_SUN=y

  CONFIG_HAPPYMEAL=m
@@ -3427,10 +3436,12 @@ 

  CONFIG_MARVELL_PHY=m

  CONFIG_MARVELL_10G_PHY=m

  CONFIG_MARVELL_88X2222_PHY=m

+ CONFIG_MEDIATEK_GE_PHY=m

  CONFIG_MICREL_PHY=m

  CONFIG_MICROCHIP_PHY=m

  CONFIG_MICROCHIP_T1_PHY=m

  CONFIG_MICROSEMI_PHY=m

+ CONFIG_MOTORCOMM_PHY=m

  CONFIG_NATIONAL_PHY=m

  CONFIG_NXP_C45_TJA11XX_PHY=m

  CONFIG_NXP_TJA11XX_PHY=m
@@ -3452,6 +3463,8 @@ 

  CONFIG_MICREL_KS8995MA=m

  CONFIG_MDIO_DEVICE=m

  CONFIG_MDIO_BUS=m

+ CONFIG_FWNODE_MDIO=m

+ CONFIG_ACPI_MDIO=m

  CONFIG_MDIO_DEVRES=m

  CONFIG_MDIO_BITBANG=m

  CONFIG_MDIO_BCM_UNIMAC=m
@@ -3854,7 +3867,10 @@ 

  # Wireless WAN

  #

  CONFIG_WWAN=y

+ CONFIG_WWAN_HWSIM=m

  CONFIG_MHI_WWAN_CTRL=m

+ CONFIG_RPMSG_WWAN_CTRL=m

+ CONFIG_IOSM=m

  # end of Wireless WAN

  

  CONFIG_XEN_NETDEV_FRONTEND=m
@@ -4010,6 +4026,7 @@ 

  CONFIG_JOYSTICK_PSXPAD_SPI=m

  CONFIG_JOYSTICK_PSXPAD_SPI_FF=y

  CONFIG_JOYSTICK_PXRC=m

+ CONFIG_JOYSTICK_QWIIC=m

  CONFIG_JOYSTICK_FSIA6B=m

  CONFIG_INPUT_TABLET=y

  CONFIG_TABLET_USB_ACECAD=m
@@ -4350,8 +4367,6 @@ 

  CONFIG_MWAVE=m

  CONFIG_DEVMEM=y

  CONFIG_NVRAM=y

- CONFIG_RAW_DRIVER=m

- CONFIG_MAX_RAW_DEVS=8192

  CONFIG_DEVPORT=y

  CONFIG_HPET=y

  # CONFIG_HPET_MMAP is not set
@@ -4376,8 +4391,10 @@ 

  CONFIG_TCG_TIS_ST33ZP24_I2C=m

  CONFIG_TCG_TIS_ST33ZP24_SPI=m

  CONFIG_TELCLOCK=m

+ CONFIG_XILLYBUS_CLASS=m

  CONFIG_XILLYBUS=m

  CONFIG_XILLYBUS_PCIE=m

+ CONFIG_XILLYUSB=m

  # end of Character devices

  

  # CONFIG_RANDOM_TRUST_CPU is not set
@@ -4974,6 +4991,7 @@ 

  CONFIG_SENSORS_BPA_RS600=m

  CONFIG_SENSORS_FSP_3Y=m

  CONFIG_SENSORS_IBM_CFFPS=m

+ CONFIG_SENSORS_DPS920AB=m

  CONFIG_SENSORS_INSPUR_IPSPS=m

  CONFIG_SENSORS_IR35221=m

  CONFIG_SENSORS_IR36021=m
@@ -4992,7 +5010,9 @@ 

  CONFIG_SENSORS_MAX31785=m

  CONFIG_SENSORS_MAX34440=m

  CONFIG_SENSORS_MAX8688=m

+ CONFIG_SENSORS_MP2888=m

  CONFIG_SENSORS_MP2975=m

+ CONFIG_SENSORS_PIM4328=m

  CONFIG_SENSORS_PM6764TR=m

  CONFIG_SENSORS_PXE1610=m

  CONFIG_SENSORS_Q54SJ108A2=m
@@ -5007,6 +5027,7 @@ 

  CONFIG_SENSORS_SHT15=m

  CONFIG_SENSORS_SHT21=m

  CONFIG_SENSORS_SHT3x=m

+ CONFIG_SENSORS_SHT4x=m

  CONFIG_SENSORS_SHTC1=m

  CONFIG_SENSORS_SIS5595=m

  CONFIG_SENSORS_DME1737=m
@@ -5109,6 +5130,7 @@ 

  CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y

  CONFIG_WATCHDOG_OPEN_TIMEOUT=0

  CONFIG_WATCHDOG_SYSFS=y

+ # CONFIG_WATCHDOG_HRTIMER_PRETIMEOUT is not set

  

  #

  # Watchdog Pretimeout Governors
@@ -5291,9 +5313,9 @@ 

  CONFIG_PCF50633_GPIO=m

  CONFIG_UCB1400_CORE=m

  CONFIG_MFD_RDC321X=m

+ CONFIG_MFD_RT4831=m

  CONFIG_MFD_RT5033=m

  CONFIG_MFD_RC5T583=y

- CONFIG_MFD_SEC_CORE=y

  CONFIG_MFD_SI476X_CORE=m

  CONFIG_MFD_SM501=m

  CONFIG_MFD_SM501_GPIO=y
@@ -5309,7 +5331,6 @@ 

  CONFIG_TPS6507X=m

  CONFIG_MFD_TPS65086=m

  CONFIG_MFD_TPS65090=y

- CONFIG_MFD_TPS68470=y

  CONFIG_MFD_TI_LP873X=m

  CONFIG_MFD_TPS6586X=y

  CONFIG_MFD_TPS65910=y
@@ -5324,7 +5345,7 @@ 

  CONFIG_MFD_LM3533=m

  CONFIG_MFD_TQMX86=m

  CONFIG_MFD_VX855=m

- CONFIG_MFD_ARIZONA=y

+ CONFIG_MFD_ARIZONA=m

  CONFIG_MFD_ARIZONA_I2C=m

  CONFIG_MFD_ARIZONA_SPI=m

  CONFIG_MFD_CS47L24=y
@@ -5386,6 +5407,7 @@ 

  CONFIG_REGULATOR_MAX1586=m

  CONFIG_REGULATOR_MAX8649=m

  CONFIG_REGULATOR_MAX8660=m

+ CONFIG_REGULATOR_MAX8893=m

  CONFIG_REGULATOR_MAX8907=m

  CONFIG_REGULATOR_MAX8925=m

  CONFIG_REGULATOR_MAX8952=m
@@ -5400,6 +5422,7 @@ 

  CONFIG_REGULATOR_MT6311=m

  CONFIG_REGULATOR_MT6323=m

  CONFIG_REGULATOR_MT6358=m

+ CONFIG_REGULATOR_MT6359=m

  CONFIG_REGULATOR_MT6360=m

  CONFIG_REGULATOR_MT6397=m

  CONFIG_REGULATOR_PALMAS=m
@@ -5413,11 +5436,11 @@ 

  CONFIG_REGULATOR_RASPBERRYPI_TOUCHSCREEN_ATTINY=m

  CONFIG_REGULATOR_RC5T583=m

  CONFIG_REGULATOR_RT4801=m

+ CONFIG_REGULATOR_RT4831=m

  CONFIG_REGULATOR_RT5033=m

+ CONFIG_REGULATOR_RT6160=m

+ CONFIG_REGULATOR_RT6245=m

  CONFIG_REGULATOR_RTMV20=m

- CONFIG_REGULATOR_S2MPA01=m

- CONFIG_REGULATOR_S2MPS11=m

- CONFIG_REGULATOR_S5M8767=m

  CONFIG_REGULATOR_SKY81452=m

  CONFIG_REGULATOR_SLG51000=m

  CONFIG_REGULATOR_TPS51632=m
@@ -5520,6 +5543,7 @@ 

  CONFIG_V4L2_MEM2MEM_DEV=m

  CONFIG_V4L2_FLASH_LED_CLASS=m

  CONFIG_V4L2_FWNODE=m

+ CONFIG_V4L2_ASYNC=m

  CONFIG_VIDEOBUF_GEN=m

  CONFIG_VIDEOBUF_DMA_SG=m

  CONFIG_VIDEOBUF_VMALLOC=m
@@ -5554,7 +5578,6 @@ 

  #

  # Drivers filtered as selected at 'Filter media drivers'

  #

- CONFIG_TTPCI_EEPROM=m

  CONFIG_MEDIA_USB_SUPPORT=y

  

  #
@@ -5725,7 +5748,6 @@ 

  # Media capture/analog TV support

  #

  CONFIG_VIDEO_IVTV=m

- # CONFIG_VIDEO_IVTV_DEPRECATED_IOCTLS is not set

  CONFIG_VIDEO_IVTV_ALSA=m

  CONFIG_VIDEO_FB_IVTV=m

  # CONFIG_VIDEO_FB_IVTV_FORCE_PAT is not set
@@ -5762,14 +5784,10 @@ 

  #

  # Media digital TV PCI Adapters

  #

- CONFIG_DVB_AV7110_IR=y

- CONFIG_DVB_AV7110=m

- CONFIG_DVB_AV7110_OSD=y

  CONFIG_DVB_BUDGET_CORE=m

  CONFIG_DVB_BUDGET=m

  CONFIG_DVB_BUDGET_CI=m

  CONFIG_DVB_BUDGET_AV=m

- CONFIG_DVB_BUDGET_PATCH=m

  CONFIG_DVB_B2C2_FLEXCOP_PCI=m

  # CONFIG_DVB_B2C2_FLEXCOP_PCI_DEBUG is not set

  CONFIG_DVB_PLUTO2=m
@@ -5816,6 +5834,7 @@ 

  #

  CONFIG_VIDEO_CX2341X=m

  CONFIG_VIDEO_TVEEPROM=m

+ CONFIG_TTPCI_EEPROM=m

  CONFIG_CYPRESS_FIRMWARE=m

  CONFIG_VIDEOBUF2_CORE=m

  CONFIG_VIDEOBUF2_V4L2=m
@@ -5915,6 +5934,7 @@ 

  CONFIG_VIDEO_APTINA_PLL=m

  CONFIG_VIDEO_CCS_PLL=m

  CONFIG_VIDEO_HI556=m

+ CONFIG_VIDEO_IMX208=m

  CONFIG_VIDEO_IMX214=m

  CONFIG_VIDEO_IMX219=m

  CONFIG_VIDEO_IMX258=m
@@ -6100,7 +6120,6 @@ 

  #

  # DVB-T (terrestrial) frontends

  #

- CONFIG_DVB_SP8870=m

  CONFIG_DVB_SP887X=m

  CONFIG_DVB_CX22700=m

  CONFIG_DVB_CX22702=m
@@ -6223,7 +6242,6 @@ 

  CONFIG_DRM_DP_AUX_CHARDEV=y

  # CONFIG_DRM_DEBUG_SELFTEST is not set

  CONFIG_DRM_KMS_HELPER=m

- CONFIG_DRM_KMS_FB_HELPER=y

  CONFIG_DRM_FBDEV_EMULATION=y

  CONFIG_DRM_FBDEV_OVERALLOC=100

  CONFIG_DRM_LOAD_EDID_FIRMWARE=y
@@ -6274,6 +6292,7 @@ 

  # end of Display Engine Configuration

  

  CONFIG_HSA_AMD=y

+ CONFIG_HSA_AMD_SVM=y

  CONFIG_DRM_NOUVEAU=m

  # CONFIG_NOUVEAU_LEGACY_CTX_SUPPORT is not set

  CONFIG_NOUVEAU_DEBUG=5
@@ -6329,6 +6348,7 @@ 

  # CONFIG_DRM_ETNAVIV is not set

  CONFIG_DRM_CIRRUS_QEMU=m

  CONFIG_DRM_GM12U320=m

+ CONFIG_DRM_SIMPLEDRM=m

  CONFIG_TINYDRM_HX8357D=m

  CONFIG_TINYDRM_ILI9225=m

  CONFIG_TINYDRM_ILI9341=m
@@ -6341,6 +6361,7 @@ 

  CONFIG_DRM_XEN_FRONTEND=m

  CONFIG_DRM_VBOXVIDEO=m

  CONFIG_DRM_GUD=m

+ CONFIG_DRM_HYPERV=m

  # CONFIG_DRM_LEGACY is not set

  CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y

  
@@ -6410,8 +6431,9 @@ 

  CONFIG_XEN_FBDEV_FRONTEND=m

  # CONFIG_FB_METRONOME is not set

  # CONFIG_FB_MB862XX is not set

- CONFIG_FB_HYPERV=m

+ # CONFIG_FB_HYPERV is not set

  CONFIG_FB_SIMPLE=y

+ # CONFIG_FB_SSD1307 is not set

  # CONFIG_FB_SM712 is not set

  # end of Frame buffer Devices

  
@@ -6440,6 +6462,7 @@ 

  CONFIG_BACKLIGHT_MAX8925=m

  CONFIG_BACKLIGHT_APPLE=m

  CONFIG_BACKLIGHT_QCOM_WLED=m

+ CONFIG_BACKLIGHT_RT4831=m

  CONFIG_BACKLIGHT_SAHARA=m

  CONFIG_BACKLIGHT_WM831X=m

  CONFIG_BACKLIGHT_ADP5520=m
@@ -6653,7 +6676,7 @@ 

  CONFIG_SND_INTEL_NHLT=y

  CONFIG_SND_INTEL_DSP_CONFIG=m

  CONFIG_SND_INTEL_SOUNDWIRE_ACPI=m

- CONFIG_SND_INTEL_BYT_PREFER_SOF=y

+ # CONFIG_SND_INTEL_BYT_PREFER_SOF is not set

  CONFIG_SND_SPI=y

  CONFIG_SND_USB=y

  CONFIG_SND_USB_AUDIO=m
@@ -6789,6 +6812,7 @@ 

  CONFIG_SND_SOC_INTEL_GLK_RT5682_MAX98357A_MACH=m

  CONFIG_SND_SOC_INTEL_SKL_HDA_DSP_GENERIC_MACH=m

  CONFIG_SND_SOC_INTEL_SOF_RT5682_MACH=m

+ CONFIG_SND_SOC_INTEL_SOF_CS42L42_MACH=m

  CONFIG_SND_SOC_INTEL_SOF_PCM512x_MACH=m

  CONFIG_SND_SOC_INTEL_CML_LP_DA7219_MAX98357A_MACH=m

  CONFIG_SND_SOC_INTEL_SOF_CML_RT1011_RT5682_MACH=m
@@ -6990,6 +7014,7 @@ 

  CONFIG_SND_SOC_SIMPLE_MUX=m

  CONFIG_SND_SOC_SPDIF=m

  CONFIG_SND_SOC_SSM2305=m

+ CONFIG_SND_SOC_SSM2518=m

  CONFIG_SND_SOC_SSM2602=m

  CONFIG_SND_SOC_SSM2602_SPI=m

  CONFIG_SND_SOC_SSM2602_I2C=m
@@ -7007,6 +7032,7 @@ 

  CONFIG_SND_SOC_TAS6424=m

  CONFIG_SND_SOC_TDA7419=m

  CONFIG_SND_SOC_TFA9879=m

+ CONFIG_SND_SOC_TFA989X=m

  CONFIG_SND_SOC_TLV320AIC23=m

  CONFIG_SND_SOC_TLV320AIC23_I2C=m

  CONFIG_SND_SOC_TLV320AIC23_SPI=m
@@ -7023,7 +7049,10 @@ 

  CONFIG_SND_SOC_TSCS454=m

  CONFIG_SND_SOC_UDA1334=m

  CONFIG_SND_SOC_WCD9335=m

+ CONFIG_SND_SOC_WCD_MBHC=m

  CONFIG_SND_SOC_WCD934X=m

+ CONFIG_SND_SOC_WCD938X=m

+ CONFIG_SND_SOC_WCD938X_SDW=m

  CONFIG_SND_SOC_WM5102=m

  CONFIG_SND_SOC_WM8510=m

  CONFIG_SND_SOC_WM8523=m
@@ -7051,7 +7080,6 @@ 

  CONFIG_SND_SOC_WM8985=m

  CONFIG_SND_SOC_WSA881X=m

  CONFIG_SND_SOC_ZL38060=m

- CONFIG_SND_SOC_ZX_AUD96P22=m

  CONFIG_SND_SOC_MAX9759=m

  CONFIG_SND_SOC_MT6351=m

  CONFIG_SND_SOC_MT6358=m
@@ -7744,6 +7772,7 @@ 

  CONFIG_LEDS_REGULATOR=m

  CONFIG_LEDS_BD2802=m

  CONFIG_LEDS_INTEL_SS4200=m

+ CONFIG_LEDS_LT3593=m

  CONFIG_LEDS_ADP5520=m

  CONFIG_LEDS_MC13783=m

  CONFIG_LEDS_TCA6507=m
@@ -7829,7 +7858,7 @@ 

  CONFIG_INFINIBAND_QIB_DCA=y

  CONFIG_INFINIBAND_CXGB4=m

  CONFIG_INFINIBAND_EFA=m

- CONFIG_INFINIBAND_I40IW=m

+ CONFIG_INFINIBAND_IRDMA=m

  CONFIG_MLX4_INFINIBAND=m

  CONFIG_MLX5_INFINIBAND=m

  CONFIG_INFINIBAND_OCRDMA=m
@@ -7943,7 +7972,6 @@ 

  CONFIG_RTC_DRV_RV3028=m

  CONFIG_RTC_DRV_RV3032=m

  CONFIG_RTC_DRV_RV8803=m

- CONFIG_RTC_DRV_S5M=m

  CONFIG_RTC_DRV_SD3078=m

  

  #
@@ -8110,7 +8138,6 @@ 

  CONFIG_VFIO_PCI_INTX=y

  CONFIG_VFIO_PCI_IGD=y

  CONFIG_VFIO_MDEV=m

- CONFIG_VFIO_MDEV_DEVICE=m

  CONFIG_IRQ_BYPASS_MANAGER=m

  CONFIG_VIRT_DRIVERS=y

  CONFIG_VBOXGUEST=m
@@ -8285,6 +8312,11 @@ 

  CONFIG_VIDEO_ATOMISP_LM3554=m

  # CONFIG_VIDEO_ZORAN is not set

  CONFIG_VIDEO_IPU3_IMGU=m

+ CONFIG_DVB_AV7110_IR=y

+ CONFIG_DVB_AV7110=m

+ CONFIG_DVB_AV7110_OSD=y

+ CONFIG_DVB_BUDGET_PATCH=m

+ CONFIG_DVB_SP8870=m

  

  #

  # Android
@@ -8309,11 +8341,6 @@ 

  CONFIG_KS7010=m

  CONFIG_PI433=m

  CONFIG_FIELDBUS_DEV=m

- CONFIG_KPC2000=y

- CONFIG_KPC2000_CORE=m

- CONFIG_KPC2000_SPI=m

- CONFIG_KPC2000_I2C=m

- CONFIG_KPC2000_DMA=m

  CONFIG_QLGE=m

  CONFIG_WFX=m

  CONFIG_X86_PLATFORM_DEVICES=y
@@ -8349,6 +8376,7 @@ 

  CONFIG_DELL_SMBIOS_SMM=y

  CONFIG_DELL_SMO8800=m

  CONFIG_DELL_WMI=m

+ CONFIG_DELL_WMI_PRIVACY=y

  CONFIG_DELL_WMI_AIO=m

  CONFIG_DELL_WMI_DESCRIPTOR=m

  CONFIG_DELL_WMI_LED=m
@@ -8358,7 +8386,7 @@ 

  CONFIG_FUJITSU_TABLET=m

  CONFIG_GPD_POCKET_FAN=m

  CONFIG_HP_ACCEL=m

- CONFIG_HP_WIRELESS=m

+ CONFIG_WIRELESS_HOTKEY=m

  CONFIG_HP_WMI=m

  CONFIG_IBM_RTL=m

  CONFIG_IDEAPAD_LAPTOP=m
@@ -8370,8 +8398,11 @@ 

  # CONFIG_THINKPAD_ACPI_UNSAFE_LEDS is not set

  CONFIG_THINKPAD_ACPI_VIDEO=y

  CONFIG_THINKPAD_ACPI_HOTKEY_POLL=y

- CONFIG_INTEL_ATOMISP2_LED=m

+ CONFIG_THINKPAD_LMI=m

+ CONFIG_X86_PLATFORM_DRIVERS_INTEL=y

  CONFIG_INTEL_CHT_INT33FE=m

+ CONFIG_INTEL_SKL_INT3472=m

+ CONFIG_INTEL_ATOMISP2_LED=m

  CONFIG_INTEL_HID_EVENT=m

  CONFIG_INTEL_INT0002_VGPIO=m

  CONFIG_INTEL_MENLOW=m
@@ -8397,6 +8428,7 @@ 

  CONFIG_I2C_MULTI_INSTANTIATE=m

  CONFIG_MLX_PLATFORM=m

  CONFIG_TOUCHSCREEN_DMI=y

+ CONFIG_FW_ATTR_CLASS=m

  CONFIG_INTEL_IPS=m

  CONFIG_INTEL_RST=m

  CONFIG_INTEL_SMARTCONNECT=m
@@ -8466,17 +8498,24 @@ 

  CONFIG_SURFACE_AGGREGATOR_BUS=y

  # CONFIG_SURFACE_AGGREGATOR_ERROR_INJECTION is not set

  CONFIG_HAVE_CLK=y

- CONFIG_CLKDEV_LOOKUP=y

  CONFIG_HAVE_CLK_PREPARE=y

  CONFIG_COMMON_CLK=y

  CONFIG_COMMON_CLK_WM831X=m

+ 

+ #

+ # Clock driver for ARM Reference designs

+ #

+ # CONFIG_ICST is not set

+ # CONFIG_CLK_SP810 is not set

+ # end of Clock driver for ARM Reference designs

+ 

+ CONFIG_LMK04832=m

  CONFIG_COMMON_CLK_MAX9485=m

  CONFIG_COMMON_CLK_SI5341=m

  CONFIG_COMMON_CLK_SI5351=m

  CONFIG_COMMON_CLK_SI544=m

  CONFIG_COMMON_CLK_CDCE706=m

  CONFIG_COMMON_CLK_CS2000_CP=m

- CONFIG_COMMON_CLK_S2MPS11=m

  CONFIG_CLK_TWL6040=m

  CONFIG_COMMON_CLK_PALMAS=m

  CONFIG_COMMON_CLK_PWM=m
@@ -8508,6 +8547,7 @@ 

  # CONFIG_IOMMU_DEBUGFS is not set

  # CONFIG_IOMMU_DEFAULT_PASSTHROUGH is not set

  CONFIG_IOMMU_DMA=y

+ CONFIG_IOMMU_SVA_LIB=y

  CONFIG_AMD_IOMMU=y

  CONFIG_AMD_IOMMU_V2=y

  CONFIG_DMAR_TABLE=y
@@ -8518,6 +8558,7 @@ 

  CONFIG_INTEL_IOMMU_SCALABLE_MODE_DEFAULT_ON=y

  CONFIG_IRQ_REMAP=y

  CONFIG_HYPERV_IOMMU=y

+ CONFIG_VIRTIO_IOMMU=m

  

  #

  # Remoteproc drivers
@@ -8667,6 +8708,9 @@ 

  CONFIG_DA311=m

  CONFIG_DMARD09=m

  CONFIG_DMARD10=m

+ CONFIG_FXLS8962AF=m

+ CONFIG_FXLS8962AF_I2C=m

+ CONFIG_FXLS8962AF_SPI=m

  CONFIG_HID_SENSOR_ACCEL_3D=m

  CONFIG_IIO_CROS_EC_ACCEL_LEGACY=m

  CONFIG_IIO_ST_ACCEL_3AXIS=m
@@ -8688,6 +8732,7 @@ 

  CONFIG_MXC4005=m

  CONFIG_MXC6255=m

  CONFIG_SCA3000=m

+ CONFIG_SCA3300=m

  CONFIG_STK8312=m

  CONFIG_STK8BA50=m

  # end of Accelerometers
@@ -8756,6 +8801,7 @@ 

  CONFIG_TI_ADS131E08=m

  CONFIG_TI_AM335X_ADC=m

  CONFIG_TI_TLC4541=m

+ CONFIG_TI_TSC2046=m

  CONFIG_TWL4030_MADC=m

  CONFIG_TWL6030_GPADC=m

  CONFIG_VIPERBOARD_ADC=m
@@ -8796,6 +8842,8 @@ 

  CONFIG_SCD30_SERIAL=m

  CONFIG_SENSIRION_SGP30=m

  CONFIG_SPS30=m

+ CONFIG_SPS30_I2C=m

+ CONFIG_SPS30_SERIAL=m

  CONFIG_VZ89X=m

  # end of Chemical Sensors

  
@@ -8968,6 +9016,9 @@ 

  CONFIG_IIO_ST_LSM6DSX=m

  CONFIG_IIO_ST_LSM6DSX_I2C=m

  CONFIG_IIO_ST_LSM6DSX_SPI=m

+ CONFIG_IIO_ST_LSM9DS0=m

+ CONFIG_IIO_ST_LSM9DS0_I2C=m

+ CONFIG_IIO_ST_LSM9DS0_SPI=m

  # end of Inertial measurement units

  

  CONFIG_IIO_ADIS_LIB=m
@@ -9019,6 +9070,7 @@ 

  CONFIG_TCS3472=m

  CONFIG_SENSORS_TSL2563=m

  CONFIG_TSL2583=m

+ CONFIG_TSL2591=m

  CONFIG_TSL2772=m

  CONFIG_TSL4531=m

  CONFIG_US5182D=m
@@ -9174,6 +9226,7 @@ 

  CONFIG_MLX90632=m

  CONFIG_TMP006=m

  CONFIG_TMP007=m

+ CONFIG_TMP117=m

  CONFIG_TSYS01=m

  CONFIG_TSYS02D=m

  CONFIG_MAX31856=m
@@ -9224,6 +9277,7 @@ 

  #

  CONFIG_GENERIC_PHY=y

  CONFIG_USB_LGM_PHY=m

+ CONFIG_PHY_CAN_TRANSCEIVER=m

  CONFIG_BCM_KONA_USB2_PHY=m

  CONFIG_PHY_PXA_28NM_HSIC=m

  CONFIG_PHY_PXA_28NM_USB2=m
@@ -9354,6 +9408,7 @@ 

  CONFIG_INTERCONNECT=y

  CONFIG_COUNTER=m

  CONFIG_INTERRUPT_CNT=m

+ CONFIG_INTEL_QEP=m

  CONFIG_MOST=m

  CONFIG_MOST_USB_HDM=m

  CONFIG_MOST_CDEV=m
@@ -9523,6 +9578,8 @@ 

  CONFIG_TMPFS_INODE64=y

  CONFIG_HUGETLBFS=y

  CONFIG_HUGETLB_PAGE=y

+ CONFIG_HUGETLB_PAGE_FREE_VMEMMAP=y

+ CONFIG_HUGETLB_PAGE_FREE_VMEMMAP_DEFAULT_ON=y

  CONFIG_MEMFD_CREATE=y

  CONFIG_ARCH_HAS_GIGANTIC_PAGE=y

  CONFIG_CONFIGFS_FS=y
@@ -10261,7 +10318,6 @@ 

  CONFIG_SBITMAP=y

  CONFIG_PARMAN=m

  CONFIG_OBJAGG=m

- # CONFIG_STRING_SELFTEST is not set

  # end of Library routines

  

  CONFIG_PLDMFW=y
@@ -10276,6 +10332,7 @@ 

  #

  CONFIG_PRINTK_TIME=y

  # CONFIG_PRINTK_CALLER is not set

+ CONFIG_STACKTRACE_BUILD_ID=y

  CONFIG_CONSOLE_LOGLEVEL_DEFAULT=4

  CONFIG_CONSOLE_LOGLEVEL_QUIET=1

  CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
@@ -10370,7 +10427,7 @@ 

  CONFIG_HAVE_ARCH_KFENCE=y

  CONFIG_KFENCE=y

  CONFIG_KFENCE_STATIC_KEYS=y

- CONFIG_KFENCE_SAMPLE_INTERVAL=0

+ CONFIG_KFENCE_SAMPLE_INTERVAL=100

  CONFIG_KFENCE_NUM_OBJECTS=255

  CONFIG_KFENCE_STRESS_TEST_FAULTS=0

  # end of Memory Debugging
@@ -10457,7 +10514,6 @@ 

  CONFIG_RCU_CPU_STALL_TIMEOUT=60

  # CONFIG_RCU_TRACE is not set

  # CONFIG_RCU_EQS_DEBUG is not set

- # CONFIG_RCU_STRICT_GRACE_PERIOD is not set

  # end of RCU Debugging

  

  # CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set
@@ -10492,12 +10548,15 @@ 

  CONFIG_DYNAMIC_FTRACE=y

  CONFIG_DYNAMIC_FTRACE_WITH_REGS=y

  CONFIG_DYNAMIC_FTRACE_WITH_DIRECT_CALLS=y

+ CONFIG_DYNAMIC_FTRACE_WITH_ARGS=y

  CONFIG_FUNCTION_PROFILER=y

  CONFIG_STACK_TRACER=y

  # CONFIG_IRQSOFF_TRACER is not set

  # CONFIG_PREEMPT_TRACER is not set

  CONFIG_SCHED_TRACER=y

  CONFIG_HWLAT_TRACER=y

+ CONFIG_OSNOISE_TRACER=y

+ CONFIG_TIMERLAT_TRACER=y

  CONFIG_MMIOTRACE=y

  CONFIG_FTRACE_SYSCALLS=y

  CONFIG_TRACER_SNAPSHOT=y
@@ -10576,7 +10635,6 @@ 

  # CONFIG_KCOV is not set

  CONFIG_RUNTIME_TESTING_MENU=y

  # CONFIG_LKDTM is not set

- # CONFIG_TEST_LIST_SORT is not set

  # CONFIG_TEST_MIN_HEAP is not set

  # CONFIG_TEST_SORT is not set

  # CONFIG_TEST_DIV64 is not set
@@ -10589,10 +10647,12 @@ 

  # CONFIG_ATOMIC64_SELFTEST is not set

  CONFIG_ASYNC_RAID6_TEST=m

  # CONFIG_TEST_HEXDUMP is not set

+ # CONFIG_STRING_SELFTEST is not set

  # CONFIG_TEST_STRING_HELPERS is not set

  # CONFIG_TEST_STRSCPY is not set

  # CONFIG_TEST_KSTRTOX is not set

  # CONFIG_TEST_PRINTF is not set

+ # CONFIG_TEST_SCANF is not set

  # CONFIG_TEST_BITMAP is not set

  # CONFIG_TEST_UUID is not set

  # CONFIG_TEST_XARRAY is not set
@@ -10620,6 +10680,7 @@ 

  # CONFIG_TEST_HMM is not set

  # CONFIG_TEST_FREE_PAGES is not set

  # CONFIG_TEST_FPU is not set

+ # CONFIG_TEST_CLOCKSOURCE_WATCHDOG is not set

  CONFIG_ARCH_USE_MEMTEST=y

  # CONFIG_MEMTEST is not set

  # CONFIG_HYPERV_TESTING is not set

@@ -1,7 +1,7 @@ 

- From 90de407f12e8ed9cb361678882c2af236b06107e Mon Sep 17 00:00:00 2001

+ From f76db6fc04fadf872a138740592b4e8ec9ba9149 Mon Sep 17 00:00:00 2001

  From: "Jan Alexander Steffens (heftig)" <jan.steffens@gmail.com>

  Date: Mon, 16 Sep 2019 04:53:20 +0200

- Subject: [PATCH 1/2] ZEN: Add sysctl and CONFIG to disallow unprivileged

+ Subject: [PATCH 1/6] ZEN: Add sysctl and CONFIG to disallow unprivileged

   CLONE_NEWUSER

  

  Our default behavior continues to match the vanilla kernel.
@@ -14,10 +14,10 @@ 

   5 files changed, 53 insertions(+)

  

  diff --git a/include/linux/user_namespace.h b/include/linux/user_namespace.h

- index bfa6463f8a95..27aa2bd5e50a 100644

+ index eb70cabe6e7f..dda54e3bc47c 100644

  --- a/include/linux/user_namespace.h

  +++ b/include/linux/user_namespace.h

- @@ -116,6 +116,8 @@ void put_ucounts(struct ucounts *ucounts);

+ @@ -137,6 +137,8 @@ static inline void set_rlimit_ucount_max(struct user_namespace *ns,

   

   #ifdef CONFIG_USER_NS

   
@@ -26,7 +26,7 @@ 

   static inline struct user_namespace *get_user_ns(struct user_namespace *ns)

   {

   	if (ns)

- @@ -149,6 +151,8 @@ extern bool current_in_userns(const struct user_namespace *target_ns);

+ @@ -170,6 +172,8 @@ extern bool current_in_userns(const struct user_namespace *target_ns);

   struct ns_common *ns_get_owner(struct ns_common *ns);

   #else

   
@@ -36,10 +36,10 @@ 

   {

   	return &init_user_ns;

  diff --git a/init/Kconfig b/init/Kconfig

- index a61c92066c2e..6a2920f2e2ad 100644

+ index 55f9f7738ebb..33c6a820ac08 100644

  --- a/init/Kconfig

  +++ b/init/Kconfig

- @@ -1195,6 +1195,22 @@ config USER_NS

+ @@ -1198,6 +1198,22 @@ config USER_NS

   

   	  If unsure, say N.

   
@@ -63,7 +63,7 @@ 

   	bool "PID Namespaces"

   	default y

  diff --git a/kernel/fork.c b/kernel/fork.c

- index 567fee340500..f8ad32116152 100644

+ index cbba21e3a58d..7267d46c29ea 100644

  --- a/kernel/fork.c

  +++ b/kernel/fork.c

  @@ -98,6 +98,10 @@
@@ -77,7 +77,7 @@ 

   #include <asm/pgalloc.h>

   #include <linux/uaccess.h>

   #include <asm/mmu_context.h>

- @@ -1871,6 +1875,10 @@ static __latent_entropy struct task_struct *copy_process(

+ @@ -1877,6 +1881,10 @@ static __latent_entropy struct task_struct *copy_process(

   	if ((clone_flags & (CLONE_NEWUSER|CLONE_FS)) == (CLONE_NEWUSER|CLONE_FS))

   		return ERR_PTR(-EINVAL);

   
@@ -88,7 +88,7 @@ 

   	/*

   	 * Thread groups must share signals as well, and detached threads

   	 * can only be started up within the thread group.

- @@ -2973,6 +2981,12 @@ int ksys_unshare(unsigned long unshare_flags)

+ @@ -2981,6 +2989,12 @@ int ksys_unshare(unsigned long unshare_flags)

   	if (unshare_flags & CLONE_NEWNS)

   		unshare_flags |= CLONE_FS;

   
@@ -102,10 +102,10 @@ 

   	if (err)

   		goto bad_unshare_out;

  diff --git a/kernel/sysctl.c b/kernel/sysctl.c

- index d4a78e08f6d8..0260dfe2daff 100644

+ index 272f4a272f8c..760e8a2d815d 100644

  --- a/kernel/sysctl.c

  +++ b/kernel/sysctl.c

- @@ -103,6 +103,9 @@

+ @@ -105,6 +105,9 @@

   #ifdef CONFIG_LOCKUP_DETECTOR

   #include <linux/nmi.h>

   #endif
@@ -115,7 +115,7 @@ 

   

   #if defined(CONFIG_SYSCTL)

   

- @@ -1896,6 +1899,15 @@ static struct ctl_table kern_table[] = {

+ @@ -1908,6 +1911,15 @@ static struct ctl_table kern_table[] = {

   		.proc_handler	= proc_dointvec,

   	},

   #endif
@@ -132,7 +132,7 @@ 

   	{

   		.procname	= "tainted",

  diff --git a/kernel/user_namespace.c b/kernel/user_namespace.c

- index 27670ab7a4ed..300c72d2a381 100644

+ index ef82d401dde8..5a6c2e07174b 100644

  --- a/kernel/user_namespace.c

  +++ b/kernel/user_namespace.c

  @@ -21,6 +21,13 @@
@@ -150,5 +150,5 @@ 

   static DEFINE_MUTEX(userns_state_mutex);

   

  -- 

- 2.32.0

+ 2.33.0

  

@@ -0,0 +1,79 @@ 

+ From 810821eb3b1894f2cfcc29cffd42d193b8fe54a6 Mon Sep 17 00:00:00 2001

+ From: Wai Paulo Valerio Wang <waicool20@gmail.com>

+ Date: Thu, 8 Jul 2021 04:00:59 +0800

+ Subject: [PATCH 2/6] Bluetooth: btusb: Add support for IMC Networks Mediatek

+  Chip

+ 

+ This add supports for IMC Networks Wireless_Device Media Chip

+ which contains the MT7921 chipset.

+ 

+ $ lsusb

+ 

+ Bus 001 Device 004: ID 13d3:3563 IMC Networks Wireless_Device

+ 

+ $ cat /sys/kernel/debug/usb/devices

+ 

+ T:  Bus=01 Lev=01 Prnt=01 Port=03 Cnt=03 Dev#=  4 Spd=480  MxCh= 0

+ D:  Ver= 2.10 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1

+ P:  Vendor=13d3 ProdID=3563 Rev= 1.00

+ S:  Manufacturer=MediaTek Inc.

+ S:  Product=Wireless_Device

+ S:  SerialNumber=000000000

+ C:* #Ifs= 3 Cfg#= 1 Atr=e0 MxPwr=100mA

+ A:  FirstIf#= 0 IfCount= 3 Cls=e0(wlcon) Sub=01 Prot=01

+ I:* If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb

+ E:  Ad=81(I) Atr=03(Int.) MxPS=  16 Ivl=125us

+ E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

+ E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

+ I:* If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb

+ E:  Ad=83(I) Atr=01(Isoc) MxPS=   0 Ivl=1ms

+ E:  Ad=03(O) Atr=01(Isoc) MxPS=   0 Ivl=1ms

+ I:  If#= 1 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb

+ E:  Ad=83(I) Atr=01(Isoc) MxPS=   9 Ivl=1ms

+ E:  Ad=03(O) Atr=01(Isoc) MxPS=   9 Ivl=1ms

+ I:  If#= 1 Alt= 2 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb

+ E:  Ad=83(I) Atr=01(Isoc) MxPS=  17 Ivl=1ms

+ E:  Ad=03(O) Atr=01(Isoc) MxPS=  17 Ivl=1ms

+ I:  If#= 1 Alt= 3 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb

+ E:  Ad=83(I) Atr=01(Isoc) MxPS=  25 Ivl=1ms

+ E:  Ad=03(O) Atr=01(Isoc) MxPS=  25 Ivl=1ms

+ I:  If#= 1 Alt= 4 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb

+ E:  Ad=83(I) Atr=01(Isoc) MxPS=  33 Ivl=1ms

+ E:  Ad=03(O) Atr=01(Isoc) MxPS=  33 Ivl=1ms

+ I:  If#= 1 Alt= 5 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb

+ E:  Ad=83(I) Atr=01(Isoc) MxPS=  49 Ivl=1ms

+ E:  Ad=03(O) Atr=01(Isoc) MxPS=  49 Ivl=1ms

+ I:  If#= 1 Alt= 6 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb

+ E:  Ad=83(I) Atr=01(Isoc) MxPS=  63 Ivl=1ms

+ E:  Ad=03(O) Atr=01(Isoc) MxPS=  63 Ivl=1ms

+ I:* If#= 2 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=(none)

+ E:  Ad=8a(I) Atr=03(Int.) MxPS=  64 Ivl=125us

+ E:  Ad=0a(O) Atr=03(Int.) MxPS=  64 Ivl=125us

+ I:  If#= 2 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=(none)

+ E:  Ad=8a(I) Atr=03(Int.) MxPS= 512 Ivl=125us

+ E:  Ad=0a(O) Atr=03(Int.) MxPS= 512 Ivl=125us

+ 

+ Signed-off-by: Wai Paulo Valerio Wang <waicool20@gmail.com>

+ Signed-off-by: Marcel Holtmann <marcel@holtmann.org>

+ For: https://bugs.archlinux.org/task/72138

+ ---

+  drivers/bluetooth/btusb.c | 3 +++

+  1 file changed, 3 insertions(+)

+ 

+ diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c

+ index bd37d6fb88c2..e13a510e1698 100644

+ --- a/drivers/bluetooth/btusb.c

+ +++ b/drivers/bluetooth/btusb.c

+ @@ -414,6 +414,9 @@ static const struct usb_device_id blacklist_table[] = {

+  	{ USB_DEVICE(0x04ca, 0x3802), .driver_info = BTUSB_MEDIATEK |

+  						     BTUSB_WIDEBAND_SPEECH |

+  						     BTUSB_VALID_LE_STATES },

+ +	{ USB_DEVICE(0x13d3, 0x3563), .driver_info = BTUSB_MEDIATEK |

+ +						     BTUSB_WIDEBAND_SPEECH |

+ +						     BTUSB_VALID_LE_STATES },

+  

+  	/* Additional Realtek 8723AE Bluetooth devices */

+  	{ USB_DEVICE(0x0930, 0x021d), .driver_info = BTUSB_REALTEK },

+ -- 

+ 2.33.0

+ 

@@ -1,85 +0,0 @@ 

- From bdb12383a58d6989a0b1c2f925890948146bbc90 Mon Sep 17 00:00:00 2001

- From: Pauli Virtanen <pav@iki.fi>

- Date: Mon, 26 Jul 2021 21:02:06 +0300

- Subject: [PATCH 2/2] Bluetooth: btusb: check conditions before enabling USB

-  ALT 3 for WBS

- MIME-Version: 1.0

- Content-Type: text/plain; charset=UTF-8

- Content-Transfer-Encoding: 8bit

- 

- Some USB BT adapters don't satisfy the MTU requirement mentioned in

- commit e848dbd364ac ("Bluetooth: btusb: Add support USB ALT 3 for WBS")

- and have ALT 3 setting that produces no/garbled audio. Some adapters

- with larger MTU were also reported to have problems with ALT 3.

- 

- Add a flag and check it and MTU before selecting ALT 3, falling back to

- ALT 1. Enable the flag for Realtek, restoring the previous behavior for

- non-Realtek devices.

- 

- Tested with USB adapters (mtu<72, no/garbled sound with ALT3, ALT1

- works) BCM20702A1 0b05:17cb, CSR8510A10 0a12:0001, and (mtu>=72, ALT3

- works) RTL8761BU 0bda:8771, Intel AX200 8087:0029 (after disabling

- ALT6). Also got reports for (mtu>=72, ALT 3 reported to produce bad

- audio) Intel 8087:0a2b.

- 

- Signed-off-by: Pauli Virtanen <pav@iki.fi>

- Fixes: e848dbd364ac ("Bluetooth: btusb: Add support USB ALT 3 for WBS")

- Tested-by: Michał Kępień <kernel@kempniu.pl>

- 

- Fixes: https://bugs.archlinux.org/task/71567

- ---

-  drivers/bluetooth/btusb.c | 22 ++++++++++++++--------

-  1 file changed, 14 insertions(+), 8 deletions(-)

- 

- diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c

- index 6d23308119d1..e8062d0b7d4d 100644

- --- a/drivers/bluetooth/btusb.c

- +++ b/drivers/bluetooth/btusb.c

- @@ -516,6 +516,7 @@ static const struct dmi_system_id btusb_needs_reset_resume_table[] = {

-  #define BTUSB_HW_RESET_ACTIVE	12

-  #define BTUSB_TX_WAIT_VND_EVT	13

-  #define BTUSB_WAKEUP_DISABLE	14

- +#define BTUSB_USE_ALT3_FOR_WBS	15

-  

-  struct btusb_data {

-  	struct hci_dev       *hdev;

- @@ -1748,16 +1749,20 @@ static void btusb_work(struct work_struct *work)

-  			/* Bluetooth USB spec recommends alt 6 (63 bytes), but

-  			 * many adapters do not support it.  Alt 1 appears to

-  			 * work for all adapters that do not have alt 6, and

- -			 * which work with WBS at all.

- +			 * which work with WBS at all.  Some devices prefer

- +			 * alt 3 (HCI payload >= 60 Bytes let air packet

- +			 * data satisfy 60 bytes), requiring

- +			 * MTU >= 3 (packets) * 25 (size) - 3 (headers) = 72

- +			 * see also Core spec 5, vol 4, B 2.1.1 & Table 2.1.

-  			 */

- -			new_alts = btusb_find_altsetting(data, 6) ? 6 : 1;

- -			/* Because mSBC frames do not need to be aligned to the

- -			 * SCO packet boundary. If support the Alt 3, use the

- -			 * Alt 3 for HCI payload >= 60 Bytes let air packet

- -			 * data satisfy 60 bytes.

- -			 */

- -			if (new_alts == 1 && btusb_find_altsetting(data, 3))

- +			if (btusb_find_altsetting(data, 6))

- +				new_alts = 6;

- +			else if (test_bit(BTUSB_USE_ALT3_FOR_WBS, &data->flags) &&

- +					hdev->sco_mtu >= 72 &&

- +					btusb_find_altsetting(data, 3))

-  				new_alts = 3;

- +			else

- +				new_alts = 1;

-  		}

-  

-  		if (btusb_switch_alt_setting(hdev, new_alts) < 0)

- @@ -4733,6 +4738,7 @@ static int btusb_probe(struct usb_interface *intf,

-  		 * (DEVICE_REMOTE_WAKEUP)

-  		 */

-  		set_bit(BTUSB_WAKEUP_DISABLE, &data->flags);

- +		set_bit(BTUSB_USE_ALT3_FOR_WBS, &data->flags);

-  	}

-  

-  	if (!reset)

- -- 

- 2.32.0

- 

@@ -0,0 +1,71 @@ 

+ From 38c2ca84b97f9d6021c2607e214f99acd84dac2d Mon Sep 17 00:00:00 2001

+ From: Aaron Ma <aaron.ma@canonical.com>

+ Date: Fri, 23 Jul 2021 01:17:18 +0800

+ Subject: [PATCH 3/6] Bluetooth: btusb: Add support for Foxconn Mediatek Chip

+ 

+ Add support for another Foxconn / Hon Hai device with MT7921 chip.

+ 

+ T:  Bus=05 Lev=01 Prnt=01 Port=03 Cnt=02 Dev#=  3 Spd=480  MxCh= 0

+ D:  Ver= 2.10 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1

+ P:  Vendor=0489 ProdID=e0cd Rev= 1.00

+ S:  Manufacturer=MediaTek Inc.

+ S:  Product=Wireless_Device

+ S:  SerialNumber=000000000

+ C:* #Ifs= 3 Cfg#= 1 Atr=e0 MxPwr=100mA

+ A:  FirstIf#= 0 IfCount= 3 Cls=e0(wlcon) Sub=01 Prot=01

+ I:* If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb

+ E:  Ad=81(I) Atr=03(Int.) MxPS=  16 Ivl=125us

+ E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

+ E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

+ I:* If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb

+ E:  Ad=83(I) Atr=01(Isoc) MxPS=   0 Ivl=1ms

+ E:  Ad=03(O) Atr=01(Isoc) MxPS=   0 Ivl=1ms

+ I:  If#= 1 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb

+ E:  Ad=83(I) Atr=01(Isoc) MxPS=   9 Ivl=1ms

+ E:  Ad=03(O) Atr=01(Isoc) MxPS=   9 Ivl=1ms

+ I:  If#= 1 Alt= 2 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb

+ E:  Ad=83(I) Atr=01(Isoc) MxPS=  17 Ivl=1ms

+ E:  Ad=03(O) Atr=01(Isoc) MxPS=  17 Ivl=1ms

+ I:  If#= 1 Alt= 3 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb

+ E:  Ad=83(I) Atr=01(Isoc) MxPS=  25 Ivl=1ms

+ E:  Ad=03(O) Atr=01(Isoc) MxPS=  25 Ivl=1ms

+ I:  If#= 1 Alt= 4 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb

+ E:  Ad=83(I) Atr=01(Isoc) MxPS=  33 Ivl=1ms

+ E:  Ad=03(O) Atr=01(Isoc) MxPS=  33 Ivl=1ms

+ I:  If#= 1 Alt= 5 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb

+ E:  Ad=83(I) Atr=01(Isoc) MxPS=  49 Ivl=1ms

+ E:  Ad=03(O) Atr=01(Isoc) MxPS=  49 Ivl=1ms

+ I:  If#= 1 Alt= 6 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb

+ E:  Ad=83(I) Atr=01(Isoc) MxPS=  63 Ivl=1ms

+ E:  Ad=03(O) Atr=01(Isoc) MxPS=  63 Ivl=1ms

+ I:* If#= 2 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=(none)

+ E:  Ad=8a(I) Atr=03(Int.) MxPS=  64 Ivl=125us

+ E:  Ad=0a(O) Atr=03(Int.) MxPS=  64 Ivl=125us

+ I:  If#= 2 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=(none)

+ E:  Ad=8a(I) Atr=03(Int.) MxPS= 512 Ivl=125us

+ E:  Ad=0a(O) Atr=03(Int.) MxPS= 512 Ivl=125us

+ 

+ Signed-off-by: Aaron Ma <aaron.ma@canonical.com>

+ Signed-off-by: Marcel Holtmann <marcel@holtmann.org>

+ For: https://bugs.archlinux.org/task/72138

+ ---

+  drivers/bluetooth/btusb.c | 3 +++

+  1 file changed, 3 insertions(+)

+ 

+ diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c

+ index e13a510e1698..aac732cc9612 100644

+ --- a/drivers/bluetooth/btusb.c

+ +++ b/drivers/bluetooth/btusb.c

+ @@ -417,6 +417,9 @@ static const struct usb_device_id blacklist_table[] = {

+  	{ USB_DEVICE(0x13d3, 0x3563), .driver_info = BTUSB_MEDIATEK |

+  						     BTUSB_WIDEBAND_SPEECH |

+  						     BTUSB_VALID_LE_STATES },

+ +	{ USB_DEVICE(0x0489, 0xe0cd), .driver_info = BTUSB_MEDIATEK |

+ +						     BTUSB_WIDEBAND_SPEECH |

+ +						     BTUSB_VALID_LE_STATES },

+  

+  	/* Additional Realtek 8723AE Bluetooth devices */

+  	{ USB_DEVICE(0x0930, 0x021d), .driver_info = BTUSB_REALTEK },

+ -- 

+ 2.33.0

+ 

@@ -0,0 +1,64 @@ 

+ From ab60c2d0242fc428a436c25c1144f6acd9d6f419 Mon Sep 17 00:00:00 2001

+ From: Takashi Iwai <tiwai@suse.de>

+ Date: Mon, 9 Aug 2021 09:18:27 +0200

+ Subject: [PATCH 4/6] ALSA: pcm: Check mmap capability of runtime dma buffer at

+  first

+ 

+ Currently we check only the substream->dma_buffer as the preset of the

+ buffer configuration for verifying the availability of mmap.  But a

+ few drivers rather set up the buffer in the own way without the

+ standard buffer preallocation using substream->dma_buffer, and they

+ miss the proper checks.  (Now it's working more or less fine as most

+ of them are running only on x86).

+ 

+ Actually, they may set up the runtime dma_buffer (referred via

+ snd_pcm_get_dma_buf()) at the open callback, though.  That is, this

+ could have been used as the primary source.

+ 

+ This patch changes the hw_support_mmap() function to check the runtime

+ dma buffer at first.  It's usually NULL with the standard buffer

+ preallocation, and in that case, we continue checking

+ substream->dma_buffer as fallback.

+ 

+ Signed-off-by: Takashi Iwai <tiwai@suse.de>

+ Fixes: https://bugs.archlinux.org/task/72059

+ ---

+  sound/core/pcm_native.c | 9 +++++++--

+  1 file changed, 7 insertions(+), 2 deletions(-)

+ 

+ diff --git a/sound/core/pcm_native.c b/sound/core/pcm_native.c

+ index 71323d807dbf..dc9fa312fadd 100644

+ --- a/sound/core/pcm_native.c

+ +++ b/sound/core/pcm_native.c

+ @@ -243,13 +243,18 @@ int snd_pcm_info_user(struct snd_pcm_substream *substream,

+  

+  static bool hw_support_mmap(struct snd_pcm_substream *substream)

+  {

+ +	struct snd_dma_buffer *dmabuf;

+ +

+  	if (!(substream->runtime->hw.info & SNDRV_PCM_INFO_MMAP))

+  		return false;

+  

+  	if (substream->ops->mmap || substream->ops->page)

+  		return true;

+  

+ -	switch (substream->dma_buffer.dev.type) {

+ +	dmabuf = snd_pcm_get_dma_buf(substream);

+ +	if (!dmabuf)

+ +		dmabuf = &substream->dma_buffer;

+ +	switch (dmabuf->dev.type) {

+  	case SNDRV_DMA_TYPE_UNKNOWN:

+  		/* we can't know the device, so just assume that the driver does

+  		 * everything right

+ @@ -259,7 +264,7 @@ static bool hw_support_mmap(struct snd_pcm_substream *substream)

+  	case SNDRV_DMA_TYPE_VMALLOC:

+  		return true;

+  	default:

+ -		return dma_can_mmap(substream->dma_buffer.dev.dev);

+ +		return dma_can_mmap(dmabuf->dev.dev);

+  	}

+  }

+  

+ -- 

+ 2.33.0

+ 

@@ -0,0 +1,75 @@ 

+ From 7b0c23ec626e579ffa7ef239cac20dc7fa1797e9 Mon Sep 17 00:00:00 2001

+ From: Takashi Iwai <tiwai@suse.de>

+ Date: Mon, 9 Aug 2021 09:18:28 +0200

+ Subject: [PATCH 5/6] ALSA: pci: rme: Set up buffer type properly

+ 

+ Although the regression of the mmap was fixed in the recent commit

+ dc0dc8a73e8e ("ALSA: pcm: Fix mmap breakage without explicit buffer

+ setup"), RME9652 and HDSP drivers have still potential issues with

+ their mmap handling.  Namely, they use the default mmap handler

+ without the standard buffer preallocation, and PCM core wouldn't use

+ the coherent DMA mapping.  It's practically OK on x86, but on some

+ exotic architectures, it wouldn't work.

+ 

+ This patch addresses the potential breakage by replacing the buffer

+ setup with the proper macro.  It also simplifies the source code,

+ too.

+ 

+ Signed-off-by: Takashi Iwai <tiwai@suse.de>

+ Fixes: https://bugs.archlinux.org/task/72059

+ ---

+  sound/pci/rme9652/hdsp.c    | 6 ++----

+  sound/pci/rme9652/rme9652.c | 6 ++----

+  2 files changed, 4 insertions(+), 8 deletions(-)

+ 

+ diff --git a/sound/pci/rme9652/hdsp.c b/sound/pci/rme9652/hdsp.c

+ index 8457a4bbc3df..22b8b3357918 100644

+ --- a/sound/pci/rme9652/hdsp.c

+ +++ b/sound/pci/rme9652/hdsp.c

+ @@ -4518,8 +4518,7 @@ static int snd_hdsp_playback_open(struct snd_pcm_substream *substream)

+  	snd_pcm_set_sync(substream);

+  

+          runtime->hw = snd_hdsp_playback_subinfo;

+ -	runtime->dma_area = hdsp->playback_buffer;

+ -	runtime->dma_bytes = HDSP_DMA_AREA_BYTES;

+ +	snd_pcm_set_runtime_buffer(substream, &hdsp->playback_dma_buf);

+  

+  	hdsp->playback_pid = current->pid;

+  	hdsp->playback_substream = substream;

+ @@ -4595,8 +4594,7 @@ static int snd_hdsp_capture_open(struct snd_pcm_substream *substream)

+  	snd_pcm_set_sync(substream);

+  

+  	runtime->hw = snd_hdsp_capture_subinfo;

+ -	runtime->dma_area = hdsp->capture_buffer;

+ -	runtime->dma_bytes = HDSP_DMA_AREA_BYTES;

+ +	snd_pcm_set_runtime_buffer(substream, &hdsp->capture_dma_buf);

+  

+  	hdsp->capture_pid = current->pid;

+  	hdsp->capture_substream = substream;

+ diff --git a/sound/pci/rme9652/rme9652.c b/sound/pci/rme9652/rme9652.c

+ index f1aad38760d6..9ad2533925c4 100644

+ --- a/sound/pci/rme9652/rme9652.c

+ +++ b/sound/pci/rme9652/rme9652.c

+ @@ -2279,8 +2279,7 @@ static int snd_rme9652_playback_open(struct snd_pcm_substream *substream)

+  	snd_pcm_set_sync(substream);

+  

+          runtime->hw = snd_rme9652_playback_subinfo;

+ -	runtime->dma_area = rme9652->playback_buffer;

+ -	runtime->dma_bytes = RME9652_DMA_AREA_BYTES;

+ +	snd_pcm_set_runtime_buffer(substream, &rme9652->playback_dma_buf);

+  

+  	if (rme9652->capture_substream == NULL) {

+  		rme9652_stop(rme9652);

+ @@ -2339,8 +2338,7 @@ static int snd_rme9652_capture_open(struct snd_pcm_substream *substream)

+  	snd_pcm_set_sync(substream);

+  

+  	runtime->hw = snd_rme9652_capture_subinfo;

+ -	runtime->dma_area = rme9652->capture_buffer;

+ -	runtime->dma_bytes = RME9652_DMA_AREA_BYTES;

+ +	snd_pcm_set_runtime_buffer(substream, &rme9652->capture_dma_buf);

+  

+  	if (rme9652->playback_substream == NULL) {

+  		rme9652_stop(rme9652);

+ -- 

+ 2.33.0

+ 

@@ -0,0 +1,95 @@ 

+ From b5ed7b38f5551c5dfca87ab29d679f3d6d327557 Mon Sep 17 00:00:00 2001

+ From: Takashi Iwai <tiwai@suse.de>

+ Date: Mon, 9 Aug 2021 09:18:29 +0200

+ Subject: [PATCH 6/6] ALSA: pci: cs46xx: Fix set up buffer type properly

+ 

+ CS46xx driver switches the buffer depending on the number of periods,

+ and in some cases it switches to the own buffer without updating the

+ buffer type properly.  This may cause a problem with the mmap on

+ exotic architectures that require the own mmap call for the coherent

+ DMA buffer.

+ 

+ This patch addresses the potential breakage by replacing the buffer

+ setup with the proper macro.  It also simplifies the source code,

+ too.

+ 

+ Signed-off-by: Takashi Iwai <tiwai@suse.de>

+ Fixes: https://bugs.archlinux.org/task/72059

+ ---

+  sound/pci/cs46xx/cs46xx_lib.c | 30 ++++++++----------------------

+  1 file changed, 8 insertions(+), 22 deletions(-)

+ 

+ diff --git a/sound/pci/cs46xx/cs46xx_lib.c b/sound/pci/cs46xx/cs46xx_lib.c

+ index 1e1eb17f8e07..d43927dcd61e 100644

+ --- a/sound/pci/cs46xx/cs46xx_lib.c

+ +++ b/sound/pci/cs46xx/cs46xx_lib.c

+ @@ -1121,9 +1121,7 @@ static int snd_cs46xx_playback_hw_params(struct snd_pcm_substream *substream,

+  	if (params_periods(hw_params) == CS46XX_FRAGS) {

+  		if (runtime->dma_area != cpcm->hw_buf.area)

+  			snd_pcm_lib_free_pages(substream);

+ -		runtime->dma_area = cpcm->hw_buf.area;

+ -		runtime->dma_addr = cpcm->hw_buf.addr;

+ -		runtime->dma_bytes = cpcm->hw_buf.bytes;

+ +		snd_pcm_set_runtime_buffer(substream, &cpcm->hw_buf);

+  

+  

+  #ifdef CONFIG_SND_CS46XX_NEW_DSP

+ @@ -1143,11 +1141,8 @@ static int snd_cs46xx_playback_hw_params(struct snd_pcm_substream *substream,

+  #endif

+  

+  	} else {

+ -		if (runtime->dma_area == cpcm->hw_buf.area) {

+ -			runtime->dma_area = NULL;

+ -			runtime->dma_addr = 0;

+ -			runtime->dma_bytes = 0;

+ -		}

+ +		if (runtime->dma_area == cpcm->hw_buf.area)

+ +			snd_pcm_set_runtime_buffer(substream, NULL);

+  		err = snd_pcm_lib_malloc_pages(substream, params_buffer_bytes(hw_params));

+  		if (err < 0) {

+  #ifdef CONFIG_SND_CS46XX_NEW_DSP

+ @@ -1196,9 +1191,7 @@ static int snd_cs46xx_playback_hw_free(struct snd_pcm_substream *substream)

+  	if (runtime->dma_area != cpcm->hw_buf.area)

+  		snd_pcm_lib_free_pages(substream);

+      

+ -	runtime->dma_area = NULL;

+ -	runtime->dma_addr = 0;

+ -	runtime->dma_bytes = 0;

+ +	snd_pcm_set_runtime_buffer(substream, NULL);

+  

+  	return 0;

+  }

+ @@ -1287,16 +1280,11 @@ static int snd_cs46xx_capture_hw_params(struct snd_pcm_substream *substream,

+  	if (runtime->periods == CS46XX_FRAGS) {

+  		if (runtime->dma_area != chip->capt.hw_buf.area)

+  			snd_pcm_lib_free_pages(substream);

+ -		runtime->dma_area = chip->capt.hw_buf.area;

+ -		runtime->dma_addr = chip->capt.hw_buf.addr;

+ -		runtime->dma_bytes = chip->capt.hw_buf.bytes;

+ +		snd_pcm_set_runtime_buffer(substream, &chip->capt.hw_buf);

+  		substream->ops = &snd_cs46xx_capture_ops;

+  	} else {

+ -		if (runtime->dma_area == chip->capt.hw_buf.area) {

+ -			runtime->dma_area = NULL;

+ -			runtime->dma_addr = 0;

+ -			runtime->dma_bytes = 0;

+ -		}

+ +		if (runtime->dma_area == chip->capt.hw_buf.area)

+ +			snd_pcm_set_runtime_buffer(substream, NULL);

+  		err = snd_pcm_lib_malloc_pages(substream, params_buffer_bytes(hw_params));

+  		if (err < 0)

+  			return err;

+ @@ -1313,9 +1301,7 @@ static int snd_cs46xx_capture_hw_free(struct snd_pcm_substream *substream)

+  

+  	if (runtime->dma_area != chip->capt.hw_buf.area)

+  		snd_pcm_lib_free_pages(substream);

+ -	runtime->dma_area = NULL;

+ -	runtime->dma_addr = 0;

+ -	runtime->dma_bytes = 0;

+ +	snd_pcm_set_runtime_buffer(substream, NULL);

+  

+  	return 0;

+  }

+ -- 

+ 2.33.0

+ 

file modified
+18 -9
@@ -14,7 +14,7 @@ 

  _replacesoldmodules=() # '%' gets replaced with kernel suffix

  

  pkgbase=linux-libre

- pkgver=5.13.8

+ pkgver=5.14.11

  pkgrel=1

  pkgdesc='Linux-libre'

  rcnver=5.11.11
@@ -28,7 +28,7 @@ 

  )

  makedepends_armv7h=(uboot-tools vboot-utils dtc) # required by linux-libre-chromebook

  options=('!strip')

- _srcname=linux-5.13

+ _srcname=linux-5.14

  source=(

    "https://linux-libre.fsfla.org/pub/linux-libre/releases/${_srcname##*-}-gnu/linux-libre-${_srcname##*-}-gnu.tar.xz"{,.sign}

    "https://linux-libre.fsfla.org/pub/linux-libre/releases/$pkgver-gnu/patch-${_srcname##*-}-gnu-$pkgver-gnu.xz"{,.sign}
@@ -46,7 +46,11 @@ 

    0002-fix-Atmel-maXTouch-touchscreen-support.patch

    # Arch Linux patches

    0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch

-   0002-Bluetooth-btusb-check-conditions-before-enabling-USB.patch

+   0002-Bluetooth-btusb-Add-support-for-IMC-Networks-Mediate.patch

+   0003-Bluetooth-btusb-Add-support-for-Foxconn-Mediatek-Chi.patch

+   0004-ALSA-pcm-Check-mmap-capability-of-runtime-dma-buffer.patch

+   0005-ALSA-pci-rme-Set-up-buffer-type-properly.patch

+   0006-ALSA-pci-cs46xx-Fix-set-up-buffer-type-properly.patch

  )

  source_i686=(

    # avoid using zstd compression in ultra mode (exhausts virtual memory)
@@ -72,9 +76,9 @@ 

    '474402C8C582DAFBE389C427BCB7CF877E7D47A7' # Alexandre Oliva

    '6DB9C4B4F0D8C0DC432CF6E4227CA7C556B2BA78' # David P.

  )

- sha512sums=('a24f2db9316297127447b3d7fd7a1e9e7b9a8bdb5e59e6e341568cbf877c4b65d2ccdb27ec1c23b07af6c365b2930b040bcef0d989202b503bc55b107c04d121'

+ sha512sums=('18798d032184ce141216ad72fcbb5ddb340809fe8d953acb50700aa0b47d36fca104dcedc7521fb3aea913d8fbeb4bd3eab1cf2c955388e6996c4154eac67d0c'

              'SKIP'

-             '53a9a1abfb8ae6e73337986ed780034d5ecf4d89bf1bbf7d4c2b5b04b527b00296c7c427045c8ab454a175db1ab272c76ef115edd4b88f4f530cbd884e604bb5'

+             '951cdb68af3bbf3b841376f82fd9c82dfd7a159cae8564e5d772f99f3170deafcabc00cb0ecfa6e7669c22087577f2eafa47d3b50bc8ea6ee5edbc65821986e1'

              'SKIP'

              '13cb5bc42542e7b8bb104d5f68253f6609e463b6799800418af33eb0272cc269aaa36163c3e6f0aacbdaaa1d05e2827a4a7c4a08a029238439ed08b89c564bb3'

              'SKIP'
@@ -82,8 +86,8 @@ 

              'SKIP'

              '267295aa0cea65684968420c68b32f1a66a22d018b9d2b2c1ef14267bcf4cb68aaf7099d073cbfefe6c25c8608bdcbbd45f7ac8893fdcecbf1e621abdfe9ecc1'

              'SKIP'

-             '929fd5c34b07a63b5e50296523a6b3686ac9014a74ed5e41b0b1f0b169306ee2dace9e9259b4222c84fb1edb9a96e09bcd3d7f0e5611bef93f5c8754a67a3367'

-             'e78d10fe5d709e714dfc2e56a487de7d03e0fcaca17d48cd279659ab930f44ef903683d3f6f10b1330f59f15e80c7571f6bd3d47d75fdaed7d93999346b8af57'

+             '4e9ac0b6d4dd3a8074259e71dab9db90b44bc0231d134c4dce798fee13b15bfdda2bf0926d3a1f98e596ab633f2ba3640d92ccab5ae6defffad9dd352fd35112'

+             '6032a527651f9e8053728cec73afa50aa056264b402372899927848a287ad27291335afe00848f0d41a7adb7d662c3a26def7c5c91777bed3ed325c4ec41a035'

              '51e8b4da770067e8257d292622d865cb16ac57fdfd8967bdfb74efec197dae9eab958e5637a728640ae60885bdde41c06c8076227a4f83db0b752215f91f3a87'

              '53103bf55b957b657039510527df0df01279dec59cda115a4d6454e4135025d4546167fa30bdc99107f232561c1e096d8328609ab5a876cf7017176f92ad3e0b'

              '167bc73c6c1c63931806238905dc44c7d87c5a5c0f6293159f2133dfe717fb44081018d810675716d1605ec7dff5e8333b87b19e09e2de21d0448e447437873b'
@@ -91,8 +95,12 @@ 

              '143dea30c6da00e504c99984a98a0eb2411f558fcdd9dfa7f607d6c14e9e7dffff9cb00121d9317044b07e3e210808286598c785ee854084b993ec9cb14d8232'

              '02af4dd2a007e41db0c63822c8ab3b80b5d25646af1906dc85d0ad9bb8bbf5236f8e381d7f91cf99ed4b0978c50aee37cb9567cdeef65b7ec3d91b882852b1af'

              'b8fe56e14006ab866970ddbd501c054ae37186ddc065bb869cf7d18db8c0d455118d5bda3255fb66a0dde38b544655cfe9040ffe46e41d19830b47959b2fb168'

-             'fac53c8ce68e9f56c8930a9392c89377c909f6a43a318010194949def91a104f34f46c2b32457e571435a8b326c47a48737ceb6255644bb6d42c59b27b07449a'

-             '722d92b750f0a5af39b850c18ff0c57dac0165e3c0219415843ec5207945971448790fec3fca570b62c8726c89b0ca6b7a5b16fd503e4581b3a63b3adfcf2c50')

+             'dba36283b9ea3db5fcc9a72051a8e9cf4d409ec59769e6da9db4d321b72972242670210ad961a37f62aba68f7262e9f2f6308cfe62cda9fa050c72363a0c404a'

+             '693ac0e0e32cd0ab6c485deb43d6408dc9fc31234e4113206cf901a302eddf1a965f97f82ed7186f6426c085176ce95c48e116e9824d92bfd1f6656447da18dc'

+             'c4a19ccec8b7636f1b5b1cf8e135e46d3aa4d233af4a1e72c2aaa83536505013f0c83602fe05ce08212b4327bebfb4f8a84b57c0d81509f0b48df5dfcc334254'

+             '4d81c2995e7cc5fc36929eb5bf9cc68ec02cb24147f18a88da79facd3e25182b156ca4430bf2765ff1e4c6be237d3a3e527498cd49d75217a5e16b62a478be6d'

+             '12c0da7fbd4e4e6ffc473ecd6dffee1dd61c201dad854347400c8f551adc35c033d6fa623cc5c1b2fe7930cdab868a8c99c6874ee171c9143e0f370398759c96'

+             '7f6fd402d8c29ee4f6c98ed2236318ab3f57f3dd47a92911e1b556df251b67fc83f7256223f06d1fefa849a3ceb5e40d247d2d5664ddd7cd9749bab4bc1ecb36')

  sha512sums_i686=('3a346ff5e0fdefafd28bc3dd0e4b6cd68e3f0014e59d1611d99f2edb8d074fd32649eeb0894a7e340e4f907b5cfc0e08e0753e0427a68dc113bb22835a892968')

  sha512sums_armv7h=('a4aa00ca3f03d524d3fb6379116c4e4e7908e7c30f6347f55be256c44d806d8db5f04c96369d5a725e45b7390e9fde842f388cdc5d5699d80ec5d1519f7367f4'

                     'SKIP'
@@ -171,6 +179,7 @@ 

    echo "Setting config..."

    cp ../config.$CARCH .config

    make olddefconfig

+   diff -u ../config .config || :

  

    make -s kernelrelease > version

    echo "Prepared $pkgbase version $(<version)"

file modified
+111 -48
@@ -1,6 +1,6 @@ 

  #

  # Automatically generated file; DO NOT EDIT.

- # Linux/x86 5.13.8-gnu Kernel Configuration

+ # Linux/x86 5.14.11-gnu Kernel Configuration

  #

  CONFIG_CC_VERSION_TEXT="gcc (GCC) 11.1.0"

  CONFIG_CC_IS_GCC=y
@@ -16,6 +16,7 @@ 

  CONFIG_CC_HAS_ASM_GOTO=y

  CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y

  CONFIG_CC_HAS_ASM_INLINE=y

+ CONFIG_CC_HAS_NO_PROFILE_FN_ATTR=y

  CONFIG_IRQ_WORK=y

  CONFIG_BUILDTIME_TABLE_SORT=y

  CONFIG_THREAD_INFO_IN_TASK=y
@@ -120,6 +121,7 @@ 

  CONFIG_PREEMPT_COUNT=y

  CONFIG_PREEMPTION=y

  CONFIG_PREEMPT_DYNAMIC=y

+ CONFIG_SCHED_CORE=y

  

  #

  # CPU/Task time and stats accounting
@@ -324,7 +326,6 @@ 

  #

  # Processor type and features

  #

- CONFIG_ZONE_DMA=y

  CONFIG_SMP=y

  CONFIG_X86_FEATURE_NAMES=y

  CONFIG_X86_MPPARSE=y
@@ -449,7 +450,6 @@ 

  # CONFIG_HIGHPTE is not set

  CONFIG_X86_CHECK_BIOS_CORRUPTION=y

  CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y

- CONFIG_X86_RESERVE_LOW=64

  CONFIG_MTRR=y

  CONFIG_MTRR_SANITIZER=y

  CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=1
@@ -572,6 +572,7 @@ 

  CONFIG_CHT_WC_PMIC_OPREGION=y

  CONFIG_CHT_DC_TI_PMIC_OPREGION=y

  CONFIG_TPS68470_PMIC_OPREGION=y

+ CONFIG_ACPI_VIOT=y

  CONFIG_X86_PM_TIMER=y

  CONFIG_X86_APM_BOOT=y

  CONFIG_APM=y
@@ -745,6 +746,7 @@ 

  CONFIG_HAVE_KVM_IRQ_BYPASS=y

  CONFIG_HAVE_KVM_NO_POLL=y

  CONFIG_KVM_XFER_TO_GUEST_WORK=y

+ CONFIG_HAVE_KVM_PM_NOTIFIER=y

  CONFIG_VIRTUALIZATION=y

  CONFIG_KVM=m

  CONFIG_KVM_INTEL=m
@@ -789,6 +791,7 @@ 

  CONFIG_ARCH_HAS_SET_DIRECT_MAP=y

  CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y

  CONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT=y

+ CONFIG_ARCH_WANTS_NO_INSTR=y

  CONFIG_ARCH_32BIT_OFF_T=y

  CONFIG_HAVE_ASM_MODVERSIONS=y

  CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
@@ -819,6 +822,8 @@ 

  CONFIG_HAVE_STACKPROTECTOR=y

  CONFIG_STACKPROTECTOR=y

  CONFIG_STACKPROTECTOR_STRONG=y

+ CONFIG_ARCH_SUPPORTS_LTO_CLANG=y

+ CONFIG_ARCH_SUPPORTS_LTO_CLANG_THIN=y

  CONFIG_LTO_NONE=y

  CONFIG_HAVE_ARCH_WITHIN_STACK_FRAMES=y

  CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
@@ -839,7 +844,7 @@ 

  CONFIG_OLD_SIGACTION=y

  CONFIG_COMPAT_32BIT_TIME=y

  CONFIG_HAVE_ARCH_RANDOMIZE_KSTACK_OFFSET=y

- # CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT is not set

+ CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT=y

  CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y

  CONFIG_STRICT_KERNEL_RWX=y

  CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
@@ -905,9 +910,11 @@ 

  CONFIG_BLK_DEV_THROTTLING_LOW=y

  # CONFIG_BLK_CMDLINE_PARSER is not set

  CONFIG_BLK_WBT=y

+ CONFIG_BLK_WBT_MQ=y

  CONFIG_BLK_CGROUP_IOLATENCY=y

+ CONFIG_BLK_CGROUP_FC_APPID=y

  CONFIG_BLK_CGROUP_IOCOST=y

- CONFIG_BLK_WBT_MQ=y

+ CONFIG_BLK_CGROUP_IOPRIO=y

  CONFIG_BLK_DEBUG_FS=y

  CONFIG_BLK_DEBUG_FS_ZONED=y

  CONFIG_BLK_SED_OPAL=y
@@ -989,7 +996,6 @@ 

  CONFIG_FLATMEM_MANUAL=y

  # CONFIG_SPARSEMEM_MANUAL is not set

  CONFIG_FLATMEM=y

- CONFIG_FLAT_NODE_MEM_MAP=y

  CONFIG_SPARSEMEM_STATIC=y

  CONFIG_HAVE_FAST_GUP=y

  CONFIG_MEMORY_ISOLATION=y
@@ -1040,6 +1046,7 @@ 

  CONFIG_GENERIC_EARLY_IOREMAP=y

  CONFIG_IDLE_PAGE_TRACKING=y

  CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y

+ CONFIG_ZONE_DMA=y

  CONFIG_HMM_MIRROR=y

  CONFIG_VMAP_PFN=y

  # CONFIG_PERCPU_STATS is not set
@@ -1048,6 +1055,7 @@ 

  CONFIG_ARCH_HAS_PTE_SPECIAL=y

  CONFIG_MAPPING_DIRTY_HELPERS=y

  CONFIG_KMAP_LOCAL=y

+ CONFIG_SECRETMEM=y

  # end of Memory Management options

  

  CONFIG_NET=y
@@ -1189,6 +1197,7 @@ 

  CONFIG_NETFILTER_NETLINK=m

  CONFIG_NETFILTER_FAMILY_BRIDGE=y

  CONFIG_NETFILTER_FAMILY_ARP=y

+ CONFIG_NETFILTER_NETLINK_HOOK=m

  CONFIG_NETFILTER_NETLINK_ACCT=m

  CONFIG_NETFILTER_NETLINK_QUEUE=m

  CONFIG_NETFILTER_NETLINK_LOG=m
@@ -1570,7 +1579,6 @@ 

  # CONFIG_BRIDGE_MRP is not set

  CONFIG_BRIDGE_CFM=y

  CONFIG_NET_DSA=m

- CONFIG_NET_DSA_TAG_8021Q=m

  CONFIG_NET_DSA_TAG_AR9331=m

  CONFIG_NET_DSA_TAG_BRCM_COMMON=m

  CONFIG_NET_DSA_TAG_BRCM=m
@@ -1764,6 +1772,7 @@ 

  CONFIG_QRTR_MHI=m

  CONFIG_NET_NCSI=y

  CONFIG_NCSI_OEM_CMD_GET_MAC=y

+ CONFIG_NCSI_OEM_CMD_KEEP_PHY=y

  CONFIG_PCPU_DEV_REFCNT=y

  CONFIG_RPS=y

  CONFIG_RFS_ACCEL=y
@@ -2146,6 +2155,7 @@ 

  CONFIG_CXL_BUS=m

  CONFIG_CXL_MEM=m

  # CONFIG_CXL_MEM_RAW_COMMANDS is not set

+ CONFIG_CXL_ACPI=m

  CONFIG_PCCARD=m

  CONFIG_PCMCIA=m

  CONFIG_PCMCIA_LOAD_CIS=y
@@ -2288,6 +2298,7 @@ 

  # CONFIG_MTD_PMC551 is not set

  # CONFIG_MTD_DATAFLASH is not set

  # CONFIG_MTD_MCHP23K256 is not set

+ # CONFIG_MTD_MCHP48L640 is not set

  # CONFIG_MTD_SST25L is not set

  # CONFIG_MTD_SLRAM is not set

  CONFIG_MTD_PHRAM=m
@@ -2522,9 +2533,6 @@ 

  CONFIG_PVPANIC_PCI=m

  # end of Misc devices

  

- CONFIG_HAVE_IDE=y

- # CONFIG_IDE is not set

- 

  #

  # SCSI device support

  #
@@ -2608,6 +2616,7 @@ 

  CONFIG_SCSI_MPT2SAS_MAX_SGE=128

  CONFIG_SCSI_MPT3SAS_MAX_SGE=128

  CONFIG_SCSI_MPT2SAS=m

+ CONFIG_SCSI_MPI3MR=m

  CONFIG_SCSI_SMARTPQI=m

  CONFIG_SCSI_UFSHCD=m

  CONFIG_SCSI_UFSHCD_PCI=m
@@ -2661,6 +2670,7 @@ 

  CONFIG_QEDF=m

  CONFIG_SCSI_LPFC=m

  # CONFIG_SCSI_LPFC_DEBUG_FS is not set

+ CONFIG_SCSI_EFCT=m

  CONFIG_SCSI_DC395x=m

  CONFIG_SCSI_AM53C974=m

  CONFIG_SCSI_NSP32=m
@@ -3158,6 +3168,7 @@ 

  CONFIG_MLX5_EN_RXNFC=y

  CONFIG_MLX5_MPFS=y

  CONFIG_MLX5_ESWITCH=y

+ CONFIG_MLX5_BRIDGE=y

  CONFIG_MLX5_CLS_ACT=y

  CONFIG_MLX5_TC_CT=y

  CONFIG_MLX5_TC_SAMPLE=y
@@ -3174,8 +3185,6 @@ 

  CONFIG_MLXSW_CORE_THERMAL=y

  CONFIG_MLXSW_PCI=m

  CONFIG_MLXSW_I2C=m

- CONFIG_MLXSW_SWITCHIB=m

- CONFIG_MLXSW_SWITCHX2=m

  CONFIG_MLXSW_SPECTRUM=m

  CONFIG_MLXSW_SPECTRUM_DCB=y

  CONFIG_MLXSW_MINIMAL=m
@@ -3290,6 +3299,7 @@ 

  CONFIG_DWMAC_GENERIC=m

  # CONFIG_DWMAC_INTEL_PLAT is not set

  CONFIG_DWMAC_INTEL=m

+ CONFIG_DWMAC_LOONGSON=m

  CONFIG_STMMAC_PCI=m

  CONFIG_NET_VENDOR_SUN=y

  CONFIG_HAPPYMEAL=m
@@ -3356,10 +3366,12 @@ 

  CONFIG_MARVELL_PHY=m

  CONFIG_MARVELL_10G_PHY=m

  CONFIG_MARVELL_88X2222_PHY=m

+ CONFIG_MEDIATEK_GE_PHY=m

  CONFIG_MICREL_PHY=m

  CONFIG_MICROCHIP_PHY=m

  # CONFIG_MICROCHIP_T1_PHY is not set

  CONFIG_MICROSEMI_PHY=m

+ CONFIG_MOTORCOMM_PHY=m

  CONFIG_NATIONAL_PHY=m

  CONFIG_NXP_C45_TJA11XX_PHY=m

  CONFIG_NXP_TJA11XX_PHY=m
@@ -3381,7 +3393,9 @@ 

  CONFIG_MICREL_KS8995MA=m

  CONFIG_MDIO_DEVICE=m

  CONFIG_MDIO_BUS=m

+ CONFIG_FWNODE_MDIO=m

  CONFIG_OF_MDIO=m

+ CONFIG_ACPI_MDIO=m

  CONFIG_MDIO_DEVRES=m

  CONFIG_MDIO_BITBANG=m

  CONFIG_MDIO_BCM_UNIMAC=m
@@ -3788,7 +3802,10 @@ 

  # Wireless WAN

  #

  CONFIG_WWAN=y

+ CONFIG_WWAN_HWSIM=m

  CONFIG_MHI_WWAN_CTRL=m

+ CONFIG_RPMSG_WWAN_CTRL=m

+ CONFIG_IOSM=m

  # end of Wireless WAN

  

  CONFIG_VMXNET3=m
@@ -3949,6 +3966,7 @@ 

  CONFIG_JOYSTICK_WALKERA0701=m

  # CONFIG_JOYSTICK_PSXPAD_SPI is not set

  CONFIG_JOYSTICK_PXRC=m

+ CONFIG_JOYSTICK_QWIIC=m

  CONFIG_JOYSTICK_FSIA6B=m

  CONFIG_INPUT_TABLET=y

  CONFIG_TABLET_USB_ACECAD=m
@@ -4311,8 +4329,6 @@ 

  CONFIG_NSC_GPIO=m

  CONFIG_DEVMEM=y

  CONFIG_NVRAM=y

- CONFIG_RAW_DRIVER=m

- CONFIG_MAX_RAW_DEVS=8192

  CONFIG_DEVPORT=y

  CONFIG_HPET=y

  # CONFIG_HPET_MMAP is not set
@@ -4336,9 +4352,11 @@ 

  CONFIG_TCG_TIS_ST33ZP24_I2C=m

  CONFIG_TCG_TIS_ST33ZP24_SPI=m

  CONFIG_TELCLOCK=m

+ CONFIG_XILLYBUS_CLASS=m

  CONFIG_XILLYBUS=m

  CONFIG_XILLYBUS_PCIE=m

  # CONFIG_XILLYBUS_OF is not set

+ CONFIG_XILLYUSB=m

  # end of Character devices

  

  # CONFIG_RANDOM_TRUST_CPU is not set
@@ -4982,6 +5000,7 @@ 

  CONFIG_SENSORS_BPA_RS600=m

  CONFIG_SENSORS_FSP_3Y=m

  CONFIG_SENSORS_IBM_CFFPS=m

+ CONFIG_SENSORS_DPS920AB=m

  CONFIG_SENSORS_INSPUR_IPSPS=m

  CONFIG_SENSORS_IR35221=m

  CONFIG_SENSORS_IR36021=m
@@ -5000,7 +5019,9 @@ 

  CONFIG_SENSORS_MAX31785=m

  CONFIG_SENSORS_MAX34440=m

  CONFIG_SENSORS_MAX8688=m

+ CONFIG_SENSORS_MP2888=m

  CONFIG_SENSORS_MP2975=m

+ CONFIG_SENSORS_PIM4328=m

  CONFIG_SENSORS_PM6764TR=m

  CONFIG_SENSORS_PXE1610=m

  CONFIG_SENSORS_Q54SJ108A2=m
@@ -5016,6 +5037,7 @@ 

  CONFIG_SENSORS_SHT15=m

  CONFIG_SENSORS_SHT21=m

  CONFIG_SENSORS_SHT3x=m

+ CONFIG_SENSORS_SHT4x=m

  CONFIG_SENSORS_SHTC1=m

  CONFIG_SENSORS_SIS5595=m

  CONFIG_SENSORS_DME1737=m
@@ -5120,6 +5142,7 @@ 

  CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y

  CONFIG_WATCHDOG_OPEN_TIMEOUT=0

  CONFIG_WATCHDOG_SYSFS=y

+ # CONFIG_WATCHDOG_HRTIMER_PRETIMEOUT is not set

  

  #

  # Watchdog Pretimeout Governors
@@ -5322,11 +5345,12 @@ 

  CONFIG_PCF50633_GPIO=m

  CONFIG_UCB1400_CORE=m

  CONFIG_MFD_RDC321X=m

+ CONFIG_MFD_RT4831=m

  CONFIG_MFD_RT5033=m

  CONFIG_MFD_RC5T583=y

  # CONFIG_MFD_RK808 is not set

  # CONFIG_MFD_RN5T618 is not set

- CONFIG_MFD_SEC_CORE=y

+ # CONFIG_MFD_SEC_CORE is not set

  CONFIG_MFD_SI476X_CORE=m

  CONFIG_MFD_SM501=m

  CONFIG_MFD_SM501_GPIO=y
@@ -5344,7 +5368,6 @@ 

  CONFIG_MFD_TPS65086=m

  CONFIG_MFD_TPS65090=y

  # CONFIG_MFD_TPS65217 is not set

- CONFIG_MFD_TPS68470=y

  CONFIG_MFD_TI_LP873X=m

  # CONFIG_MFD_TI_LP87565 is not set

  # CONFIG_MFD_TPS65218 is not set
@@ -5364,7 +5387,7 @@ 

  CONFIG_MFD_TQMX86=m

  CONFIG_MFD_VX855=m

  # CONFIG_MFD_LOCHNAGAR is not set

- CONFIG_MFD_ARIZONA=y

+ CONFIG_MFD_ARIZONA=m

  CONFIG_MFD_ARIZONA_I2C=m

  CONFIG_MFD_ARIZONA_SPI=m

  CONFIG_MFD_CS47L24=y
@@ -5388,6 +5411,7 @@ 

  CONFIG_MFD_WCD934X=m

  CONFIG_MFD_ATC260X=m

  CONFIG_MFD_ATC260X_I2C=m

+ # CONFIG_MFD_QCOM_PM8008 is not set

  CONFIG_RAVE_SP_CORE=m

  CONFIG_MFD_INTEL_M10_BMC=m

  # end of Multifunction device drivers
@@ -5437,6 +5461,7 @@ 

  CONFIG_REGULATOR_MAX1586=m

  CONFIG_REGULATOR_MAX8649=m

  CONFIG_REGULATOR_MAX8660=m

+ CONFIG_REGULATOR_MAX8893=m

  CONFIG_REGULATOR_MAX8907=m

  CONFIG_REGULATOR_MAX8925=m

  CONFIG_REGULATOR_MAX8952=m
@@ -5456,6 +5481,7 @@ 

  CONFIG_REGULATOR_MT6311=m

  CONFIG_REGULATOR_MT6323=m

  # CONFIG_REGULATOR_MT6358 is not set

+ CONFIG_REGULATOR_MT6359=m

  CONFIG_REGULATOR_MT6397=m

  CONFIG_REGULATOR_PALMAS=m

  CONFIG_REGULATOR_PCA9450=m
@@ -5470,11 +5496,11 @@ 

  CONFIG_REGULATOR_RASPBERRYPI_TOUCHSCREEN_ATTINY=m

  CONFIG_REGULATOR_RC5T583=m

  CONFIG_REGULATOR_RT4801=m

+ CONFIG_REGULATOR_RT4831=m

  CONFIG_REGULATOR_RT5033=m

+ CONFIG_REGULATOR_RT6160=m

+ CONFIG_REGULATOR_RT6245=m

  CONFIG_REGULATOR_RTMV20=m

- CONFIG_REGULATOR_S2MPA01=m

- CONFIG_REGULATOR_S2MPS11=m

- CONFIG_REGULATOR_S5M8767=m

  CONFIG_REGULATOR_SKY81452=m

  CONFIG_REGULATOR_SLG51000=m

  # CONFIG_REGULATOR_SY8106A is not set
@@ -5585,6 +5611,7 @@ 

  CONFIG_V4L2_MEM2MEM_DEV=m

  CONFIG_V4L2_FLASH_LED_CLASS=m

  CONFIG_V4L2_FWNODE=m

+ CONFIG_V4L2_ASYNC=m

  CONFIG_VIDEOBUF_GEN=m

  CONFIG_VIDEOBUF_DMA_SG=m

  CONFIG_VIDEOBUF_VMALLOC=m
@@ -5619,7 +5646,6 @@ 

  #

  # Drivers filtered as selected at 'Filter media drivers'

  #

- CONFIG_TTPCI_EEPROM=m

  CONFIG_MEDIA_USB_SUPPORT=y

  

  #
@@ -5790,7 +5816,6 @@ 

  # Media capture/analog TV support

  #

  CONFIG_VIDEO_IVTV=m

- # CONFIG_VIDEO_IVTV_DEPRECATED_IOCTLS is not set

  CONFIG_VIDEO_IVTV_ALSA=m

  CONFIG_VIDEO_FB_IVTV=m

  # CONFIG_VIDEO_FB_IVTV_FORCE_PAT is not set
@@ -5827,14 +5852,10 @@ 

  #

  # Media digital TV PCI Adapters

  #

- CONFIG_DVB_AV7110_IR=y

- CONFIG_DVB_AV7110=m

- CONFIG_DVB_AV7110_OSD=y

  CONFIG_DVB_BUDGET_CORE=m

  CONFIG_DVB_BUDGET=m

  CONFIG_DVB_BUDGET_CI=m

  CONFIG_DVB_BUDGET_AV=m

- CONFIG_DVB_BUDGET_PATCH=m

  CONFIG_DVB_B2C2_FLEXCOP_PCI=m

  # CONFIG_DVB_B2C2_FLEXCOP_PCI_DEBUG is not set

  CONFIG_DVB_PLUTO2=m
@@ -5882,6 +5903,7 @@ 

  #

  CONFIG_VIDEO_CX2341X=m

  CONFIG_VIDEO_TVEEPROM=m

+ CONFIG_TTPCI_EEPROM=m

  CONFIG_CYPRESS_FIRMWARE=m

  CONFIG_VIDEOBUF2_CORE=m

  CONFIG_VIDEOBUF2_V4L2=m
@@ -5981,6 +6003,7 @@ 

  CONFIG_VIDEO_APTINA_PLL=m

  CONFIG_VIDEO_CCS_PLL=m

  CONFIG_VIDEO_HI556=m

+ CONFIG_VIDEO_IMX208=m

  CONFIG_VIDEO_IMX214=m

  CONFIG_VIDEO_IMX219=m

  CONFIG_VIDEO_IMX258=m
@@ -6169,7 +6192,6 @@ 

  #

  # DVB-T (terrestrial) frontends

  #

- CONFIG_DVB_SP8870=m

  CONFIG_DVB_SP887X=m

  CONFIG_DVB_CX22700=m

  CONFIG_DVB_CX22702=m
@@ -6298,7 +6320,6 @@ 

  CONFIG_DRM_DP_AUX_CHARDEV=y

  # CONFIG_DRM_DEBUG_SELFTEST is not set

  CONFIG_DRM_KMS_HELPER=m

- CONFIG_DRM_KMS_FB_HELPER=y

  CONFIG_DRM_FBDEV_EMULATION=y

  CONFIG_DRM_FBDEV_OVERALLOC=100

  CONFIG_DRM_LOAD_EDID_FIRMWARE=y
@@ -6456,10 +6477,12 @@ 

  # CONFIG_DRM_CDNS_DSI is not set

  # CONFIG_DRM_CHIPONE_ICN6211 is not set

  # CONFIG_DRM_CHRONTEL_CH7033 is not set

+ # CONFIG_DRM_CROS_EC_ANX7688 is not set

  # CONFIG_DRM_DISPLAY_CONNECTOR is not set

  # CONFIG_DRM_LONTIUM_LT8912B is not set

  # CONFIG_DRM_LONTIUM_LT9611 is not set

  # CONFIG_DRM_LONTIUM_LT9611UXC is not set

+ # CONFIG_DRM_ITE_IT66121 is not set

  # CONFIG_DRM_LVDS_CODEC is not set

  # CONFIG_DRM_MEGACHIPS_STDPXXXX_GE_B850V3_FW is not set

  # CONFIG_DRM_NWL_MIPI_DSI is not set
@@ -6477,6 +6500,7 @@ 

  # CONFIG_DRM_TOSHIBA_TC358768 is not set

  # CONFIG_DRM_TOSHIBA_TC358775 is not set

  # CONFIG_DRM_TI_TFP410 is not set

+ # CONFIG_DRM_TI_SN65DSI83 is not set

  # CONFIG_DRM_TI_SN65DSI86 is not set

  # CONFIG_DRM_TI_TPD12S015 is not set

  # CONFIG_DRM_ANALOGIX_ANX6345 is not set
@@ -6492,6 +6516,7 @@ 

  # CONFIG_DRM_ARCPGU is not set

  CONFIG_DRM_CIRRUS_QEMU=m

  CONFIG_DRM_GM12U320=m

+ CONFIG_DRM_SIMPLEDRM=m

  CONFIG_TINYDRM_HX8357D=m

  CONFIG_TINYDRM_ILI9225=m

  CONFIG_TINYDRM_ILI9341=m
@@ -6502,6 +6527,7 @@ 

  CONFIG_TINYDRM_ST7735R=m

  CONFIG_DRM_VBOXVIDEO=m

  CONFIG_DRM_GUD=m

+ CONFIG_DRM_HYPERV=m

  # CONFIG_DRM_LEGACY is not set

  CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y

  
@@ -6577,7 +6603,7 @@ 

  # CONFIG_FB_VIRTUAL is not set

  # CONFIG_FB_METRONOME is not set

  # CONFIG_FB_MB862XX is not set

- CONFIG_FB_HYPERV=m

+ # CONFIG_FB_HYPERV is not set

  CONFIG_FB_SIMPLE=y

  # CONFIG_FB_SSD1307 is not set

  # CONFIG_FB_SM712 is not set
@@ -6608,6 +6634,7 @@ 

  CONFIG_BACKLIGHT_MAX8925=m

  CONFIG_BACKLIGHT_APPLE=m

  CONFIG_BACKLIGHT_QCOM_WLED=m

+ CONFIG_BACKLIGHT_RT4831=m

  CONFIG_BACKLIGHT_SAHARA=m

  CONFIG_BACKLIGHT_WM831X=m

  CONFIG_BACKLIGHT_ADP5520=m
@@ -6866,7 +6893,7 @@ 

  CONFIG_SND_INTEL_NHLT=y

  CONFIG_SND_INTEL_DSP_CONFIG=m

  CONFIG_SND_INTEL_SOUNDWIRE_ACPI=m

- CONFIG_SND_INTEL_BYT_PREFER_SOF=y

+ # CONFIG_SND_INTEL_BYT_PREFER_SOF is not set

  CONFIG_SND_SPI=y

  CONFIG_SND_USB=y

  CONFIG_SND_USB_AUDIO=m
@@ -6968,6 +6995,8 @@ 

  CONFIG_SND_SOC_ACPI_INTEL_MATCH=m

  CONFIG_SND_SOC_INTEL_MACH=y

  CONFIG_SND_SOC_INTEL_USER_FRIENDLY_LONG_NAMES=y

+ CONFIG_SND_SOC_INTEL_HDA_DSP_COMMON=m

+ CONFIG_SND_SOC_INTEL_SOF_MAXIM_COMMON=m

  CONFIG_SND_SOC_INTEL_HASWELL_MACH=m

  CONFIG_SND_SOC_INTEL_BDW_RT5650_MACH=m

  CONFIG_SND_SOC_INTEL_BDW_RT5677_MACH=m
@@ -7000,6 +7029,7 @@ 

  CONFIG_SND_SOC_INTEL_GLK_RT5682_MAX98357A_MACH=m

  CONFIG_SND_SOC_INTEL_SKL_HDA_DSP_GENERIC_MACH=m

  CONFIG_SND_SOC_INTEL_SOF_RT5682_MACH=m

+ CONFIG_SND_SOC_INTEL_SOF_CS42L42_MACH=m

  CONFIG_SND_SOC_INTEL_SOF_PCM512x_MACH=m

  CONFIG_SND_SOC_INTEL_CML_LP_DA7219_MAX98357A_MACH=m

  CONFIG_SND_SOC_INTEL_SOF_CML_RT1011_RT5682_MACH=m
@@ -7202,6 +7232,7 @@ 

  CONFIG_SND_SOC_SIMPLE_MUX=m

  CONFIG_SND_SOC_SPDIF=m

  # CONFIG_SND_SOC_SSM2305 is not set

+ CONFIG_SND_SOC_SSM2518=m

  CONFIG_SND_SOC_SSM2602=m

  CONFIG_SND_SOC_SSM2602_SPI=m

  CONFIG_SND_SOC_SSM2602_I2C=m
@@ -7219,6 +7250,7 @@ 

  CONFIG_SND_SOC_TAS6424=m

  CONFIG_SND_SOC_TDA7419=m

  CONFIG_SND_SOC_TFA9879=m

+ CONFIG_SND_SOC_TFA989X=m

  CONFIG_SND_SOC_TLV320AIC23=m

  CONFIG_SND_SOC_TLV320AIC23_I2C=m

  CONFIG_SND_SOC_TLV320AIC23_SPI=m
@@ -7235,7 +7267,10 @@ 

  # CONFIG_SND_SOC_TSCS454 is not set

  CONFIG_SND_SOC_UDA1334=m

  CONFIG_SND_SOC_WCD9335=m

+ CONFIG_SND_SOC_WCD_MBHC=m

  CONFIG_SND_SOC_WCD934X=m

+ CONFIG_SND_SOC_WCD938X=m

+ CONFIG_SND_SOC_WCD938X_SDW=m

  CONFIG_SND_SOC_WM5102=m

  CONFIG_SND_SOC_WM8510=m

  CONFIG_SND_SOC_WM8523=m
@@ -7263,7 +7298,6 @@ 

  CONFIG_SND_SOC_WM8985=m

  CONFIG_SND_SOC_WSA881X=m

  # CONFIG_SND_SOC_ZL38060 is not set

- CONFIG_SND_SOC_ZX_AUD96P22=m

  CONFIG_SND_SOC_MAX9759=m

  # CONFIG_SND_SOC_MT6351 is not set

  CONFIG_SND_SOC_MT6358=m
@@ -7968,7 +8002,7 @@ 

  CONFIG_LEDS_REGULATOR=m

  CONFIG_LEDS_BD2802=m

  CONFIG_LEDS_INTEL_SS4200=m

- # CONFIG_LEDS_LT3593 is not set

+ CONFIG_LEDS_LT3593=m

  CONFIG_LEDS_ADP5520=m

  CONFIG_LEDS_MC13783=m

  CONFIG_LEDS_TCA6507=m
@@ -8065,7 +8099,7 @@ 

  CONFIG_INFINIBAND_MTHCA=m

  CONFIG_INFINIBAND_MTHCA_DEBUG=y

  CONFIG_INFINIBAND_CXGB4=m

- CONFIG_INFINIBAND_I40IW=m

+ CONFIG_INFINIBAND_IRDMA=m

  CONFIG_MLX4_INFINIBAND=m

  CONFIG_MLX5_INFINIBAND=m

  CONFIG_INFINIBAND_OCRDMA=m
@@ -8172,7 +8206,6 @@ 

  CONFIG_RTC_DRV_RV3028=m

  CONFIG_RTC_DRV_RV3032=m

  CONFIG_RTC_DRV_RV8803=m

- CONFIG_RTC_DRV_S5M=m

  CONFIG_RTC_DRV_SD3078=m

  

  #
@@ -8342,7 +8375,6 @@ 

  CONFIG_VFIO_PCI_INTX=y

  CONFIG_VFIO_PCI_IGD=y

  CONFIG_VFIO_MDEV=m

- CONFIG_VFIO_MDEV_DEVICE=m

  CONFIG_IRQ_BYPASS_MANAGER=m

  CONFIG_VIRT_DRIVERS=y

  CONFIG_VBOXGUEST=m
@@ -8469,6 +8501,11 @@ 

  # CONFIG_INTEL_ATOMISP is not set

  # CONFIG_VIDEO_ZORAN is not set

  CONFIG_VIDEO_IPU3_IMGU=m

+ CONFIG_DVB_AV7110_IR=y

+ CONFIG_DVB_AV7110=m

+ CONFIG_DVB_AV7110_OSD=y

+ CONFIG_DVB_BUDGET_PATCH=m

+ CONFIG_DVB_SP8870=m

  

  #

  # Android
@@ -8482,6 +8519,7 @@ 

  CONFIG_FWTTY_MAX_CARD_PORTS=32

  CONFIG_GS_FPGABOOT=m

  CONFIG_UNISYSSPAR=y

+ # CONFIG_COMMON_CLK_XLNX_CLKWZRD is not set

  # CONFIG_FB_TFT is not set

  CONFIG_MOST_COMPONENTS=m

  CONFIG_MOST_NET=m
@@ -8493,11 +8531,6 @@ 

  # CONFIG_XIL_AXIS_FIFO is not set

  CONFIG_FIELDBUS_DEV=m

  # CONFIG_HMS_ANYBUSS_BUS is not set

- CONFIG_KPC2000=y

- CONFIG_KPC2000_CORE=m

- CONFIG_KPC2000_SPI=m

- CONFIG_KPC2000_I2C=m

- CONFIG_KPC2000_DMA=m

  CONFIG_QLGE=m

  CONFIG_WFX=m

  CONFIG_X86_PLATFORM_DEVICES=y
@@ -8533,6 +8566,7 @@ 

  CONFIG_DELL_SMBIOS_SMM=y

  CONFIG_DELL_SMO8800=m

  CONFIG_DELL_WMI=m

+ CONFIG_DELL_WMI_PRIVACY=y

  CONFIG_DELL_WMI_AIO=m

  CONFIG_DELL_WMI_DESCRIPTOR=m

  CONFIG_DELL_WMI_LED=m
@@ -8542,7 +8576,7 @@ 

  CONFIG_FUJITSU_TABLET=m

  CONFIG_GPD_POCKET_FAN=m

  CONFIG_HP_ACCEL=m

- CONFIG_HP_WIRELESS=m

+ CONFIG_WIRELESS_HOTKEY=m

  CONFIG_HP_WMI=m

  CONFIG_TC1100_WMI=m

  CONFIG_IBM_RTL=m
@@ -8555,9 +8589,12 @@ 

  # CONFIG_THINKPAD_ACPI_UNSAFE_LEDS is not set

  CONFIG_THINKPAD_ACPI_VIDEO=y

  CONFIG_THINKPAD_ACPI_HOTKEY_POLL=y

+ CONFIG_THINKPAD_LMI=m

+ CONFIG_X86_PLATFORM_DRIVERS_INTEL=y

+ CONFIG_INTEL_CHT_INT33FE=m

+ CONFIG_INTEL_SKL_INT3472=m

  CONFIG_INTEL_ATOMISP2_LED=m

  CONFIG_INTEL_ATOMISP2_PM=m

- CONFIG_INTEL_CHT_INT33FE=m

  CONFIG_INTEL_HID_EVENT=m

  CONFIG_INTEL_INT0002_VGPIO=m

  CONFIG_INTEL_MENLOW=m
@@ -8585,6 +8622,7 @@ 

  CONFIG_I2C_MULTI_INSTANTIATE=m

  CONFIG_MLX_PLATFORM=m

  CONFIG_TOUCHSCREEN_DMI=y

+ CONFIG_FW_ATTR_CLASS=m

  CONFIG_INTEL_IPS=m

  CONFIG_INTEL_RST=m

  CONFIG_INTEL_SMARTCONNECT=m
@@ -8641,10 +8679,18 @@ 

  CONFIG_SURFACE_AGGREGATOR_BUS=y

  # CONFIG_SURFACE_AGGREGATOR_ERROR_INJECTION is not set

  CONFIG_HAVE_CLK=y

- CONFIG_CLKDEV_LOOKUP=y

  CONFIG_HAVE_CLK_PREPARE=y

  CONFIG_COMMON_CLK=y

  CONFIG_COMMON_CLK_WM831X=m

+ 

+ #

+ # Clock driver for ARM Reference designs

+ #

+ # CONFIG_ICST is not set

+ # CONFIG_CLK_SP810 is not set

+ # end of Clock driver for ARM Reference designs

+ 

+ CONFIG_LMK04832=m

  CONFIG_COMMON_CLK_MAX9485=m

  CONFIG_COMMON_CLK_SI5341=m

  CONFIG_COMMON_CLK_SI5351=m
@@ -8654,7 +8700,6 @@ 

  CONFIG_COMMON_CLK_CDCE706=m

  # CONFIG_COMMON_CLK_CDCE925 is not set

  CONFIG_COMMON_CLK_CS2000_CP=m

- CONFIG_COMMON_CLK_S2MPS11=m

  CONFIG_CLK_TWL6040=m

  # CONFIG_COMMON_CLK_AXI_CLKGEN is not set

  CONFIG_COMMON_CLK_PALMAS=m
@@ -8700,6 +8745,7 @@ 

  CONFIG_INTEL_IOMMU_FLOPPY_WA=y

  CONFIG_INTEL_IOMMU_SCALABLE_MODE_DEFAULT_ON=y

  CONFIG_HYPERV_IOMMU=y

+ CONFIG_VIRTIO_IOMMU=m

  

  #

  # Remoteproc drivers
@@ -8850,6 +8896,9 @@ 

  # CONFIG_DMARD06 is not set

  CONFIG_DMARD09=m

  CONFIG_DMARD10=m

+ CONFIG_FXLS8962AF=m

+ CONFIG_FXLS8962AF_I2C=m

+ CONFIG_FXLS8962AF_SPI=m

  CONFIG_HID_SENSOR_ACCEL_3D=m

  CONFIG_IIO_CROS_EC_ACCEL_LEGACY=m

  CONFIG_IIO_ST_ACCEL_3AXIS=m
@@ -8871,6 +8920,7 @@ 

  CONFIG_MXC4005=m

  CONFIG_MXC6255=m

  CONFIG_SCA3000=m

+ CONFIG_SCA3300=m

  CONFIG_STK8312=m

  CONFIG_STK8BA50=m

  # end of Accelerometers
@@ -8942,6 +8992,7 @@ 

  CONFIG_TI_ADS131E08=m

  CONFIG_TI_AM335X_ADC=m

  CONFIG_TI_TLC4541=m

+ CONFIG_TI_TSC2046=m

  CONFIG_TWL4030_MADC=m

  CONFIG_TWL6030_GPADC=m

  # CONFIG_VF610_ADC is not set
@@ -8984,6 +9035,8 @@ 

  CONFIG_SCD30_SERIAL=m

  CONFIG_SENSIRION_SGP30=m

  CONFIG_SPS30=m

+ CONFIG_SPS30_I2C=m

+ CONFIG_SPS30_SERIAL=m

  CONFIG_VZ89X=m

  # end of Chemical Sensors

  
@@ -9158,6 +9211,9 @@ 

  CONFIG_IIO_ST_LSM6DSX=m

  CONFIG_IIO_ST_LSM6DSX_I2C=m

  CONFIG_IIO_ST_LSM6DSX_SPI=m

+ CONFIG_IIO_ST_LSM9DS0=m

+ CONFIG_IIO_ST_LSM9DS0_I2C=m

+ CONFIG_IIO_ST_LSM9DS0_SPI=m

  # end of Inertial measurement units

  

  CONFIG_IIO_ADIS_LIB=m
@@ -9210,6 +9266,7 @@ 

  CONFIG_TCS3472=m

  CONFIG_SENSORS_TSL2563=m

  CONFIG_TSL2583=m

+ CONFIG_TSL2591=m

  # CONFIG_TSL2772 is not set

  CONFIG_TSL4531=m

  CONFIG_US5182D=m
@@ -9367,6 +9424,7 @@ 

  CONFIG_MLX90632=m

  CONFIG_TMP006=m

  CONFIG_TMP007=m

+ CONFIG_TMP117=m

  CONFIG_TSYS01=m

  CONFIG_TSYS02D=m

  CONFIG_MAX31856=m
@@ -9420,6 +9478,7 @@ 

  #

  CONFIG_GENERIC_PHY=y

  CONFIG_USB_LGM_PHY=m

+ CONFIG_PHY_CAN_TRANSCEIVER=m

  CONFIG_BCM_KONA_USB2_PHY=m

  # CONFIG_PHY_CADENCE_TORRENT is not set

  # CONFIG_PHY_CADENCE_DPHY is not set
@@ -9545,6 +9604,7 @@ 

  CONFIG_INTERRUPT_CNT=m

  # CONFIG_FTM_QUADDEC is not set

  # CONFIG_MICROCHIP_TCB_CAPTURE is not set

+ CONFIG_INTEL_QEP=m

  CONFIG_MOST=m

  CONFIG_MOST_USB_HDM=m

  CONFIG_MOST_CDEV=m
@@ -10394,7 +10454,6 @@ 

  CONFIG_SBITMAP=y

  CONFIG_PARMAN=m

  CONFIG_OBJAGG=m

- # CONFIG_STRING_SELFTEST is not set

  # end of Library routines

  

  CONFIG_PLDMFW=y
@@ -10409,6 +10468,7 @@ 

  #

  CONFIG_PRINTK_TIME=y

  # CONFIG_PRINTK_CALLER is not set

+ CONFIG_STACKTRACE_BUILD_ID=y

  CONFIG_CONSOLE_LOGLEVEL_DEFAULT=4

  CONFIG_CONSOLE_LOGLEVEL_QUIET=1

  CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
@@ -10502,7 +10562,7 @@ 

  CONFIG_HAVE_ARCH_KFENCE=y

  CONFIG_KFENCE=y

  CONFIG_KFENCE_STATIC_KEYS=y

- CONFIG_KFENCE_SAMPLE_INTERVAL=0

+ CONFIG_KFENCE_SAMPLE_INTERVAL=100

  CONFIG_KFENCE_NUM_OBJECTS=255

  CONFIG_KFENCE_STRESS_TEST_FAULTS=0

  # end of Memory Debugging
@@ -10587,7 +10647,6 @@ 

  CONFIG_RCU_CPU_STALL_TIMEOUT=60

  # CONFIG_RCU_TRACE is not set

  # CONFIG_RCU_EQS_DEBUG is not set

- # CONFIG_RCU_STRICT_GRACE_PERIOD is not set

  # end of RCU Debugging

  

  # CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set
@@ -10626,6 +10685,8 @@ 

  # CONFIG_PREEMPT_TRACER is not set

  CONFIG_SCHED_TRACER=y

  CONFIG_HWLAT_TRACER=y

+ CONFIG_OSNOISE_TRACER=y

+ CONFIG_TIMERLAT_TRACER=y

  CONFIG_MMIOTRACE=y

  CONFIG_FTRACE_SYSCALLS=y

  CONFIG_TRACER_SNAPSHOT=y
@@ -10701,7 +10762,6 @@ 

  CONFIG_CC_HAS_SANCOV_TRACE_PC=y

  CONFIG_RUNTIME_TESTING_MENU=y

  # CONFIG_LKDTM is not set

- # CONFIG_TEST_LIST_SORT is not set

  # CONFIG_TEST_MIN_HEAP is not set

  # CONFIG_TEST_SORT is not set

  # CONFIG_TEST_DIV64 is not set
@@ -10714,10 +10774,12 @@ 

  # CONFIG_ATOMIC64_SELFTEST is not set

  CONFIG_ASYNC_RAID6_TEST=m

  # CONFIG_TEST_HEXDUMP is not set

+ # CONFIG_STRING_SELFTEST is not set

  # CONFIG_TEST_STRING_HELPERS is not set

  # CONFIG_TEST_STRSCPY is not set

  # CONFIG_TEST_KSTRTOX is not set

  # CONFIG_TEST_PRINTF is not set

+ # CONFIG_TEST_SCANF is not set

  # CONFIG_TEST_BITMAP is not set

  # CONFIG_TEST_UUID is not set

  # CONFIG_TEST_XARRAY is not set
@@ -10744,6 +10806,7 @@ 

  # CONFIG_TEST_MEMINIT is not set

  # CONFIG_TEST_FREE_PAGES is not set

  # CONFIG_TEST_FPU is not set

+ # CONFIG_TEST_CLOCKSOURCE_WATCHDOG is not set

  CONFIG_ARCH_USE_MEMTEST=y

  # CONFIG_MEMTEST is not set

  # CONFIG_HYPERV_TESTING is not set

file modified
+113 -49
@@ -1,6 +1,6 @@ 

  #

  # Automatically generated file; DO NOT EDIT.

- # Linux/x86 5.13.8-gnu Kernel Configuration

+ # Linux/x86 5.14.11-gnu Kernel Configuration

  #

  CONFIG_CC_VERSION_TEXT="gcc (GCC) 11.1.0"

  CONFIG_CC_IS_GCC=y
@@ -16,6 +16,7 @@ 

  CONFIG_CC_HAS_ASM_GOTO=y

  CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y

  CONFIG_CC_HAS_ASM_INLINE=y

+ CONFIG_CC_HAS_NO_PROFILE_FN_ATTR=y

  CONFIG_IRQ_WORK=y

  CONFIG_BUILDTIME_TABLE_SORT=y

  CONFIG_THREAD_INFO_IN_TASK=y
@@ -127,6 +128,7 @@ 

  CONFIG_PREEMPT_COUNT=y

  CONFIG_PREEMPTION=y

  CONFIG_PREEMPT_DYNAMIC=y

+ CONFIG_SCHED_CORE=y

  

  #

  # CPU/Task time and stats accounting
@@ -330,7 +332,6 @@ 

  CONFIG_ARCH_HIBERNATION_POSSIBLE=y

  CONFIG_ARCH_SUSPEND_POSSIBLE=y

  CONFIG_ARCH_WANT_GENERAL_HUGETLB=y

- CONFIG_ZONE_DMA32=y

  CONFIG_AUDIT_ARCH=y

  CONFIG_HAVE_INTEL_TXT=y

  CONFIG_X86_64_SMP=y
@@ -343,7 +344,6 @@ 

  #

  # Processor type and features

  #

- CONFIG_ZONE_DMA=y

  CONFIG_SMP=y

  CONFIG_X86_FEATURE_NAMES=y

  CONFIG_X86_X2APIC=y
@@ -463,7 +463,6 @@ 

  CONFIG_X86_PMEM_LEGACY=m

  CONFIG_X86_CHECK_BIOS_CORRUPTION=y

  CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y

- CONFIG_X86_RESERVE_LOW=64

  CONFIG_MTRR=y

  CONFIG_MTRR_SANITIZER=y

  CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=1
@@ -611,7 +610,9 @@ 

  CONFIG_CHT_WC_PMIC_OPREGION=y

  CONFIG_CHT_DC_TI_PMIC_OPREGION=y

  CONFIG_TPS68470_PMIC_OPREGION=y

+ CONFIG_ACPI_VIOT=y

  CONFIG_X86_PM_TIMER=y

+ CONFIG_ACPI_PRMT=y

  

  #

  # CPU Frequency scaling
@@ -757,6 +758,7 @@ 

  CONFIG_HAVE_KVM_IRQ_BYPASS=y

  CONFIG_HAVE_KVM_NO_POLL=y

  CONFIG_KVM_XFER_TO_GUEST_WORK=y

+ CONFIG_HAVE_KVM_PM_NOTIFIER=y

  CONFIG_VIRTUALIZATION=y

  CONFIG_KVM=m

  CONFIG_KVM_INTEL=m
@@ -803,6 +805,7 @@ 

  CONFIG_ARCH_HAS_SET_DIRECT_MAP=y

  CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y

  CONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT=y

+ CONFIG_ARCH_WANTS_NO_INSTR=y

  CONFIG_HAVE_ASM_MODVERSIONS=y

  CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y

  CONFIG_HAVE_RSEQ=y
@@ -868,7 +871,7 @@ 

  CONFIG_HAVE_ARCH_VMAP_STACK=y

  CONFIG_VMAP_STACK=y

  CONFIG_HAVE_ARCH_RANDOMIZE_KSTACK_OFFSET=y

- # CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT is not set

+ CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT=y

  CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y

  CONFIG_STRICT_KERNEL_RWX=y

  CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
@@ -935,9 +938,11 @@ 

  CONFIG_BLK_DEV_THROTTLING_LOW=y

  # CONFIG_BLK_CMDLINE_PARSER is not set

  CONFIG_BLK_WBT=y

+ CONFIG_BLK_WBT_MQ=y

  CONFIG_BLK_CGROUP_IOLATENCY=y

+ CONFIG_BLK_CGROUP_FC_APPID=y

  CONFIG_BLK_CGROUP_IOCOST=y

- CONFIG_BLK_WBT_MQ=y

+ CONFIG_BLK_CGROUP_IOPRIO=y

  CONFIG_BLK_DEBUG_FS=y

  CONFIG_BLK_DEBUG_FS_ZONED=y

  CONFIG_BLK_SED_OPAL=y
@@ -1021,7 +1026,6 @@ 

  CONFIG_SELECT_MEMORY_MODEL=y

  CONFIG_SPARSEMEM_MANUAL=y

  CONFIG_SPARSEMEM=y

- CONFIG_NEED_MULTIPLE_NODES=y

  CONFIG_SPARSEMEM_EXTREME=y

  CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y

  CONFIG_SPARSEMEM_VMEMMAP=y
@@ -1090,6 +1094,8 @@ 

  CONFIG_IDLE_PAGE_TRACKING=y

  CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y

  CONFIG_ARCH_HAS_PTE_DEVMAP=y

+ CONFIG_ZONE_DMA=y

+ CONFIG_ZONE_DMA32=y

  CONFIG_ZONE_DEVICE=y

  CONFIG_DEV_PAGEMAP_OPS=y

  CONFIG_HMM_MIRROR=y
@@ -1102,6 +1108,7 @@ 

  CONFIG_READ_ONLY_THP_FOR_FS=y

  CONFIG_ARCH_HAS_PTE_SPECIAL=y

  CONFIG_MAPPING_DIRTY_HELPERS=y

+ CONFIG_SECRETMEM=y

  # end of Memory Management options

  

  CONFIG_NET=y
@@ -1246,6 +1253,7 @@ 

  CONFIG_NETFILTER_NETLINK=m

  CONFIG_NETFILTER_FAMILY_BRIDGE=y

  CONFIG_NETFILTER_FAMILY_ARP=y

+ CONFIG_NETFILTER_NETLINK_HOOK=m

  CONFIG_NETFILTER_NETLINK_ACCT=m

  CONFIG_NETFILTER_NETLINK_QUEUE=m

  CONFIG_NETFILTER_NETLINK_LOG=m
@@ -1628,7 +1636,6 @@ 

  CONFIG_BRIDGE_MRP=y

  CONFIG_BRIDGE_CFM=y

  CONFIG_NET_DSA=m

- CONFIG_NET_DSA_TAG_8021Q=m

  CONFIG_NET_DSA_TAG_AR9331=m

  CONFIG_NET_DSA_TAG_BRCM_COMMON=m

  CONFIG_NET_DSA_TAG_BRCM=m
@@ -1820,6 +1827,7 @@ 

  CONFIG_QRTR_MHI=m

  CONFIG_NET_NCSI=y

  CONFIG_NCSI_OEM_CMD_GET_MAC=y

+ CONFIG_NCSI_OEM_CMD_KEEP_PHY=y

  CONFIG_PCPU_DEV_REFCNT=y

  CONFIG_RPS=y

  CONFIG_RFS_ACCEL=y
@@ -2193,6 +2201,8 @@ 

  CONFIG_CXL_BUS=m

  CONFIG_CXL_MEM=m

  # CONFIG_CXL_MEM_RAW_COMMANDS is not set

+ CONFIG_CXL_ACPI=m

+ CONFIG_CXL_PMEM=m

  CONFIG_PCCARD=m

  CONFIG_PCMCIA=m

  CONFIG_PCMCIA_LOAD_CIS=y
@@ -2331,6 +2341,7 @@ 

  # CONFIG_MTD_PMC551 is not set

  # CONFIG_MTD_DATAFLASH is not set

  # CONFIG_MTD_MCHP23K256 is not set

+ # CONFIG_MTD_MCHP48L640 is not set

  # CONFIG_MTD_SST25L is not set

  # CONFIG_MTD_SLRAM is not set

  CONFIG_MTD_PHRAM=m
@@ -2554,9 +2565,6 @@ 

  CONFIG_PVPANIC_PCI=m

  # end of Misc devices

  

- CONFIG_HAVE_IDE=y

- # CONFIG_IDE is not set

- 

  #

  # SCSI device support

  #
@@ -2638,6 +2646,7 @@ 

  CONFIG_SCSI_MPT2SAS_MAX_SGE=128

  CONFIG_SCSI_MPT3SAS_MAX_SGE=128

  CONFIG_SCSI_MPT2SAS=m

+ CONFIG_SCSI_MPI3MR=m

  CONFIG_SCSI_SMARTPQI=m

  CONFIG_SCSI_UFSHCD=m

  CONFIG_SCSI_UFSHCD_PCI=m
@@ -2690,6 +2699,7 @@ 

  CONFIG_QEDF=m

  CONFIG_SCSI_LPFC=m

  # CONFIG_SCSI_LPFC_DEBUG_FS is not set

+ CONFIG_SCSI_EFCT=m

  CONFIG_SCSI_DC395x=m

  CONFIG_SCSI_AM53C974=m

  CONFIG_SCSI_WD719X=m
@@ -3177,6 +3187,7 @@ 

  CONFIG_MLX5_EN_RXNFC=y

  CONFIG_MLX5_MPFS=y

  CONFIG_MLX5_ESWITCH=y

+ CONFIG_MLX5_BRIDGE=y

  CONFIG_MLX5_CLS_ACT=y

  CONFIG_MLX5_TC_CT=y

  CONFIG_MLX5_TC_SAMPLE=y
@@ -3196,8 +3207,6 @@ 

  CONFIG_MLXSW_CORE_THERMAL=y

  CONFIG_MLXSW_PCI=m

  CONFIG_MLXSW_I2C=m

- CONFIG_MLXSW_SWITCHIB=m

- CONFIG_MLXSW_SWITCHX2=m

  CONFIG_MLXSW_SPECTRUM=m

  CONFIG_MLXSW_SPECTRUM_DCB=y

  CONFIG_MLXSW_MINIMAL=m
@@ -3305,6 +3314,7 @@ 

  CONFIG_STMMAC_PLATFORM=m

  CONFIG_DWMAC_GENERIC=m

  CONFIG_DWMAC_INTEL=m

+ CONFIG_DWMAC_LOONGSON=m

  CONFIG_STMMAC_PCI=m

  CONFIG_NET_VENDOR_SUN=y

  CONFIG_HAPPYMEAL=m
@@ -3371,10 +3381,12 @@ 

  CONFIG_MARVELL_PHY=m

  CONFIG_MARVELL_10G_PHY=m

  CONFIG_MARVELL_88X2222_PHY=m

+ CONFIG_MEDIATEK_GE_PHY=m

  CONFIG_MICREL_PHY=m

  CONFIG_MICROCHIP_PHY=m

  CONFIG_MICROCHIP_T1_PHY=m

  CONFIG_MICROSEMI_PHY=m

+ CONFIG_MOTORCOMM_PHY=m

  CONFIG_NATIONAL_PHY=m

  CONFIG_NXP_C45_TJA11XX_PHY=m

  CONFIG_NXP_TJA11XX_PHY=m
@@ -3396,6 +3408,8 @@ 

  CONFIG_MICREL_KS8995MA=m

  CONFIG_MDIO_DEVICE=m

  CONFIG_MDIO_BUS=m

+ CONFIG_FWNODE_MDIO=m

+ CONFIG_ACPI_MDIO=m

  CONFIG_MDIO_DEVRES=m

  CONFIG_MDIO_BITBANG=m

  CONFIG_MDIO_BCM_UNIMAC=m
@@ -3798,7 +3812,10 @@ 

  # Wireless WAN

  #

  CONFIG_WWAN=y

+ CONFIG_WWAN_HWSIM=m

  CONFIG_MHI_WWAN_CTRL=m

+ CONFIG_RPMSG_WWAN_CTRL=m

+ CONFIG_IOSM=m

  # end of Wireless WAN

  

  CONFIG_XEN_NETDEV_FRONTEND=m
@@ -3954,6 +3971,7 @@ 

  CONFIG_JOYSTICK_PSXPAD_SPI=m

  CONFIG_JOYSTICK_PSXPAD_SPI_FF=y

  CONFIG_JOYSTICK_PXRC=m

+ CONFIG_JOYSTICK_QWIIC=m

  CONFIG_JOYSTICK_FSIA6B=m

  CONFIG_INPUT_TABLET=y

  CONFIG_TABLET_USB_ACECAD=m
@@ -4294,8 +4312,6 @@ 

  CONFIG_MWAVE=m

  CONFIG_DEVMEM=y

  CONFIG_NVRAM=y

- CONFIG_RAW_DRIVER=m

- CONFIG_MAX_RAW_DEVS=8192

  CONFIG_DEVPORT=y

  CONFIG_HPET=y

  # CONFIG_HPET_MMAP is not set
@@ -4320,8 +4336,10 @@ 

  CONFIG_TCG_TIS_ST33ZP24_I2C=m

  CONFIG_TCG_TIS_ST33ZP24_SPI=m

  CONFIG_TELCLOCK=m

+ CONFIG_XILLYBUS_CLASS=m

  CONFIG_XILLYBUS=m

  CONFIG_XILLYBUS_PCIE=m

+ CONFIG_XILLYUSB=m

  # end of Character devices

  

  # CONFIG_RANDOM_TRUST_CPU is not set
@@ -4917,6 +4935,7 @@ 

  CONFIG_SENSORS_BPA_RS600=m

  CONFIG_SENSORS_FSP_3Y=m

  CONFIG_SENSORS_IBM_CFFPS=m

+ CONFIG_SENSORS_DPS920AB=m

  CONFIG_SENSORS_INSPUR_IPSPS=m

  CONFIG_SENSORS_IR35221=m

  CONFIG_SENSORS_IR36021=m
@@ -4935,7 +4954,9 @@ 

  CONFIG_SENSORS_MAX31785=m

  CONFIG_SENSORS_MAX34440=m

  CONFIG_SENSORS_MAX8688=m

+ CONFIG_SENSORS_MP2888=m

  CONFIG_SENSORS_MP2975=m

+ CONFIG_SENSORS_PIM4328=m

  CONFIG_SENSORS_PM6764TR=m

  CONFIG_SENSORS_PXE1610=m

  CONFIG_SENSORS_Q54SJ108A2=m
@@ -4950,6 +4971,7 @@ 

  CONFIG_SENSORS_SHT15=m

  CONFIG_SENSORS_SHT21=m

  CONFIG_SENSORS_SHT3x=m

+ CONFIG_SENSORS_SHT4x=m

  CONFIG_SENSORS_SHTC1=m

  CONFIG_SENSORS_SIS5595=m

  CONFIG_SENSORS_DME1737=m
@@ -5052,6 +5074,7 @@ 

  CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y

  CONFIG_WATCHDOG_OPEN_TIMEOUT=0

  CONFIG_WATCHDOG_SYSFS=y

+ # CONFIG_WATCHDOG_HRTIMER_PRETIMEOUT is not set

  

  #

  # Watchdog Pretimeout Governors
@@ -5234,9 +5257,9 @@ 

  CONFIG_PCF50633_GPIO=m

  CONFIG_UCB1400_CORE=m

  CONFIG_MFD_RDC321X=m

+ CONFIG_MFD_RT4831=m

  CONFIG_MFD_RT5033=m

  CONFIG_MFD_RC5T583=y

- CONFIG_MFD_SEC_CORE=y

  CONFIG_MFD_SI476X_CORE=m

  CONFIG_MFD_SM501=m

  CONFIG_MFD_SM501_GPIO=y
@@ -5252,7 +5275,6 @@ 

  CONFIG_TPS6507X=m

  CONFIG_MFD_TPS65086=m

  CONFIG_MFD_TPS65090=y

- CONFIG_MFD_TPS68470=y

  CONFIG_MFD_TI_LP873X=m

  CONFIG_MFD_TPS6586X=y

  CONFIG_MFD_TPS65910=y
@@ -5267,7 +5289,7 @@ 

  CONFIG_MFD_LM3533=m

  CONFIG_MFD_TQMX86=m

  CONFIG_MFD_VX855=m

- CONFIG_MFD_ARIZONA=y

+ CONFIG_MFD_ARIZONA=m

  CONFIG_MFD_ARIZONA_I2C=m

  CONFIG_MFD_ARIZONA_SPI=m

  CONFIG_MFD_CS47L24=y
@@ -5329,6 +5351,7 @@ 

  CONFIG_REGULATOR_MAX1586=m

  CONFIG_REGULATOR_MAX8649=m

  CONFIG_REGULATOR_MAX8660=m

+ CONFIG_REGULATOR_MAX8893=m

  CONFIG_REGULATOR_MAX8907=m

  CONFIG_REGULATOR_MAX8925=m

  CONFIG_REGULATOR_MAX8952=m
@@ -5343,6 +5366,7 @@ 

  CONFIG_REGULATOR_MT6311=m

  CONFIG_REGULATOR_MT6323=m

  CONFIG_REGULATOR_MT6358=m

+ CONFIG_REGULATOR_MT6359=m

  CONFIG_REGULATOR_MT6360=m

  CONFIG_REGULATOR_MT6397=m

  CONFIG_REGULATOR_PALMAS=m
@@ -5356,11 +5380,11 @@ 

  CONFIG_REGULATOR_RASPBERRYPI_TOUCHSCREEN_ATTINY=m

  CONFIG_REGULATOR_RC5T583=m

  CONFIG_REGULATOR_RT4801=m

+ CONFIG_REGULATOR_RT4831=m

  CONFIG_REGULATOR_RT5033=m

+ CONFIG_REGULATOR_RT6160=m

+ CONFIG_REGULATOR_RT6245=m

  CONFIG_REGULATOR_RTMV20=m

- CONFIG_REGULATOR_S2MPA01=m

- CONFIG_REGULATOR_S2MPS11=m

- CONFIG_REGULATOR_S5M8767=m

  CONFIG_REGULATOR_SKY81452=m

  CONFIG_REGULATOR_SLG51000=m

  CONFIG_REGULATOR_TPS51632=m
@@ -5463,6 +5487,7 @@ 

  CONFIG_V4L2_MEM2MEM_DEV=m

  CONFIG_V4L2_FLASH_LED_CLASS=m

  CONFIG_V4L2_FWNODE=m

+ CONFIG_V4L2_ASYNC=m

  CONFIG_VIDEOBUF_GEN=m

  CONFIG_VIDEOBUF_DMA_SG=m

  CONFIG_VIDEOBUF_VMALLOC=m
@@ -5497,7 +5522,6 @@ 

  #

  # Drivers filtered as selected at 'Filter media drivers'

  #

- CONFIG_TTPCI_EEPROM=m

  CONFIG_MEDIA_USB_SUPPORT=y

  

  #
@@ -5668,7 +5692,6 @@ 

  # Media capture/analog TV support

  #

  CONFIG_VIDEO_IVTV=m

- # CONFIG_VIDEO_IVTV_DEPRECATED_IOCTLS is not set

  CONFIG_VIDEO_IVTV_ALSA=m

  CONFIG_VIDEO_FB_IVTV=m

  # CONFIG_VIDEO_FB_IVTV_FORCE_PAT is not set
@@ -5705,14 +5728,10 @@ 

  #

  # Media digital TV PCI Adapters

  #

- CONFIG_DVB_AV7110_IR=y

- CONFIG_DVB_AV7110=m

- CONFIG_DVB_AV7110_OSD=y

  CONFIG_DVB_BUDGET_CORE=m

  CONFIG_DVB_BUDGET=m

  CONFIG_DVB_BUDGET_CI=m

  CONFIG_DVB_BUDGET_AV=m

- CONFIG_DVB_BUDGET_PATCH=m

  CONFIG_DVB_B2C2_FLEXCOP_PCI=m

  # CONFIG_DVB_B2C2_FLEXCOP_PCI_DEBUG is not set

  CONFIG_DVB_PLUTO2=m
@@ -5759,6 +5778,7 @@ 

  #

  CONFIG_VIDEO_CX2341X=m

  CONFIG_VIDEO_TVEEPROM=m

+ CONFIG_TTPCI_EEPROM=m

  CONFIG_CYPRESS_FIRMWARE=m

  CONFIG_VIDEOBUF2_CORE=m

  CONFIG_VIDEOBUF2_V4L2=m
@@ -5858,6 +5878,7 @@ 

  CONFIG_VIDEO_APTINA_PLL=m

  CONFIG_VIDEO_CCS_PLL=m

  CONFIG_VIDEO_HI556=m

+ CONFIG_VIDEO_IMX208=m

  CONFIG_VIDEO_IMX214=m

  CONFIG_VIDEO_IMX219=m

  CONFIG_VIDEO_IMX258=m
@@ -6043,7 +6064,6 @@ 

  #

  # DVB-T (terrestrial) frontends

  #

- CONFIG_DVB_SP8870=m

  CONFIG_DVB_SP887X=m

  CONFIG_DVB_CX22700=m

  CONFIG_DVB_CX22702=m
@@ -6166,7 +6186,6 @@ 

  CONFIG_DRM_DP_AUX_CHARDEV=y

  # CONFIG_DRM_DEBUG_SELFTEST is not set

  CONFIG_DRM_KMS_HELPER=m

- CONFIG_DRM_KMS_FB_HELPER=y

  CONFIG_DRM_FBDEV_EMULATION=y

  CONFIG_DRM_FBDEV_OVERALLOC=100

  CONFIG_DRM_LOAD_EDID_FIRMWARE=y
@@ -6217,6 +6236,7 @@ 

  # end of Display Engine Configuration

  

  CONFIG_HSA_AMD=y

+ CONFIG_HSA_AMD_SVM=y

  CONFIG_DRM_NOUVEAU=m

  # CONFIG_NOUVEAU_LEGACY_CTX_SUPPORT is not set

  CONFIG_NOUVEAU_DEBUG=5
@@ -6272,6 +6292,7 @@ 

  # CONFIG_DRM_ETNAVIV is not set

  CONFIG_DRM_CIRRUS_QEMU=m

  CONFIG_DRM_GM12U320=m

+ CONFIG_DRM_SIMPLEDRM=m

  CONFIG_TINYDRM_HX8357D=m

  CONFIG_TINYDRM_ILI9225=m

  CONFIG_TINYDRM_ILI9341=m
@@ -6284,6 +6305,7 @@ 

  CONFIG_DRM_XEN_FRONTEND=m

  CONFIG_DRM_VBOXVIDEO=m

  CONFIG_DRM_GUD=m

+ CONFIG_DRM_HYPERV=m

  # CONFIG_DRM_LEGACY is not set

  CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y

  
@@ -6353,8 +6375,9 @@ 

  CONFIG_XEN_FBDEV_FRONTEND=m

  # CONFIG_FB_METRONOME is not set

  # CONFIG_FB_MB862XX is not set

- CONFIG_FB_HYPERV=m

+ # CONFIG_FB_HYPERV is not set

  CONFIG_FB_SIMPLE=y

+ # CONFIG_FB_SSD1307 is not set

  # CONFIG_FB_SM712 is not set

  # end of Frame buffer Devices

  
@@ -6383,6 +6406,7 @@ 

  CONFIG_BACKLIGHT_MAX8925=m

  CONFIG_BACKLIGHT_APPLE=m

  CONFIG_BACKLIGHT_QCOM_WLED=m

+ CONFIG_BACKLIGHT_RT4831=m

  CONFIG_BACKLIGHT_SAHARA=m

  CONFIG_BACKLIGHT_WM831X=m

  CONFIG_BACKLIGHT_ADP5520=m
@@ -6596,7 +6620,7 @@ 

  CONFIG_SND_INTEL_NHLT=y

  CONFIG_SND_INTEL_DSP_CONFIG=m

  CONFIG_SND_INTEL_SOUNDWIRE_ACPI=m

- CONFIG_SND_INTEL_BYT_PREFER_SOF=y

+ # CONFIG_SND_INTEL_BYT_PREFER_SOF is not set

  CONFIG_SND_SPI=y

  CONFIG_SND_USB=y

  CONFIG_SND_USB_AUDIO=m
@@ -6698,6 +6722,8 @@ 

  CONFIG_SND_SOC_ACPI_INTEL_MATCH=m

  CONFIG_SND_SOC_INTEL_MACH=y

  CONFIG_SND_SOC_INTEL_USER_FRIENDLY_LONG_NAMES=y

+ CONFIG_SND_SOC_INTEL_HDA_DSP_COMMON=m

+ CONFIG_SND_SOC_INTEL_SOF_MAXIM_COMMON=m

  CONFIG_SND_SOC_INTEL_HASWELL_MACH=m

  CONFIG_SND_SOC_INTEL_BDW_RT5650_MACH=m

  CONFIG_SND_SOC_INTEL_BDW_RT5677_MACH=m
@@ -6730,6 +6756,7 @@ 

  CONFIG_SND_SOC_INTEL_GLK_RT5682_MAX98357A_MACH=m

  CONFIG_SND_SOC_INTEL_SKL_HDA_DSP_GENERIC_MACH=m

  CONFIG_SND_SOC_INTEL_SOF_RT5682_MACH=m

+ CONFIG_SND_SOC_INTEL_SOF_CS42L42_MACH=m

  CONFIG_SND_SOC_INTEL_SOF_PCM512x_MACH=m

  CONFIG_SND_SOC_INTEL_CML_LP_DA7219_MAX98357A_MACH=m

  CONFIG_SND_SOC_INTEL_SOF_CML_RT1011_RT5682_MACH=m
@@ -6931,6 +6958,7 @@ 

  CONFIG_SND_SOC_SIMPLE_MUX=m

  CONFIG_SND_SOC_SPDIF=m

  CONFIG_SND_SOC_SSM2305=m

+ CONFIG_SND_SOC_SSM2518=m

  CONFIG_SND_SOC_SSM2602=m

  CONFIG_SND_SOC_SSM2602_SPI=m

  CONFIG_SND_SOC_SSM2602_I2C=m
@@ -6948,6 +6976,7 @@ 

  CONFIG_SND_SOC_TAS6424=m

  CONFIG_SND_SOC_TDA7419=m

  CONFIG_SND_SOC_TFA9879=m

+ CONFIG_SND_SOC_TFA989X=m

  CONFIG_SND_SOC_TLV320AIC23=m

  CONFIG_SND_SOC_TLV320AIC23_I2C=m

  CONFIG_SND_SOC_TLV320AIC23_SPI=m
@@ -6964,7 +6993,10 @@ 

  CONFIG_SND_SOC_TSCS454=m

  CONFIG_SND_SOC_UDA1334=m

  CONFIG_SND_SOC_WCD9335=m

+ CONFIG_SND_SOC_WCD_MBHC=m

  CONFIG_SND_SOC_WCD934X=m

+ CONFIG_SND_SOC_WCD938X=m

+ CONFIG_SND_SOC_WCD938X_SDW=m

  CONFIG_SND_SOC_WM5102=m

  CONFIG_SND_SOC_WM8510=m

  CONFIG_SND_SOC_WM8523=m
@@ -6992,7 +7024,6 @@ 

  CONFIG_SND_SOC_WM8985=m

  CONFIG_SND_SOC_WSA881X=m

  CONFIG_SND_SOC_ZL38060=m

- CONFIG_SND_SOC_ZX_AUD96P22=m

  CONFIG_SND_SOC_MAX9759=m

  CONFIG_SND_SOC_MT6351=m

  CONFIG_SND_SOC_MT6358=m
@@ -7685,6 +7716,7 @@ 

  CONFIG_LEDS_REGULATOR=m

  CONFIG_LEDS_BD2802=m

  CONFIG_LEDS_INTEL_SS4200=m

+ CONFIG_LEDS_LT3593=m

  CONFIG_LEDS_ADP5520=m

  CONFIG_LEDS_MC13783=m

  CONFIG_LEDS_TCA6507=m
@@ -7770,7 +7802,7 @@ 

  CONFIG_INFINIBAND_QIB_DCA=y

  CONFIG_INFINIBAND_CXGB4=m

  CONFIG_INFINIBAND_EFA=m

- CONFIG_INFINIBAND_I40IW=m

+ CONFIG_INFINIBAND_IRDMA=m

  CONFIG_MLX4_INFINIBAND=m

  CONFIG_MLX5_INFINIBAND=m

  CONFIG_INFINIBAND_OCRDMA=m
@@ -7819,7 +7851,7 @@ 

  CONFIG_EDAC_SKX=m

  CONFIG_EDAC_I10NM=m

  CONFIG_EDAC_PND2=m

- # CONFIG_EDAC_IGEN6 is not set

+ CONFIG_EDAC_IGEN6=m

  CONFIG_RTC_LIB=y

  CONFIG_RTC_MC146818_LIB=y

  CONFIG_RTC_CLASS=y
@@ -7884,7 +7916,6 @@ 

  CONFIG_RTC_DRV_RV3028=m

  CONFIG_RTC_DRV_RV3032=m

  CONFIG_RTC_DRV_RV8803=m

- CONFIG_RTC_DRV_S5M=m

  CONFIG_RTC_DRV_SD3078=m

  

  #
@@ -8051,7 +8082,6 @@ 

  CONFIG_VFIO_PCI_INTX=y

  CONFIG_VFIO_PCI_IGD=y

  CONFIG_VFIO_MDEV=m

- CONFIG_VFIO_MDEV_DEVICE=m

  CONFIG_IRQ_BYPASS_MANAGER=m

  CONFIG_VIRT_DRIVERS=y

  CONFIG_VBOXGUEST=m
@@ -8226,6 +8256,11 @@ 

  CONFIG_VIDEO_ATOMISP_LM3554=m

  # CONFIG_VIDEO_ZORAN is not set

  CONFIG_VIDEO_IPU3_IMGU=m

+ CONFIG_DVB_AV7110_IR=y

+ CONFIG_DVB_AV7110=m

+ CONFIG_DVB_AV7110_OSD=y

+ CONFIG_DVB_BUDGET_PATCH=m

+ CONFIG_DVB_SP8870=m

  

  #

  # Android
@@ -8249,11 +8284,6 @@ 

  CONFIG_KS7010=m

  CONFIG_PI433=m

  CONFIG_FIELDBUS_DEV=m

- CONFIG_KPC2000=y

- CONFIG_KPC2000_CORE=m

- CONFIG_KPC2000_SPI=m

- CONFIG_KPC2000_I2C=m

- CONFIG_KPC2000_DMA=m

  CONFIG_QLGE=m

  CONFIG_WFX=m

  CONFIG_X86_PLATFORM_DEVICES=y
@@ -8289,6 +8319,7 @@ 

  CONFIG_DELL_SMBIOS_SMM=y

  CONFIG_DELL_SMO8800=m

  CONFIG_DELL_WMI=m

+ CONFIG_DELL_WMI_PRIVACY=y

  CONFIG_DELL_WMI_AIO=m

  CONFIG_DELL_WMI_DESCRIPTOR=m

  CONFIG_DELL_WMI_LED=m
@@ -8298,7 +8329,7 @@ 

  CONFIG_FUJITSU_TABLET=m

  CONFIG_GPD_POCKET_FAN=m

  CONFIG_HP_ACCEL=m

- CONFIG_HP_WIRELESS=m

+ CONFIG_WIRELESS_HOTKEY=m

  CONFIG_HP_WMI=m

  CONFIG_IBM_RTL=m

  CONFIG_IDEAPAD_LAPTOP=m
@@ -8310,8 +8341,11 @@ 

  # CONFIG_THINKPAD_ACPI_UNSAFE_LEDS is not set

  CONFIG_THINKPAD_ACPI_VIDEO=y

  CONFIG_THINKPAD_ACPI_HOTKEY_POLL=y

- CONFIG_INTEL_ATOMISP2_LED=m

+ CONFIG_THINKPAD_LMI=m

+ CONFIG_X86_PLATFORM_DRIVERS_INTEL=y

  CONFIG_INTEL_CHT_INT33FE=m

+ CONFIG_INTEL_SKL_INT3472=m

+ CONFIG_INTEL_ATOMISP2_LED=m

  CONFIG_INTEL_HID_EVENT=m

  CONFIG_INTEL_INT0002_VGPIO=m

  CONFIG_INTEL_MENLOW=m
@@ -8337,6 +8371,7 @@ 

  CONFIG_I2C_MULTI_INSTANTIATE=m

  CONFIG_MLX_PLATFORM=m

  CONFIG_TOUCHSCREEN_DMI=y

+ CONFIG_FW_ATTR_CLASS=m

  CONFIG_INTEL_IPS=m

  CONFIG_INTEL_RST=m

  CONFIG_INTEL_SMARTCONNECT=m
@@ -8406,17 +8441,24 @@ 

  CONFIG_SURFACE_AGGREGATOR_BUS=y

  # CONFIG_SURFACE_AGGREGATOR_ERROR_INJECTION is not set

  CONFIG_HAVE_CLK=y

- CONFIG_CLKDEV_LOOKUP=y

  CONFIG_HAVE_CLK_PREPARE=y

  CONFIG_COMMON_CLK=y

  CONFIG_COMMON_CLK_WM831X=m

+ 

+ #

+ # Clock driver for ARM Reference designs

+ #

+ # CONFIG_ICST is not set

+ # CONFIG_CLK_SP810 is not set

+ # end of Clock driver for ARM Reference designs

+ 

+ CONFIG_LMK04832=m

  CONFIG_COMMON_CLK_MAX9485=m

  CONFIG_COMMON_CLK_SI5341=m

  CONFIG_COMMON_CLK_SI5351=m

  CONFIG_COMMON_CLK_SI544=m

  CONFIG_COMMON_CLK_CDCE706=m

  CONFIG_COMMON_CLK_CS2000_CP=m

- CONFIG_COMMON_CLK_S2MPS11=m

  CONFIG_CLK_TWL6040=m

  CONFIG_COMMON_CLK_PALMAS=m

  CONFIG_COMMON_CLK_PWM=m
@@ -8448,6 +8490,7 @@ 

  # CONFIG_IOMMU_DEBUGFS is not set

  # CONFIG_IOMMU_DEFAULT_PASSTHROUGH is not set

  CONFIG_IOMMU_DMA=y

+ CONFIG_IOMMU_SVA_LIB=y

  CONFIG_AMD_IOMMU=y

  CONFIG_AMD_IOMMU_V2=y

  CONFIG_DMAR_TABLE=y
@@ -8458,6 +8501,7 @@ 

  CONFIG_INTEL_IOMMU_SCALABLE_MODE_DEFAULT_ON=y

  CONFIG_IRQ_REMAP=y

  CONFIG_HYPERV_IOMMU=y

+ CONFIG_VIRTIO_IOMMU=m

  

  #

  # Remoteproc drivers
@@ -8607,6 +8651,9 @@ 

  CONFIG_DA311=m

  CONFIG_DMARD09=m

  CONFIG_DMARD10=m

+ CONFIG_FXLS8962AF=m

+ CONFIG_FXLS8962AF_I2C=m

+ CONFIG_FXLS8962AF_SPI=m

  CONFIG_HID_SENSOR_ACCEL_3D=m

  CONFIG_IIO_CROS_EC_ACCEL_LEGACY=m

  CONFIG_IIO_ST_ACCEL_3AXIS=m
@@ -8628,6 +8675,7 @@ 

  CONFIG_MXC4005=m

  CONFIG_MXC6255=m

  CONFIG_SCA3000=m

+ CONFIG_SCA3300=m

  CONFIG_STK8312=m

  CONFIG_STK8BA50=m

  # end of Accelerometers
@@ -8696,6 +8744,7 @@ 

  CONFIG_TI_ADS131E08=m

  CONFIG_TI_AM335X_ADC=m

  CONFIG_TI_TLC4541=m

+ CONFIG_TI_TSC2046=m

  CONFIG_TWL4030_MADC=m

  CONFIG_TWL6030_GPADC=m

  CONFIG_VIPERBOARD_ADC=m
@@ -8736,6 +8785,8 @@ 

  CONFIG_SCD30_SERIAL=m

  CONFIG_SENSIRION_SGP30=m

  CONFIG_SPS30=m

+ CONFIG_SPS30_I2C=m

+ CONFIG_SPS30_SERIAL=m

  CONFIG_VZ89X=m

  # end of Chemical Sensors

  
@@ -8908,6 +8959,9 @@ 

  CONFIG_IIO_ST_LSM6DSX=m

  CONFIG_IIO_ST_LSM6DSX_I2C=m

  CONFIG_IIO_ST_LSM6DSX_SPI=m

+ CONFIG_IIO_ST_LSM9DS0=m

+ CONFIG_IIO_ST_LSM9DS0_I2C=m

+ CONFIG_IIO_ST_LSM9DS0_SPI=m

  # end of Inertial measurement units

  

  CONFIG_IIO_ADIS_LIB=m
@@ -8959,6 +9013,7 @@ 

  CONFIG_TCS3472=m

  CONFIG_SENSORS_TSL2563=m

  CONFIG_TSL2583=m

+ CONFIG_TSL2591=m

  CONFIG_TSL2772=m

  CONFIG_TSL4531=m

  CONFIG_US5182D=m
@@ -9114,6 +9169,7 @@ 

  CONFIG_MLX90632=m

  CONFIG_TMP006=m

  CONFIG_TMP007=m

+ CONFIG_TMP117=m

  CONFIG_TSYS01=m

  CONFIG_TSYS02D=m

  CONFIG_MAX31856=m
@@ -9164,6 +9220,7 @@ 

  #

  CONFIG_GENERIC_PHY=y

  CONFIG_USB_LGM_PHY=m

+ CONFIG_PHY_CAN_TRANSCEIVER=m

  CONFIG_BCM_KONA_USB2_PHY=m

  CONFIG_PHY_PXA_28NM_HSIC=m

  CONFIG_PHY_PXA_28NM_USB2=m
@@ -9290,6 +9347,7 @@ 

  CONFIG_INTERCONNECT=y

  CONFIG_COUNTER=m

  CONFIG_INTERRUPT_CNT=m

+ CONFIG_INTEL_QEP=m

  CONFIG_MOST=m

  CONFIG_MOST_USB_HDM=m

  CONFIG_MOST_CDEV=m
@@ -9459,6 +9517,8 @@ 

  CONFIG_TMPFS_INODE64=y

  CONFIG_HUGETLBFS=y

  CONFIG_HUGETLB_PAGE=y

+ CONFIG_HUGETLB_PAGE_FREE_VMEMMAP=y

+ CONFIG_HUGETLB_PAGE_FREE_VMEMMAP_DEFAULT_ON=y

  CONFIG_MEMFD_CREATE=y

  CONFIG_ARCH_HAS_GIGANTIC_PAGE=y

  CONFIG_CONFIGFS_FS=y
@@ -10179,7 +10239,6 @@ 

  CONFIG_SBITMAP=y

  CONFIG_PARMAN=m

  CONFIG_OBJAGG=m

- # CONFIG_STRING_SELFTEST is not set

  # end of Library routines

  

  CONFIG_PLDMFW=y
@@ -10194,6 +10253,7 @@ 

  #

  CONFIG_PRINTK_TIME=y

  # CONFIG_PRINTK_CALLER is not set

+ CONFIG_STACKTRACE_BUILD_ID=y

  CONFIG_CONSOLE_LOGLEVEL_DEFAULT=4

  CONFIG_CONSOLE_LOGLEVEL_QUIET=1

  CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
@@ -10288,7 +10348,7 @@ 

  CONFIG_HAVE_ARCH_KFENCE=y

  CONFIG_KFENCE=y

  CONFIG_KFENCE_STATIC_KEYS=y

- CONFIG_KFENCE_SAMPLE_INTERVAL=0

+ CONFIG_KFENCE_SAMPLE_INTERVAL=100

  CONFIG_KFENCE_NUM_OBJECTS=255

  CONFIG_KFENCE_STRESS_TEST_FAULTS=0

  # end of Memory Debugging
@@ -10375,7 +10435,6 @@ 

  CONFIG_RCU_CPU_STALL_TIMEOUT=60

  # CONFIG_RCU_TRACE is not set

  # CONFIG_RCU_EQS_DEBUG is not set

- # CONFIG_RCU_STRICT_GRACE_PERIOD is not set

  # end of RCU Debugging

  

  # CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set
@@ -10410,12 +10469,15 @@ 

  CONFIG_DYNAMIC_FTRACE=y

  CONFIG_DYNAMIC_FTRACE_WITH_REGS=y

  CONFIG_DYNAMIC_FTRACE_WITH_DIRECT_CALLS=y

+ CONFIG_DYNAMIC_FTRACE_WITH_ARGS=y

  CONFIG_FUNCTION_PROFILER=y

  CONFIG_STACK_TRACER=y

  # CONFIG_IRQSOFF_TRACER is not set

  # CONFIG_PREEMPT_TRACER is not set

  CONFIG_SCHED_TRACER=y

  CONFIG_HWLAT_TRACER=y

+ CONFIG_OSNOISE_TRACER=y

+ CONFIG_TIMERLAT_TRACER=y

  CONFIG_MMIOTRACE=y

  CONFIG_FTRACE_SYSCALLS=y

  CONFIG_TRACER_SNAPSHOT=y
@@ -10494,7 +10556,6 @@ 

  # CONFIG_KCOV is not set

  CONFIG_RUNTIME_TESTING_MENU=y

  # CONFIG_LKDTM is not set

- # CONFIG_TEST_LIST_SORT is not set

  # CONFIG_TEST_MIN_HEAP is not set

  # CONFIG_TEST_SORT is not set

  # CONFIG_TEST_DIV64 is not set
@@ -10507,10 +10568,12 @@ 

  # CONFIG_ATOMIC64_SELFTEST is not set

  CONFIG_ASYNC_RAID6_TEST=m

  # CONFIG_TEST_HEXDUMP is not set

+ # CONFIG_STRING_SELFTEST is not set

  # CONFIG_TEST_STRING_HELPERS is not set

  # CONFIG_TEST_STRSCPY is not set

  # CONFIG_TEST_KSTRTOX is not set

  # CONFIG_TEST_PRINTF is not set

+ # CONFIG_TEST_SCANF is not set

  # CONFIG_TEST_BITMAP is not set

  # CONFIG_TEST_UUID is not set

  # CONFIG_TEST_XARRAY is not set
@@ -10538,6 +10601,7 @@ 

  # CONFIG_TEST_HMM is not set

  # CONFIG_TEST_FREE_PAGES is not set

  # CONFIG_TEST_FPU is not set

+ # CONFIG_TEST_CLOCKSOURCE_WATCHDOG is not set

  CONFIG_ARCH_USE_MEMTEST=y

  # CONFIG_MEMTEST is not set

  # CONFIG_HYPERV_TESTING is not set

@@ -0,0 +1,52 @@ 

+ $ curl https://github.com/archlinux/mkinitcpio/commit/9ee1333a5f3302d7ddb004cf0909c94b4cff60ba.diff

+ diff --git a/functions b/functions

+ index 9539a60..f95fb92 100644

+ --- a/functions

+ +++ b/functions

+ @@ -625,6 +625,46 @@ add_binary() {

+      return 0

+  }

+  

+ +add_udev_rule() {

+ +    # Add an udev rules file to the initcpio image. Dependencies on binaries

+ +    # will be discovered and added.

+ +    #   $1: path to rules file (or name of rules file)

+ +

+ +    local rules="$1" rule= key= value= binary=

+ +

+ +    if [[ ${rules:0:1} != '/' ]]; then

+ +        rules=$(PATH=/usr/lib/udev/rules.d:/lib/udev/rules.d type -P "$rules")

+ +    fi

+ +    if [[ -z $rules ]]; then

+ +        # complain about not found rules

+ +        return 1

+ +    fi

+ +

+ +    add_file "$rules" /usr/lib/udev/rules.d/"${rules##*/}"

+ +

+ +    while IFS=, read -ra rule; do

+ +        # skip empty lines, comments

+ +        [[ -z $rule || $rule = @(+([[:space:]])|#*) ]] && continue

+ +

+ +        for pair in "${rule[@]}"; do

+ +            IFS=' =' read -r key value <<< "$pair"

+ +            case $key in

+ +                RUN@({program}|+)|IMPORT{program}|ENV{REMOVE_CMD})

+ +                    # strip quotes

+ +                    binary=${value//[\"\']/}

+ +                    # just take the first word as the binary name

+ +                    binary=${binary%% *}

+ +                    [[ ${binary:0:1} == '$' ]] && continue

+ +                    if [[ ${binary:0:1} != '/' ]]; then

+ +                        binary=$(PATH=/usr/lib/udev:/lib/udev type -P "$binary")

+ +                    fi

+ +                    add_binary "$binary"

+ +                    ;;

+ +            esac

+ +        done

+ +    done <"$rules"

+ +}

+ +

+  parse_config() {

+      # parse key global variables set by the config file.

+  

@@ -0,0 +1,67 @@ 

+ # Maintainer (Arch): Giancarlo Razzolini <grazzolini@archlinux.org>

+ # Maintainer (Arch): Dave Reisner <dreisner@archlinux.org>

+ # Maintainer (Arch): Thomas Bächler <thomas@archlinux.org>

+ # Maintainer: David P. <megver83@parabola.nu>

+ 

+ 

+ # parabola changes and rationale:

+ # - replace 'systemd' dep with 'udev'

+ # - emergency patch (mkinitcpio/udev patch #3121)

+ #   normally we keep core/mkinitcpio

+ #   !!! REMEMBER to db-remove libre/mkinitcpio !!!

+ _IS_NONSYSTEMD=false

+ 

+ 

+ pkgname=mkinitcpio

+ pkgver=30

+ pkgrel=3

+ pkgrel+=$(${_IS_NONSYSTEMD} && echo '.nonsystemd1' || echo '.parabola2')

+ pkgdesc="Modular initramfs image creation utility"

+ arch=('any')

+ url='https://github.com/archlinux/mkinitcpio'

+ license=('GPL')

+ makedepends=('asciidoc')

+ depends=('awk' 'mkinitcpio-busybox>=1.19.4-2' 'kmod' 'util-linux>=2.23' 'libarchive' 'coreutils'

+          'bash' 'diffutils' 'findutils' 'grep' 'filesystem>=2011.10-1' 'zstd' 'systemd')

+ depends=( $(${_IS_NONSYSTEMD} && echo ${depends[*]/systemd/udev} || echo ${depends[*]}) )

+ optdepends=('gzip: Use gzip compression for the initramfs image'

+             'xz: Use lzma or xz compression for the initramfs image'

+             'bzip2: Use bzip2 compression for the initramfs image'

+             'lzop: Use lzo compression for the initramfs image'

+             'lz4: Use lz4 compression for the initramfs image'

+             'mkinitcpio-nfs-utils: Support for root filesystem on NFS')

+ provides=('initramfs')

+ backup=('etc/mkinitcpio.conf')

+ source=("https://sources.archlinux.org/other/$pkgname/$pkgname-$pkgver.tar.gz"{,.sig})

+ source+=( $(${_IS_NONSYSTEMD} && echo '9000-nonsystemd.patch') )

+ source+=(9001-udev.patch)

+ install=mkinitcpio.install

+ sha512sums=('ef43a8ddc01697fa43bede4eebad3271bbc89efa57ba7e4e9f321e8174ff2af74d857b308c5c0f37b42a91906c91c1b022f9a651c70d5d3e9dfc8dc441a60ee4'

+             'SKIP')

+ sha512sums+=( $(${_IS_NONSYSTEMD} && echo 'f1ad7792b3b42397c2645e834d4b6c6a89122060455954d1ab56a71c673c3b8a8fdbbd6d722d30195211672b9075d09ac07ce6fb5d9723f56ce540709ebe4665') )

+ sha512sums+=('695e70d85cf4c666b4325113f5f784b06002b0d9c626338b72bec9049a133cd5a2209d73193574da18d8ecac2fab54754cf499c18faaff5b20e2053a4d338b12')

+ b2sums=('2001f9ac12bfa7369ad32842956cd21b2a786cd28133b6d3256e4aa77210c78ec6cac8a710ff8c2feb5a4797c1a33ce8c8c7dfabd84d7927c08bf8377e330300'

+         'SKIP')

+ b2sums+=( $(${_IS_NONSYSTEMD} && echo '92e1969572e0022bd257f44314045f57db47821d99a40ea1290749967b50ead1cb11adaa9b79f4286fbf20a94173e0ba7f2d4f88208e31d7a03a8de4ea014396') )

+ b2sums+=('0f53c448b2ada7923c1dbab331a0b68a9e79f402bd7e16388a6ea2da4c7d93539405e4bd86eccdaaabcdfdbb0c01c5ca337ba226b81dd8dc91f6411c4e678c64')

+ validpgpkeys=('ECCAC84C1BA08A6CC8E63FBBF22FB1D78A77AEAB'    # Giancarlo Razzolini

+               '86CFFCA918CF3AF47147588051E8B148A9999C34')   # Evangelos Foutras

+ 

+ prepare() {

+   cd $pkgname-$pkgver

+ 

+   ${_IS_NONSYSTEMD} && patch -Np1 -i ../9000-nonsystemd.patch

+ 

+   # https://labs.parabola.nu/issues/3121

+   # https://github.com/archlinux/mkinitcpio/pull/54

+   # https://github.com/archlinux/mkinitcpio/commit/9ee1333a5f3302d7ddb004cf0909c94b4cff60ba.diff

+   patch -Np1 -i ../9001-udev.patch

+ }

+ 

+ check() {

+   make -C "$pkgname-$pkgver" check

+ }

+ 

+ package() {

+   make -C "$pkgname-$pkgver" DESTDIR="$pkgdir" install

+ }

@@ -0,0 +1,15 @@ 

+ #!/bin/sh

+ 

+ post_upgrade() {

+   if [ "$(vercmp 0.9.0 "$2")" -eq 1 ]; then

+     printf '==> If your /usr is on a separate partition, you must add the "usr" hook\n'

+     printf '    to /etc/mkinitcpio.conf and regenerate your images before rebooting\n'

+   fi

+ 

+   if [ "$(vercmp 0.12.0 "$2")" -eq 1 ]; then

+     printf '==> The "block" hook has replaced several hooks:\n'

+     printf '       fw, sata, pata, scsi, virtio, mmc, usb\n'

+     printf '    Replace any and all of these in /etc/mkinitcpio.conf with a single\n'

+     printf '    instance of the "block" hook\n'

+   fi

+ }

file modified
+67 -76
@@ -1,12 +1,16 @@ 

  # Maintainer: Omar Vega Ramos <ovruni@gnu.org.pe>

  # Contributor (Hyperbola): André Silva <emulatorman@hyperbola.info>

+ # Maintainer (Arch):

+ # parabola changes and rationale:

+ # - Added armv7h and i686 support

+ # - Removed nonfree parts

  

  pkgname=netpbm

- pkgver=10.73.31

+ pkgver=10.73.36

  pkgrel=1

  pkgrel+=.parabola1

  pkgdesc="A toolkit for manipulation of graphic images"

- pkgdesc+=", without nonfree parts and patent issues"

+ pkgdesc+=", without nonfree parts"

  arch=('x86_64')

  arch+=('i686' 'armv7h')

  license=('custom' 'BSD' 'GPL' 'LGPL')
@@ -17,91 +21,35 @@ 

  # Get docs with: wget --recursive --relative -nH http://netpbm.sourceforge.net/doc/

  source=(https://downloads.sourceforge.net/project/netpbm/super_stable/$pkgver/netpbm-$pkgver.tgz

          https://sources.archlinux.org/other/packages/netpbm/netpbm-doc-31Jan2014.tar.xz{,.sig}

-         netpbm-CAN-2005-2471.patch netpbm-security-code.patch netpbm-security-scripts.patch)

- sha256sums=('584c95f1ccdcd66d5ca68d7d5501728ae1184cba324d713f6b2a3ca86424243b'

+         netpbm-CAN-2005-2471.patch netpbm-security-code.patch netpbm-security-scripts.patch

+         reproducible-man-gzip.patch use-source-date-epoch.patch)

+ sha256sums=('93b31b11b003082d5fd4037ae5c768b91ea7330b10247a25086c10b5dd71e445'

              '74bcf840ee643c6917330c382484010cb99c004a3fcf05391bebcac63815acb3'

              'SKIP'

              '991aba7897e0710687369b4e2edfba1397ecd77d62578eac496afbc47b5ca970'

-             '2eaa0f842d90bb3dcbc66273d58ec9117b97029da231b141159e580e65b98eb0'

-             '2c397588d9cba2c40dee55c07713d5e77e0e04245db939fdc1962d7de4cf4a33')

+             '83d75a80ce999d8b69572e54f04c4d220c60b0d09f9e52d3236264535c3bf216'

+             '2c397588d9cba2c40dee55c07713d5e77e0e04245db939fdc1962d7de4cf4a33'

+             '8e3efdb4fcbfdc8e9a5c8e9663c7d6b9ecef3a2379ce38d2acc5669c339f6814'

+             '68055341833f482c6910a56c2fdfe046978a1a92fd8442a2a9209c82ce3e4d13')

  validpgpkeys=('5357F3B111688D88C1D88119FCF2CB179205AC90')

  

- prepare() {

-   cd $pkgname-$pkgver

- 

-   # Removing hpcdtoppm/pcdindex (non comercial)

-   rm -rv converter/ppm/hpcdtoppm

- 

-   # Removing ppmtogif/giftopnm (patent restriction)

-   rm -v converter/other/giftopnm.c converter/ppm/ppmtogif.c

-   rm -v test/gif-quant-roundtrip.test test/gif-roundtrip.test test/all-in-place.ok

- 

-   # Removing programs without license information

-   rm -v other/pamchannel.c test/pamchannel.ok

-   rm -v converter/other/pamtopnm.c

-   rm -v converter/pbm/pbmto4425.c

-   rm -v converter/pbm/pbmtoln03.c

-   rm -v converter/pbm/pbmtolps.c

-   rm -v converter/pbm/pbmtopk.c

-   rm -v converter/pbm/pktopbm.c

-   rm -v converter/ppm/ppmtopjxl.c

-   rm -v converter/pgm/spottopgm.c

- 

-   rm -v test/avs-roundtrip.test test/facesaver-roundtrip.test test/ilbm-roundtrip.test test/pamchannel.test \

-         test/pamditherbw.test test/pamenlarge.test test/pamfile.test test/pfm-roundtrip.test \

-         test/pgmtoppm.test test/pict-roundtrip.test test/pnminvert.test test/pnmremap1.test \

-         test/pnmremap2.test test/pnmtopnm-plain.test test/pnm-pam-roundtrip.test test/pnm-plain-roundtrip.test \

-         test/ps-alt-roundtrip.test test/ps-roundtrip.test test/sbig-roundtrip.test test/st4-roundtrip.test \

-         test/targa-roundtrip.test test/utahrle-roundtrip.test test/winicon-roundtrip.test test/xwd-roundtrip.test

- 

-   # Removing references about hpcdtoppm/pcdindex (non comercial)

-   sed -i 's/hpcdtoppm//g' converter/ppm/Makefile

-   sed -i 's/hpcdtoppm\.1//g' buildtools/manpage.mk

-   sed -i 's/pcdindex\.1//g' buildtools/manpage.mk

- 

-   # Removing references about ppmtogif/giftopnm (patent restriction)

-   sed -i 's/ppmtogif//g' converter/ppm/Makefile test/all-in-place.test

-   sed -i 's/ppmtogif\.1//g' buildtools/manpage.mk

-   sed -i 's/giftopnm//g' converter/other/Makefile test/all-in-place.test

-   sed -i 's/giftopnm\.1//g' buildtools/manpage.mk

-   sed -i '/giftopnm/d' converter/other/pnmtopalm/README

- 

-   # Removing references about programs without license information

-   sed -i 's/pamchannel//g' other/Makefile test/all-in-place.test

-   sed -i 's/pamchannel\.1//g' buildtools/manpage.mk

-   sed -i 's/pamchannel\.test//g' test/Test-Order

- 

-   sed -i 's/pamtopnm//g' converter/other/Makefile test/all-in-place.test

-   sed -i 's/pamtopnm\.1//g' buildtools/manpage.mk

-   sed -i '/pnmtopnm/d' netpbm.c

+ remove_program() {

+     file="$1"

+     progname="$(basename ${file} | sed 's/\.c$//')"

  

-   sed -i 's/pbmto4425//g' converter/pbm/Makefile test/all-in-place.test

-   sed -i 's/pbmto4425\.1//g' buildtools/manpage.mk

- 

-   sed -i 's/pbmtoln03//g' converter/pbm/Makefile test/all-in-place.test

-   sed -i 's/pbmtoln03\.1//g' buildtools/manpage.mk

- 

-   sed -i 's/pbmtolps//g' converter/pbm/Makefile test/all-in-place.test

-   sed -i 's/pbmtolps\.1//g' buildtools/manpage.mk

- 

-   sed -i 's/pbmtopk//g' converter/pbm/Makefile test/all-in-place.test

-   sed -i 's/pbmtopk\.1//g' buildtools/manpage.mk

- 

-   sed -i 's/pktopbm//g' converter/pbm/Makefile test/all-in-place.test

-   sed -i 's/pktopbm\.1//g' buildtools/manpage.mk

- 

-   sed -i 's/ppmtopjxl//g' converter/ppm/Makefile test/all-in-place.test

-   sed -i 's/ppmtopjxl\.1//g' buildtools/manpage.mk

- 

-   sed -i 's/spottopgm//g' converter/pgm/Makefile test/all-in-place.test

-   sed -i 's/spottopgm\.1//g' buildtools/manpage.mk

+     rm -v "${file}"

+     sed -i "s/${progname}//g" "$(dirname ${file})/Makefile"

+     sed -i "s/${progname}\.1//g" buildtools/manpage.mk

+ }

  

-   #Removing references about nonfree licenses part

-   sed -i '338,383d' doc/copyright_summary

+ prepare() {

+   cd $pkgname-$pkgver

  

    patch -p1 < ../netpbm-CAN-2005-2471.patch

    patch -p1 < ../netpbm-security-code.patch

    patch -p1 < ../netpbm-security-scripts.patch

+   patch -p1 < ../reproducible-man-gzip.patch

+   patch -p1 < ../use-source-date-epoch.patch

    sed -i 's|#!/usr/bin/python|#!/usr/bin/python2|' buildtools/makeman

    sed -i 's|@python|@python2|' buildtools/manpage.mk

  
@@ -118,6 +66,49 @@ 

    sed -i 's|misc|share/netpbm|' common.mk

    sed -i 's|/link|/lib|' lib/Makefile

    sed -i 's|install.manwebmain install.manweb install.man|install.man|' GNUmakefile

+ 

+   # Remove the converter/ppm/hpcdtoppm directory:

+   # - hpcdtoppm: as hpcdtoppm is not even redistributable, this hpcdtoppm only

+   #   prints a message to steer users toward downloading "the real hpcdtoppm"

+   #   which is nonfree

+   # - pcdovtoppm: no license information

+   rm -rv converter/ppm/hpcdtoppm

+   sed '/\.\/converter\/ppm\/hpcdtoppm \\/d' -i GNUmakefile

+   sed 's/hpcdtoppm//g' -i converter/ppm/Makefile

+ 

+   # Removing programs without license information

+   remove_program converter/other/pamtopnm.c

+   remove_program converter/pbm/pbmto4425.c

+   remove_program converter/pbm/pbmtoln03.c

+   remove_program converter/pbm/pbmtolps.c

+   remove_program converter/pbm/pbmtopk.c

+   remove_program converter/pbm/pktopbm.c

+   remove_program converter/pgm/spottopgm.c

+   remove_program converter/ppm/ppmtogif.c

+   remove_program converter/ppm/ppmtopjxl.c

+   remove_program other/pamchannel.c

+ 

+   # Tests have no license information

+   rm -v -rf test/

+   # Remove test from "SUPPORT_SUBDIRS = urt icon buildtools test"

+   awk '{

+     if ($1 != "SUPPORT_SUBDIRS") {

+       print $0

+     } else {

+       for (i=1;i<=NF;i++) {

+         if($i != "test") {

+           printf $i " "

+         }

+       }

+     }

+   }' GNUmakefile > GNUmakefile.1

+   mv -f GNUmakefile.1 GNUmakefile

+ 

+   sed -i '/pnmtopnm/d' netpbm.c

+ 

+   #Removing references about nonfree licenses part

+   sed -i '338,383d' doc/copyright_summary

+ 

  }

  

  build() {

@@ -240,6 +240,27 @@ 

       *colsP = (((int)head.h_wide - ' ') << 6) + ((int)head.l_wide - ' ');

       *rowsP = (((int)head.h_high - ' ') << 6) + ((int) head.l_high - ' ');

       *padrightP = ( ( *colsP + pad - 1 ) / pad ) * pad - *colsP;

+ diff --git a/converter/pbm/pbmto4425.c b/converter/pbm/pbmto4425.c

+ index 1d97ac6..c4c8cbb 100644

+ --- a/converter/pbm/pbmto4425.c

+ +++ b/converter/pbm/pbmto4425.c

+ @@ -2,6 +2,7 @@

+  

+  #include "nstring.h"

+  #include "pbm.h"

+ +#include <string.h>

+  

+  static char bit_table[2][3] = {

+  {1, 4, 0x10},

+ @@ -160,7 +161,7 @@ main(int argc, char * argv[]) {

+      xres = vmap_width * 2;

+      yres = vmap_height * 3;

+  

+ -    vmap = malloc(vmap_width * vmap_height * sizeof(char));

+ +    vmap = malloc3(vmap_width, vmap_height, sizeof(char));

+      if(vmap == NULL)

+  	{

+          pm_error( "Cannot allocate memory" );

  diff --git a/converter/pbm/pbmtogem.c b/converter/pbm/pbmtogem.c

  index 9eab041..13b0257 100644

  --- a/converter/pbm/pbmtogem.c
@@ -337,6 +358,18 @@ 

   

       putinit(xbmVersion);

   

+ diff --git a/converter/pbm/pktopbm.c b/converter/pbm/pktopbm.c

+ index 712f339..b6fcb02 100644

+ --- a/converter/pbm/pktopbm.c

+ +++ b/converter/pbm/pktopbm.c

+ @@ -280,6 +280,7 @@ main(int argc, char *argv[]) {

+          if (flagbyte == 7) {            /* long form preamble */

+              integer packetlength = get32() ;    /* character packet length */

+              car = get32() ;         /* character number */

+ +            overflow_add(packetlength, pktopbm_pkloc);

+              endofpacket = packetlength + pktopbm_pkloc;

+                  /* calculate end of packet */

+              if ((car >= MAXPKCHAR) || !filename[car]) {

  diff --git a/converter/pbm/thinkjettopbm.l b/converter/pbm/thinkjettopbm.l

  index 5de4f2b..7f31de5 100644

  --- a/converter/pbm/thinkjettopbm.l
@@ -674,6 +707,43 @@ 

   	obuf = (unsigned char *) pm_allocrow(cols, sizeof(unsigned char));

   	cbuf = (unsigned char *) pm_allocrow(cols * 2, sizeof(unsigned char));

   

+ diff --git a/converter/ppm/ppmtopjxl.c b/converter/ppm/ppmtopjxl.c

+ index ddf4963..b2c7e8e 100644

+ --- a/converter/ppm/ppmtopjxl.c

+ +++ b/converter/ppm/ppmtopjxl.c

+ @@ -306,6 +306,9 @@ main(int argc, const char * argv[]) {

+      if (maxval > PCL_MAXVAL)

+          pm_error("color range too large; reduce with ppmcscale");

+  

+ +    if (cols < 0 || rows < 0)

+ +        pm_error("negative size is not possible");

+ +

+      /* Figure out the colormap. */

+      pm_message("Computing colormap...");

+      chv = ppm_computecolorhist(pixels, cols, rows, MAXCOLORS, &colors);

+ @@ -325,6 +328,8 @@ main(int argc, const char * argv[]) {

+          case 0: /* direct mode (no palette) */

+              bpp = bitsperpixel(maxval); /* bits per pixel */

+              bpg = bpp; bpb = bpp;

+ +            overflow2(bpp, 3);

+ +            overflow_add(bpp*3, 7);

+              bpp = (bpp*3+7)>>3;     /* bytes per pixel now */

+              bpr = (bpp<<3)-bpg-bpb; 

+              bpp *= cols;            /* bytes per row now */

+ @@ -334,9 +339,13 @@ main(int argc, const char * argv[]) {

+          case 3: case 7: pclindex++;

+          default:

+              bpp = 8/pclindex;

+ +            overflow_add(cols, bpp);

+ +            if(bpp == 0)

+ +                pm_error("assert: no bpp");

+              bpp = (cols+bpp-1)/bpp;      /* bytes per row */

+          }

+      }

+ +    overflow2(bpp,2);

+      inrow = (char *)malloc((unsigned)bpp);

+      outrow = (char *)malloc((unsigned)bpp*2);

+      runcnt = (signed char *)malloc((unsigned)bpp);

  diff --git a/converter/ppm/ppmtowinicon.c b/converter/ppm/ppmtowinicon.c

  index c673798..af2b445 100644

  --- a/converter/ppm/ppmtowinicon.c
@@ -773,30 +843,6 @@ 

  index ce5e639..a39b689 100644

  --- a/converter/ppm/ximtoppm.c

  +++ b/converter/ppm/ximtoppm.c

- @@ -117,6 +117,7 @@ ReadXimHeader(FILE *     const in_fp,

-      header->bits_channel = atoi(a_head.bits_per_channel);

-      header->alpha_flag = atoi(a_head.alpha_channel);

-      if (strlen(a_head.author)) {

- +        overflow_add(strlen(a_head.author),1);

-          if (!(header->author = calloc((unsigned int)strlen(a_head.author)+1,

-                  1))) {

-              pm_message("ReadXimHeader: can't calloc author string" );

- @@ -126,6 +127,7 @@ ReadXimHeader(FILE *     const in_fp,

-          strncpy(header->author, a_head.author, strlen(a_head.author));

-      }

-      if (strlen(a_head.date)) {

- +        overflow_add(strlen(a_head.date),1);

-          if (!(header->date =calloc((unsigned int)strlen(a_head.date)+1,1))){

-              pm_message("ReadXimHeader: can't calloc date string" );

-              return(0);

- @@ -134,6 +136,7 @@ ReadXimHeader(FILE *     const in_fp,

-          strncpy(header->date, a_head.date, strlen(a_head.date));

-      }

-      if (strlen(a_head.program)) {

- +        overflow_add(strlen(a_head.program),1);

-          if (!(header->program = calloc(

-                      (unsigned int)strlen(a_head.program) + 1, 1))) {

-              pm_message("ReadXimHeader: can't calloc program string" );

  @@ -160,6 +163,7 @@ ReadXimHeader(FILE *     const in_fp,

       if (header->nchannels == 3 && header->bits_channel == 8)

           header->ncolors = 0;

@@ -0,0 +1,16 @@ 

+ diff -aur netpbm-10.73.31.old/buildtools/manpage.mk netpbm-10.73.31/buildtools/manpage.mk

+ --- netpbm-10.73.31.old/buildtools/manpage.mk	2020-05-28 18:41:20.400790506 +0200

+ +++ netpbm-10.73.31/buildtools/manpage.mk	2020-05-28 18:50:50.444143414 +0200

+ @@ -388,9 +388,9 @@

+  # This will install the generated man pages

+  installman:

+  	set -x

+ -	for f in netpbm.1 $(MAN1); do if [ -f $$f ]; then gzip <$$f >$(MANDIR)/man1/$$f.gz; fi; done

+ -	for f in $(MAN3); do if [ -f $$f ]; then gzip <$$f >$(MANDIR)/man3/$$f.gz; fi; done

+ -	for f in $(MAN5); do if [ -f $$f ]; then gzip <$$f >$(MANDIR)/man5/$$f.gz; fi; done

+ +	for f in netpbm.1 $(MAN1); do if [ -f $$f ]; then gzip -n <$$f >$(MANDIR)/man1/$$f.gz; fi; done

+ +	for f in $(MAN3); do if [ -f $$f ]; then gzip -n <$$f >$(MANDIR)/man3/$$f.gz; fi; done

+ +	for f in $(MAN5); do if [ -f $$f ]; then gzip -n <$$f >$(MANDIR)/man5/$$f.gz; fi; done

+  

+  # This will uninstall them

+  uninstallman:

@@ -0,0 +1,13 @@ 

+ Only in netpbm-10.73.31/buildtools/: depend.mk

+ diff -aur netpbm-10.73.31.old/buildtools/stamp-date netpbm-10.73.31/buildtools/stamp-date

+ --- netpbm-10.73.31.old/buildtools/stamp-date	2020-05-30 17:34:29.833395465 +0200

+ +++ netpbm-10.73.31/buildtools/stamp-date	2020-05-30 17:48:52.910091897 +0200

+ @@ -9,7 +9,7 @@

+  # documentation.  This software is provided "as is" without express or

+  # implied warranty.

+  #

+ -DATE=$(date)

+ +DATE="$(date --date="@${SOURCE_DATE_EPOCH:-$(date +%s)}")"

+  LOGNAME_OR_UNKNOWN=${LOGNAME:-UNKNOWN}

+  USER=${USER:-$LOGNAME_OR_UNKNOWN}

+  if [ "$USER" = "UNKNOWN" ]; then

@@ -14,7 +14,7 @@ 

  

  

  pkgname=pacman-mirrorlist

- pkgver=20210803

+ pkgver=20211121

  pkgrel=1.parabola1

  pkgdesc="Parabola GNU/Linux-libre mirror list for use by pacman"

  arch=('any')

file modified
+7 -4
@@ -1,10 +1,11 @@ 

- # Maintainer (Arch): 

- # Contributor (Hyperbola): André Silva <emulatorman@hyperbola.info>

- # Contributor (Hyperbola): Márcio Silva <coadde@hyperbola.info>

+ # Maintainer (arch):

+ # Contributor: André Silva <emulatorman@hyperbola.info>

+ # Contributor: Márcio Silva <coadde@hyperbola.info>

  # Maintainer: Luke Shumaker <lukeshu@parabola.nu>

  # Contributor: Omar Vega Ramos <ovruni@gnu.org.pe>

  # Contributor: Nicolás Reynolds <fauno@kiwwwi.com.ar>

  # Contributor: Daniel Milewski <niitotantei@riseup.net>

+ # Contributor: bill-auger <bill-auger@programmer.net>

  

  pkgname=pacman

  pkgver=6.0.0
@@ -18,7 +19,9 @@ 

  groups=('base-devel')

  depends=('bash' 'glibc' 'libarchive' 'curl'

           'gpgme' 'pacman-mirrorlist' 'archlinux-keyring')

- depends+=('parabola-keyring' 'archlinuxarm-keyring' 'archlinux32-keyring')

+ _upstream_keyring=$(case ${CARCH} in armv7h) echo 'archlinuxarm-keyring' ;;     \

+                                      i686  ) echo 'archlinux32-keyring'  ;; esac)

+ depends+=('parabola-keyring' ${_upstream_keyring} )

  makedepends=('meson' 'asciidoc' 'doxygen')

  checkdepends=('python' 'fakechroot')

  optdepends=('perl-locale-gettext: translation support in makepkg-template')

@@ -11,8 +11,8 @@ 

  

  

  pkgname=parabola-keyring

- pkgver=20210723

- _gitver=7b3eac20134e14161a810add6f6647f2a06c8ee0

+ pkgver=20211128

+ _gitver=7bd8d6478b3e0ff4ff8bc31c3f6aef7b10f8553c

  pkgrel=1

  pkgdesc='Parabola GNU/Linux-libre PGP keyring'

  arch=('any')

file modified
+39 -36
@@ -1,73 +1,76 @@ 

- # Maintainer (Arch): Antonio Rojas <arojas@archlinux.org>

- # Contributor (Arch): Sven-Hendrik Haase <sh@lutzhaase.com># Contributor (Arch): Imanol Celaya <ornitorrincos@archlinux-es.org>

- # Contributor (Arch): Lukas Jirkovsky <l.jirkovsky@gmail.com>

- # Contributor (Arch): Dan Vratil <progdan@progdansoft.com>

- # Contributor (Arch): thotypous <matiasΘarchlinux-br·org>

- # Contributor (Arch): delor <bartekpiech gmail com>

+ # Maintainer (arch): Antonio Rojas <arojas@archlinux.org>

+ # Contributor: Sven-Hendrik Haase <sh@lutzhaase.com>

+ # Contributor: Imanol Celaya <ornitorrincos@archlinux-es.org>

+ # Contributor: Lukas Jirkovsky <l.jirkovsky@gmail.com>

+ # Contributor: Dan Vratil <progdan@progdansoft.com>

+ # Contributor: thotypous <matiasΘarchlinux-br·org>

+ # Contributor: delor <bartekpiech gmail com>

  # Maintainer: bill-auger <bill-auger@programmer.net>

  # Contributor: André Silva <emulatorman@hyperbola.info>

  # Contributor: Theo von Arx <theova@member.fsf.org>

  

  

  # parabola changes and rationale:

- #  - removed support for qt5-webengine

+ # - removed support for qt5-webengine (help GUI is unavailable)

+ # - disable 'googletest' tests - requires internet access - libretools does not allow that

  

  

  pkgname=qtcreator

- pkgver=4.14.0

- _clangver=11.0.1

- pkgrel=4

+ pkgver=6.0.0

+ _clangver=13.0.0

+ [[ "${CARCH}" == 'i686' ]] && _clangver=12.0.1

+ pkgrel=1

  pkgrel+=.parabola1

  pkgdesc='Lightweight, cross-platform integrated development environment'

- pkgdesc+=', without nonfree qt5-webengine help viewer'

+ pkgdesc+=', without non-free qt5-webengine help viewer'

  arch=(x86_64)

- arch+=(i686 armv7h)

+ arch+=(armv7h i686)

  url='https://www.qt.io'

- license=(LGPL)

- depends=(qt5-tools qt5-quickcontrols qt5-quickcontrols2 qt5-webengine qt5-svg qt5-quick3d qt5-serialport

-          clang=$_clangver clazy syntax-highlighting yaml-cpp)

+ license=(GPL3)

+ depends=(qt6-tools qt6-svg qt6-quick3d qt6-webengine qt6-serialport qt6-shadertools qt6-5compat

+          clang=$_clangver clazy yaml-cpp) # syntax-highlighting

  depends=( $( sed -E 's/(qt5-webengine|yaml-cpp)//g' <<<${depends[@]} ) )

+ depends_i686=(icu-compat) # this build requires v69 on i686

  makedepends=(cmake llvm python)

  options=(docs)

- optdepends=('qt5-doc: integrated Qt documentation'

-             'qt5-examples: welcome page examples'

-             'qt5-translations: for other languages'

+ optdepends=('qt6-doc: integrated Qt documentation'

+             'qt6-examples: welcome page examples'

+             'qt6-translations: for other languages'

              'gdb: debugger'

              'cmake: cmake project support'

-             'qbs: QBS project support'

              'x11-ssh-askpass: ssh support'

              'git: git support'

              'mercurial: mercurial support'

              'bzr: bazaar support'

              'valgrind: analyze support'

-             'perf: performer analyzer')

- source=("https://download.qt.io/official_releases/qtcreator/${pkgver%.*}/$pkgver/qt-creator-opensource-src-$pkgver.tar.xz"

-          qtcreator-fix-clang-paths.patch)

- sha256sums=('d240109351e96446ff149cbd56341ec02ba37bfa50462a85e4d02dfe6b21201e'

-             'eaaa001d3b2705ca2bdfafca5ffce7919baed8726c50113ae03e1d97da5b8c8d')

+             'perf: performer analyzer'

+             'mlocate: locator filter')

+ source=(https://download.qt.io/official_releases/qtcreator/${pkgver%.*}/$pkgver/qt-creator-opensource-src-$pkgver.tar.xz)

+ sha256sums=('6beb7802f6ab339f0ea947530e6902245057ec161b2b6d2ed9053e1bee1be0bf')

  

- prepare() {

-   cd qt-creator-opensource-src-$pkgver

+ _enable_tests=OFF # 'OFF' or 'ON' - 'ON' requires internet access

  

- # use system qbs

-   rm -r src/shared/qbs

- # Fix linking to clang

-   sed -e 's|clangFormat|clang-cpp|' -i src/plugins/clangformat/CMakeLists.txt  

- # Fix libexec path

-   sed -e 's|libexec/qtcreator|lib/qtcreator|' -i cmake/QtCreatorAPIInternal.cmake

- # Fix clang include path

-   patch -p1 -i ../qtcreator-fix-clang-paths.patch

- }

  

  build() {

    cmake -B build -S qt-creator-opensource-src-$pkgver \

      -DCMAKE_INSTALL_PREFIX=/usr \

-     -DWITH_DOCS=ON

+     -DCMAKE_INSTALL_LIBEXECDIR=lib \

+     -DWITH_DOCS=ON \

+     -DBUILD_DEVELOPER_DOCS=ON \

+     -DBUILD_QBS=OFF \

+     -DBUILD_TESTING=$_enable_tests \

+     -DBUILD_HELPVIEWERBACKEND_QTWEBENGINE=OFF \

+     -DQTC_CLANG_BUILDMODE_MATCH=ON

+ 

    cmake --build build

+   cmake --build build --target docs

  }

  

  package() {

    DESTDIR="$pkgdir" cmake --install build

  

+   # Install docs

+   cp -r build/share/doc "$pkgdir"/usr/share

+ 

    install -Dm644 qt-creator-opensource-src-$pkgver/LICENSE.GPL3-EXCEPT "$pkgdir"/usr/share/licenses/qtcreator/LICENSE.GPL3-EXCEPT

  }

@@ -1,15 +0,0 @@ 

- diff --git a/src/libs/clangsupport/CMakeLists.txt b/src/libs/clangsupport/CMakeLists.txt

- index dcaa464710..01cf7580b7 100644

- --- a/src/libs/clangsupport/CMakeLists.txt

- +++ b/src/libs/clangsupport/CMakeLists.txt

- @@ -5,8 +5,8 @@ add_qtc_library(ClangSupport

-    PUBLIC_DEPENDS Utils Sqlite Qt5::Core Qt5::Network

-    PUBLIC_DEFINES

-      CLANG_VERSION="${CLANG_VERSION}"

- -    CLANG_INCLUDE_DIR="${IDE_LIBEXEC_PATH}/clang/lib/clang/${CLANG_VERSION}/include"

- -    CLANG_BINDIR="${IDE_LIBEXEC_PATH}/clang/bin"

- +    CLANG_INCLUDE_DIR="/usr/lib/clang/${CLANG_VERSION}/include"

- +    CLANG_BINDIR="/usr/bin"

-    DEFINES CLANGSUPPORT_BUILD_LIB

-    PUBLIC_INCLUDES

-      "${CMAKE_CURRENT_LIST_DIR}"

@@ -1,5 +1,4 @@ 

- From 919ac3d7184faee0ccfa7fe65c6635a7dcf5d234 Mon Sep 17 00:00:00 2001

- Message-Id: <919ac3d7184faee0ccfa7fe65c6635a7dcf5d234.1553291431.git.jan.steffens@gmail.com>

+ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001

  From: "Jan Alexander Steffens (heftig)" <jan.steffens@gmail.com>

  Date: Fri, 22 Mar 2019 22:37:22 +0100

  Subject: [PATCH] qtui: Set desktop file name
@@ -18,7 +17,7 @@ 

   2 files changed, 6 insertions(+)

  

  diff --git a/src/qtui/monoapplication.cpp b/src/qtui/monoapplication.cpp

- index 809f1147..3f60523f 100644

+ index 809f1147..457a5dce 100644

  --- a/src/qtui/monoapplication.cpp

  +++ b/src/qtui/monoapplication.cpp

  @@ -32,6 +32,9 @@ MonolithicApplication::MonolithicApplication(int &argc, char **argv)
@@ -26,13 +25,13 @@ 

   {

       Quassel::setRunMode(Quassel::Monolithic);

  +#if QT_VERSION >= 0x050700

- +    QGuiApplication::setDesktopFileName(Quassel::buildInfo().applicationName + ".desktop");

+ +    QGuiApplication::setDesktopFileName(Quassel::buildInfo().applicationName);

  +#endif

   }

   

   

  diff --git a/src/qtui/qtuiapplication.cpp b/src/qtui/qtuiapplication.cpp

- index e5b0b773..989a1961 100644

+ index e5b0b773..42e4bf77 100644

  --- a/src/qtui/qtuiapplication.cpp

  +++ b/src/qtui/qtuiapplication.cpp

  @@ -92,6 +92,9 @@ QtUiApplication::QtUiApplication(int &argc, char **argv)
@@ -40,11 +39,8 @@ 

       QGuiApplication::setFallbackSessionManagementEnabled(false);

   #endif

  +#if QT_VERSION >= 0x050700

- +    QGuiApplication::setDesktopFileName(Quassel::buildInfo().clientApplicationName + ".desktop");

+ +    QGuiApplication::setDesktopFileName(Quassel::buildInfo().clientApplicationName);

  +#endif

   }

   

   

- -- 

- 2.21.0

- 

@@ -0,0 +1,35 @@ 

+ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001

+ From: Manuel Nickschas <sputnick@quassel-irc.org>

+ Date: Tue, 7 Jan 2020 18:34:54 +0100

+ Subject: [PATCH] common: Disable enum type stream operators for Qt >= 5.14

+ 

+ Starting from version 5.14, Qt provides stream operators for enum

+ types, which collide with the ones we ship in types.h. Disable

+ Quassel's stream operators when compiling against Qt 5.14 or later.

+ 

+ Add a unit test that ensures that enum serialization honors the width

+ of the underlying type.

+ ---

+  src/common/types.h | 2 ++

+  1 file changed, 2 insertions(+)

+ 

+ diff --git a/src/common/types.h b/src/common/types.h

+ index 467d9fb2..c4b9f364 100644

+ --- a/src/common/types.h

+ +++ b/src/common/types.h

+ @@ -140,6 +140,7 @@ Q_DECLARE_METATYPE(QHostAddress)

+  typedef QList<MsgId> MsgIdList;

+  typedef QList<BufferId> BufferIdList;

+  

+ +#if QT_VERSION < QT_VERSION_CHECK(5, 14, 0)

+  /**

+   * Catch-all stream serialization operator for enum types.

+   *

+ @@ -169,6 +170,7 @@ QDataStream &operator>>(QDataStream &in, T &value) {

+      value = static_cast<T>(v);

+      return in;

+  }

+ +#endif

+  

+  // Exceptions

+  

@@ -0,0 +1,24 @@ 

+ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001

+ From: Svetlana T <svetlana@members.fsf.org>

+ Date: Sun, 8 Mar 2020 07:46:19 +1100

+ Subject: [PATCH] Removed mozilla IRC network from networks.ini

+ 

+ Mozilla IRC has shut down this month. Mozilla moved their chat services to matrix. I am removing it from the default preset now.

+ ---

+  data/networks.ini | 3 ---

+  1 file changed, 3 deletions(-)

+ 

+ diff --git a/data/networks.ini b/data/networks.ini

+ index 5f8fa029..73afecb3 100644

+ --- a/data/networks.ini

+ +++ b/data/networks.ini

+ @@ -35,9 +35,6 @@ Servers=irc.gamesnet.net:6667

+  [IRCnet]

+  Servers=irc.ircnet.com:6667,open.ircnet.net:6666,irc.us.ircnet.net:6665,ircnet.netvision.net.il:6666,irc.tokyo.wide.ad.jp:6666,irc.freebsd.org.tw:6666,linz.irc.at:6666,vienna.irc.at:6666,ircnet.realroot.be:6666,irc.datacomm.ch:6664,irc.felk.cvut.cz:6667,random.ircd.de:6666,irc.dotsrc.org:6666,irc.ircnet.ee:6666,irc.cs.hut.fi:6667,ircnet.club-internet.fr:6666,atw.irc.hu:6667,irc.simnet.is:6660,irc.eutelia.it:6664,irc.eutelia.it:7000,irc.tin.it:6665,irc.apollo.lv:6666,irc.apollo.lv:7000,irc.uunet.nl:6660,irc.xs4all.nl:6660,irc.snt.utwente.nl:6660,irc.ifi.uio.no:6667,irc.pvv.ntnu.no:6667,lublin.irc.pl:6666,warszawa.irc.pl:6666,irc.ludd.luth.se:6661,irc.swipnet.se:6660,irc.swipnet.se:8000,irc.arnes.si:6666,irc.link.si:6666,irc.nextra.sk:6666,ircnet.demon.co.uk:6665,ircnet.eversible.com:6665,ircnet.choopa.net:6665

+  

+ -[Mozilla]

+ -Servers=irc.mozilla.org:+6697,irc.mozilla.org:6667

+ -

+  [OFTC]

+  Servers=irc.oftc.net:+6697,irc.oftc.net:6667

+  

@@ -0,0 +1,99 @@ 

+ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001

+ From: phuzion <398094+phuzion@users.noreply.github.com>

+ Date: Wed, 19 May 2021 18:05:36 +0000

+ Subject: [PATCH] This commit changes the official Quassel IRC channel,

+  (#quassel) from the Freenode IRC network to the Libera IRC network in

+  response to recent issues which resulted in the entire volunteer staff of

+  Freenode stepping down.

+ 

+ For more information about this situation, please read this:

+ https://gist.github.com/joepie91/df80d8d36cd9d1bde46ba018af497409

+ ---

+  README.md             | 6 ++----

+  data/networks.ini     | 7 +++++--

+  src/qtui/aboutdlg.cpp | 2 +-

+  3 files changed, 8 insertions(+), 7 deletions(-)

+ 

+ diff --git a/README.md b/README.md

+ index c7b03dc2..6f54dfaa 100644

+ --- a/README.md

+ +++ b/README.md

+ @@ -47,31 +47,29 @@ documentation.

+  

+  IRC is the preferred means of getting in touch with the developers.

+  

+ -The Quassel IRC Team can be contacted on **`Freenode/#quassel`**

+ -(or **`#quassel.de`**).  If you have trouble getting Quassel to connect,

+ -you can use [Freenode's webchat][help-freenode].

+ +The Quassel IRC Team can be contacted on **`Libera Chat/#quassel`**

+ +(or **`#quassel.de`**). 

+  

+  We always welcome new users in our channels!

+  

+  You can learn more and reach out to us in several ways:

+  * [Visit our homepage][web-home]

+  * [Submit and browse issues on the bugtracker][dev-bugs]

+    * GitHub issues are not used, but [pull requests][dev-pr-new] are accepted!

+  * [Email the dev team - devel@quassel-irc.org][dev-email]

+  

+  Thanks for reading,

+  

+  ~ *The Quassel IRC Team*

+  

+  [web-home]: https://quassel-irc.org

+  [web-download]: https://quassel-irc.org/downloads

+  [dev-bugs]: https://bugs.quassel-irc.org

+  [dev-email]: mailto:devel@quassel-irc.org

+  [dev-pr-new]: https://github.com/quassel/quassel/pull/new/master

+  [docs-wiki]: https://bugs.quassel-irc.org/projects/quassel-irc/wiki

+  [docs-wiki-unofficial-build]: https://bugs.quassel-irc.org/projects/quassel-irc/wiki#Unofficial-builds

+  [docs-wiki-getstart]: https://bugs.quassel-irc.org/projects/quassel-irc/wiki#Getting-started

+ -[help-freenode]: https://webchat.freenode.net?channels=%23quassel

+  [repo-changelog]: ChangeLog

+  [ci-linux-badge]: https://travis-ci.org/quassel/quassel.svg?branch=master

+  [ci-linux-status-page]: https://travis-ci.org/quassel/quassel/branches

+ diff --git a/data/networks.ini b/data/networks.ini

+ index 73afecb3..cf16313e 100644

+ --- a/data/networks.ini

+ +++ b/data/networks.ini

+ @@ -19,22 +19,25 @@ Servers=irc.efnet.info:6667,irc.efnet.org:6667,irc.inter.net.il:6667,irc.igs.ca:

+  Servers=irc.enterthegame.com:6667

+  

+  [Freenode]

+ -Default=Yes

+ -DefaultChannels=#quassel

+  Servers=chat.freenode.net:+6697,chat.freenode.net:6667

+  

+  [GalaxyNet]

+  Servers=irc.galaxynet.org:6662,irc.galaxynet.org:7000,boston.ma.us.galaxynet.org:6661

+  

+  [GameSurge]

+  Servers=irc.gamesurge.net:6667,irc.eu.gamesurge.net:6667

+  

+  [GamesNET]

+  Servers=irc.gamesnet.net:6667

+  

+  [IRCnet]

+  Servers=irc.ircnet.com:6667,open.ircnet.net:6666,irc.us.ircnet.net:6665,ircnet.netvision.net.il:6666,irc.tokyo.wide.ad.jp:6666,irc.freebsd.org.tw:6666,linz.irc.at:6666,vienna.irc.at:6666,ircnet.realroot.be:6666,irc.datacomm.ch:6664,irc.felk.cvut.cz:6667,random.ircd.de:6666,irc.dotsrc.org:6666,irc.ircnet.ee:6666,irc.cs.hut.fi:6667,ircnet.club-internet.fr:6666,atw.irc.hu:6667,irc.simnet.is:6660,irc.eutelia.it:6664,irc.eutelia.it:7000,irc.tin.it:6665,irc.apollo.lv:6666,irc.apollo.lv:7000,irc.uunet.nl:6660,irc.xs4all.nl:6660,irc.snt.utwente.nl:6660,irc.ifi.uio.no:6667,irc.pvv.ntnu.no:6667,lublin.irc.pl:6666,warszawa.irc.pl:6666,irc.ludd.luth.se:6661,irc.swipnet.se:6660,irc.swipnet.se:8000,irc.arnes.si:6666,irc.link.si:6666,irc.nextra.sk:6666,ircnet.demon.co.uk:6665,ircnet.eversible.com:6665,ircnet.choopa.net:6665

+  

+ +[Libera Chat]

+ +Default=Yes

+ +DefaultChannels=#quassel

+ +Servers=irc.libera.chat:+6697,irc.libera.chat:6667

+ +

+  [OFTC]

+  Servers=irc.oftc.net:+6697,irc.oftc.net:6667

+  

+ diff --git a/src/qtui/aboutdlg.cpp b/src/qtui/aboutdlg.cpp

+ index 6b21b0f5..a6c4da25 100644

+ --- a/src/qtui/aboutdlg.cpp

+ +++ b/src/qtui/aboutdlg.cpp

+ @@ -67,7 +67,7 @@ QString AboutDlg::about() const

+      QString res {tr("<b>A modern, distributed IRC Client</b><br><br>"

+               "&copy;%1 by the Quassel Project<br>"

+               "<a href=\"https://quassel-irc.org\">https://quassel-irc.org</a><br>"

+ -             "<a href=\"irc://irc.freenode.net/quassel\">#quassel</a> on <a href=\"https://www.freenode.net\">Freenode</a><br><br>"

+ +             "<a href=\"irc://irc.libera.chat/quassel\">#quassel</a> on <a href=\"https://libera.chat\">Libera Chat</a><br><br>"

+               "Quassel IRC is dual-licensed under <a href=\"https://www.gnu.org/licenses/gpl-2.0.txt\">GPLv2</a> and "

+                   "<a href=\"https://www.gnu.org/licenses/gpl-3.0.txt\">GPLv3</a>.<br>"

+               "<a href=\"https://api.kde.org/frameworks/breeze-icons/html\">Breeze icon theme</a> &copy; Uri Herrera and others, licensed under the "

libre/quassel/9000-search-duck.patch libre/quassel/search-duck.patch
file renamed
file was moved with no change to the file
file modified
+86 -29
@@ -2,49 +2,62 @@ 

  # Contributor: Vesa Kaihlavirta <vegai@iki.fi>

  # Maintainer: bill-auger <bill-auger@programmer.net>

  

+ 

  # parabola changes and rationale:

  # - repalce qt5-webengine with qt5-webkit (for URL previews)

+ # - set duckduckgo as default search engine

  

  

  pkgbase=quassel

  pkgname=('quassel-core'

           'quassel-client'

-          'quassel-client-small'

-          'quassel-monolithic')

+          'quassel-client-qt'

+          'quassel-monolithic'

+          'quassel-monolithic-qt'

+          'quassel-common')

  pkgver=0.13.1

- pkgrel=4

+ pkgrel=9

  pkgrel+=.parabola1

  pkgdesc="Next-generation distributed IRC client"

  arch=('x86_64')

  arch+=('armv7h' 'i686')

  url="https://quassel-irc.org/"

  license=('GPL')

- makedepends=('qt5-base' 'qt5-tools' 'qt5-webengine' 'qca-qt5' 'qt5-script'

+ makedepends=('qt5-base' 'qt5-tools' 'qt5-webengine' 'qca' 'qt5-script'

               'qt5-multimedia' 'knotifyconfig' 'sonnet' 'libldap' 'cmake'

               'extra-cmake-modules' 'python' 'hicolor-icon-theme')

  makedepends=(${makedepends[*]/qt5-webengine/qt5-webkit})

  source=(https://quassel-irc.org/pub/$pkgbase-$pkgver.tar.bz2

          0001-qtui-Set-desktop-file-name.patch

-         quassel-0.13.1-qt5.14.patch

-         search-duck.patch

+         0002-common-Disable-enum-type-stream-operators-for-Qt-5.1.patch

+         0003-Removed-mozilla-IRC-network-from-networks.ini.patch

+         0004-This-commit-changes-the-official-Quassel-IRC-channel.patch

          $pkgbase.service

          $pkgbase.sysusers

          $pkgbase.tmpfiles

          $pkgbase.conf)

+ source+=(9000-search-duck.patch)

  sha256sums=('48efee9778743b1db9f44efb91d1c913104db01190c57f2ff57483c39a97e855'

-             '695ff3b605ea62ccfdf9ec4b9e6ffa74f3e2c0ac81402d51a74d263c47886c92'

-             '3d43f498df04db59a5199e0a81b8fd7ac37ef46fffb0c69ab5a17bcafb6d8c65'

-             '3d90a7edfa2b2e27e5f56b25f7583585efbcd35219c04a3bf138d9fe9bb9eab2'

+             '7a64214024dc047f35ec8af3c5d543853a5c89c0506766c69c2e1072ca8f5ec7'

+             'a1f874558f31c786b2fb483454d14e74a0dfc01382e1ba58bd610a65e02f4df4'

+             '0f92f3a51d2e3272d71b21a563047d7fae93bc2dd6676f405a2d63a20d48521b'

+             'f59d4138f5fc8c9e84b5626fcbe16eec21b22344dc6c28d784c511677de661e1'

              '5dbe20290f3361b9b7a74a52905137e76b656976febf2d31082a2276f9dcde7f'

              '3c72441a99e2668c6a8a751fa07beeb44f937576c8a1b5f615e4a55f841d93d9'

              '2afd4340c7713f6533e5d175a86b28fd118ecd907776c2b10925d1a4fb31cdca'

              'f3031ea8217e01ba42cea14606169e3e27affa5918968ffd5a03c21ae92fe2b8')

+ sha256sums+=('3d90a7edfa2b2e27e5f56b25f7583585efbcd35219c04a3bf138d9fe9bb9eab2')

+ 

  

  prepare() {

    cd $pkgbase-$pkgver

    patch -Np1 -i ../0001-qtui-Set-desktop-file-name.patch

-   patch -Np1 -i ../quassel-0.13.1-qt5.14.patch

-   patch -Np1 -i ../search-duck.patch

+   patch -Np1 -i ../0002-common-Disable-enum-type-stream-operators-for-Qt-5.1.patch

+   patch -Np1 -i ../0003-Removed-mozilla-IRC-network-from-networks.ini.patch

+   patch -Np1 -i ../0004-This-commit-changes-the-official-Quassel-IRC-channel.patch

+ 

+   # parabola patches

+   patch -Np1 -i ../9000-search-duck.patch

  }

  

  _build() (
@@ -77,6 +90,15 @@ 

      -DWITH_WEBENGINE=OFF \

      -DWITH_KDE=ON

  

+   _build monolithic-qt \

+     -DWANT_CORE=OFF \

+     -DWANT_QTCLIENT=OFF \

+     -DWITH_WEBKIT=OFF \

+     -DWITH_WEBENGINE=OFF \

+     -DCMAKE_DISABLE_FIND_PACKAGE_dbusmenu-qt5=ON \

+     -DCMAKE_DISABLE_FIND_PACKAGE_Qt5Multimedia=ON \

+     -DCMAKE_DISABLE_FIND_PACKAGE_Phonon4Qt5=ON

+ 

    _build client \

      -DWANT_CORE=OFF \

      -DWANT_MONO=OFF \
@@ -84,7 +106,7 @@ 

      -DWITH_WEBENGINE=OFF \

      -DWITH_KDE=ON

  

-   _build client-small \

+   _build client-qt \

      -DWANT_CORE=OFF \

      -DWANT_MONO=OFF \

      -DWITH_WEBKIT=OFF \
@@ -96,7 +118,8 @@ 

  

  package_quassel-core() {

  pkgdesc="Next-generation distributed IRC client - core only"

- depends=('icu' 'qca-qt5' 'qt5-script' 'libldap')

+ depends=('icu' 'qca' 'qt5-script' 'libldap')

+ depends+=(libicuuc.so libicudata.so) # via 'qt5-base' -> libQt5Core.so.N -> libicuuc.so.M -> libicudata.so.M

  optdepends=('postgresql: PostgreSQL database support')

  backup=(etc/conf.d/quassel)

  
@@ -116,41 +139,75 @@ 

  }

  

  package_quassel-client() {

- pkgdesc="Next-generation distributed IRC client - client only"

- pkgdesc+=" (with webkit HTML rendering)"

- depends=('qt5-base' 'qt5-webengine' 'qt5-multimedia' 'knotifyconfig'

-          'hicolor-icon-theme')

+ pkgdesc="Next-generation distributed IRC client - client only, KDE version"

+ depends=('quassel-common' 'qt5-base' 'qt5-webengine' 'qt5-multimedia' 'knotifyconfig')

+ pkgdesc+=" with webkit HTML rendering"

  depends=(${depends[*]/qt5-webengine/qt5-webkit})

  optdepends=('perl: for builtin /exec scripts')

- conflicts=('quassel-monolithic' 'quassel-client-small')

+ conflicts=('quassel-client-qt')

  

    _install client

    install -Dm644 $pkgbase-$pkgver/data/quasselclient.appdata.xml "$pkgdir/usr/share/metainfo/quasselclient.appdata.xml"

+ 

+   # Split quassel-common

+   rm -r "$pkgdir"/usr/share/{icons,knotifications5,pixmaps,quassel}

  }

  

- package_quassel-client-small() {

- pkgdesc="Next-generation distributed IRC client - client only, reduced deps"

- depends=('qt5-base' 'qt5-svg' 'sonnet' 'hicolor-icon-theme')

+ package_quassel-client-qt() {

+ pkgdesc="Next-generation distributed IRC client - client only, Qt version with reduced deps"

+ depends=('quassel-common' 'qt5-base' 'qt5-svg' 'sonnet')

  optdepends=('perl: for builtin /exec scripts')

- conflicts=('quassel-monolithic' 'quassel-client')

- replaces=('quassel-remote')

+ conflicts=('quassel-client')

+ replaces=('quassel-client-small' 'quassel-remote')

+ 

+   _install client-qt

  

-   _install client-small

+   # Split quassel-common

+   rm -r "$pkgdir"/usr/share/{icons,pixmaps,quassel}

  

    # Ignore package by AppStream to avoid duplicated IDs

    echo 'X-AppStream-Ignore=true' >> "$pkgdir/usr/share/applications/quasselclient.desktop"

  }

  

  package_quassel-monolithic() {

- pkgdesc="Next-generation distributed IRC client - monolithic"

- pkgdesc+=" (with webkit HTML rendering)"

- depends=('qt5-base' 'qt5-webengine' 'qt5-multimedia' 'qt5-script' 'qca-qt5'

-          'knotifyconfig' 'libldap' 'hicolor-icon-theme')

+ pkgdesc="Next-generation distributed IRC client - monolithic, KDE version"

+ depends=('quassel-common' 'qt5-base' 'qt5-webengine' 'qt5-multimedia' 'qt5-script' 'qca'

+          'knotifyconfig' 'libldap')

+ pkgdesc+=" with webkit HTML rendering"

  depends=(${depends[*]/qt5-webengine/qt5-webkit})

  optdepends=('perl: for builtin /exec scripts'

              'postgresql: PostgreSQL database support')

- conflicts=('quassel-client' 'quassel-client-small')

+ conflicts=('quassel-monolithic-qt')

  

    _install monolithic

    install -Dm644 $pkgbase-$pkgver/data/quassel.appdata.xml "$pkgdir/usr/share/metainfo/quassel.appdata.xml"

+ 

+   # Split quassel-common

+   mkdir "$srcdir/quassel-common"

+   mv "$pkgdir"/usr/share/{icons,knotifications5,pixmaps,quassel} \

+      "$srcdir/quassel-common/"

+ }

+ 

+ package_quassel-monolithic-qt() {

+ pkgdesc="Next-generation distributed IRC client - monolithic, Qt version with reduced deps"

+ depends=('quassel-common' 'qca' 'qt5-base' 'qt5-svg' 'qt5-script' 'sonnet')

+ optdepends=('perl: for builtin /exec scripts'

+             'postgresql: PostgreSQL database support')

+ conflicts=('quassel-monolithic')

+ 

+   _install monolithic-qt

+ 

+   # Split quassel-common

+   rm -r "$pkgdir"/usr/share/{icons,pixmaps,quassel}

+ 

+   # Ignore package by AppStream to avoid duplicated IDs

+   echo 'X-AppStream-Ignore=true' >> "$pkgdir/usr/share/applications/quassel.desktop"

+ }

+ 

+ package_quassel-common() {

+   pkgdesc="Common files for Quassel"

+   depends=('hicolor-icon-theme')

+ 

+   install -dm755 "$pkgdir/usr/share"

+   mv quassel-common/* "$pkgdir/usr/share"

  }

@@ -1,118 +0,0 @@ 

- commit c90702bdbc43fc542d7df6d5ec4b321912ca0035

- Author: Manuel Nickschas <sputnick@quassel-irc.org>

- Date:   Tue Jan 7 18:34:54 2020 +0100

- 

-     common: Disable enum type stream operators for Qt >= 5.14

-     

-     Starting from version 5.14, Qt provides stream operators for enum

-     types, which collide with the ones we ship in types.h. Disable

-     Quassel's stream operators when compiling against Qt 5.14 or later.

-     

-     Add a unit test that ensures that enum serialization honors the width

-     of the underlying type.

- 

- diff --git a/src/common/types.h b/src/common/types.h

- index 467d9fb2..c4b9f364 100644

- --- a/src/common/types.h

- +++ b/src/common/types.h

- @@ -140,6 +140,7 @@ Q_DECLARE_METATYPE(QHostAddress)

-  typedef QList<MsgId> MsgIdList;

-  typedef QList<BufferId> BufferIdList;

-  

- +#if QT_VERSION < QT_VERSION_CHECK(5, 14, 0)

-  /**

-   * Catch-all stream serialization operator for enum types.

-   *

- @@ -169,6 +170,7 @@ QDataStream &operator>>(QDataStream &in, T &value) {

-      value = static_cast<T>(v);

-      return in;

-  }

- +#endif

-  

-  // Exceptions

-  

- diff --git a/src/common/typestest.cpp b/src/common/typestest.cpp

- new file mode 100644

- index 00000000..04031c29

- --- /dev/null

- +++ b/src/common/typestest.cpp

- @@ -0,0 +1,79 @@

- +/***************************************************************************

- + *   Copyright (C) 2005-2020 by the Quassel Project                        *

- + *   devel@quassel-irc.org                                                 *

- + *                                                                         *

- + *   This program is free software; you can redistribute it and/or modify  *

- + *   it under the terms of the GNU General Public License as published by  *

- + *   the Free Software Foundation; either version 2 of the License, or     *

- + *   (at your option) version 3.                                           *

- + *                                                                         *

- + *   This program is distributed in the hope that it will be useful,       *

- + *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *

- + *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *

- + *   GNU General Public License for more details.                          *

- + *                                                                         *

- + *   You should have received a copy of the GNU General Public License     *

- + *   along with this program; if not, write to the                         *

- + *   Free Software Foundation, Inc.,                                       *

- + *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.         *

- + ***************************************************************************/

- +

- +#include <cstdint>

- +

- +#include <QByteArray>

- +#include <QDataStream>

- +#include <QObject>

- +

- +#include "testglobal.h"

- +#include "types.h"

- +

- +using namespace ::testing;

- +

- +class EnumHolder

- +{

- +    Q_GADGET

- +

- +public:

- +    enum class Enum16 : uint16_t {};

- +    enum class Enum32 : uint32_t {};

- +

- +    enum class EnumQt16 : uint16_t {};

- +    Q_ENUM(EnumQt16)

- +    enum class EnumQt32 : uint32_t {};

- +    Q_ENUM(EnumQt32)

- +};

- +

- +// Verify that enums are (de)serialized as their underlying type

- +TEST(TypesTest, enumSerialization)

- +{

- +    QByteArray data;

- +    QDataStream out(&data, QIODevice::WriteOnly);

- +

- +    // Serialize

- +    out << EnumHolder::Enum16(0xabcd);

- +    ASSERT_THAT(data.size(), Eq(2));

- +    out << EnumHolder::Enum32(0x123456);

- +    ASSERT_THAT(data.size(), Eq(6));

- +    out << EnumHolder::EnumQt16(0x4321);

- +    ASSERT_THAT(data.size(), Eq(8));

- +    out << EnumHolder::Enum32(0xfedcba);

- +    ASSERT_THAT(data.size(), Eq(12));

- +    ASSERT_THAT(out.status(), Eq(QDataStream::Status::Ok));

- +

- +    // Deserialize

- +    QDataStream in(data);

- +    EnumHolder::Enum16 enum16;

- +    EnumHolder::Enum32 enum32;

- +    EnumHolder::EnumQt16 enumQt16;

- +    EnumHolder::EnumQt32 enumQt32;

- +    in >> enum16  >> enum32 >> enumQt16 >> enumQt32;

- +    ASSERT_THAT(in.status(), Eq(QDataStream::Status::Ok));

- +    EXPECT_TRUE(in.atEnd());

- +

- +    EXPECT_THAT((int)enum16, Eq(0xabcd));

- +    EXPECT_THAT((int)enum32, Eq(0x123456));

- +    EXPECT_THAT((int)enumQt16, Eq(0x4321));

- +    EXPECT_THAT((int)enumQt32, Eq(0xfedcba));

- +}

- +

- +#include "typestest.moc"

@@ -0,0 +1,60 @@ 

+ # Maintainer (arch): Levente Polyak <anthraxx[at]archlinux[dot]org>

+ # Maintainer (arch): Santiago Torres-Arias <santiago[at]archlinux[dot]org>

+ # Contributor: Aaron McDaniel (mcd1992) <'aur' at the domain 'fgthou.se'>

+ # Maintainer: bill-auger <bill-auger@programmer.net>

+ 

+ pkgname=rz-cutter

+ _gitcommit=6dab092b515024ba769e81554c91c0d8b9883264

+ pkgver=2.0.3

+ pkgrel=2

+ pkgrel+=.parabola1

+ pkgdesc='Qt and C++ GUI for rizin reverse engineering framework'

+ url='https://github.com/rizinorg/cutter'

+ arch=('x86_64')

+ arch+=('armv7h' 'i686')

+ license=('GPL3')

+ depends=('rizin' 'capstone' 'qt5-base' 'qt5-svg' 'qt5-webengine' 'icu' 'python' 'jupyter'

+          'pyside2' 'python-shiboken2' 'graphviz' 'gcc-libs' 'syntax-highlighting')

+ depends=( ${depends[@]/qt5-webengine/} )

+ makedepends=('git' 'cmake' 'ninja' 'shiboken2' 'qt5-tools')

+ optdepends=('rz-ghidra: ghidra decompiler plugin')

+ source=("git+https://github.com/rizinorg/cutter#commit=${_gitcommit}"

+         "git+https://github.com/rizinorg/cutter-translations")

+ sha512sums=('SKIP'

+             'SKIP')

+ b2sums=('SKIP'

+         'SKIP')

+ 

+ pkgver() {

+   cd cutter

+   git describe --tags --match 'v*' | sed 's/^v//;s/\([^-]*-g\)/r\1/;s/-/./g'

+ }

+ 

+ prepare() {

+   cd cutter

+   git config 'submodule.src/translations.url' "${srcdir}/cutter-translations"

+   git submodule update --init src/translations

+ }

+ 

+ build() {

+   cd cutter

+   cmake -B build \

+     -DCMAKE_INSTALL_PREFIX=/usr \

+     -DCMAKE_BUILD_TYPE=None \

+     -DCUTTER_ENABLE_PYTHON=ON \

+     -DCUTTER_ENABLE_PYTHON_BINDINGS=ON \

+     -DCUTTER_USE_BUNDLED_RIZIN=OFF \

+     -DCUTTER_USE_ADDITIONAL_RIZIN_PATHS=OFF \

+     -DCUTTER_ENABLE_CRASH_REPORTS=OFF \

+     -DCUTTER_ENABLE_GRAPHVIZ=ON \

+     -Wno-dev \

+     -G Ninja

+   ninja -C build

+ }

+ 

+ package() {

+   cd cutter

+   DESTDIR="${pkgdir}" ninja -C build install

+   install -d "${pkgdir}/usr/share/doc/${pkgname}"

+   cp -a docs/* "${pkgdir}/usr/share/doc/${pkgname}"

+ }

@@ -2,7 +2,7 @@ 

  

  _target=sh-elf

  pkgname=$_target-binutils

- pkgver=2.36.1

+ pkgver=2.37

  pkgrel=1

  pkgdesc='A set of programs to assemble and manipulate binary and object files for the SuperH (bare-metal) target'

  arch=('x86_64' 'i686' 'armv7h')
@@ -10,7 +10,7 @@ 

  license=(GPL)

  depends=(zlib)

  source=(https://ftp.gnu.org/gnu/binutils/binutils-$pkgver.tar.bz2{,.sig})

- sha512sums=('5c40cfe05b922492627db71990dd2ba6030fd2de4bdba3f53a3f274543ff161fb56e2f6bdac107e0ffdcfd095e499c54e1157ee1865723baefa67b5b4d3da201'

+ sha512sums=('b3f5184697f77e94c95d48f6879de214eb5e17aa6ef8e96f65530d157e515b1ae2f290e98453e4ff126462520fa0f63852b6e1c8fbb397ed2e41984336bc78c6'

              'SKIP')

  validpgpkeys=('EAF1C276A747E9ED86210CBAC3126D3B4AE55E93'  # Tristan Gingold <gingold@adacore.com>

                '3A24BC1E8FB409FA9F14371813FCEF89DD9E3C4F') # Nick Clifton (Chief Binutils Maintainer) <nickc@redhat.com>

file modified
+16 -10
@@ -2,10 +2,10 @@ 

  

  _target=sh-elf

  pkgname=$_target-gcc

- _pkgver=10.2.0

- pkgver=$_pkgver

- _islver=0.22

+ pkgver=11.2.0

+ _islver=0.24

  pkgrel=1

+ #_snapshot=8-20210107

  pkgdesc='The GNU Compiler Collection - cross compiler for SuperH (bare-metal) target'

  arch=(x86_64 i686 armv7h)

  url='http://gcc.gnu.org/'
@@ -14,17 +14,18 @@ 

  makedepends=(gmp mpfr $_target-newlib)

  optdepends=("$_target-newlib: Standard C library ($_target target)")

  options=(!emptydirs !strip)

- source=(https://gcc.gnu.org/pub/gcc/releases/gcc-$_pkgver/gcc-$_pkgver.tar.xz{,.sig}

-         http://isl.gforge.inria.fr/isl-$_islver.tar.bz2)

- sha512sums=('42ae38928bd2e8183af445da34220964eb690b675b1892bbeb7cd5bb62be499011ec9a93397dba5e2fb681afadfc6f2767d03b9035b44ba9be807187ae6dc65e'

+ source=(https://gcc.gnu.org/pub/gcc/releases/gcc-$pkgver/gcc-$pkgver.tar.xz{,.sig}

+         #https://gcc.gnu.org/pub/gcc/snapshots/$_snapshot/gcc-$_snapshot.tar.xz

+         https://libisl.sourceforge.io/isl-$_islver.tar.bz2)

+ sha512sums=('d53a0a966230895c54f01aea38696f818817b505f1e2bfa65e508753fcd01b2aedb4a61434f41f3a2ddbbd9f41384b96153c684ded3f0fa97c82758d9de5c7cf'

              'SKIP'

-             'fc2c9796979610dd51143dcefe4f5c989c4354571cc5a1fcc6b932fd41f42a54f6b43adfd289af61be7bd06f3a523fa6a7d7ee56680e32d8036beb4c188fa668')

+             'aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95')

  validpgpkeys=(33C235A34C46AA3FFB293709A328C3A2C3C45C06  # Jakub Jelinek <jakub@redhat.com>

                13975A70E63C361C73AE69EF6EEB81F8981C74C7) # Richard Guenther <richard.guenther@gmail.com>

  if [ -n "$_snapshot" ]; then

    _basedir=gcc-$_snapshot

  else

-   _basedir=gcc-$_pkgver

+   _basedir=gcc-$pkgver

  fi

  

  prepare() {
@@ -33,7 +34,7 @@ 

    # link isl for in-tree builds

    ln -sf ../isl-$_islver isl

  

-   echo $_pkgver > gcc/BASE-VER

+   echo $pkgver > gcc/BASE-VER

  

    # hack! - some configure tests for header files using "$CPP $CPPFLAGS"

    sed -i "/ac_cpp=/s/\$CPPFLAGS/\$CPPFLAGS -O2/" "$srcdir"/$_basedir/{libiberty,gcc}/configure
@@ -48,7 +49,12 @@ 

    # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48565

    CFLAGS=${CFLAGS/-pipe/}

    CXXFLAGS=${CXXFLAGS/-pipe/}

-   

+ 

+   if [ "$CARCH" = i686 ]; then

+     # using -Werror=format-security causes i686 build to fail

+     CXXFLAGS+=' -Wno-error=format-security'

+   fi

+ 

    $srcdir/$_basedir/configure \

      --target=$_target \

      --prefix=/usr \

file modified
+13 -11
@@ -11,10 +11,10 @@ 

  # We split Arch's systemd-libs into systemd-$X, for the following $X:

  _systemd_libs=('libsystemd' 'libudev' 'nss-systemd' 'nss-myhostname' 'nss-mymachines' 'nss-resolve')

  pkgname+=("${_systemd_libs[@]/#/systemd-}")

- _tag='91ea8d825553fc1ecfc19448be24a4da56b13d00' # git rev-parse v${_tag_name}

- _tag_name=249.4

+ _tag='620928e8026166a00d31142f0b38ba8b8e498cc4' # git rev-parse v${_tag_name}

+ _tag_name=249.6

  pkgver="${_tag_name/-/}"

- pkgrel=1

+ pkgrel=3

  pkgrel+=.parabola1

  arch=('x86_64')

  arch+=('i686' 'armv7h' 'ppc64le')
@@ -65,8 +65,8 @@ 

              '10f3b477527ec263cc6465c84d94416e356435930edc9e26844a0fd4f71e87a27fa0f91ce24b43a22cacdd2ead5e760e9d607369bc537a8da8d34021302a89a1'

              '34541f1967536524329867f9f341f8d9250d9d771c60dc3e6a22ccb82fc01f103cfd3f9903329777591ccbecd2446622a5d6b3804fa0411482b85c70593ee8ad'

              'f0d933e8c6064ed830dec54049b0a01e27be87203208f6ae982f10fb4eddc7258cb2919d594cbfb9a33e74c3510cfd682f3416ba8e804387ab87d1a217eb4b73'

-             'f599e1a35cba2c4e83e37c2299fac23ae128d8f68081283e71e1729384975dee1c4b677787f31a17890aeb98c8d2fc90405a202644290708ef9c027315022b17'

-             'a25b28af2e8c516c3a2eec4e64b8c7f70c21f974af4a955a4a9d45fd3e3ff0d2a98b4419fe425d47152d5acae77d64e69d8d014a7209524b75a81b0edb10bf3a'

+             '77582416df858e34bc05a9928ddacbe506d24946576cb7c08c7131cf2a9e059d8ff80b226684fc942bca2edf0c6d2584fa3e22939284b102b30395450784c4d3'

+             '8af5d7b1553be0cc193440dbb94683c2d2d777634dac4369716d75a1b2c2564551c836f3aee8220edfa5ef59122dea737bfe60c588637249bf67e15dba0534d0'

              '70b3f1d6aaa9cd4b6b34055a587554770c34194100b17b2ef3aaf4f16f68da0865f6b3ae443b3252d395e80efabd412b763259ffb76c902b60e23b6b522e3cc8'

              '6c6f579644ea2ebb6b46ee274ab15110718b0de40def8c30173ba8480b045d403f2aedd15b50ad9b96453f4ad56920d1350ff76563755bb9a80b10fa7f64f1d9'

              'a50bc85061a9a16d776235099867bc1a17c17dddb74c1ecf5614c849735a9779c5e34e5ddca8ca6af4b59a40f57c08ecf219b98cab09476ddb0f110e6a35e45c'
@@ -91,6 +91,8 @@ 

              '28a5b3fc9e2c5cec9267bb96725c73ee77788514f140c0cf8df765af64bc8130dd02f4863d9128ac45d54256b2ab4f2b06d1a3f65660ce1dfba5727618cd1839')

  

  _backports=(

+   # scope: count successful cgroup additions when delegating via D-Bus

+   'c65417a01121301fdf7f8514ee7663d287af3a72'

  )

  

  _reverts=(
@@ -134,12 +136,12 @@ 

      #  * Cloudflare (https://1.1.1.1/)

      #  * Quad9 without filtering (https://www.quad9.net/)

      #  * Google (https://developers.google.com/speed/public-dns/)

-     1.1.1.1

-     9.9.9.10

-     8.8.8.8

-     2606:4700:4700::1111

-     2620:fe::10

-     2001:4860:4860::8888

+     1.1.1.1#cloudflare-dns.com

+     9.9.9.10#dns.quad9.net

+     8.8.8.8#dns.google

+     2606:4700:4700::1111#cloudflare-dns.com

+     2620:fe::10#dns.quad9.net

+     2001:4860:4860::8888#dns.google

    )

  

    if [ "$CARCH" = "armv7h" ]; then

@@ -1,5 +1,8 @@ 

  #!/bin/bash

  

+ # This is in 'udev' and 'systemd' hook... Let's hope we have

+ # it in mkinitcpio soon.

+ # https://github.com/archlinux/mkinitcpio/pull/54

  add_udev_rule() {

      # Add an udev rules file to the initcpio image. Dependencies on binaries

      # will be discovered and added.

@@ -1,18 +1,65 @@ 

  #!/bin/bash

  

+ # This is in 'udev' and 'systemd' hook... Let's hope we have

+ # it in mkinitcpio soon.

+ # https://github.com/archlinux/mkinitcpio/pull/54

+ add_udev_rule() {

+     # Add an udev rules file to the initcpio image. Dependencies on binaries

+     # will be discovered and added.

+     #   $1: path to rules file (or name of rules file)

+ 

+     local rules="$1" rule= key= value= binary=

+ 

+     if [[ ${rules:0:1} != '/' ]]; then

+         rules=$(PATH=/usr/lib/udev/rules.d:/lib/udev/rules.d type -P "$1")

+     fi

+     if [[ -z $rules ]]; then

+         # complain about not found rules

+         return 1

+     fi

+ 

+     add_file "$rules" /usr/lib/udev/rules.d/"${rules##*/}"

+ 

+     while IFS=, read -ra rule; do

+         # skip empty lines, comments

+         [[ -z $rule || $rule = @(+([[:space:]])|#*) ]] && continue

+ 

+         for pair in "${rule[@]}"; do

+             IFS=' =' read -r key value <<< "$pair"

+             case $key in

+                 RUN@({program}|+)|IMPORT{program}|ENV{REMOVE_CMD})

+                     # strip quotes

+                     binary=${value//[\"\']/}

+                     # just take the first word as the binary name

+                     binary=${binary%% *}

+                     [[ ${binary:0:1} == '$' ]] && continue

+                     if [[ ${binary:0:1} != '/' ]]; then

+                         binary=$(PATH=/usr/lib/udev:/lib/udev type -P "$binary")

+                     fi

+                     add_binary "$binary"

+                     ;;

+             esac

+         done

+     done <"$rules"

+ }

+ 

  build() {

      local rules tool

  

-     add_binary /usr/lib/systemd/systemd-udevd

-     add_binary /usr/bin/udevadm

-     add_binary /usr/bin/systemd-tmpfiles

+     map add_binary \

+         '/usr/lib/systemd/systemd-udevd' \

+         '/usr/bin/udevadm' \

+         '/usr/bin/systemd-tmpfiles'

  

-     for rules in 50-udev-default.rules 60-persistent-storage.rules 64-btrfs.rules 80-drivers.rules; do

-         add_file "/usr/lib/udev/rules.d/$rules"

-     done

-     for tool in ata_id scsi_id; do

-         add_file "/usr/lib/udev/$tool"

-     done

+     map add_udev_rule \

+         '50-udev-default.rules' \

+         '60-persistent-storage.rules' \

+         '64-btrfs.rules' \

+         '80-drivers.rules'

+     

+     map add_file \

+         '/usr/lib/udev/ata_id' \

+         '/usr/lib/udev/scsi_id'

  

      add_runscript

  }

file modified
+2 -2
@@ -16,8 +16,8 @@ 

  

  pkgname=('texlive-bin' 'libsynctex')

  pkgver=2021.58686

- pkgrel=3

- pkgrel+=.parabola6

+ pkgrel=4

+ pkgrel+=.parabola8

  license=('GPL')

  arch=('x86_64')

  arch+=('armv7h' 'i686')

@@ -2,7 +2,7 @@ 

  

  _target=xtensa-elf

  pkgname=$_target-binutils

- pkgver=2.36.1

+ pkgver=2.37

  pkgrel=1

  pkgdesc='A set of programs to assemble and manipulate binary and object files for the Xtensa (bare-metal) target'

  arch=('x86_64' 'i686' 'armv7h')
@@ -11,7 +11,7 @@ 

  depends=('zlib')

  source=(https://ftp.gnu.org/gnu/binutils/binutils-$pkgver.tar.bz2{,.sig}

          binutils-2.36_fixup.patch binutils-2.34_fixup.patch binutils.patch)

- sha512sums=('5c40cfe05b922492627db71990dd2ba6030fd2de4bdba3f53a3f274543ff161fb56e2f6bdac107e0ffdcfd095e499c54e1157ee1865723baefa67b5b4d3da201'

+ sha512sums=('b3f5184697f77e94c95d48f6879de214eb5e17aa6ef8e96f65530d157e515b1ae2f290e98453e4ff126462520fa0f63852b6e1c8fbb397ed2e41984336bc78c6'

              'SKIP'

              'fa1e3e1b30d625eae4e59f1396079cc3fa4d77ec4f119ad20c52db1e1ff1819989ff16dc583d7c719caeb7c0ece48d76fe7c08a85b960c7bc924fe780ffa4ac2'

              '4e5bbba907eec565f5c3ea00fa5a19c146ec19b1f2db38c6581f80a524475ad9b066839ca671da05c6fab9af402f2bb76e01d227e7456b3ef48c6d685605c8d1'

file modified
+16 -9
@@ -2,10 +2,10 @@ 

  

  _target=xtensa-elf

  pkgname=$_target-gcc

- _pkgver=10.2.0

- pkgver=$_pkgver

- _islver=0.22

+ pkgver=11.2.0

+ _islver=0.24

  pkgrel=1

+ #_snapshot=8-20210107

  pkgdesc='The GNU Compiler Collection - cross compiler for Xtensa (bare-metal) target'

  arch=(x86_64 i686 armv7h)

  url='http://gcc.gnu.org/'
@@ -13,30 +13,32 @@ 

  depends=($_target-binutils libmpc zlib)

  makedepends=(gmp mpfr)

  options=(!emptydirs !strip)

- source=(https://gcc.gnu.org/pub/gcc/releases/gcc-$_pkgver/gcc-$_pkgver.tar.xz{,.sig}

-         http://isl.gforge.inria.fr/isl-$_islver.tar.bz2

+ source=(https://gcc.gnu.org/pub/gcc/releases/gcc-$pkgver/gcc-$pkgver.tar.xz{,.sig}

+         #https://gcc.gnu.org/pub/gcc/snapshots/$_snapshot/gcc-$_snapshot.tar.xz

+         https://libisl.sourceforge.io/isl-$_islver.tar.bz2

          gcc.patch)

- sha512sums=('42ae38928bd2e8183af445da34220964eb690b675b1892bbeb7cd5bb62be499011ec9a93397dba5e2fb681afadfc6f2767d03b9035b44ba9be807187ae6dc65e'

+ sha512sums=('d53a0a966230895c54f01aea38696f818817b505f1e2bfa65e508753fcd01b2aedb4a61434f41f3a2ddbbd9f41384b96153c684ded3f0fa97c82758d9de5c7cf'

              'SKIP'

-             'fc2c9796979610dd51143dcefe4f5c989c4354571cc5a1fcc6b932fd41f42a54f6b43adfd289af61be7bd06f3a523fa6a7d7ee56680e32d8036beb4c188fa668'

+             'aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95'

              '7637408259cef4b14a2f41690bbc769ad0dc6cf4d1c782405526aeb58f68193269af6882b23fb57c3521174e45709ed2d54f0af1f835646e70a3bfd9f626aad9')

  validpgpkeys=(33C235A34C46AA3FFB293709A328C3A2C3C45C06  # Jakub Jelinek <jakub@redhat.com>

                13975A70E63C361C73AE69EF6EEB81F8981C74C7) # Richard Guenther <richard.guenther@gmail.com>

  if [ -n "$_snapshot" ]; then

    _basedir=gcc-$_snapshot

  else

-   _basedir=gcc-$_pkgver

+   _basedir=gcc-$pkgver

  fi

  

  prepare() {

    cd $_basedir

  

+   # https://github.com/qca/open-ath9k-htc-firmware/tree/master/local/patches

    patch -Np1 -i ../gcc.patch

  

    # link isl for in-tree builds

    ln -sf ../isl-$_islver isl

  

-   echo $_pkgver > gcc/BASE-VER

+   echo $pkgver > gcc/BASE-VER

  

    # hack! - some configure tests for header files using "$CPP $CPPFLAGS"

    sed -i "/ac_cpp=/s/\$CPPFLAGS/\$CPPFLAGS -O2/" "$srcdir"/$_basedir/{libiberty,gcc}/configure
@@ -52,6 +54,11 @@ 

    CFLAGS=${CFLAGS/-pipe/}

    CXXFLAGS=${CXXFLAGS/-pipe/}

  

+   if [ "$CARCH" = i686 ]; then

+     # using -Werror=format-security causes i686 build to fail

+     CXXFLAGS+=' -Wno-error=format-security'

+   fi

+ 

    $srcdir/$_basedir/configure \

      --target=$_target \

      --prefix=/usr \

file modified
+3 -3
@@ -4,8 +4,8 @@ 

  pkgdesc="This package conflicts with every nonfree package known to date to ensure your system is free."

  license=('GPL3')

  url="https://git.parabola.nu/blacklist.git"

- pkgver=20210928

- _gitver=7d2e711096135e4f5c160fc739e23fd1ec7a3c07

+ pkgver=20211208

+ _gitver=bc1db1e804e0301c18b6cb465a50b320c8947cb6

  pkgrel=1

  

  arch=('any')
@@ -13,7 +13,7 @@ 

  

  makedepends=(librelib)

  source=(blacklist-${_gitver}.txt::https://git.parabola.nu/blacklist.git/plain/blacklist.txt?id=${_gitver})

- sha512sums=('746be9d938a565a99dc3a2a273b580e0c7c2026a14f727bb09a996eacfbb40ce25ca62db58caa462f5546c60dd7be6b5f87cd65e2ab3fd843d4662a77f3ce827')

+ sha512sums=('a890981f05db24426be853e185d453a8ad629a5aa68c656e6dc48439bb514eda0c311691164769bd789b11cb020712cd63acef743fdf6fc0587892b76a50d382')

  

  

  package() {

@@ -0,0 +1,43 @@ 

+ From: paul <paul@claws-mail.org>

+ Date: Mon, 12 Jul 2021 09:08:33 +0000 (+0100)

+ Subject: move OAuth2 to last place in auto auth selection

+ X-Git-Url: http://git.claws-mail.org/?p=claws.git;a=commitdiff_plain;h=9c2585c58b49815a0eab8d683f0a94f75cbbe64e;hp=fae6b35be779b37270e76ef319128e3bb5251e51

+ 

+ move OAuth2 to last place in auto auth selection

+ 

+ IMAP: when using 'automatic' auth type, if the server offers LOGIN, GSSAPI or plaintext in addition to OAUTH2, yet OAUTH2 is unconfigured, authentication will fail. This broke previously working config

+ ---

+ 

+ diff --git a/src/imap.c b/src/imap.c

+ index c486c471a..b72ceea76 100644

+ --- a/src/imap.c

+ +++ b/src/imap.c

+ @@ -951,14 +951,14 @@ static gint imap_auth(IMAPSession *session, const gchar *user, const gchar *pass

+  			ok = imap_cmd_login(session, user, pass, "SCRAM-SHA-1");

+  		if (ok == MAILIMAP_ERROR_LOGIN && imap_has_capability(session, "PLAIN"))

+  			ok = imap_cmd_login(session, user, pass, "PLAIN");

+ -		if (ok == MAILIMAP_ERROR_LOGIN && imap_has_capability(session, "XOAUTH2"))

+ -			ok = imap_cmd_login(session, user, pass, "XOAUTH2");

+  		if (ok == MAILIMAP_ERROR_LOGIN && imap_has_capability(session, "LOGIN"))

+  			ok = imap_cmd_login(session, user, pass, "LOGIN");

+  		if (ok == MAILIMAP_ERROR_LOGIN && imap_has_capability(session, "GSSAPI"))

+  			ok = imap_cmd_login(session, user, pass, "GSSAPI");

+  		if (ok == MAILIMAP_ERROR_LOGIN) /* we always try plaintext login before giving up */

+  			ok = imap_cmd_login(session, user, pass, "plaintext");

+ +		if (ok == MAILIMAP_ERROR_LOGIN && imap_has_capability(session, "XOAUTH2"))

+ +			ok = imap_cmd_login(session, user, pass, "XOAUTH2");

+  	}

+  

+  	if (ok == MAILIMAP_NO_ERROR)

+ @@ -994,6 +994,11 @@ static gint imap_auth(IMAPSession *session, const gchar *user, const gchar *pass

+  				     "LOGIN SASL plugin is installed.");

+  		}

+  

+ +		if (type == IMAP_AUTH_OAUTH2) {

+ +			ext_info = _("\n\nOAuth2 error. Check and correct your OAuth2 "

+ +				     "account preferences.");

+ +		} 

+ +

+  		if (time(NULL) - last_login_err > 10) {

+  			if (!prefs_common.no_recv_err_panel) {

+  				alertpanel_error_log(_("Connection to %s failed: "

@@ -0,0 +1,23 @@ 

+ From: paul <paul@claws-mail.org>

+ Date: Mon, 12 Jul 2021 09:20:21 +0000 (+0100)

+ Subject: fix bug 4496 'Fancy crashes when opening an email'

+ X-Git-Url: http://git.claws-mail.org/?p=claws.git;a=commitdiff_plain;h=f459d1c27426a10af90f8ef73aef78ec846ebffb;hp=9c2585c58b49815a0eab8d683f0a94f75cbbe64e

+ 

+ fix bug 4496 'Fancy crashes when opening an email'

+ 

+ Patch by Jonathan Boeing

+ ---

+ 

+ diff --git a/src/plugins/fancy/fancy_viewer.c b/src/plugins/fancy/fancy_viewer.c

+ index 6ff5f1244..d57d33aa7 100644

+ --- a/src/plugins/fancy/fancy_viewer.c

+ +++ b/src/plugins/fancy/fancy_viewer.c

+ @@ -96,7 +96,7 @@ static void fancy_apply_prefs(FancyViewer *viewer)

+  #endif

+  		NULL);

+  	if (fancy_prefs.stylesheet == NULL || strlen(fancy_prefs.stylesheet) == 0) {

+ -		gchar **msg_font_params = g_strsplit(prefs_common.textfont, " ", 0);

+ +		gchar **msg_font_params = g_strsplit(prefs_common_get_prefs()->textfont, " ", 0);

+  		guint params_len = g_strv_length(msg_font_params);

+  

+  		if (params_len > 0) {

file modified
+30 -12
@@ -5,20 +5,21 @@ 

  

  

  # parabola changes and rationale:

- #  - removed libgdata support (--help)

+ # - removed 'libgdata' support (--help) and optdepends

+ # - FIXME: added 'webkit2gtk' dep; but the arch PKGBUILD does not require it

  

  

  pkgname=claws-mail

- pkgver=3.17.8

- pkgrel=1

- pkgrel+=.nonprism1

- pkgdesc="A GTK+ based e-mail client."

- pkgdesc="${pkgdesc//./}, without libgdata support"

+ pkgver=4.0.0

+ pkgrel=3

+ pkgrel+=.nonprism2

+ pkgdesc="A GTK+ based e-mail client"

+ pkgdesc+=", without libgdata support"

  arch=('x86_64')

  arch+=('armv7h' 'i686')

  license=('GPL3')

  url="https://www.claws-mail.org"

- depends=('gtk2' 'gnutls' 'startup-notification' 'enchant' 'gpgme'

+ depends=('gtk3' 'gnutls' 'startup-notification' 'enchant' 'gpgme'

           'libetpan' 'compface' 'libsm' 'dbus-glib')

  makedepends=('spamassassin' 'bogofilter' 'networkmanager' 'valgrind'

               # dependencies for plugins
@@ -27,6 +28,7 @@ 

               # deps to build the docs

               'docbook-utils' 'texlive-formatsextra')

  makedepends=(${makedepends[@]/libgdata/})

+ makedepends+=('webkit2gtk') # FIXME:

  optdepends=('python:            needed for some tools'

              'perl:              needed for some tools and perl plugin'

              'spamassassin:      adds support for spamfiltering'
@@ -34,23 +36,37 @@ 

              'libnotify:         for notification plugin'

              'libcanberra:       for notification plugin'

              'dbus:              for notification plugin'

-             'libxml2:           for gtkhtml2_viewer and rssyl plugins'

-             'curl:              for gtkhtml2_viewer, vcalendar, rssyl and spamreport plugins'

+             'libxml2:           for rssyl plugins'

+             'curl:              for vcalendar, rssyl and spamreport plugins'

              'libarchive:        for archive plugin and various other plugins'

              'libytnef:          for tnef_parse plugin'

              'poppler-glib:      for pdf viewer plugin'

              'ghostscript:       for pdf viewer plugin'

              'libical:           for vcalendar plugin'

-             'dillo:             for html viewer plugin'

+             'dillo:             for dillo html viewer plugin'

+             'webkit2gtk:        for fancy webkit html viewer plugin'

              'gumbo-parser:      for litehtml plugin')

  provides=('claws')

+ install=$pkgname.install

  source=(https://www.claws-mail.org/download.php?file=releases/claws-mail-$pkgver.tar.xz{,.asc}

+         0001_move_OAuth2_to_last_place_in_auto_auth_selection.diff

+         0002_Fancy_crashes_when_opening_an_email.diff

          bash_completion)

- sha256sums=('cdb7b2814995d6f4a9c3b1f0bc1467ed5c3cf2a5e0da1730aaa25a8accafddaf'

+ sha256sums=('4af2bd26a5d91eacb2a9c09f67a6a46c2222b40817c1f525dc050bdc7b0ee475'

              'SKIP'

+             'ffd5dfe8929a86667218512095a794263a2ae56fae4add83d3ad987f94e7f786'

+             'f56256a9535958063b966ab52abdf787422ff71ed2a5c41b3d9fea8716defe85'

              '3f6c248b8658cd7a62186bff572cce2525712a498f363cbbda1ed459021c28cb')

  validpgpkeys=('8B3B297A03468356692F8D592CD716D654D6BBD4') # Paul <paul@claws-mail.org>

  

+ 

+ prepare() {

+   cd "${pkgname}"-${pkgver}

+   # upstream fixes

+   patch -Np1 -i ../0001_move_OAuth2_to_last_place_in_auto_auth_selection.diff

+   patch -Np1 -i ../0002_Fancy_crashes_when_opening_an_email.diff

+ }

+ 

  build() {

    cd "${pkgname}"-${pkgver}

    ./configure --prefix=/usr --disable-static \
@@ -61,7 +77,9 @@ 

      --disable-gdata-plugin \

      --enable-pgpmime-plugin \

      --enable-spamassassin-plugin \

-     --enable-bogofilter-plugin

+     --enable-bogofilter-plugin \

+     --enable-fancy-plugin \

+     --enable-manual

    sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0/g' libtool

    make

  }

@@ -0,0 +1,10 @@ 

+ post_upgrade() {

+   if [ "`vercmp $2 4.0.0`" -lt 0 ]; then

+ 

+ cat << _EOF

+   >>> If you are upgrading from the GTK+ 2 version to the GTK+ 3 version

+   >>> of Claws Mail, you will need to reload any plugins that you want to use.

+ _EOF

+ 

+  fi

+ }

file modified
+98 -142
@@ -11,109 +11,98 @@ 

  # Contributor: Isaac David <isacdaavid@isacdaavid.info>

  # Contributor: bill-auger <bill-auger@programmer.net>

  

+ 

  # parabola changes and rationale:

  #  - rebranded to icedove

- #  - added makedepends: quilt mozilla-searchplugins python2-blessings

- #  - added replaces, conflicts: thunderbird

+ #  - added makedepends for branding: quilt mozilla-searchplugins imagemagick

  #  - disabled tests, they break in an environment without network access.

  #  - disabled geo-location

  #  - removed nonfree search engines

  #  - removed support for insecure chat protocols

  

+ 

  _pkgname=thunderbird

  pkgname=icedove

- replaces=("$_pkgname")

  epoch=1

- pkgver=68.9.0

+ pkgver=78.9.1

  pkgrel=1

  pkgrel+=.parabola1.nonprism1

- _brandingver=68.6

+ _brandingver=78.9

  _brandingrel=1

  pkgdesc='Standalone mail and news reader based on Mozilla Thunderbird'

  pkgdesc+=', without support for unsafe and dangerous for privacy protocols'

- url="https://wiki.parabola.nu/$pkgname"

+ url=https://wiki.parabola.nu/${pkgname}

  arch=(x86_64)

  arch+=(i686 armv7h)

  license=(MPL GPL LGPL)

- depends=(gtk3 libxt startup-notification mime-types dbus-glib alsa-lib

-          nss hunspell sqlite ttf-font) # libvpx

- # TODO: depends+=(libicui18n.so libicuuc.so)

- depends_armv7h=(icu=65)

- depends_i686+=(libicui18n.so libicuuc.so)

- depends_x86_64+=(libicui18n.so libicuuc.so)

- makedepends=(unzip zip diffutils python python2 yasm nasm mesa imake libpulse inetutils xorg-server-xvfb

-              autoconf2.13 rust clang llvm gtk2 cbindgen nodejs)

- makedepends+=(quilt mozilla-searchplugins imagemagick)

- optdepends=('libcanberra: sound support')

+ depends=(

+   glibc gtk3 libgdk-3.so mime-types dbus libdbus-1.so dbus-glib alsa-lib nss

+   hunspell sqlite ttf-font libvpx libvpx.so zlib bzip2 botan libwebp libevent

+   libjpeg-turbo libffi nspr gcc-libs libx11 libxrender libxfixes libxext

+   libxcomposite libxdamage pango libpango-1.0.so cairo gdk-pixbuf2 icu

+   libicui18n.so libicuuc.so freetype2 libfreetype.so fontconfig

+   libfontconfig.so glib2 libglib-2.0.so pixman libpixman-1.so gnupg

+ )

+ optdepends=(

+   'libotr: OTR support for active one-to-one chats'

+ )

+ makedepends=(

+   unzip zip diffutils python python-setuptools yasm nasm mesa imake libpulse

+   inetutils xorg-server-xvfb autoconf2.13 rust clang llvm gtk2 cbindgen nodejs

+   gawk perl findutils libotr

+ )

+ #makedepends[15]='llvm10' # FIXME: DEBUG: | rustup: error while loading shared libraries: libLLVM-10.so: cannot open shared object file: No such file or directory

+ #                         #        ERROR: Command `rustup which rustc` failed with exit status 127.

+ makedepends+=(quilt imagemagick)

+ replaces=(${_pkgname})

  options=(!emptydirs !makeflags)

  source=(https://ftp.mozilla.org/pub/mozilla.org/thunderbird/releases/$pkgver/source/thunderbird-$pkgver.source.tar.xz{,.asc}

-         $pkgname.desktop)

- source+=(https://repo.parabola.nu/other/icedove/${pkgname}_$_brandingver-$_brandingrel.branding.tar.xz{,.sig}

-          libre-searchengines.patch

-          mozilla-1338795-regression.patch)

+         $pkgname.desktop

+         vendor-prefs.js

+         distribution.ini

+         mozconfig.cfg

+         configure-fix-passing-system-bzip2-ldflags.patch

+         thunderbird-78.5-rust-1.48.patch)

+ source+=(https://repo.parabola.nu/other/icedove/${pkgname}_$_brandingver-$_brandingrel.branding.tar.xz{,.sig})

  source_armv7h=(arm-wasm-vfp.patch)

- sha512sums=('891472c95ba6ff46061131504e89010da512a84b0e1dea0482e603fd4c87f11e099280a245c7dd9fc9320c48229c26602565c089d86f1a1f4271b29b6fc606f0'

+ sha512sums=('fa27a327ce10a0c16877ac02338aace257f60f69af40d12ae5bb2055f6536db9ba45995765ac0eaa1aea2fa2b353ac9dc6eb06fcdf6cb4ae6fafcd65fe5970c6'

              'SKIP'

              'a3c9815491d9bed0440c60f35867a5b8a2a1343521f288035fcc46e651a11b926c75a9eca2d262b43d510a7a7119709b53637f1b00ddbbee8e5b0a4b33d7b8fd'

-             '5784493253f9b2b231a7f18d7c3c4a4bb9aec7ac4fa801772ac223342676e388ae0c094b95d89d92c1bd38c2f19feb6f51e074d0ea20228a256b6240ecf34832'

-             'SKIP'

-             '3f3160441aa17a50b8bf9f95a0fed8e3428864901d7368409903289f069f51fa94e24b6140bf17981b91b55df77c7c29adb870dda9f1596a77ce1a54a62cac00'

-             'f4e892fc7af85877ef6cedd82313f6c0f335cb676cfb30badaa127c51aed00773212b99f1598f5709d6f481f12264463d6334bcde8e8da38ec1ea666622d28a1')

+             'e21d30a8b79724eda3488ac2bf9dfeb0c7f6bf39e59c37f17574b529d33043765eb54408a55fcbf6f3afa7a58ca99124992d443cdff23ac5c9bdbff33c75f60f'

+             '31d46f91d9612d30d8553a19d0d309d743467e58b568a4aeea3caf6bd805ba00656561c84a1511c59bce1cf24ba323bfad2cd26a19985f1bf7dfb6d282642972'

+             '1eba1593ff0a9642d89e6d3e03388b1aef00437b2f6c1f0d81d250d9845b80e057c246eaeb31d8d22001abd65556a9603d1db597baf864481a5bfb7000886b29'

+             'e3ed2708b8354015cb3d2c81048d1ce4932d1effbe2b40efa7cf9b45c1b923b9fd708645e2f8aa0136a485a3f7ce6b396b85721aaf535a4a764fd5005fb7e222'

+             'bbb8b0e7b9c67372eb22e1d6b6b5758fe504ded84c40a076d4a064374a1bf34ac12d5b514b328ac9ca984d976b9e0fbde81e68a66bec915c997d6be0c0917584')

  sha512sums_armv7h=('c25883c4860e511a99d9fbfba5b824145c0862729101721605725f609ca2a41848b741dd100eff390f57031dc5f14af3ea30133de30f75cb20197c420ae20972')

+ sha512sums+=('78fee952c9bc826a0a7ec262d442150177bf887349641279dafae803b9832a0dd9b8d0722cc084459077a5310eb4f6de6a8d7ffaff6741afe1359f292a373f34'

+              'SKIP')

  validpgpkeys=(14F26682D0916CDD81E37B6D61B7B526D98F0353) # Mozilla Software Releases <release@mozilla.com>

- validpgpkeys+=(BFA8008A8265677063B11BF47171986E4B745536) # Andreas Grapentin

+ validpgpkeys+=(BFA8008A8265677063B11BF47171986E4B745536  # Andreas Grapentin

+                3954A7AB837D0EA9CFA9798925DB7D9B5A8D4B40) # bill-auger

+ 

  

  prepare() {

    cd $_pkgname-$pkgver

  

-   # see: https://labs.parabola.nu/issues/2267

-   # upstream BR: https://bugzilla.mozilla.org/show_bug.cgi?id=1628296

-   patch -Np1 -i "$srcdir"/mozilla-1338795-regression.patch

- 

-   cat >.mozconfig <<END

- ac_add_options --enable-application=comm/mail

- ac_add_options --enable-calendar

- 

- ac_add_options --prefix=/usr

- ac_add_options --enable-release

- ac_add_options --enable-linker=gold

- ac_add_options --enable-hardening

- ac_add_options --enable-optimize

- # https://bugzilla.mozilla.org/show_bug.cgi?id=1521249

- #ac_add_options --enable-rust-simd

- # https://bugzilla.mozilla.org/show_bug.cgi?id=1423822

- ac_add_options --disable-elf-hack

+   echo "${noextract[@]}"

  

- # Branding

- ac_add_options --disable-official-branding

- ac_add_options --with-branding=comm/mail/branding/icedove

- ac_add_options --enable-update-channel=release

- ac_add_options --with-distribution-id=nu.parabola

- 

- # System libraries

- ac_add_options --with-system-zlib

- ac_add_options --with-system-bz2

- ac_add_options --with-system-icu

- ac_add_options --with-system-jpeg

- # ac_add_options --with-system-libvpx

- ac_add_options --with-system-nspr

- ac_add_options --with-system-nss

- ac_add_options --enable-system-sqlite

- ac_add_options --enable-system-ffi

- 

- # Features

- ac_add_options --enable-alsa

- ac_add_options --disable-jack

- ac_add_options --enable-startup-notification

- ac_add_options --disable-crashreporter

- ac_add_options --disable-updater

- ac_add_options --disable-gconf

- # tests require network access.

- ac_add_options --disable-tests

- END

+   local src

+   for src in "${source[@]}"; do

+     src="${src%%::*}"

+     src="${src##*/}"

+     [[ $src = *.patch ]] || continue

+     [[ $src = arm-wasm-vfp.patch ]] && continue # defer parabola patches

+ 

+     echo "Applying patch $src..."

+     patch -Np1 < "../$src"

+   done

  

-   if [[ $CARCH = arm* ]]; then

-     patch -Np1 -i "$srcdir"/arm-wasm-vfp.patch

+   cp ../mozconfig.cfg .mozconfig

+   sed "s|@PWD@|${PWD@Q}|g" -i .mozconfig

+ 

+   case "${CARCH}" in

+   armv*)

+     patch -Np1 -i "${srcdir}"/arm-wasm-vfp.patch

  

      sed -i '/--enable-linker=gold/d' .mozconfig

      sed -i '/--enable-hardening/d' .mozconfig
@@ -130,42 +119,55 @@ 

  ac_add_options --disable-elf-hack

  ac_add_options --enable-optimize="-g0 -O2"

  END

-   fi

- 

-   if [[ $CARCH = i686 ]]; then

+     ;;

+   i686)

      sed -i 's/--enable-linker=gold/--enable-linker=bfd/' .mozconfig

      LDFLAGS+=" -Wl,--no-keep-memory -Wl,--reduce-memory-overheads"

      export LDFLAGS

-   fi

+     ;;

+   esac

  

-   # perform rebranding

-   local brandingdir="$srcdir/$pkgname-$_brandingver"

-   rm -rf -- comm/mail/branding/$pkgname

-   cp -aT -- $brandingdir/$pkgname-branding/ comm/mail/branding/$pkgname

+   # perform re-branding

+   local branding_indir="${srcdir}"/${pkgname}-${_brandingver}

+   local branding_outdir=comm/mail/branding/${pkgname}

+   rm -rf -- ${branding_outdir}

+   cp -aT -- "${branding_indir}"/${pkgname}-branding ${branding_outdir}

  

-   export QUILT_PATCHES=$brandingdir/patches

+   export QUILT_PATCHES="${branding_indir}"/patches

    export QUILT_REFRESH_ARGS='-p ab --no-timestamps --no-index'

    export QUILT_DIFF_ARGS='--no-timestamps'

    quilt push -av

  

-   # produce icons

+   # generate icons

    for i in 16 22 24 32; do

-     rsvg-convert -w $i -h $i "$brandingdir/app-icons/${pkgname}_small.svg" \

-       -o "comm/mail/branding/$pkgname/default$i.png"

+     rsvg-convert -w ${i} -h ${i} "${branding_indir}"/app-icons/${pkgname}_small.svg \

+       -o "${branding_outdir}/default${i}.png"

    done

    for i in 48 64 128 256; do

-     rsvg-convert -w $i -h $i "$brandingdir/app-icons/${pkgname}_big.svg" \

-       -o "comm/mail/branding/$pkgname/default$i.png"

+     rsvg-convert -w ${i} -h ${i} "${branding_indir}"/app-icons/${pkgname}_big.svg \

+       -o "${branding_outdir}/default${i}.png"

    done

-   cp "$brandingdir/logo/icedove_icon.svg" "comm/mail/branding/$pkgname/"

+   cp "${branding_indir}"/logo/icedove_icon.svg ${branding_outdir}/

+   cp -av "${branding_indir}"/preview.png comm/mail/themes/linux/mail/preview.png

+ 

+   # Patch search-engines config

+   local search_engines_sed_cmd='s|https://duckduckgo.com/|https://html.duckduckgo.com/html/|'

+   local engines_cfg_dir=comm/mail/components/search/extensions

+   sed -i "${search_engines_sed_cmd}" ${engines_cfg_dir}/ddg/manifest.json

+ 

+   # Delete unused search engine configs

+   find ${engines_cfg_dir} -mindepth 1 -maxdepth 1 \

+                           -not -name ddg          \

+                           -not -name wikipedia    \

+                           -exec rm -rf {} \;

  

    # Patch and remove anything that's left

-   patch -Np1 -i "$srcdir/libre-searchengines.patch"

    sed -i '\|Phishing Protection|d

            \|UrlClassifier|d

            \|URLClassifier|d

            \|url-classifier|d

           ' comm/mail/installer/package-manifest.in

+   # TODO: this could be moved into the branding package - it already processes all-thunderbird.js

    sed -i '\|extensions[.]getAddons[.]get[.]url| s|https://services[.]addons[.]mozilla[.]org.\+["][)][;]|https://directory.fsf.org/wiki/Icedove");|g;

            \|extensions[.]getAddons[.]search[.]browseURL| s|https://addons[.]mozilla[.]org.\+["][)][;]|https://directory.fsf.org/wiki/Icedove");|g;

            \|extensions[.]getAddons[.]search[.]url| s|https://services[.]addons[.]mozilla[.]org.\+["][)][;]|https://directory.fsf.org/wiki/Icedove");|g;
@@ -193,17 +195,13 @@ 

            \|yahoo[.]manifest|d

           ' comm/mail/installer/package-manifest.in

    rm -rv comm/chat/protocols/{facebook,gtalk,odnoklassniki,skype,twitter,yahoo}

- 

-   cp -av $srcdir/$pkgname-$_brandingver/preview.png \

-     comm/mail/themes/linux/mail/preview.png

- 

-   # Load our searchplugins

-   rm -rv comm/suite/locales/en-US/searchplugins

-   cp -av /usr/lib/mozilla/searchplugins comm/suite/locales/en-US/

  }

  

  build() {

    cd $_pkgname-$pkgver

+   if [[ -n "${SOURCE_DATE_EPOCH}" ]]; then

+     export MOZ_BUILD_DATE=$(date --date "@${SOURCE_DATE_EPOCH}" "+%Y%m%d%H%M%S")

+   fi

  

    # clang-{9,10,11} -> error: unknown argument: '-fvar-tracking-assignments'

    CFLAGS="${CFLAGS/-fvar-tracking-assignments/}"
@@ -229,52 +227,14 @@ 

  }

  

  package() {

+   optdepends=('libcanberra: sound support')

+ 

    cd $_pkgname-$pkgver

    DESTDIR="$pkgdir" ./mach install

  

-   _vendorjs="$pkgdir/usr/lib/$pkgname/defaults/preferences/vendor.js"

-   install -Dm644 /dev/stdin "$_vendorjs" <<END

- // Use LANG environment variable to choose locale

- pref("intl.locale.requested", "");

- 

- // Use system-provided dictionaries

- pref("spellchecker.dictionary_path", "/usr/share/hunspell");

- 

- // Disable default mailer checking.

- pref("mail.shell.checkDefaultMail", false);

- 

- // Don't disable our bundled extensions in the application directory

- pref("extensions.autoDisableScopes", 11);

- pref("extensions.shownSelectionUI", true);

- 

- // Disable Social API for content

- pref("social.remote-install.enabled", false);

- pref("social.toast-notifications.enabled", false);

- 

- // Make sure that whitelisted and directory installs are empty

- pref("social.whitelist", "");

- pref("social.directories", "");

- 

- // Disable the GeoLocation API for content

- pref("geo.enabled", false);

- 

- // TODO: this "whats new" page should be in the branding package or abslibre

- // Pointing the "Help -> What's new" menu entry to mozilla.debian.net

- //pref("mailnews.start_page.override_url", "http://wiki.debian.org/Icedove/WhatsNew45");

- END

- 

-   _distini="$pkgdir/usr/lib/$pkgname/distribution/distribution.ini"

-   install -Dm644 /dev/stdin "$_distini" <<END

- [Global]

- id=parabola

- version=1.0

- about=Icedove for Parabola GNU/Linux-libre

- 

- [Preferences]

- app.distributor=parabola

- app.distributor.channel=$pkgname

- app.partner.parabola=parabola

- END

+   install -Dm 644 ../vendor-prefs.js -t "$pkgdir/usr/lib/$pkgname/defaults/pref"

+   install -Dm 644 ../distribution.ini -t "$pkgdir/usr/lib/$pkgname/distribution"

+   install -Dm 644 ../$pkgname.desktop -t "$pkgdir/usr/share/applications"

  

    for i in 16 22 24 32 48 64 128 256; do

      install -Dm644 comm/mail/branding/$pkgname/default${i}.png \
@@ -283,9 +243,6 @@ 

    install -Dm644 comm/mail/branding/$pkgname/${pkgname}_icon.svg \

      "$pkgdir/usr/share/icons/hicolor/symbolic/apps/$pkgname-symbolic.svg"

  

-   install -Dm644 ../$pkgname.desktop \

-     "$pkgdir/usr/share/applications/$pkgname.desktop"

- 

    # Use system-provided dictionaries

    ln -Ts /usr/share/hunspell "$pkgdir/usr/lib/$pkgname/dictionaries"

    ln -Ts /usr/share/hyphen "$pkgdir/usr/lib/$pkgname/hyphenation"
@@ -301,4 +258,3 @@ 

    ln -srf "$pkgdir/usr/bin/$pkgname" \

      "$pkgdir/usr/lib/$pkgname/$pkgname-bin"

  }

- 

@@ -0,0 +1,25 @@ 

+ From 9855927c896eaeecb21c1541942ee6d557144183 Mon Sep 17 00:00:00 2001

+ From: anthraxx <levente@leventepolyak.net>

+ Date: Sun, 8 Nov 2020 13:26:47 +0100

+ Subject: [PATCH] configure: fix passing system bzip2 ldflags

+ 

+ ---

+  comm/third_party/openpgp.configure | 2 +-

+  1 file changed, 1 insertion(+), 1 deletion(-)

+ 

+ diff --git a/comm/third_party/openpgp.configure b/comm/third_party/openpgp.configure

+ index 2f9c796..2cbc907 100644

+ --- a/comm/third_party/openpgp.configure

+ +++ b/comm/third_party/openpgp.configure

+ @@ -80,7 +80,7 @@ with only_when('--enable-compile-environment'):

+          if bzip2_pkg:

+              cflags = list(bzip2_pkg.cflags)

+              libs = bzip2_pkg.libs

+ -            return namespace(cflags=cflags, libs=libs, path=(value[0]), )

+ +            return namespace(cflags=cflags, ldflags=libs, )

+          # Fallback

+          return namespace(

+              ldflags=['-lbz2'],

+ -- 

+ 2.28.0

+ 

@@ -0,0 +1,9 @@ 

+ [Global]

+ id=parabola

+ version=1.0

+ about=Icedove for Parabola GNU/Linux-libre

+ 

+ [Preferences]

+ app.distributor=parabola

+ app.distributor.channel=$pkgname

+ app.partner.parabola=parabola

@@ -1,1006 +0,0 @@ 

- diff -rupN thunderbird-60.5.1.orig/comm/mail/locales/en-US/chrome/messenger-region/region.properties thunderbird-60.5.1/comm/mail/locales/en-US/chrome/messenger-region/region.properties

- --- thunderbird-60.5.1.orig/comm/mail/locales/en-US/chrome/messenger-region/region.properties	2019-03-07 10:38:57.276013048 +0100

- +++ thunderbird-60.5.1/comm/mail/locales/en-US/chrome/messenger-region/region.properties	2019-03-07 11:29:23.255564314 +0100

- @@ -3,9 +3,9 @@

-  # file, You can obtain one at http://mozilla.org/MPL/2.0/.

-  

-  # Search engine order (order displayed in the search bar dropdown)s

- -browser.search.order.1=Bing

- -browser.search.order.2=Yahoo

- -browser.search.order.3=

- +browser.search.order.1=searx

- +browser.search.order.2=DuckDuckGo HTML

- +browser.search.order.3=DuckDuckGo Lite

-  

-  # To make mapit buttons to disappear in the addressbook, specify empty string.  For example:

-  # mail.addr_book.mapit_url.format=

- @@ -20,14 +20,12 @@ browser.search.order.3=

-  # @ZI == zip code

-  # @CO == country

-  # Default map service:

- -mail.addr_book.mapit_url.format=https://maps.google.com/maps?q=@A1%20@A2%20@CI%20@ST%20@ZI%20@CO

- +mail.addr_book.mapit_url.format=https://nominatim.openstreetmap.org/search.php?polygon=1&q=@A1%2C@A2%2C@CI%2C@ST%2C@ZI%2C@CO

-  # List of available map services (up to 5 can be defined here):

- -mail.addr_book.mapit_url.1.name=Google Maps

- -mail.addr_book.mapit_url.1.format=https://maps.google.com/maps?q=@A1%20@A2%20@CI%20@ST%20@ZI%20@CO

- -mail.addr_book.mapit_url.2.name=OpenStreetMap

- -mail.addr_book.mapit_url.2.format=https://nominatim.openstreetmap.org/search.php?polygon=1&q=@A1%2C@A2%2C@CI%2C@ST%2C@ZI%2C@CO

- +mail.addr_book.mapit_url.1.name=OpenStreetMap

- +mail.addr_book.mapit_url.1.format=https://nominatim.openstreetmap.org/search.php?polygon=1&q=@A1%2C@A2%2C@CI%2C@ST%2C@ZI%2C@CO

-  

- -mailnews.messageid_browser.url=https://groups.google.com/search?as_umsgid=%mid

- +mailnews.messageid_browser.url=

-  

-  # Recognize non-standard versions of "Re:" in subjects from localized versions of MS Outlook et al.

-  # Specify a comma-separated list without spaces. For example: mailnews.localizedRe=AW,SV

- diff -rupN thunderbird-60.5.1.orig/comm/mail/components/search/extensions/list.json thunderbird-60.5.1/comm/mail/locales/search/list.json

- --- thunderbird-60.5.1.orig/comm/mail/components/search/extensions/list.json	2019-03-07 10:38:57.272679671 +0100

- +++ thunderbird-60.5.1/comm/mail/components/search/extensions/list.json	2019-03-07 11:26:46.920196972 +0100

- @@ -1,858 +1,757 @@

-  {

-    "default": {

- -    "searchDefault": "Google",

- -    "searchOrder": ["Google", "Bing"],

- +    "searchDefault": "searx",

-      "visibleDefaultEngines": [

- -      "google", "amazondotcom", "bing", "ddg", "twitter", "wikipedia"

- +      "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-      ]

-    },

- -  "regionOverrides": {

- -    "CA": {

- -      "amazondotcom": "amazon-ca",

- -      "amazon-france": "amazon-ca"

- -    },

- -    "AU": {

- -      "amazondotcom": "amazon-au",

- -      "amazon-en-GB": "amazon-au"

- -    },

- -    "FR": {

- -      "amazondotcom": "amazon-france"

- -    },

- -    "GB": {

- -      "amazondotcom": "amazon-en-GB"

- -    }

- -  },

-    "locales": {

-      "en-US": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "amazondotcom", "bing", "ddg", "twitter", "wikipedia"

- -        ]

- -      },

- -      "experimental-hidden": {

- -        "visibleDefaultEngines": [

- -          "amazon-ca", "amazon-au", "yandex-en", "google"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "ach": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "bing", "amazondotcom", "ddg", "twitter", "wikipedia"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "af": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "bing", "amazondotcom", "ddg", "wikipedia-af"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "an": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "bing", "wikipedia-an", "ddg", "twitter"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "ar": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "bing", "amazondotcom", "ddg", "wikipedia-ar"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "as": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "amazon-in", "ddg", "wikipedia-as"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "ast": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "bing", "ddg", "wikipedia-ast"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "az": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "amazondotcom", "azerdict", "bing", "ddg", "wikipedia-az", "yandex-az"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "be": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "yandex-by", "google", "ddg", "wikipedia-be", "wikipedia-be-tarask"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

- -      },

- -      "BY": {

- -        "searchDefault": "Яндекс"

- -      },

- -      "KZ": {

- -        "searchDefault": "Яндекс"

- -      },

- -      "RU": {

- -        "searchDefault": "Яндекс"

- -      },

- -      "TR": {

- -        "searchDefault": "Яндекс"

-        }

-      },

-      "bg": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "amazondotcom", "ddg", "pazaruvaj", "wikipedia-bg"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "bn": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "amazon-in", "bing", "ddg", "wikipedia-bn"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "bn-BD": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "bing", "ddg", "wikipedia-bn"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "bn-IN": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "amazon-in", "bing", "ddg", "wikipedia-bn"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "br": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "amazon-france", "ddg", "freelang", "wikipedia-br"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "bs": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "ddg", "olx", "twitter", "wikipedia-bs"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "ca": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "bing", "diec2", "ddg", "twitter", "wikipedia-ca"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "cak": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "bing", "amazondotcom", "ddg", "wikipedia-es"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "crh": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "ddg", "twitter", "wikipedia-crh"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "cs": {

-        "default": {

- -        "searchOrder": ["Google", "Seznam"],

-          "visibleDefaultEngines": [

- -          "google", "seznam-cz", "ddg", "heureka-cz", "mapy-cz", "wikipedia-cz"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "cy": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "amazon-en-GB", "ddg", "palasprint", "wikipedia-cy"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "da": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "bing", "amazon-en-GB", "ddg", "wikipedia-da"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "de": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "amazon-de", "bing", "ddg", "ecosia", "leo_ende_de", "wikipedia-de"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "dsb": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "bing", "amazon-de", "ddg", "leo_ende_de", "wikipedia-dsb"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "el": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "amazon-en-GB", "bing", "ddg", "wikipedia-el"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "en-CA": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "amazon-ca", "bing", "ddg", "twitter", "wikipedia"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "en-GB": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "bing", "amazon-en-GB", "chambers-en-GB", "ddg", "twitter", "wikipedia"

- -        ]

- -      },

- -      "experimental-hidden": {

- -        "visibleDefaultEngines": [

- -          "yandex-en"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "en-ZA": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "bing", "amazondotcom", "ddg", "twitter", "wikipedia"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "eo": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "bing", "amazondotcom", "ddg", "wikipedia-eo"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "es-AR": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "amazondotcom", "drae", "ddg", "mercadolibre-ar", "wikipedia-es"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "es-CL": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "bing", "drae", "ddg", "mercadolibre-cl", "wikipedia-es"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "es-ES": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "bing", "drae", "ddg", "twitter", "wikipedia-es"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "es-MX": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "bing", "ddg", "mercadolibre-mx", "wikipedia-es"

- -        ]

- -      },

- -      "experimental-hidden": {

- -        "visibleDefaultEngines": [

- -          "amazon-mx"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "et": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "neti-ee", "ddg", "osta-ee", "wikipedia-et", "eki-ee"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "eu": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "bing", "amazon-en-GB", "ddg", "wikipedia-eu"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "fa": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "amazondotcom", "bing", "ddg", "wikipedia-fa"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "ff": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "bing", "amazon-france", "ddg", "wikipedia-fr"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "fi": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "bing", "ddg", "wikipedia-fi"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "fr": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "bing", "amazon-france", "ddg", "qwant", "wikipedia-fr"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "fy-NL": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "bing", "bolcom-fy-NL", "ddg", "marktplaats-fy-NL", "wikipedia-fy-NL"

- -        ]

- -      },

- -      "experimental-hidden": {

- -        "visibleDefaultEngines": [

- -          "amazon-nl"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "ga-IE": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "amazon-en-GB", "ddg", "tearma", "twitter", "wikipedia-ga-IE"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "gd": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "amazon-en-GB", "bbc-alba", "ddg", "faclair-beag", "wikipedia-gd"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "gl": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "amazon-en-GB", "ddg", "wikipedia-gl"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "gn": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "bing", "amazondotcom", "ddg", "twitter", "wikipedia-gn"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "gu-IN": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "bing", "amazon-in", "ddg", "wikipedia-gu"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "he": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "ddg", "wikipedia-he", "morfix-dic"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "hi-IN": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "bing", "ddg", "wikipedia-hi"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "hr": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "amazon-en-GB", "bing", "ddg", "eudict", "twitter", "wikipedia-hr"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "hsb": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "bing", "amazon-de", "ddg", "leo_ende_de", "wikipedia-hsb"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "hu": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "ddg", "vatera", "wikipedia-hu"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "hy-AM": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "amazondotcom", "ddg", "list-am", "wikipedia-hy"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "ia": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "bing", "amazondotcom", "ddg", "twitter", "wikipedia-ia"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "id": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "ddg", "wikipedia-id"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "is": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "bing", "amazondotcom", "ddg", "wikipedia-is"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "it": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "bing", "amazon-it", "ddg", "wikipedia-it"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "ja-JP-macos": {

-        "default": {

- -        "searchOrder": ["Google", "Yahoo! JAPAN", "Bing", "Amazon.co.jp", "楽天市場", "ヤフオク!", "教えて!goo", "Twitter", "Wikipedia (ja)"],

-          "visibleDefaultEngines": [

- -          "google", "yahoo-jp", "bing", "amazon-jp", "rakuten", "yahoo-jp-auctions", "oshiete-goo", "twitter-ja", "wikipedia-ja", "ddg"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "ja": {

-        "default": {

- -        "searchOrder": ["Google", "Yahoo! JAPAN", "Bing", "Amazon.co.jp", "楽天市場", "ヤフオク!", "教えて!goo", "Twitter", "Wikipedia (ja)"],

-          "visibleDefaultEngines": [

- -          "google", "yahoo-jp", "bing", "amazon-jp", "rakuten", "yahoo-jp-auctions", "oshiete-goo", "twitter-ja", "wikipedia-ja", "ddg"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "ka": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "bing", "amazondotcom", "ddg", "twitter", "wikipedia-ka"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "kab": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "bing", "ddg", "wikipedia-kab"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "kk": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "yandex-kk", "google", "ddg", "flip", "twitter", "wikipedia-kk"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

- -      },

- -      "KZ": {

- -        "searchDefault": "Яндекс"

- -      },

- -      "BY": {

- -        "searchDefault": "Яндекс"

- -      },

- -      "RU": {

- -        "searchDefault": "Яндекс"

- -      },

- -      "TR": {

- -        "searchDefault": "Яндекс"

-        }

-      },

-      "km": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "bing", "amazondotcom", "ddg", "twitter", "wikipedia-km"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "kn": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "bing", "amazon-in", "ddg", "kannadastore", "wikipedia-kn"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "ko": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "ddg", "naver-kr", "daum-kr", "wikipedia-kr"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "lij": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "bing", "amazon-it", "ddg", "wikipedia-lij"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "lo": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "bing", "ddg", "wikipedia-lo", "twitter"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "lt": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "wikipedia-lt", "bing", "amazondotcom", "ddg", "twitter"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "ltg": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "ddg", "salidzinilv", "sslv", "wikipedia-ltg"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "lv": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "ddg", "salidzinilv", "sslv", "wikipedia-lv"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "mai": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "bing", "amazon-in", "ddg", "twitter", "wikipedia-hi"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "mk": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "bing", "amazondotcom", "ddg", "wikipedia-mk"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "ml": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "bing", "amazon-in", "ddg", "wikipedia", "wikipedia-ml"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "mr": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "amazon-in", "ddg", "wikipedia-mr"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "ms": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "bing", "amazondotcom", "ddg", "twitter", "wikipedia-ms"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "my": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "bing", "amazondotcom", "ddg", "twitter", "wikipedia-my"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "nb-NO": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "amazon-en-GB", "bing", "ddg", "gulesider-NO", "bok-NO", "qxl-NO", "wikipedia-NO"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "ne-NP": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "bing", "ddg", "twitter", "wikipedia-ne"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "nl": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "bing", "bolcom-nl", "ddg", "marktplaats-nl", "wikipedia-nl"

- -        ]

- -      },

- -      "experimental-hidden": {

- -        "visibleDefaultEngines": [

- -          "amazon-nl"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "nn-NO": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "bing", "amazon-en-GB", "ddg", "gulesider-NO", "bok-NO", "qxl-NO", "wikipedia-NN"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "oc": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "bing", "ddg", "twitter", "wikipedia-oc", "wiktionary-oc"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "or": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "bing", "amazon-in", "ddg", "wikipedia-or"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "pa-IN": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "bing", "amazon-in", "ddg", "wikipedia-pa"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "pl": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "allegro-pl", "ddg", "pwn-pl", "wikipedia-pl", "wolnelektury-pl"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "pt-BR": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "bing", "ddg", "mercadolivre", "twitter", "wikipedia-pt"

- -        ]

- -      },

- -      "experimental-hidden": {

- -        "visibleDefaultEngines": [

- -          "amazon-br"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "pt-PT": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "amazon-en-GB", "ddg", "priberam", "wikipedia-pt"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "rm": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "bing", "ddg", "leo_ende_de", "wikipedia-rm"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "ro": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "bing", "amazondotcom", "ddg", "wikipedia-ro"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "ru": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "yandex-ru", "google", "ddg", "ozonru", "priceru", "wikipedia-ru", "mailru"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

- -      },

- -      "RU": {

- -        "searchDefault": "Яндекс"

- -      },

- -      "BY": {

- -        "searchDefault": "Яндекс"

- -      },

- -      "KZ": {

- -        "searchDefault": "Яндекс"

- -      },

- -      "TR": {

- -        "searchDefault": "Яндекс"

-        }

-      },

-      "si": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "amazondotcom", "ddg", "wikipedia-si"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "sk": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "azet-sk", "atlas-sk", "ddg", "wikipedia-sk", "zoznam-sk"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "sl": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "ceneji", "ddg", "najdi-si", "odpiralni", "twitter", "wikipedia-sl"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "son": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "bing", "amazon-france", "ddg", "wikipedia-fr"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "sq": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "bing", "amazon-en-GB", "ddg", "wikipedia-sq"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "sr": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "amazon-en-GB", "bing", "ddg", "wikipedia-sr", "pogodak"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "sv-SE": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "bing", "allaannonser-sv-SE", "ddg", "prisjakt-sv-SE", "tyda-sv-SE", "wikipedia-sv-SE"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "ta": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "amazon-in", "ddg", "wikipedia-ta"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "te": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "amazon-in", "ddg", "wikipedia-te", "wiktionary-te"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "th": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "amazondotcom", "bing", "ddg", "longdo", "wikipedia-th"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "tl": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "bing", "amazondotcom", "ddg", "twitter", "wikipedia-tl"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "tr": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "yandex-tr", "google", "ddg", "twitter", "wikipedia-tr"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

- -      },

- -      "TR": {

- -        "searchDefault": "Yandex"

- -      },

- -      "BY": {

- -        "searchDefault": "Yandex"

- -      },

- -      "KZ": {

- -        "searchDefault": "Yandex"

- -      },

- -      "RU": {

- -        "searchDefault": "Yandex"

-        }

-      },

-      "trs": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "bing", "amazondotcom", "ddg", "wikipedia-es"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "uk": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "bing", "ddg", "wikipedia-uk", "hotline-ua"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "ur": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "bing", "amazon-in", "ddg", "twitter", "wikipedia-ur"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "uz": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "bing", "amazondotcom", "ddg", "twitter", "wikipedia-uz"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "vi": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "coccoc", "ddg", "wikipedia-vi"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "wo": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "bing", "amazon-france", "ddg", "twitter", "wikipedia-wo"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "xh": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "bing", "ddg", "wikipedia"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      },

-      "zh-CN": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "baidu", "google", "bing", "ddg", "wikipedia-zh-CN", "amazondotcn"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

- -      },

- -      "CN": {

- -        "searchDefault": "百度"

-        }

-      },

-      "zh-TW": {

-        "default": {

-          "visibleDefaultEngines": [

- -          "google", "ddg", "readmoo", "wikipedia-zh-TW"

- +          "duckduckgo-html", "duckduckgo-lite", "internet-archive", "parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en", "yacy"

-          ]

-        }

-      }

@@ -0,0 +1,47 @@ 

+ ac_add_options --enable-application=comm/mail

+ ac_add_options --enable-calendar

+ 

+ ac_add_options --prefix=/usr

+ ac_add_options --enable-release

+ ac_add_options --enable-linker=gold

+ ac_add_options --enable-hardening

+ ac_add_options --enable-optimize

+ ac_add_options --enable-rust-simd

+ # https://bugzilla.mozilla.org/show_bug.cgi?id=1423822

+ ac_add_options --disable-elf-hack

+ 

+ # Branding

+ ac_add_options --disable-official-branding

+ ac_add_options --enable-update-channel=release

+ ac_add_options --with-distribution-id=nu.parabola

+ ac_add_options --with-branding=comm/mail/branding/icedove

+ 

+ # System libraries

+ ac_add_options --with-system-zlib

+ ac_add_options --with-system-bz2

+ ac_add_options --with-system-icu

+ ac_add_options --with-system-jpeg

+ # does not have APNG support

+ # ac_add_options --with-system-png

+ ac_add_options --with-system-libvpx

+ ac_add_options --with-system-nspr

+ ac_add_options --with-system-nss

+ ac_add_options --with-system-botan

+ ac_add_options --with-system-webp

+ ac_add_options --with-system-libevent

+ ac_add_options --with-system-ffi

+ ac_add_options --with-system-pixman

+ 

+ # Features

+ ac_add_options --enable-alsa

+ ac_add_options --enable-openpgp

+ ac_add_options --enable-calendar

+ ac_add_options --disable-jack

+ ac_add_options --disable-crashreporter

+ ac_add_options --disable-updater

+ # tests require network access.

+ ac_add_options --disable-tests

+ 

+ # System addons

+ ac_add_options --with-unsigned-addon-scopes=app,system

+ ac_add_options --allow-addon-sideload

@@ -1,11 +0,0 @@ 

- --- a/comm/mailnews/base/prefs/content/accountUtils.js	2020-04-04 22:28:38.105521722 +0200

- +++ b/comm/mailnews/base/prefs/content/accountUtils.js	2020-04-04 22:28:50.809027238 +0200

- @@ -488,7 +488,7 @@ function msgNewMailAccount(msgWindow, ok

-    let existingWindow = Services.wm.getMostRecentWindow("mail:autoconfig");

-    if (existingWindow) {

-      existingWindow.focus();

- -  } else if (AppConstants.MOZ_APP_NAME == "thunderbird") {

- +  } else {

-      // disabling modal for the time being, see 688273 REMOVEME

-      window.openDialog(

-        "chrome://messenger/content/accountcreation/emailWizard.xul",

The added file is too large to be shown here, see it at: nonprism/icedove/thunderbird-78.5-rust-1.48.patch
@@ -0,0 +1,32 @@ 

+ // Use LANG environment variable to choose locale

+ pref("intl.locale.requested", "");

+ 

+ // Use system-provided dictionaries

+ pref("spellchecker.dictionary_path", "/usr/share/hunspell");

+ 

+ // Disable default mailer checking

+ pref("mail.shell.checkDefaultMail", false);

+ 

+ // Don't disable our bundled extensions in the application directory

+ pref("extensions.autoDisableScopes", 11);

+ pref("extensions.shownSelectionUI", true);

+ 

+ // Disable telemetry

+ pref("datareporting.healthreport.uploadEnabled", false);

+ pref("datareporting.policy.dataSubmissionEnabled", false);

+ pref("toolkit.telemetry.archive.enabled", false);

+ 

+ // Disable Social API for content

+ pref("social.remote-install.enabled", false);

+ pref("social.toast-notifications.enabled", false);

+ 

+ // Make sure that whitelisted and directory installs are empty

+ pref("social.whitelist", "");

+ pref("social.directories", "");

+ 

+ // Disable the GeoLocation API for content

+ pref("geo.enabled", false);

+ 

+ // TODO: this "whats new" page should be in the branding package or abslibre

+ // Pointing the "Help -> What's new" menu entry to mozilla.debian.net

+ //pref("mailnews.start_page.override_url", "http://wiki.debian.org/Icedove/WhatsNew45");

@@ -4,8 +4,8 @@ 

  pkgdesc="This package will remove support for protocols and services known to endanger privacy."

  license=('GPL3')

  url="https://git.parabola.nu/blacklist.git"

- pkgver=20210928

- _gitver=7d2e711096135e4f5c160fc739e23fd1ec7a3c07

+ pkgver=20211130

+ _gitver=ab32447a5a47a2a5ec5a3fa6043dc6b9024e3674

  pkgrel=1

  

  arch=('any')
@@ -13,7 +13,7 @@ 

  

  makedepends=(librelib)

  source=(blacklist-${_gitver}.txt::https://git.parabola.nu/blacklist.git/plain/${pkgname}-blacklist.txt?id=${_gitver})

- sha512sums=('746be9d938a565a99dc3a2a273b580e0c7c2026a14f727bb09a996eacfbb40ce25ca62db58caa462f5546c60dd7be6b5f87cd65e2ab3fd843d4662a77f3ce827')

+ sha512sums=('9ab837a9ca351bb844ecdfc147d69ec1f0d1971fbe12ceeed3b837fc59c54b10d2476901e60f677b0f53166a805b493b0a8bcd638e9e6638012dd454c7930cf8')

  

  package() {

  	cd "$srcdir"

nonsystemd/mkinitcpio/9000-nonsystemd.patch nonsystemd/mkinitcpio/nosystemd.patch
file renamed
file was moved with no change to the file
@@ -0,0 +1,52 @@ 

+ $ curl https://github.com/archlinux/mkinitcpio/commit/9ee1333a5f3302d7ddb004cf0909c94b4cff60ba.diff

+ diff --git a/functions b/functions

+ index 9539a60..f95fb92 100644

+ --- a/functions

+ +++ b/functions

+ @@ -625,6 +625,46 @@ add_binary() {

+      return 0

+  }

+  

+ +add_udev_rule() {

+ +    # Add an udev rules file to the initcpio image. Dependencies on binaries

+ +    # will be discovered and added.

+ +    #   $1: path to rules file (or name of rules file)

+ +

+ +    local rules="$1" rule= key= value= binary=

+ +

+ +    if [[ ${rules:0:1} != '/' ]]; then

+ +        rules=$(PATH=/usr/lib/udev/rules.d:/lib/udev/rules.d type -P "$rules")

+ +    fi

+ +    if [[ -z $rules ]]; then

+ +        # complain about not found rules

+ +        return 1

+ +    fi

+ +

+ +    add_file "$rules" /usr/lib/udev/rules.d/"${rules##*/}"

+ +

+ +    while IFS=, read -ra rule; do

+ +        # skip empty lines, comments

+ +        [[ -z $rule || $rule = @(+([[:space:]])|#*) ]] && continue

+ +

+ +        for pair in "${rule[@]}"; do

+ +            IFS=' =' read -r key value <<< "$pair"

+ +            case $key in

+ +                RUN@({program}|+)|IMPORT{program}|ENV{REMOVE_CMD})

+ +                    # strip quotes

+ +                    binary=${value//[\"\']/}

+ +                    # just take the first word as the binary name

+ +                    binary=${binary%% *}

+ +                    [[ ${binary:0:1} == '$' ]] && continue

+ +                    if [[ ${binary:0:1} != '/' ]]; then

+ +                        binary=$(PATH=/usr/lib/udev:/lib/udev type -P "$binary")

+ +                    fi

+ +                    add_binary "$binary"

+ +                    ;;

+ +            esac

+ +        done

+ +    done <"$rules"

+ +}

+ +

+  parse_config() {

+      # parse key global variables set by the config file.

+  

file modified
+30 -11
@@ -3,17 +3,27 @@ 

  # Maintainer (Arch): Thomas Bächler <thomas@archlinux.org>

  # Maintainer: David P. <megver83@parabola.nu>

  

+ 

+ # parabola changes and rationale:

+ # - replace 'systemd' dep with 'udev'

+ # - emergency patch (mkinitcpio/udev patch #3121)

+ #   normally we keep core/mkinitcpio

+ #   !!! REMEMBER to db-remove libre/mkinitcpio !!!

+ _IS_NONSYSTEMD=false

+ 

+ 

  pkgname=mkinitcpio

  pkgver=30

- pkgrel=1

- pkgrel+=.nonsystemd1

+ pkgrel=2

+ pkgrel+=$(${_IS_NONSYSTEMD} && echo '.nonsystemd1' || echo '.parabola2')

  pkgdesc="Modular initramfs image creation utility"

  arch=('any')

- url="https://projects.archlinux.org/mkinitcpio.git/"

+ url='https://github.com/archlinux/mkinitcpio'

  license=('GPL')

  makedepends=('asciidoc')

  depends=('awk' 'mkinitcpio-busybox>=1.19.4-2' 'kmod' 'util-linux>=2.23' 'libarchive' 'coreutils'

-          'bash' 'diffutils' 'findutils' 'grep' 'filesystem>=2011.10-1' 'zstd' 'udev')

+          'bash' 'diffutils' 'findutils' 'grep' 'filesystem>=2011.10-1' 'zstd' 'systemd')

+ depends=( $(${_IS_NONSYSTEMD} && echo ${depends[*]/systemd/udev} || echo ${depends[*]}) )

  optdepends=('gzip: Use gzip compression for the initramfs image'

              'xz: Use lzma or xz compression for the initramfs image'

              'bzip2: Use bzip2 compression for the initramfs image'
@@ -22,21 +32,30 @@ 

              'mkinitcpio-nfs-utils: Support for root filesystem on NFS')

  provides=('initramfs')

  backup=('etc/mkinitcpio.conf')

- source=("https://sources.archlinux.org/other/$pkgname/$pkgname-$pkgver.tar.gz"{,.sig}

-         nosystemd.patch)

+ source=("https://sources.archlinux.org/other/$pkgname/$pkgname-$pkgver.tar.gz"{,.sig})

+ source+=( $(${_IS_NONSYSTEMD} && echo '9000-nonsystemd.patch') )

+ source+=(9001-udev.patch)

  install=mkinitcpio.install

  sha512sums=('ef43a8ddc01697fa43bede4eebad3271bbc89efa57ba7e4e9f321e8174ff2af74d857b308c5c0f37b42a91906c91c1b022f9a651c70d5d3e9dfc8dc441a60ee4'

-             'SKIP'

-             'f1ad7792b3b42397c2645e834d4b6c6a89122060455954d1ab56a71c673c3b8a8fdbbd6d722d30195211672b9075d09ac07ce6fb5d9723f56ce540709ebe4665')

+             'SKIP')

+ sha512sums+=( $(${_IS_NONSYSTEMD} && echo 'f1ad7792b3b42397c2645e834d4b6c6a89122060455954d1ab56a71c673c3b8a8fdbbd6d722d30195211672b9075d09ac07ce6fb5d9723f56ce540709ebe4665') )

+ sha512sums+=('695e70d85cf4c666b4325113f5f784b06002b0d9c626338b72bec9049a133cd5a2209d73193574da18d8ecac2fab54754cf499c18faaff5b20e2053a4d338b12')

  b2sums=('2001f9ac12bfa7369ad32842956cd21b2a786cd28133b6d3256e4aa77210c78ec6cac8a710ff8c2feb5a4797c1a33ce8c8c7dfabd84d7927c08bf8377e330300'

-         'SKIP'

-         '92e1969572e0022bd257f44314045f57db47821d99a40ea1290749967b50ead1cb11adaa9b79f4286fbf20a94173e0ba7f2d4f88208e31d7a03a8de4ea014396')

+         'SKIP')

+ b2sums+=( $(${_IS_NONSYSTEMD} && echo '92e1969572e0022bd257f44314045f57db47821d99a40ea1290749967b50ead1cb11adaa9b79f4286fbf20a94173e0ba7f2d4f88208e31d7a03a8de4ea014396') )

+ b2sums+=('0f53c448b2ada7923c1dbab331a0b68a9e79f402bd7e16388a6ea2da4c7d93539405e4bd86eccdaaabcdfdbb0c01c5ca337ba226b81dd8dc91f6411c4e678c64')

  validpgpkeys=('ECCAC84C1BA08A6CC8E63FBBF22FB1D78A77AEAB'    # Giancarlo Razzolini

                '86CFFCA918CF3AF47147588051E8B148A9999C34')   # Evangelos Foutras

  

  prepare() {

    cd $pkgname-$pkgver

-   patch -Np1 -i ../nosystemd.patch

+ 

+   ${_IS_NONSYSTEMD} && patch -Np1 -i ../9000-nonsystemd.patch

+ 

+   # https://labs.parabola.nu/issues/3121

+   # https://github.com/archlinux/mkinitcpio/pull/54

+   # https://github.com/archlinux/mkinitcpio/commit/9ee1333a5f3302d7ddb004cf0909c94b4cff60ba.diff

+   patch -Np1 -i ../9001-udev.patch

  }

  

  check() {

file modified
+1 -1
@@ -5,7 +5,7 @@ 

  pkgbase=p11-kit

  pkgname=(p11-kit libp11-kit)

  pkgver=0.24.0

- pkgrel=1

+ pkgrel=2

  pkgrel+=.nonsystemd1

  pkgdesc="Loads and enumerates PKCS#11 modules"

  url="https://p11-glue.freedesktop.org"

@@ -0,0 +1,198 @@ 

+ # Maintainer: David P. <megver83@parabola.nu>

+ # Maintainer: Jan Alexander Steffens (heftig) <heftig@archlinux.org>

+ # Contributor: Jan de Groot <jgc@archlinux.org>

+ 

+ pkgbase=pipewire

+ pkgname=(pipewire alsa-card-profiles pipewire-docs pipewire-alsa pipewire-jack

+          pipewire-pulse gst-plugin-pipewire pipewire-zeroconf pipewire-v4l2)

+ pkgver=0.3.40

+ pkgrel=1

+ pkgrel+=.nonsystemd1

+ epoch=1

+ pkgdesc="Low-latency audio/video router and processor"

+ url="https://pipewire.org"

+ license=(MIT)

+ arch=(x86_64)

+ arch+=(i686 armv7h)

+ makedepends=(git meson doxygen graphviz python-docutils valgrind libpulse

+              alsa-lib libusb gst-plugins-base rtkit dbus sdl2 ncurses libsndfile

+              bluez-libs sbc libldac libfreeaptx libfdk-aac avahi

+              webrtc-audio-processing)

+ checkdepends=(desktop-file-utils)

+ _commit=7afd80052b7c49754a13c9ab49c368f95b60e0a7  # tags/0.3.40

+ source=("git+https://gitlab.freedesktop.org/pipewire/pipewire.git#commit=$_commit")

+ sha256sums=('SKIP')

+ 

+ pkgver() {

+   cd pipewire

+   git describe --tags | sed 's/-/+/g'

+ }

+ 

+ prepare() {

+   cd pipewire

+ }

+ 

+ build() {

+   local meson_options=(

+     -D docs=enabled

+     -D jack=disabled

+     -D libcamera=disabled

+     -D udevrulesdir=/usr/lib/udev/rules.d

+     -D systemd=disabled

+     -D roc=disabled

+     -D session-managers=[]

+   )

+ 

+   arch-meson pipewire build "${meson_options[@]}"

+   meson compile -C build

+ }

+ 

+ check() {

+   meson test -C build --print-errorlogs

+ }

+ 

+ _pick() {

+   local p="$1" f d; shift

+   for f; do

+     d="$srcdir/$p/${f#$pkgdir/}"

+     mkdir -p "$(dirname "$d")"

+     mv "$f" "$d"

+     rmdir -p --ignore-fail-on-non-empty "$(dirname "$f")"

+   done

+ }

+ 

+ _ver=${pkgver:0:3}

+ 

+ package_pipewire() {

+   license+=(LGPL)  # libspa-alsa

+   depends=(rtkit alsa-card-profiles libdbus-1.so libncursesw.so libsndfile.so

+            libudev.so libusb-1.0.so libasound.so libbluetooth.so

+            libsbc.so libldacBT_enc.so libfreeaptx.so libfdk-aac.so

+            libwebrtc_audio_processing.so)

+   optdepends=('pipewire-docs: Documentation'

+               'pipewire-session-manager: Session manager'

+               'pipewire-alsa: ALSA configuration'

+               'pipewire-jack: JACK support'

+               'pipewire-pulse: PulseAudio replacement'

+               'gst-plugin-pipewire: GStreamer plugin'

+               'pipewire-zeroconf: Zeroconf support'

+               'pipewire-v4l2: V4L2 interceptor')

+   provides=(libpipewire-$_ver.so)

+ 

+   meson install -C build --destdir "$pkgdir"

+ 

+   ( cd "$pkgdir"

+ 

+     _pick acp usr/lib/udev

+     _pick acp usr/share/alsa-card-profile

+ 

+     _pick docs usr/share/doc

+ 

+     _pick jack usr/bin/pw-jack usr/lib/pipewire-$_ver/jack

+     _pick jack usr/share/man/man1/pw-jack.1

+     _pick jack usr/share/pipewire/jack.conf

+ 

+     _pick pulse usr/bin/pipewire-pulse

+     _pick pulse usr/lib/pipewire-$_ver/libpipewire-module-protocol-pulse.so

+     _pick pulse usr/lib/pipewire-$_ver/libpipewire-module-pulse-tunnel.so

+ 

+     _pick gst usr/lib/gstreamer-1.0

+ 

+     _pick zeroconf usr/lib/pipewire-$_ver/libpipewire-module-zeroconf-discover.so

+ 

+     _pick v4l2 usr/bin/pw-v4l2 usr/lib/pipewire-$_ver/v4l2

+   )

+ 

+   mkdir -p "$pkgdir/etc/alsa/conf.d"

+   ln -st "$pkgdir/etc/alsa/conf.d" \

+     /usr/share/alsa/alsa.conf.d/50-pipewire.conf

+ 

+   install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 pipewire/COPYING

+ }

+ 

+ package_alsa-card-profiles() {

+   pkgdesc+=" - ALSA card profiles"

+   license=(LGPL)

+ 

+   mv acp/* "$pkgdir"

+ }

+ 

+ package_pipewire-docs() {

+   pkgdesc+=" - documentation"

+ 

+   mv docs/* "$pkgdir"

+ 

+   install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 pipewire/COPYING

+ }

+ 

+ package_pipewire-alsa() {

+   pkgdesc+=" - ALSA configuration"

+   depends=(pipewire-session-manager)

+   provides=(pulseaudio-alsa)

+ 

+   mkdir -p "$pkgdir/etc/alsa/conf.d"

+   ln -st "$pkgdir/etc/alsa/conf.d" \

+     /usr/share/alsa/alsa.conf.d/99-pipewire-default.conf

+ 

+   install -Dm644 /dev/null \

+     "$pkgdir/usr/share/pipewire/media-session.d/with-alsa"

+ 

+   install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 pipewire/COPYING

+ }

+ 

+ package_pipewire-jack() {

+   pkgdesc+=" - JACK support"

+   license+=(GPL2)  # libjackserver

+   depends=(pipewire-session-manager libpipewire-$_ver.so)

+ 

+   mv jack/* "$pkgdir"

+ 

+   install -Dm644 /dev/null \

+     "$pkgdir/usr/share/pipewire/media-session.d/with-jack"

+ 

+   install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 pipewire/COPYING

+ }

+ 

+ package_pipewire-pulse() {

+   pkgdesc+=" - PulseAudio replacement"

+   depends=(pipewire-session-manager libpipewire-$_ver.so libpulse.so

+            libavahi-{client,common}.so)

+   provides=(pulseaudio pulseaudio-bluetooth)

+   conflicts=(pulseaudio pulseaudio-bluetooth)

+ 

+   mv pulse/* "$pkgdir"

+ 

+   install -Dm644 /dev/null \

+     "$pkgdir/usr/share/pipewire/media-session.d/with-pulseaudio"

+ 

+   install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 pipewire/COPYING

+ }

+ 

+ package_gst-plugin-pipewire() {

+   pkgdesc="Multimedia graph framework - pipewire plugin"

+   depends=(pipewire-session-manager libpipewire-$_ver.so gst-plugins-base-libs)

+ 

+   mv gst/* "$pkgdir"

+ 

+   install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 pipewire/COPYING

+ }

+ 

+ package_pipewire-zeroconf() {

+   pkgdesc+=" - Zeroconf support"

+   depends=(pipewire libpipewire-$_ver.so libavahi-{client,common}.so)

+ 

+   mv zeroconf/* "$pkgdir"

+ 

+   install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 pipewire/COPYING

+ }

+ 

+ package_pipewire-v4l2() {

+   pkgdesc+=" - V4L2 interceptor"

+   depends=(pipewire-session-manager libpipewire-$_ver.so)

+ 

+   mv v4l2/* "$pkgdir"

+ 

+   install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 pipewire/COPYING

+ }

+ 

+ # vim:set sw=2 et:

file modified
+23 -18
@@ -1,11 +1,11 @@ 

  # Maintainer: David P. <megver83@parabola.nu>

- # Maintainer (Arch): Jan Alexander Steffens (heftig) <heftig@archlinux.org>

+ # Maintainer: Jan Alexander Steffens (heftig) <heftig@archlinux.org>

  

  pkgbase=pulseaudio

  pkgname=(pulseaudio libpulse pulseaudio-{zeroconf,lirc,jack,bluetooth,equalizer,rtp})

  pkgdesc="A featureful, general-purpose sound server"

- pkgver=14.2

- pkgrel=2

+ pkgver=15.0

+ pkgrel=1

  pkgrel+=.nonsystemd1

  arch=(x86_64)

  arch+=(i686 armv7h)
@@ -14,12 +14,10 @@ 

  makedepends=(libasyncns libcap attr libxtst libsm libsndfile rtkit libsoxr

               speexdsp tdb elogind dbus avahi bluez bluez-libs jack2 sbc

               lirc openssl fftw orc gtk3 webrtc-audio-processing check git meson

-              xmltoman)

- _commit=6a487c5244563f49a025088de3510c80824fc99e  # tags/v14.2^0

- source=("git+https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git#commit=$_commit"

-         "meson-elogind-support.patch")

- sha256sums=('SKIP'

-             'fea0e09a9f026bc3c9160b53018b8e1dd1f3493c60f68405a758de7d3cb592cf')

+              xmltoman valgrind doxygen)

+ _commit=6329a2498eb038f8a9537888280a62b00a93f68e  # tags/v15.0^0

+ source=("git+https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git#commit=$_commit")

+ sha256sums=('SKIP')

  

  pkgver() {

    cd pulseaudio
@@ -30,18 +28,22 @@ 

    cd pulseaudio

  

    # Freeze version before patching

-   patch -Np 1 -i ../meson-elogind-support.patch

    ./git-version-gen doesnt-exist >.tarball-version

  }

  

  build() {

-   arch-meson pulseaudio build \

-     -D pulsedsp-location='/usr/\$LIB/pulseaudio' \

-     -D stream-restore-clear-old-devices=true \

-     -D udevrulesdir=/usr/lib/udev/rules.d \

-     -D systemd=disabled \

+   local meson_options=(

+     -D stream-restore-clear-old-devices=true

+     -D pulsedsp-location='/usr/\$LIB/pulseaudio'

+     -D udevrulesdir=/usr/lib/udev/rules.d

+     -D bluez5-gstreamer=disabled

+     -D tcpwrap=disabled

+     -D systemd=disabled

      -D elogind=enabled

-   meson compile -C build 

+   )

+ 

+   arch-meson pulseaudio build "${meson_options[@]}"

+   meson compile -C build

  }

  

  check() {
@@ -78,7 +80,7 @@ 

    done

    pulsever=${pulsever%%-*}

  

-   DESTDIR="$pkgdir" meson install -C build

+   meson install -C build --destdir "$pkgdir"

  

    cd "$pkgdir"

  
@@ -106,7 +108,10 @@ 

    _pick libpulse usr/include

    _pick libpulse usr/share/man/man1/pa{cat,ctl,dsp,mon,play,rec,record}.1

    _pick libpulse usr/share/man/man5/pulse-client.conf.5

+   _pick libpulse usr/share/bash-completion/completions/pa{cat,ctl,dsp,play,rec,record}

+   _pick libpulse usr/share/bash-completion/completions/pulseaudio

    _pick libpulse usr/share/vala

+   _pick libpulse usr/share/zsh

  

    local moddir=usr/lib/pulse-$pulsever/modules

  
@@ -133,7 +138,7 @@ 

  

  package_libpulse() {

    pkgdesc="$pkgdesc (client library)"

-   depends=(dbus libasyncns libcap libxcb libsm libsndfile elogind)

+   depends=(dbus libasyncns libcap libxcb libsm libsndfile libelogind)

    optdepends=('glib2: mainloop integration')

    provides=(libpulse{,-simple,-mainloop-glib}.so)

    license=(LGPL)

@@ -1,42 +0,0 @@ 

-  meson.build       | 6 ++++++

-  meson_options.txt | 3 +++

-  2 files changed, 9 insertions(+)

- 

- diff --git a/meson.build b/meson.build

- index 842d5f5b5..1daa3b067 100644

- --- a/meson.build

- +++ b/meson.build

- @@ -484,6 +484,11 @@ if systemd_dep.found() and systemduserunitdir == ''

-    systemduserunitdir = systemd_dep.get_pkgconfig_variable('systemduserunitdir')

-  endif

- 

- +libelogind_dep = dependency('libelogind', required : get_option('elogind'))

- +if libelogind_dep.found()

- +  cdata.set('HAVE_SYSTEMD_LOGIN', 1)

- +endif

- +

-  x11_dep = dependency('x11-xcb', required : get_option('x11'))

-  if x11_dep.found()

-    xcb_dep  = dependency('xcb',  required : true, version : '>= 1.6')

- @@ -701,6 +706,7 @@ summary = [

-    'Enable udev:                   @0@'.format(udev_dep.found()),

-    '  Enable HAL->udev compat:     @0@'.format(get_option('hal-compat')),

-    'Enable systemd:                @0@'.format(libsystemd_dep.found()),

- +  'Enable elogind:                @0@'.format(libelogind_dep.found()),

-  #  'Enable TCP Wrappers:           @0@'.format(${ENABLE_TCPWRAP}),

-    'Enable libsamplerate:          @0@'.format(samplerate_dep.found()),

-    'Enable IPv6:                   @0@'.format(get_option('ipv6')),

- diff --git a/meson_options.txt b/meson_options.txt

- index e54caf5cf..5fbb513c0 100644

- --- a/meson_options.txt

- +++ b/meson_options.txt

- @@ -126,6 +126,9 @@ option('udev',

-  option('x11',

-         type : 'feature', value : 'auto',

-         description : 'Optional X11 support')

- +option('elogind',

- +       type : 'feature', value : 'auto',

- +       description : 'Optional elogind support')

- 

-  # Echo cancellation

- 

@@ -0,0 +1,41 @@ 

+ # Maintainer (aur): Lex Black <autumn-wind@web.de>

+ 

+ pkgname=gmnisrv

+ pkgver=1.0

+ pkgrel=1

+ pkgdesc="simple Gemini protocol server"

+ url="https://git.sr.ht/~sircmpwn/gmnisrv"

+ arch=(x86_64)

+ arch+=(armv7h i686)

+ license=("GPL3")

+ depends=("openssl" "mailcap")

+ makedepends=("scdoc")

+ source=(${pkgname}-${pkgver}.tar.gz::https://git.sr.ht/~sircmpwn/${pkgname}/archive/${pkgver}.tar.gz

+ 	${pkgname}.service)

+ b2sums=('977e93d8826f5aab5fe00f1fa6fb39ca317caf8439116b5dd8f2ab7b811d6a4f650e94e25d7b24a7f22c33956effbe904fcb5bd3bdcd59ddec6caaff60ac6cd4'

+         '7a33cf875f7012d8dedd3f9fc41ef9bc5022c85cfc7dd79b254f8fc25eef164335802d67acc426124ab61922de8882945941951dae4eb7be4a57fe4efb08f3dd')

+ 

+ 

+ build() {

+     cd "${pkgname}-${pkgver}"

+ 

+     mkdir build

+     cd build

+     ../configure --prefix=/usr

+     make PREFIX="/usr"

+ }

+ 

+ package() {

+     cd "${pkgname}-${pkgver}/build"

+ 

+     make PREFIX="/usr" DESTDIR="$pkgdir" install

+ 

+     # Move conf file into etc

+     mkdir "${pkgdir}/etc"

+     mv "${pkgdir}/usr/share/gmnisrv/gmnisrv.ini" "${pkgdir}/etc"

+     rmdir "${pkgdir}/usr/share/gmnisrv"

+ 

+     # Copy systemd service

+     mkdir -p "${pkgdir}/usr/lib/systemd/system"

+     cp "${srcdir}/gmnisrv.service" "${pkgdir}/usr/lib/systemd/system"

+ }

@@ -0,0 +1,10 @@ 

+ [Unit]

+ Description=Gemini Server

+ After=network.target

+ 

+ [Service]

+ Type=simple

+ ExecStart=/usr/bin/gmnisrv

+ 

+ [Install]

+ WantedBy=multi-user.target

file modified
+4 -3
@@ -6,7 +6,7 @@ 

  #export LG2=en

  

  pkgname=i2p

- pkgver=1.5.0

+ pkgver=1.6.1

  pkgrel=1

  pkgdesc="A distributed anonymous network"

  url="https://geti2p.net"
@@ -24,14 +24,15 @@ 

  # https://geti2p.net/_static/zzz.key.asc

  validpgpkeys=('2D3D2D03910C6504C1210C65EE60C0C8EE7256A8')

  

- _url="https://download.i2p2.de/releases/${pkgver}"

+ _url="https://files.i2p-projekt.de/${pkgver}"

+ #_url="https://download.i2p2.de/releases/${pkgver}"

  #_url="https://launchpad.net/i2p/trunk/${pkgver}/+download"

  

  source=("${_url}/i2psource_${pkgver}.tar.bz2"{,.sig}

          'i2prouter.service' 'i2p.tmpfiles' 'wrapper.config' 'router.config'

          'i2prouter.bash' 'i2prouter.sh'

  )

- sha256sums=('26e5f4d95b1a0766870f97b30e57c9a8e98690279c3bf09198e30effabecc450'

+ sha256sums=('719606c4cb510de4fe74f24bbfa53911a70531821fc1ee79a29e3d96eaa16733'

              'SKIP'

              '644b771ec7f5db3efab3206bf1f896566cdb00d410a54608fda85bdb4c2ad876'

              'fc30dd32f48fe1c93bf36c8297ca48203a1479e4e221ebe62c57cf3c3c0347d3'

file modified
+3 -3
@@ -3,8 +3,8 @@ 

  # Maintainer: Omar Vega Ramos <ovruni@gnu.org.pe>

  

  pkgname=octopi

- pkgver=0.11.0

- pkgrel=2

+ pkgver=0.12.0

+ pkgrel=1

  pkgrel+=.parabola1

  pkgdesc="A powerful Pacman frontend using Qt5 libs, without nonfree pacaur, pikaur, trizen and yay recommendation"

  arch=('x86_64')
@@ -21,7 +21,7 @@ 

             'octopi-git' 'octopi-kde-git')

  source=("octopi-${pkgver}.tar.gz::https://github.com/aarnt/octopi/archive/v${pkgver}.tar.gz"

          'octopi-repoeditor.desktop')

- sha256sums=('0f97626b244d51fca4a67cae208e49dd856cb61e96de6357f5827f9bedead3f4'

+ sha256sums=('b679a3822d3060dfe5a4fd2ba68b50b4db6d7bf0e68197ca330ee9cb66e2b0c5'

              '131f16745df685430db55e54ede6da66aed9b02ca00d6d873a002b2a3e1c90ef')

  

  _subdirs=(helper repoeditor cachecleaner sudo notifier)

⚠ Depends on https://pagure.io/iceweasel/pull-request/7
Only the most recent commit is relevant.

Built for x86_64.

i686 build failed, please find the logs:
iceweasel-1:95.0-1.parabola1-i686-prepare.log: https://termbin.com/o7fx
iceweasel-1:95.0-1.parabola1-i686-build_truncated_before_error.log: https://termbin.com/e3uk

Also tried to build armv7h and waited until it started "Compiling..." steps, then canceled the build. Didn't want to wait so much time for it to complete, sorry.

Pull-Request has been closed by billauger

2 years ago
Metadata
Changes Summary 111
+235
file added
libre-testing/icedove/PKGBUILD
+0 -0
file renamed
libre/iceweasel/arm.patch
libre-testing/icedove/arm-wasm-vfp.patch
+25
file added
libre-testing/icedove/configure-fix-passing-system-bzip2-ldflags.patch
+9
file added
libre-testing/icedove/distribution.ini
+173
file added
libre-testing/icedove/icedove.desktop
+47
file added
libre-testing/icedove/mozconfig.cfg
+3941
file added
libre-testing/icedove/thunderbird-78.5-rust-1.48.patch
+32
file added
libre-testing/icedove/vendor-prefs.js
+2 -2
file changed
libre/arm-linux-gnueabi-binutils/PKGBUILD
+15 -9
file changed
libre/arm-linux-gnueabi-gcc/PKGBUILD
+35 -35
file changed
libre/asciidoc/PKGBUILD
+4 -3
file changed
libre/blender/PKGBUILD
+7 -4
file changed
libre/hydrogen/PKGBUILD
+9 -8
file changed
libre/icedove/PKGBUILD
+6 -6
file changed
libre/iceweasel/0001-Use-remoting-name-for-GDK-application-names.patch
+7 -5
file changed
libre/iceweasel/9001-FSDG-always-sync-remote-settings-with-local-dump.patch
+13 -15
file changed
libre/iceweasel/PKGBUILD
+146
file added
libre/icu-compat-65/PKGBUILD
+23
file added
libre/icu-compat-65/icu-65.1-initialized-buffer-uloc_getKeywordValue.patch
+118
file added
libre/icu-compat-65/icu-65.1-prevent-SEGV_MAPERR-in-append.patch
+130
file added
libre/icu-compat-67/PKGBUILD
+13 -10
file changed
libre/icu-compat/PKGBUILD
+3 -3
file changed
libre/kdevelop/PKGBUILD
-4982
file removed
libre/linux-libre-firmware/0001-Update-carl9170-to-latest-upstream.patch
-4893
file removed
libre/linux-libre-firmware/0002-Add-firmware-for-the-ATUSB-IEEE-802.15.4-USB-Adapter.patch
-44
file removed
libre/linux-libre-firmware/0003-Update-INSTALL-document.patch
-73
file removed
libre/linux-libre-firmware/0004-atusb-Build-updates.patch
-25
file removed
libre/linux-libre-firmware/0006-Makefile-Change-spaces-for-atusb-to-tab.patch
-25
file removed
libre/linux-libre-firmware/0007-Makefile-Add-atusb-to-all.patch
-25
file removed
libre/linux-libre-firmware/0008-Makefile-Set-shell-to-bin-bash.patch
+23 -37
file changed
libre/linux-libre-firmware/PKGBUILD
+6 -7
file changed
libre/linux-libre-hardened/PKGBUILD
+259 -113
file changed
libre/linux-libre-hardened/config
+76
file added
libre/linux-libre-lts/0002-gcc-plugins-modern-gcc-plugin-infrastructure-requres.patch
+14 -12
file changed
libre/linux-libre-lts/PKGBUILD
+13 -3
file changed
libre/linux-libre-lts/config.x86_64
+15 -15
file changed
libre/linux-libre-pae/0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch
+79
file added
libre/linux-libre-pae/0002-Bluetooth-btusb-Add-support-for-IMC-Networks-Mediate.patch
-85
file removed
libre/linux-libre-pae/0002-Bluetooth-btusb-check-conditions-before-enabling-USB.patch
+71
file added
libre/linux-libre-pae/0003-Bluetooth-btusb-Add-support-for-Foxconn-Mediatek-Chi.patch
+64
file added
libre/linux-libre-pae/0004-ALSA-pcm-Check-mmap-capability-of-runtime-dma-buffer.patch
+75
file added
libre/linux-libre-pae/0005-ALSA-pci-rme-Set-up-buffer-type-properly.patch
+95
file added
libre/linux-libre-pae/0006-ALSA-pci-cs46xx-Fix-set-up-buffer-type-properly.patch
+17 -8
file changed
libre/linux-libre-pae/PKGBUILD
+93 -40
file changed
libre/linux-libre-pae/config
+11 -10
file changed
libre/linux-libre-pck/PKGBUILD
+111 -51
file changed
libre/linux-libre-pck/config.i686
+113 -52
file changed
libre/linux-libre-pck/config.x86_64
+15 -15
file changed
libre/linux-libre/0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch
+79
file added
libre/linux-libre/0002-Bluetooth-btusb-Add-support-for-IMC-Networks-Mediate.patch
-85
file removed
libre/linux-libre/0002-Bluetooth-btusb-check-conditions-before-enabling-USB.patch
+71
file added
libre/linux-libre/0003-Bluetooth-btusb-Add-support-for-Foxconn-Mediatek-Chi.patch
+64
file added
libre/linux-libre/0004-ALSA-pcm-Check-mmap-capability-of-runtime-dma-buffer.patch
+75
file added
libre/linux-libre/0005-ALSA-pci-rme-Set-up-buffer-type-properly.patch
+95
file added
libre/linux-libre/0006-ALSA-pci-cs46xx-Fix-set-up-buffer-type-properly.patch
+18 -9
file changed
libre/linux-libre/PKGBUILD
+111 -48
file changed
libre/linux-libre/config.i686
+113 -49
file changed
libre/linux-libre/config.x86_64
+52
file added
libre/mkinitcpio/9001-udev.patch
+67
file added
libre/mkinitcpio/PKGBUILD
+15
file added
libre/mkinitcpio/mkinitcpio.install
+67 -76
file changed
libre/netpbm/PKGBUILD
+70 -24
file changed
libre/netpbm/netpbm-security-code.patch
+16
file added
libre/netpbm/reproducible-man-gzip.patch
+13
file added
libre/netpbm/use-source-date-epoch.patch
+1 -1
file changed
libre/pacman-mirrorlist/PKGBUILD
+7 -4
file changed
libre/pacman/PKGBUILD
+2 -2
file changed
libre/parabola-keyring/PKGBUILD
+39 -36
file changed
libre/qtcreator/PKGBUILD
-15
file removed
libre/qtcreator/qtcreator-fix-clang-paths.patch
+5 -9
file changed
libre/quassel/0001-qtui-Set-desktop-file-name.patch
+35
file added
libre/quassel/0002-common-Disable-enum-type-stream-operators-for-Qt-5.1.patch
+24
file added
libre/quassel/0003-Removed-mozilla-IRC-network-from-networks.ini.patch
+99
file added
libre/quassel/0004-This-commit-changes-the-official-Quassel-IRC-channel.patch
+0 -0
file renamed
libre/quassel/search-duck.patch
libre/quassel/9000-search-duck.patch
+86 -29
file changed
libre/quassel/PKGBUILD
-118
file removed
libre/quassel/quassel-0.13.1-qt5.14.patch
+60
file added
libre/rz-cutter/PKGBUILD
+2 -2
file changed
libre/sh-elf-binutils/PKGBUILD
+16 -10
file changed
libre/sh-elf-gcc/PKGBUILD
+13 -11
file changed
libre/systemd/PKGBUILD
+3 -0
file changed
libre/systemd/initcpio-install-systemd
+56 -9
file changed
libre/systemd/initcpio-install-udev
+2 -2
file changed
libre/texlive-bin/PKGBUILD
+2 -2
file changed
libre/xtensa-elf-binutils/PKGBUILD
+16 -9
file changed
libre/xtensa-elf-gcc/PKGBUILD
+3 -3
file changed
libre/your-freedom/PKGBUILD
+43
file added
nonprism/claws-mail/0001_move_OAuth2_to_last_place_in_auto_auth_selection.diff
+23
file added
nonprism/claws-mail/0002_Fancy_crashes_when_opening_an_email.diff
+30 -12
file changed
nonprism/claws-mail/PKGBUILD
+10
file added
nonprism/claws-mail/claws-mail.install
+98 -142
file changed
nonprism/icedove/PKGBUILD
+25
file added
nonprism/icedove/configure-fix-passing-system-bzip2-ldflags.patch
+9
file added
nonprism/icedove/distribution.ini
-1006
file removed
nonprism/icedove/libre-searchengines.patch
+47
file added
nonprism/icedove/mozconfig.cfg
-11
file removed
nonprism/icedove/mozilla-1338795-regression.patch
+3941
file added
nonprism/icedove/thunderbird-78.5-rust-1.48.patch
+32
file added
nonprism/icedove/vendor-prefs.js
+3 -3
file changed
nonprism/your-privacy/PKGBUILD
+0 -0
file renamed
nonsystemd/mkinitcpio/nosystemd.patch
nonsystemd/mkinitcpio/9000-nonsystemd.patch
+52
file added
nonsystemd/mkinitcpio/9001-udev.patch
+30 -11
file changed
nonsystemd/mkinitcpio/PKGBUILD
+1 -1
file changed
nonsystemd/p11-kit/PKGBUILD
+198
file added
nonsystemd/pipewire/PKGBUILD
+23 -18
file changed
nonsystemd/pulseaudio/PKGBUILD
-42
file removed
nonsystemd/pulseaudio/meson-elogind-support.patch
+41
file added
pcr-testing/gmnisrv/PKGBUILD
+10
file added
pcr-testing/gmnisrv/gmnisrv.service
+4 -3
file changed
pcr/i2p/PKGBUILD
+3 -3
file changed
pcr/octopi/PKGBUILD