diff --git a/.github/ISSUE_TEMPLATE/bug-report.md b/.github/ISSUE_TEMPLATE/bug-report.md
index 4fdfe6fce1..be7250aed9 100644
--- a/.github/ISSUE_TEMPLATE/bug-report.md
+++ b/.github/ISSUE_TEMPLATE/bug-report.md
@@ -6,6 +6,7 @@ labels: ISSUE NEEDS REVIEW
assignees: ''
---
+### Have you first reported the issue on the rocknix discord and / or checked rocknix.org for a solution?
### Describe the bug
diff --git a/Makefile b/Makefile
index b73934c0cd..ce8adcd764 100644
--- a/Makefile
+++ b/Makefile
@@ -41,11 +41,6 @@ S922X:
PROJECT=Amlogic DEVICE=S922X ARCH=arm ./scripts/build_distro
PROJECT=Amlogic DEVICE=S922X ARCH=aarch64 ./scripts/build_distro
-S922X-PANFROST:
- unset DEVICE_ROOT
- PROJECT=Amlogic DEVICE=S922X ARCH=arm USE_MALI=no ./scripts/build_distro
- PROJECT=Amlogic DEVICE=S922X ARCH=aarch64 USE_MALI=no ./scripts/build_distro
-
RK3566:
unset DEVICE_ROOT
DEVICE_ROOT=RK3566 PROJECT=Rockchip DEVICE=RK3566 ARCH=arm ./scripts/build_distro
diff --git a/README.md b/README.md
index 78219702c0..3623fb15e5 100644
--- a/README.md
+++ b/README.md
@@ -36,7 +36,7 @@ The ROCKNIX community utilizes Discord for discussion, if you would like to join
## Licenses
-**ROCKNIX** is a fork of [JELOS](https://jelos.org/), all licenses apply and credit to the JELOS team.
+**ROCKNIX** is a fork of [JELOS](https://github.com/JustEnoughLinuxOS/distribution/), all licenses apply and credit to the JELOS team.
You are free to:
diff --git a/config/emulators/megadriveh.conf b/config/emulators/megadriveh.conf
new file mode 100644
index 0000000000..425b709c3b
--- /dev/null
+++ b/config/emulators/megadriveh.conf
@@ -0,0 +1,10 @@
+SYSTEM_NAME="megadriveh"
+SYSTEM_FULLNAME="Mega Drive (Hacks)"
+SYSTEM_MANUFACTURER="Sega"
+SYSTEM_RELEASE="1990"
+SYSTEM_HARDWARE="console"
+SYSTEM_PATH="/storage/roms/megadriveh"
+SYSTEM_EXTENSION=".bin .gen .md .sg .smd .zip .7z"
+SYSTEM_PLATFORM="megadrive"
+SYSTEM_THEME="megadriveh"
+SYSTEM_WIKI_PATH="genesis"
diff --git a/config/emulators/wasm4.conf b/config/emulators/wasm4.conf
new file mode 100644
index 0000000000..832009628b
--- /dev/null
+++ b/config/emulators/wasm4.conf
@@ -0,0 +1,10 @@
+SYSTEM_NAME="wasm4"
+SYSTEM_FULLNAME="WASM-4"
+SYSTEM_MANUFACTURER="Various"
+SYSTEM_RELEASE="2017"
+SYSTEM_HARDWARE="game engine"
+SYSTEM_PATH="/storage/roms/wasm4"
+SYSTEM_EXTENSION=".wasm .wat"
+SYSTEM_PLATFORM="wasm4"
+SYSTEM_THEME="wasm4"
+SYSTEM_WIKI_PATH="wasm-4"
diff --git a/distributions/ROCKNIX/options b/distributions/ROCKNIX/options
index b2a8ae8546..f9ea522ab4 100644
--- a/distributions/ROCKNIX/options
+++ b/distributions/ROCKNIX/options
@@ -47,11 +47,6 @@
CLEAN_EMU_32BIT="lib32 box86 pcsx_rearmed-lr arm"
# Sway depends on it, weston will use it if it's built but we don't want that.
CLEAN_WESTON="libdisplay-info sway"
-# Packages to clean for S922X platform - all vary based on VULKAN_SUPPORT or USE_MALI
- CLEAN_S922X="beetle-psx-lr dolphin-sa drastic-sa duckstation-sa fileman emulationstation"
- CLEAN_S922X+=" flycast-lr flycast-sa gmu gzdoom-sa libplacebo lime3ds-sa linux mali-bifrost"
- CLEAN_S922X+=" mesa moonlight parallel-n64-lr pipewire portmaster ppsspp-sa qt5 retroarch"
- CLEAN_S922X+=" wayland SDL2"
# build and install rocknix joypad driver (yes / no)
ROCKNIX_JOYPAD="no"
diff --git a/documentation/PER_DEVICE_DOCUMENTATION/AMD64/SUPPORTED_EMULATORS_AND_CORES.md b/documentation/PER_DEVICE_DOCUMENTATION/AMD64/SUPPORTED_EMULATORS_AND_CORES.md
index 6cb10ace22..e8254c25ab 100644
--- a/documentation/PER_DEVICE_DOCUMENTATION/AMD64/SUPPORTED_EMULATORS_AND_CORES.md
+++ b/documentation/PER_DEVICE_DOCUMENTATION/AMD64/SUPPORTED_EMULATORS_AND_CORES.md
@@ -65,24 +65,24 @@ This document describes all available systems emulators and cores available for
|Nintendo|Famicom (famicom)|1983|`famicom`|.nes .unif .unf .zip .7z|**retroarch:** nestopia (default)
**retroarch:** fceumm
**retroarch:** quicknes
**retroarch:** mesen
**mednafen:** nes
|
|Nintendo|Famicom Disk System (fds)|1986|`fds`|.fds .zip .7z|**retroarch:** nestopia (default)
**retroarch:** fceumm
**retroarch:** quicknes
**retroarch:** mesen
**mednafen:** nes
|
|Nintendo|Game & Watch (gameandwatch)|1980|`gameandwatch`|.mgw .zip .7z|**retroarch:** gw
**retroarch:** mame
|
-|Nintendo|Game Boy (gb)|1989|`gb`|.gb .gbc .zip .7z|**retroarch:** gambatte (default)
**retroarch:** sameboy
**retroarch:** gearboy
**retroarch:** tgbdual
**retroarch:** mgba
**retroarch:** vbam
**mednafen:** gb
|
-|Nintendo|Game Boy (Hacks) (gbh)|1989|`gbh`|.gb .zip .7z|**retroarch:** gambatte (default)
**retroarch:** sameboy
**retroarch:** gearboy
**retroarch:** tgbdual
**retroarch:** mgba
**retroarch:** vbam
**mednafen:** gb
|
+|Nintendo|Game Boy (gb)|1989|`gb`|.gb .gbc .zip .7z|**retroarch:** gambatte (default)
**retroarch:** sameboy
**retroarch:** gearboy
**retroarch:** tgbdual
**retroarch:** mgba
**retroarch:** vbam
**retroarch:** DoubleCherryGB
**mednafen:** gb
|
+|Nintendo|Game Boy (Hacks) (gbh)|1989|`gbh`|.gb .zip .7z|**retroarch:** gambatte (default)
**retroarch:** sameboy
**retroarch:** gearboy
**retroarch:** tgbdual
**retroarch:** mgba
**retroarch:** vbam
**retroarch:** DoubleCherryGB
**mednafen:** gb
|
|Nintendo|Game Boy Advance (gba)|2001|`gba`|.gba .zip .7z|**retroarch:** mgba (default)
**retroarch:** gbsp
**retroarch:** vbam
**retroarch:** vba_next
**retroarch:** beetle_gba
**nanoboyadvance:** nanoboyadvance-sa
**mednafen:** gba
|
|Nintendo|Game Boy Advance (Hacks) (gbah)|2001|`gbah`|.gba .zip .7z|**retroarch:** mgba (default)
**retroarch:** gbsp
**retroarch:** vbam
**retroarch:** vba_next
**retroarch:** beetle_gba
**mednafen:** gba
|
-|Nintendo|Game Boy Color (gbc)|1998|`gbc`|.gb .gbc .zip .7z|**retroarch:** gambatte (default)
**retroarch:** sameboy
**retroarch:** gearboy
**retroarch:** tgbdual
**retroarch:** mgba
**retroarch:** vbam
**mednafen:** gb
|
-|Nintendo|Game Boy Color (Hacks) (gbch)|1998|`gbch`|.gb .gbc .zip .7z|**retroarch:** gambatte (default)
**retroarch:** sameboy
**retroarch:** gearboy
**retroarch:** tgbdual
**retroarch:** mgba
**retroarch:** vbam
**mednafen:** gb
|
+|Nintendo|Game Boy Color (gbc)|1998|`gbc`|.gb .gbc .zip .7z|**retroarch:** gambatte (default)
**retroarch:** sameboy
**retroarch:** gearboy
**retroarch:** tgbdual
**retroarch:** mgba
**retroarch:** vbam
**retroarch:** DoubleCherryGB
**mednafen:** gb
|
+|Nintendo|Game Boy Color (Hacks) (gbch)|1998|`gbch`|.gb .gbc .zip .7z|**retroarch:** gambatte (default)
**retroarch:** sameboy
**retroarch:** gearboy
**retroarch:** tgbdual
**retroarch:** mgba
**retroarch:** vbam
**retroarch:** DoubleCherryGB
**mednafen:** gb
|
|Nintendo|GameCube (gamecube)|2001|`gamecube`|.gcm .iso .gcz .ciso .wbfs .rvz .dol|**dolphin:** dolphin-sa-gc (default)
**retroarch:** dolphin
|
|Nintendo|NES (Hacks) (nesh)|1985|`nesh`|.nes .unif .unf .zip .7z|**retroarch:** nestopia (default)
**retroarch:** fceumm
**retroarch:** quicknes
**retroarch:** mesen
**mednafen:** nesh
|
|Nintendo|Nintendo 3DS (3ds)|2010|`3ds`|.3ds .3dsx .elf .axf .cci .cxi .app|**lime3ds:** lime3ds-sa (default)
|
-|Nintendo|Nintendo 64 (n64)|1996|`n64`|.z64 .n64 .v64 .zip .7z|**retroarch:** mupen64plus_next (default)
**retroarch:** mupen64plus
**retroarch:** parallel_n64
**mupen64plus:** mupen64plus-sa
|
-|Nintendo|Nintendo DS (nds)|2005|`nds`|.nds .zip .7z|**retroarch:** melonds (default)
**retroarch:** desmume
**melonds:** melonds-sa
|
+|Nintendo|Nintendo 64 (n64)|1996|`n64`|.z64 .n64 .v64 .zip .7z|**retroarch:** mupen64plus_next (default)
**retroarch:** parallel_n64
**mupen64plus:** mupen64plus-sa
|
+|Nintendo|Nintendo DS (nds)|2005|`nds`|.nds .zip .7z|**retroarch:** melonds (default)
**retroarch:** melondsds
**retroarch:** desmume
**melonds:** melonds-sa
|
|Nintendo|Nintendo Entertainment System (nes)|1985|`nes`|.nes .unif .unf .zip .7z|**retroarch:** nestopia (default)
**retroarch:** fceumm
**retroarch:** quicknes
**retroarch:** mesen
**mednafen:** nes
|
|Nintendo|Pokémon Mini (pokemini)|2001|`pokemini`|.min .zip .7z|**retroarch:** pokemini (default)
|
|Nintendo|Satellaview (satellaview)|1995|`satellaview`|.smc .fig .bs .sfc .bsx .swc .zip .7z|**retroarch:** snes9x (default)
**retroarch:** snes9x2010
**retroarch:** snes9x2002
**retroarch:** snes9x2005_plus
|
|Nintendo|Super Famicom (sfc)|1990|`sfc`|.smc .fig .sfc .swc .zip .7z|**retroarch:** snes9x (default)
**retroarch:** snes9x2010
**retroarch:** snes9x2002
**retroarch:** snes9x2005_plus
**retroarch:** beetle_supafaust
**retroarch:** bsnes_mercury_performance
**retroarch:** bsnes
**retroarch:** bsnes_hd_beta
**mednafen:** snes
**mednafen:** snes_faust
|
|Nintendo|Super NES MSU-1 (snesmsu1)|2012|`snesmsu1`|.smc .fig .sfc .swc .zip .7z|**retroarch:** snes9x (default)
**retroarch:** beetle_supafaust
**mednafen:** snes_faust
|
|Nintendo|Super Nintendo (Hacks) (snesh)|1991|`snesh`|.smc .fig .sfc .swc .zip .7z|**retroarch:** snes9x (default)
**retroarch:** snes9x2010
**retroarch:** snes9x2002
**retroarch:** snes9x2005_plus
**retroarch:** beetle_supafaust
**retroarch:** bsnes_mercury_performance
**retroarch:** bsnes
**retroarch:** bsnes_hd_beta
**mednafen:** snes
**mednafen:** snes_faust
|
-|Nintendo|Super Nintendo (snes)|1991|`snes`|.smc .fig .sfc .swc .zip .7z|**retroarch:** snes9x (default)
**retroarch:** snes9x2010
**retroarch:** snes9x2002
**retroarch:** snes9x2005_plus
**retroarch:** beetle_supafaust
**retroarch:** bsnes_mercury_performance
**retroarch:** bsnes
**retroarch:** bsnes_hd_beta
**mednafen:** snes_faust
**mednafen:** snes
|
+|Nintendo|Super Nintendo (snes)|1991|`snes`|.smc .fig .sfc .swc .zip .7z|**retroarch:** snes9x (default)
**retroarch:** snes9x2010
**retroarch:** snes9x2002
**retroarch:** snes9x2005_plus
**retroarch:** beetle_supafaust
**retroarch:** bsnes_mercury_accuracy
**retroarch:** bsnes_mercury_balanced
**retroarch:** bsnes_mercury_performance
**retroarch:** bsnes
**retroarch:** bsnes_hd_beta
**mednafen:** snes_faust
**mednafen:** snes
**retroarch:** bsnes_mercury_accuracy
**retroarch:** bsnes_mercury_balanced
**retroarch:** bsnes_mercury_accuracy
**retroarch:** bsnes_mercury_balanced
|
|Nintendo|Virtual Boy (virtualboy)|1995|`virtualboy`|.vb .zip .7z|**retroarch:** beetle_vb (default)
**mednafen:** vb
|
|Nintendo|Wii (wii)|2006|`wii`|.gcm .iso .gcz .ciso .wbfs .rvz .dol .wad|**dolphin:** dolphin-sa-wii (default)
**retroarch:** dolphin
|
|Nintendo|Wii U (wiiu)|2012|`wiiu`|.wud .wux .wua|**cemu:** cemu-sa (default)
|
@@ -98,6 +98,7 @@ This document describes all available systems emulators and cores available for
|Sega|Genesis (Hacks) (genh)|1989|`genh`|.bin .gen .md .sg .smd .zip .7z|**retroarch:** genesis_plus_gx (default)
**retroarch:** genesis_plus_gx_wide
**retroarch:** picodrive
**mednafen:** md
|
|Sega|Master System (mastersystem)|1985|`mastersystem`|.bin .sms .zip .7z|**retroarch:** gearsystem (default)
**retroarch:** genesis_plus_gx
**retroarch:** picodrive
**retroarch:** smsplus
**mednafen:** sms
|
|Sega|Mega CD (megacd)|1991|`megacd`|.chd .cue .iso .m3u|**retroarch:** genesis_plus_gx (default)
**retroarch:** picodrive
|
+|Sega|Mega Drive (Hacks) (megadriveh)|1990|`megadriveh`|.bin .gen .md .sg .smd .zip .7z|**retroarch:** genesis_plus_gx (default)
**retroarch:** genesis_plus_gx_wide
**retroarch:** picodrive
**mednafen:** md
|
|Sega|Mega Drive (megadrive)|1990|`megadrive`|.bin .gen .md .sg .smd .zip .7z|**retroarch:** genesis_plus_gx (default)
**retroarch:** genesis_plus_gx_wide
**retroarch:** picodrive
**mednafen:** md
|
|Sega|Mega Drive (megadrive-japan)|1988|`megadrive-japan`|.bin .gen .md .sg .smd .zip .7z|**retroarch:** genesis_plus_gx (default)
**retroarch:** genesis_plus_gx_wide
**retroarch:** picodrive
**mednafen:** md
|
|Sega|Naomi (naomi)|1998|`naomi`|.lst .bin .dat .zip .7z|**retroarch:** flycast2021
**retroarch:** flycast (default)
**flycast:** flycast-sa
|
@@ -116,7 +117,7 @@ This document describes all available systems emulators and cores available for
|SNK|Neo Geo Pocket (ngp)|1998|`ngp`|.ngp .ngc .zip .7z|**retroarch:** beetle_ngp (default)
**retroarch:** race
**mednafen:** ngp
|
|SNK|Neo Geo Pocket Color (ngpc)|1999|`ngpc`|.ngp .ngc .zip .7z|**retroarch:** beetle_ngp (default)
**retroarch:** race
**mednafen:** ngp
|
|Sony|PlayStation (psx)|1994|`psx`|.bin .cue .img .mdf .pbp .toc .cbn .m3u .ccd .chd .iso|**retroarch:** beetle_psx (default)
**mednafen:** psx
**duckstation:** duckstation-sa
**retroarch:** duckstation
**retroarch:** swanstation
|
-|Sony|PlayStation 2 (ps2)|2000|`ps2`|.iso .mdf .nrg .bin .img .dump .gz .cso .chd|**pcsx2:** pcsx2-sa (default)
**retroarch:** pcsx2
|
+|Sony|PlayStation 2 (ps2)|2000|`ps2`|.iso .mdf .nrg .bin .img .dump .gz .cso .chd|**pcsx2:** pcsx2-sa (default)
**retroarch:** pcsx2
**retroarch:** play
|
|Sony|PlayStation 3 (ps3)|2006|`ps3`|.ps3 .psn|**rpcs3:** rpcs3-sa (default)
|
|Sony|PlayStation Portable (psp)|2004|`psp`|.iso .cso .pbp .chd|**ppsspp:** ppsspp-sa (default)
|
|Sony|PlayStation Vita (psvita)|2011|`launcher`|.sh .psvita|**vita3k:** vita3k-sa (default)
|
@@ -128,5 +129,6 @@ This document describes all available systems emulators and cores available for
|Various|OpenBOR (openbor)|2003|`openbor`|.pak|**OpenBOR:** OpenBOR (default)
|
|Various|ScummVM (scummvm)|2001|`games`|.sh .svm .scummvm|**scummvmsa:** scummvm (default)
**retroarch:** scummvm
|
|Various|Vircon32 (vircon32)|2021|`vircon32`|.v32|**retroarch:** vircon32 (default)
|
+|Various|WASM-4 (wasm4)|2017|`wasm4`|.wasm .wat|**retroarch:** wasm4 (default)
|
|Watara|Supervision (supervision)|1992|`supervision`|.sv .zip .7z|**retroarch:** potator (default)
|
|Welback Holdings|Mega Duck (megaduck)|1993|`megaduck`|.bin .zip .7z|**retroarch:** sameduck (default)
|
diff --git a/documentation/PER_DEVICE_DOCUMENTATION/H700/SUPPORTED_EMULATORS_AND_CORES.md b/documentation/PER_DEVICE_DOCUMENTATION/H700/SUPPORTED_EMULATORS_AND_CORES.md
index 28d2f95ece..87e8988a32 100644
--- a/documentation/PER_DEVICE_DOCUMENTATION/H700/SUPPORTED_EMULATORS_AND_CORES.md
+++ b/documentation/PER_DEVICE_DOCUMENTATION/H700/SUPPORTED_EMULATORS_AND_CORES.md
@@ -94,6 +94,7 @@ This document describes all available systems emulators and cores available for
|Sega|Genesis (Hacks) (genh)|1989|`genh`|.bin .gen .md .sg .smd .zip .7z|**retroarch:** genesis_plus_gx (default)
**retroarch:** genesis_plus_gx_wide
**retroarch:** picodrive
**mednafen:** md
|
|Sega|Master System (mastersystem)|1985|`mastersystem`|.bin .sms .zip .7z|**retroarch:** gearsystem (default)
**retroarch:** genesis_plus_gx
**retroarch:** picodrive
**retroarch:** smsplus
**mednafen:** sms
|
|Sega|Mega CD (megacd)|1991|`megacd`|.chd .cue .iso .m3u|**retroarch:** genesis_plus_gx (default)
**retroarch:** picodrive
|
+|Sega|Mega Drive (Hacks) (megadriveh)|1990|`megadriveh`|.bin .gen .md .sg .smd .zip .7z|**retroarch:** genesis_plus_gx (default)
**retroarch:** genesis_plus_gx_wide
**retroarch:** picodrive
**mednafen:** md
|
|Sega|Mega Drive (megadrive)|1990|`megadrive`|.bin .gen .md .sg .smd .zip .7z|**retroarch:** genesis_plus_gx (default)
**retroarch:** genesis_plus_gx_wide
**retroarch:** picodrive
**mednafen:** md
|
|Sega|Mega Drive (megadrive-japan)|1988|`megadrive-japan`|.bin .gen .md .sg .smd .zip .7z|**retroarch:** genesis_plus_gx (default)
**retroarch:** genesis_plus_gx_wide
**retroarch:** picodrive
**mednafen:** md
|
|Sega|Naomi (naomi)|1998|`naomi`|.lst .bin .dat .zip .7z|**retroarch:** flycast2021
**retroarch:** flycast (default)
**flycast:** flycast-sa
|
@@ -121,5 +122,6 @@ This document describes all available systems emulators and cores available for
|Various|OpenBOR (openbor)|2003|`openbor`|.pak|**OpenBOR:** OpenBOR (default)
|
|Various|ScummVM (scummvm)|2001|`games`|.sh .svm .scummvm|**scummvmsa:** scummvm (default)
**retroarch:** scummvm
|
|Various|Vircon32 (vircon32)|2021|`vircon32`|.v32|**retroarch:** vircon32 (default)
|
+|Various|WASM-4 (wasm4)|2017|`wasm4`|.wasm .wat|**retroarch:** wasm4 (default)
|
|Watara|Supervision (supervision)|1992|`supervision`|.sv .zip .7z|**retroarch:** potator (default)
|
|Welback Holdings|Mega Duck (megaduck)|1993|`megaduck`|.bin .zip .7z|**retroarch:** sameduck (default)
|
diff --git a/documentation/PER_DEVICE_DOCUMENTATION/RK3326/SUPPORTED_EMULATORS_AND_CORES.md b/documentation/PER_DEVICE_DOCUMENTATION/RK3326/SUPPORTED_EMULATORS_AND_CORES.md
index 1116faca6e..d059d37b1b 100644
--- a/documentation/PER_DEVICE_DOCUMENTATION/RK3326/SUPPORTED_EMULATORS_AND_CORES.md
+++ b/documentation/PER_DEVICE_DOCUMENTATION/RK3326/SUPPORTED_EMULATORS_AND_CORES.md
@@ -94,6 +94,7 @@ This document describes all available systems emulators and cores available for
|Sega|Genesis (Hacks) (genh)|1989|`genh`|.bin .gen .md .sg .smd .zip .7z|**retroarch:** genesis_plus_gx (default)
**retroarch:** genesis_plus_gx_wide
**retroarch:** picodrive
**mednafen:** md
|
|Sega|Master System (mastersystem)|1985|`mastersystem`|.bin .sms .zip .7z|**retroarch:** gearsystem (default)
**retroarch:** genesis_plus_gx
**retroarch:** picodrive
**retroarch:** smsplus
**mednafen:** sms
|
|Sega|Mega CD (megacd)|1991|`megacd`|.chd .cue .iso .m3u|**retroarch:** genesis_plus_gx (default)
**retroarch:** picodrive
|
+|Sega|Mega Drive (Hacks) (megadriveh)|1990|`megadriveh`|.bin .gen .md .sg .smd .zip .7z|**retroarch:** genesis_plus_gx (default)
**retroarch:** genesis_plus_gx_wide
**retroarch:** picodrive
**mednafen:** md
|
|Sega|Mega Drive (megadrive)|1990|`megadrive`|.bin .gen .md .sg .smd .zip .7z|**retroarch:** genesis_plus_gx (default)
**retroarch:** genesis_plus_gx_wide
**retroarch:** picodrive
**mednafen:** md
|
|Sega|Mega Drive (megadrive-japan)|1988|`megadrive-japan`|.bin .gen .md .sg .smd .zip .7z|**retroarch:** genesis_plus_gx (default)
**retroarch:** genesis_plus_gx_wide
**retroarch:** picodrive
**mednafen:** md
|
|Sega|Naomi (naomi)|1998|`naomi`|.lst .bin .dat .zip .7z|**retroarch:** flycast2021
**flycast:** flycast-sa
**retroarch:** flycast (default)
|
@@ -121,5 +122,6 @@ This document describes all available systems emulators and cores available for
|Various|OpenBOR (openbor)|2003|`openbor`|.pak|**OpenBOR:** OpenBOR (default)
|
|Various|ScummVM (scummvm)|2001|`games`|.sh .svm .scummvm|**scummvmsa:** scummvm (default)
**retroarch:** scummvm
|
|Various|Vircon32 (vircon32)|2021|`vircon32`|.v32|**retroarch:** vircon32 (default)
|
+|Various|WASM-4 (wasm4)|2017|`wasm4`|.wasm .wat|**retroarch:** wasm4 (default)
|
|Watara|Supervision (supervision)|1992|`supervision`|.sv .zip .7z|**retroarch:** potator (default)
|
|Welback Holdings|Mega Duck (megaduck)|1993|`megaduck`|.bin .zip .7z|**retroarch:** sameduck (default)
|
diff --git a/documentation/PER_DEVICE_DOCUMENTATION/RK3399/SUPPORTED_EMULATORS_AND_CORES.md b/documentation/PER_DEVICE_DOCUMENTATION/RK3399/SUPPORTED_EMULATORS_AND_CORES.md
index c7218899b8..a875a1ce40 100644
--- a/documentation/PER_DEVICE_DOCUMENTATION/RK3399/SUPPORTED_EMULATORS_AND_CORES.md
+++ b/documentation/PER_DEVICE_DOCUMENTATION/RK3399/SUPPORTED_EMULATORS_AND_CORES.md
@@ -96,6 +96,7 @@ This document describes all available systems emulators and cores available for
|Sega|Genesis (Hacks) (genh)|1989|`genh`|.bin .gen .md .sg .smd .zip .7z|**retroarch:** genesis_plus_gx (default)
**retroarch:** genesis_plus_gx_wide
**retroarch:** picodrive
**mednafen:** md
|
|Sega|Master System (mastersystem)|1985|`mastersystem`|.bin .sms .zip .7z|**retroarch:** gearsystem (default)
**retroarch:** genesis_plus_gx
**retroarch:** picodrive
**retroarch:** smsplus
**mednafen:** sms
|
|Sega|Mega CD (megacd)|1991|`megacd`|.chd .cue .iso .m3u|**retroarch:** genesis_plus_gx (default)
**retroarch:** picodrive
|
+|Sega|Mega Drive (Hacks) (megadriveh)|1990|`megadriveh`|.bin .gen .md .sg .smd .zip .7z|**retroarch:** genesis_plus_gx (default)
**retroarch:** genesis_plus_gx_wide
**retroarch:** picodrive
**mednafen:** md
|
|Sega|Mega Drive (megadrive)|1990|`megadrive`|.bin .gen .md .sg .smd .zip .7z|**retroarch:** genesis_plus_gx (default)
**retroarch:** genesis_plus_gx_wide
**retroarch:** picodrive
**mednafen:** md
|
|Sega|Mega Drive (megadrive-japan)|1988|`megadrive-japan`|.bin .gen .md .sg .smd .zip .7z|**retroarch:** genesis_plus_gx (default)
**retroarch:** genesis_plus_gx_wide
**retroarch:** picodrive
**mednafen:** md
|
|Sega|Naomi (naomi)|1998|`naomi`|.lst .bin .dat .zip .7z|**retroarch:** flycast2021
**flycast:** flycast-sa
**retroarch:** flycast (default)
|
@@ -124,5 +125,6 @@ This document describes all available systems emulators and cores available for
|Various|OpenBOR (openbor)|2003|`openbor`|.pak|**OpenBOR:** OpenBOR (default)
|
|Various|ScummVM (scummvm)|2001|`games`|.sh .svm .scummvm|**scummvmsa:** scummvm (default)
**retroarch:** scummvm
|
|Various|Vircon32 (vircon32)|2021|`vircon32`|.v32|**retroarch:** vircon32 (default)
|
+|Various|WASM-4 (wasm4)|2017|`wasm4`|.wasm .wat|**retroarch:** wasm4 (default)
|
|Watara|Supervision (supervision)|1992|`supervision`|.sv .zip .7z|**retroarch:** potator (default)
|
|Welback Holdings|Mega Duck (megaduck)|1993|`megaduck`|.bin .zip .7z|**retroarch:** sameduck (default)
|
diff --git a/documentation/PER_DEVICE_DOCUMENTATION/RK3566-X55/SUPPORTED_EMULATORS_AND_CORES.md b/documentation/PER_DEVICE_DOCUMENTATION/RK3566-X55/SUPPORTED_EMULATORS_AND_CORES.md
index add69a8a69..e7a5b795cd 100644
--- a/documentation/PER_DEVICE_DOCUMENTATION/RK3566-X55/SUPPORTED_EMULATORS_AND_CORES.md
+++ b/documentation/PER_DEVICE_DOCUMENTATION/RK3566-X55/SUPPORTED_EMULATORS_AND_CORES.md
@@ -122,5 +122,6 @@ This document describes all available systems emulators and cores available for
|Various|OpenBOR (openbor)|2003|`openbor`|.pak|**OpenBOR:** OpenBOR (default)
|
|Various|ScummVM (scummvm)|2001|`games`|.sh .svm .scummvm|**scummvmsa:** scummvm (default)
**retroarch:** scummvm
|
|Various|Vircon32 (vircon32)|2021|`vircon32`|.v32|**retroarch:** vircon32 (default)
|
+|Various|WASM-4 (wasm4)|2017|`wasm4`|.wasm .wat|**retroarch:** wasm4 (default)
|
|Watara|Supervision (supervision)|1992|`supervision`|.sv .zip .7z|**retroarch:** potator (default)
|
|Welback Holdings|Mega Duck (megaduck)|1993|`megaduck`|.bin .zip .7z|**retroarch:** sameduck (default)
|
diff --git a/documentation/PER_DEVICE_DOCUMENTATION/RK3566/SUPPORTED_EMULATORS_AND_CORES.md b/documentation/PER_DEVICE_DOCUMENTATION/RK3566/SUPPORTED_EMULATORS_AND_CORES.md
index e3891a3235..42a93310e3 100644
--- a/documentation/PER_DEVICE_DOCUMENTATION/RK3566/SUPPORTED_EMULATORS_AND_CORES.md
+++ b/documentation/PER_DEVICE_DOCUMENTATION/RK3566/SUPPORTED_EMULATORS_AND_CORES.md
@@ -96,6 +96,7 @@ This document describes all available systems emulators and cores available for
|Sega|Genesis (Hacks) (genh)|1989|`genh`|.bin .gen .md .sg .smd .zip .7z|**retroarch:** genesis_plus_gx (default)
**retroarch:** genesis_plus_gx_wide
**retroarch:** picodrive
**mednafen:** md
|
|Sega|Master System (mastersystem)|1985|`mastersystem`|.bin .sms .zip .7z|**retroarch:** gearsystem (default)
**retroarch:** genesis_plus_gx
**retroarch:** picodrive
**retroarch:** smsplus
**mednafen:** sms
|
|Sega|Mega CD (megacd)|1991|`megacd`|.chd .cue .iso .m3u|**retroarch:** genesis_plus_gx (default)
**retroarch:** picodrive
|
+|Sega|Mega Drive (Hacks) (megadriveh)|1990|`megadriveh`|.bin .gen .md .sg .smd .zip .7z|**retroarch:** genesis_plus_gx (default)
**retroarch:** genesis_plus_gx_wide
**retroarch:** picodrive
**mednafen:** md
|
|Sega|Mega Drive (megadrive)|1990|`megadrive`|.bin .gen .md .sg .smd .zip .7z|**retroarch:** genesis_plus_gx (default)
**retroarch:** genesis_plus_gx_wide
**retroarch:** picodrive
**mednafen:** md
|
|Sega|Mega Drive (megadrive-japan)|1988|`megadrive-japan`|.bin .gen .md .sg .smd .zip .7z|**retroarch:** genesis_plus_gx (default)
**retroarch:** genesis_plus_gx_wide
**retroarch:** picodrive
**mednafen:** md
|
|Sega|Naomi (naomi)|1998|`naomi`|.lst .bin .dat .zip .7z|**retroarch:** flycast2021 (default)
**retroarch:** flycast
**flycast:** flycast-sa
|
@@ -123,5 +124,6 @@ This document describes all available systems emulators and cores available for
|Various|OpenBOR (openbor)|2003|`openbor`|.pak|**OpenBOR:** OpenBOR (default)
|
|Various|ScummVM (scummvm)|2001|`games`|.sh .svm .scummvm|**scummvmsa:** scummvm (default)
**retroarch:** scummvm
|
|Various|Vircon32 (vircon32)|2021|`vircon32`|.v32|**retroarch:** vircon32 (default)
|
+|Various|WASM-4 (wasm4)|2017|`wasm4`|.wasm .wat|**retroarch:** wasm4 (default)
|
|Watara|Supervision (supervision)|1992|`supervision`|.sv .zip .7z|**retroarch:** potator (default)
|
|Welback Holdings|Mega Duck (megaduck)|1993|`megaduck`|.bin .zip .7z|**retroarch:** sameduck (default)
|
diff --git a/documentation/PER_DEVICE_DOCUMENTATION/RK3588/SUPPORTED_EMULATORS_AND_CORES.md b/documentation/PER_DEVICE_DOCUMENTATION/RK3588/SUPPORTED_EMULATORS_AND_CORES.md
index f1666202f2..58f4cc83d4 100644
--- a/documentation/PER_DEVICE_DOCUMENTATION/RK3588/SUPPORTED_EMULATORS_AND_CORES.md
+++ b/documentation/PER_DEVICE_DOCUMENTATION/RK3588/SUPPORTED_EMULATORS_AND_CORES.md
@@ -72,7 +72,7 @@ This document describes all available systems emulators and cores available for
|Nintendo|Game Boy Color (Hacks) (gbch)|1998|`gbch`|.gb .gbc .zip .7z|**retroarch:** gambatte (default)
**retroarch:** sameboy
**retroarch:** gearboy
**retroarch:** tgbdual
**retroarch:** mgba
**retroarch:** vbam
**retroarch:** DoubleCherryGB
**mednafen:** gb
|
|Nintendo|GameCube (gamecube)|2001|`gamecube`|.gcm .iso .gcz .ciso .wbfs .rvz .dol|**dolphin:** dolphin-sa-gc (default)
**retroarch:** dolphin
|
|Nintendo|NES (Hacks) (nesh)|1985|`nesh`|.nes .unif .unf .zip .7z|**retroarch:** nestopia (default)
**retroarch:** fceumm
**retroarch:** quicknes
**retroarch:** mesen
**mednafen:** nesh
|
-|Nintendo|Nintendo 3DS (3ds)|2010|`3ds`|.3ds .3dsx .elf .axf .cci .cxi .app|**retroarch:** panda3ds (default)
|
+|Nintendo|Nintendo 3DS (3ds)|2010|`3ds`|.3ds .3dsx .elf .axf .cci .cxi .app|**lime3ds:** lime3ds-sa (default)
|
|Nintendo|Nintendo 64 (n64)|1996|`n64`|.z64 .n64 .v64 .zip .7z|**retroarch:** mupen64plus_next (default)
**retroarch:** mupen64plus
**retroarch:** parallel_n64
**mupen64plus:** mupen64plus-sa
|
|Nintendo|Nintendo DS (nds)|2005|`nds`|.nds .zip .7z|**drastic:** drastic-sa (default)
**retroarch:** melonds
**retroarch:** melondsds
**melonds:** melonds-sa
**retroarch:** desmume
|
|Nintendo|Nintendo Entertainment System (nes)|1985|`nes`|.nes .unif .unf .zip .7z|**retroarch:** nestopia (default)
**retroarch:** fceumm
**retroarch:** quicknes
**retroarch:** mesen
**mednafen:** nes
|
@@ -96,6 +96,7 @@ This document describes all available systems emulators and cores available for
|Sega|Genesis (Hacks) (genh)|1989|`genh`|.bin .gen .md .sg .smd .zip .7z|**retroarch:** genesis_plus_gx (default)
**retroarch:** genesis_plus_gx_wide
**retroarch:** picodrive
**mednafen:** md
|
|Sega|Master System (mastersystem)|1985|`mastersystem`|.bin .sms .zip .7z|**retroarch:** gearsystem (default)
**retroarch:** genesis_plus_gx
**retroarch:** picodrive
**retroarch:** smsplus
**mednafen:** sms
|
|Sega|Mega CD (megacd)|1991|`megacd`|.chd .cue .iso .m3u|**retroarch:** genesis_plus_gx (default)
**retroarch:** picodrive
|
+|Sega|Mega Drive (Hacks) (megadriveh)|1990|`megadriveh`|.bin .gen .md .sg .smd .zip .7z|**retroarch:** genesis_plus_gx (default)
**retroarch:** genesis_plus_gx_wide
**retroarch:** picodrive
**mednafen:** md
|
|Sega|Mega Drive (megadrive)|1990|`megadrive`|.bin .gen .md .sg .smd .zip .7z|**retroarch:** genesis_plus_gx (default)
**retroarch:** genesis_plus_gx_wide
**retroarch:** picodrive
**mednafen:** md
|
|Sega|Mega Drive (megadrive-japan)|1988|`megadrive-japan`|.bin .gen .md .sg .smd .zip .7z|**retroarch:** genesis_plus_gx (default)
**retroarch:** genesis_plus_gx_wide
**retroarch:** picodrive
**mednafen:** md
|
|Sega|Naomi (naomi)|1998|`naomi`|.lst .bin .dat .zip .7z|**retroarch:** flycast2021 (default)
**retroarch:** flycast
**flycast:** flycast-sa
|
@@ -125,5 +126,6 @@ This document describes all available systems emulators and cores available for
|Various|OpenBOR (openbor)|2003|`openbor`|.pak|**OpenBOR:** OpenBOR (default)
|
|Various|ScummVM (scummvm)|2001|`games`|.sh .svm .scummvm|**scummvmsa:** scummvm (default)
**retroarch:** scummvm
|
|Various|Vircon32 (vircon32)|2021|`vircon32`|.v32|**retroarch:** vircon32 (default)
|
+|Various|WASM-4 (wasm4)|2017|`wasm4`|.wasm .wat|**retroarch:** wasm4 (default)
|
|Watara|Supervision (supervision)|1992|`supervision`|.sv .zip .7z|**retroarch:** potator (default)
|
|Welback Holdings|Mega Duck (megaduck)|1993|`megaduck`|.bin .zip .7z|**retroarch:** sameduck (default)
|
diff --git a/documentation/PER_DEVICE_DOCUMENTATION/S922X/SUPPORTED_EMULATORS_AND_CORES.md b/documentation/PER_DEVICE_DOCUMENTATION/S922X/SUPPORTED_EMULATORS_AND_CORES.md
index 5d3118de7f..cf49e4c68c 100644
--- a/documentation/PER_DEVICE_DOCUMENTATION/S922X/SUPPORTED_EMULATORS_AND_CORES.md
+++ b/documentation/PER_DEVICE_DOCUMENTATION/S922X/SUPPORTED_EMULATORS_AND_CORES.md
@@ -96,6 +96,7 @@ This document describes all available systems emulators and cores available for
|Sega|Genesis (Hacks) (genh)|1989|`genh`|.bin .gen .md .sg .smd .zip .7z|**retroarch:** genesis_plus_gx (default)
**retroarch:** genesis_plus_gx_wide
**retroarch:** picodrive
|
|Sega|Master System (mastersystem)|1985|`mastersystem`|.bin .sms .zip .7z|**retroarch:** gearsystem (default)
**retroarch:** genesis_plus_gx
**retroarch:** picodrive
**retroarch:** smsplus
|
|Sega|Mega CD (megacd)|1991|`megacd`|.chd .cue .iso .m3u|**retroarch:** genesis_plus_gx (default)
**retroarch:** picodrive
|
+|Sega|Mega Drive (Hacks) (megadriveh)|1990|`megadriveh`|.bin .gen .md .sg .smd .zip .7z|**retroarch:** genesis_plus_gx (default)
**retroarch:** genesis_plus_gx_wide
**retroarch:** picodrive
|
|Sega|Mega Drive (megadrive)|1990|`megadrive`|.bin .gen .md .sg .smd .zip .7z|**retroarch:** genesis_plus_gx (default)
**retroarch:** genesis_plus_gx_wide
**retroarch:** picodrive
|
|Sega|Mega Drive (megadrive-japan)|1988|`megadrive-japan`|.bin .gen .md .sg .smd .zip .7z|**retroarch:** genesis_plus_gx (default)
**retroarch:** genesis_plus_gx_wide
**retroarch:** picodrive
|
|Sega|Naomi (naomi)|1998|`naomi`|.lst .bin .dat .zip .7z|**retroarch:** flycast2021
**flycast:** flycast-sa (default)
**retroarch:** flycast
|
@@ -124,5 +125,6 @@ This document describes all available systems emulators and cores available for
|Various|OpenBOR (openbor)|2003|`openbor`|.pak|**OpenBOR:** OpenBOR (default)
|
|Various|ScummVM (scummvm)|2001|`games`|.sh .svm .scummvm|**scummvmsa:** scummvm (default)
**retroarch:** scummvm
|
|Various|Vircon32 (vircon32)|2021|`vircon32`|.v32|**retroarch:** vircon32 (default)
|
+|Various|WASM-4 (wasm4)|2017|`wasm4`|.wasm .wat|**retroarch:** wasm4 (default)
|
|Watara|Supervision (supervision)|1992|`supervision`|.sv .zip .7z|**retroarch:** potator (default)
|
|Welback Holdings|Mega Duck (megaduck)|1993|`megaduck`|.bin .zip .7z|**retroarch:** sameduck (default)
|
diff --git a/documentation/PER_DEVICE_DOCUMENTATION/SD865/SUPPORTED_EMULATORS_AND_CORES.md b/documentation/PER_DEVICE_DOCUMENTATION/SD865/SUPPORTED_EMULATORS_AND_CORES.md
index b23f8f26f3..905ba67b2e 100644
--- a/documentation/PER_DEVICE_DOCUMENTATION/SD865/SUPPORTED_EMULATORS_AND_CORES.md
+++ b/documentation/PER_DEVICE_DOCUMENTATION/SD865/SUPPORTED_EMULATORS_AND_CORES.md
@@ -74,7 +74,7 @@ This document describes all available systems emulators and cores available for
|Nintendo|GameCube (gamecube)|2001|`gamecube`|.gcm .iso .gcz .ciso .wbfs .rvz .dol|**dolphin:** dolphin-sa-gc (default)
**retroarch:** dolphin
|
|Nintendo|NES (Hacks) (nesh)|1985|`nesh`|.nes .unif .unf .zip .7z|**retroarch:** nestopia (default)
**retroarch:** fceumm
**retroarch:** quicknes
**retroarch:** mesen
|
|Nintendo|Nintendo 3DS (3ds)|2010|`3ds`|.3ds .3dsx .elf .axf .cci .cxi .app|**lime3ds:** lime3ds-sa (default)
|
-|Nintendo|Nintendo 64 (n64)|1996|`n64`|.z64 .n64 .v64 .zip .7z|**retroarch:** mupen64plus_next (default)
**retroarch:** mupen64plus
**retroarch:** parallel_n64
**mupen64plus:** mupen64plus-sa
|
+|Nintendo|Nintendo 64 (n64)|1996|`n64`|.z64 .n64 .v64 .zip .7z|**retroarch:** mupen64plus_next (default)
**retroarch:** parallel_n64
**mupen64plus:** mupen64plus-sa
|
|Nintendo|Nintendo DS (nds)|2005|`nds`|.nds .zip .7z|**drastic:** drastic-sa
**retroarch:** melonds
**retroarch:** melondsds
**melonds:** melonds-sa (default)
**retroarch:** desmume
|
|Nintendo|Nintendo Entertainment System (nes)|1985|`nes`|.nes .unif .unf .zip .7z|**retroarch:** nestopia (default)
**retroarch:** fceumm
**retroarch:** quicknes
**retroarch:** mesen
|
|Nintendo|Pokémon Mini (pokemini)|2001|`pokemini`|.min .zip .7z|**retroarch:** pokemini (default)
|
@@ -97,10 +97,11 @@ This document describes all available systems emulators and cores available for
|Sega|Genesis (Hacks) (genh)|1989|`genh`|.bin .gen .md .sg .smd .zip .7z|**retroarch:** genesis_plus_gx (default)
**retroarch:** genesis_plus_gx_wide
**retroarch:** picodrive
|
|Sega|Master System (mastersystem)|1985|`mastersystem`|.bin .sms .zip .7z|**retroarch:** gearsystem (default)
**retroarch:** genesis_plus_gx
**retroarch:** picodrive
**retroarch:** smsplus
|
|Sega|Mega CD (megacd)|1991|`megacd`|.chd .cue .iso .m3u|**retroarch:** genesis_plus_gx (default)
**retroarch:** picodrive
|
+|Sega|Mega Drive (Hacks) (megadriveh)|1990|`megadriveh`|.bin .gen .md .sg .smd .zip .7z|**retroarch:** genesis_plus_gx (default)
**retroarch:** genesis_plus_gx_wide
**retroarch:** picodrive
|
|Sega|Mega Drive (megadrive)|1990|`megadrive`|.bin .gen .md .sg .smd .zip .7z|**retroarch:** genesis_plus_gx (default)
**retroarch:** genesis_plus_gx_wide
**retroarch:** picodrive
|
|Sega|Mega Drive (megadrive-japan)|1988|`megadrive-japan`|.bin .gen .md .sg .smd .zip .7z|**retroarch:** genesis_plus_gx (default)
**retroarch:** genesis_plus_gx_wide
**retroarch:** picodrive
|
|Sega|Naomi (naomi)|1998|`naomi`|.lst .bin .dat .zip .7z|**retroarch:** flycast2021
**flycast:** flycast-sa (default)
**retroarch:** flycast
|
-|Sega|Saturn (saturn)|1994|`saturn`|.cue .chd .iso .zip|**yabasanshiro:** yabasanshiro-sa (default)
**retroarch:** yabasanshiro
**retroarch:** beetle_saturn
**mednafen:** ss
|
+|Sega|Saturn (saturn)|1994|`saturn`|.cue .chd .iso .zip|**yabasanshiro:** yabasanshiro-sa (default)
**retroarch:** yabasanshiro
**retroarch:** beetle_saturn
**retroarch:** kronos
**mednafen:** ss
|
|Sega|Sega 32X (sega32x)|1994|`sega32x`|.32x .smd .bin .md .zip .7z|**retroarch:** picodrive (default)
|
|Sega|Sega CD (segacd)|1991|`segacd`|.chd .cue .iso .m3u|**retroarch:** genesis_plus_gx (default)
**retroarch:** picodrive
|
|Sega|Sega Model 3 (segamodel3)|1996|`segamodel3`|.zip|**supermodel:** supermodel-sa (default)
|
@@ -126,5 +127,6 @@ This document describes all available systems emulators and cores available for
|Various|OpenBOR (openbor)|2003|`openbor`|.pak|**OpenBOR:** OpenBOR (default)
|
|Various|ScummVM (scummvm)|2001|`games`|.sh .svm .scummvm|**scummvmsa:** scummvm (default)
**retroarch:** scummvm
|
|Various|Vircon32 (vircon32)|2021|`vircon32`|.v32|**retroarch:** vircon32 (default)
|
+|Various|WASM-4 (wasm4)|2017|`wasm4`|.wasm .wat|**retroarch:** wasm4 (default)
|
|Watara|Supervision (supervision)|1992|`supervision`|.sv .zip .7z|**retroarch:** potator (default)
|
|Welback Holdings|Mega Duck (megaduck)|1993|`megaduck`|.bin .zip .7z|**retroarch:** sameduck (default)
|
diff --git a/packages/apps/fileman/package.mk b/packages/apps/fileman/package.mk
index 862b7d1638..e4b1c7f194 100644
--- a/packages/apps/fileman/package.mk
+++ b/packages/apps/fileman/package.mk
@@ -9,8 +9,6 @@ PKG_SITE="https://github.com/ROCKNIX/fileman"
PKG_URL="${PKG_SITE}.git"
PKG_DEPENDS_TARGET="toolchain SDL2 SDL2_image SDL2_gfx SDL2_ttf"
PKG_LONGDESC="A Single panel file Manager."
-PKG_PATCH_DIRS="${DEVICE}"
-[ "${DEVICE}" = "S922X" -a "${USE_MALI}" != "no" ] && PKG_PATCH_DIRS+=" S922X-MALI"
make_target() {
MAKEDEVICE=$(echo ${DEVICE^^} | sed "s#-#_##g")
diff --git a/packages/apps/fileman/patches/S922X-MALI/000-sdl-vulkan.patch b/packages/apps/fileman/patches/S922X-MALI/000-sdl-vulkan.patch
deleted file mode 100644
index c8cc213af0..0000000000
--- a/packages/apps/fileman/patches/S922X-MALI/000-sdl-vulkan.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/src/sdlutils.cpp b/src/sdlutils.cpp
-index e33d7bb..8de81b1 100644
---- a/src/sdlutils.cpp
-+++ b/src/sdlutils.cpp
-@@ -57,7 +57,7 @@ bool SDLUtils::init()
-
- // Create window
- #if FULLSCREEN == 1
-- g_window = SDL_CreateWindow(APP_NAME, SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, width, height, SDL_WINDOW_OPENGL | SDL_WINDOW_FULLSCREEN);
-+ g_window = SDL_CreateWindow(APP_NAME, SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, width, height, SDL_WINDOW_VULKAN | SDL_WINDOW_FULLSCREEN);
- #else
- g_window = SDL_CreateWindow(APP_NAME, SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, width, height, SDL_WINDOW_SHOWN);
- #endif
diff --git a/packages/apps/portmaster/package.mk b/packages/apps/portmaster/package.mk
index d67b88dd81..deb9d55a36 100644
--- a/packages/apps/portmaster/package.mk
+++ b/packages/apps/portmaster/package.mk
@@ -12,10 +12,6 @@ PKG_DEPENDS_TARGET="toolchain rocknix-hotkey gamecontrollerdb wget oga_controls
PKG_TOOLCHAIN="manual"
PKG_LONGDESC="Portmaster - a simple tool that allows you to download various game ports"
-if [ "${DEVICE}" = "S922X" -a "${USE_MALI}" != "no" ]; then
- PKG_DEPENDS_TARGET+=" libegl"
-fi
-
makeinstall_target() {
export STRIP=true
mkdir -p ${INSTALL}/usr/config/PortMaster
@@ -33,14 +29,3 @@ makeinstall_target() {
curl -Lo ${PKG_BUILD}/compat.zip ${COMPAT_URL}
unzip -qq ${PKG_BUILD}/compat.zip -d ${INSTALL}/usr/lib/compat/
}
-
-post_install() {
- if [ "${DEVICE}" = "S922X" -a "${USE_MALI}" != "no" ]; then
- LIBEGL="export SDL_VIDEO_GL_DRIVER=\/usr\/lib\/egl\/libGL.so.1 SDL_VIDEO_EGL_DRIVER=\/usr\/lib\/egl\/libEGL.so.1"
- else
- LIBEGL=""
- fi
-
- sed -e "s/@LIBEGL@/${LIBEGL}/g" \
- -i ${INSTALL}/usr/bin/start_portmaster.sh
-}
diff --git a/packages/apps/portmaster/scripts/portmaster_compatibility.sh b/packages/apps/portmaster/scripts/portmaster_compatibility.sh
index e0b4f6bbe0..791298fedb 100644
--- a/packages/apps/portmaster/scripts/portmaster_compatibility.sh
+++ b/packages/apps/portmaster/scripts/portmaster_compatibility.sh
@@ -4,6 +4,7 @@
# Copyright (C) 2022-present JELOS (https://github.com/JustEnoughLinuxOS)
. /etc/profile
+. /etc/os-release
if [[ "${UI_SERVICE}" =~ "weston.service"|"*sway*" ]]; then
if [[ $(glxinfo | grep -i "opengl renderer") =~ "Panfrost" ]]; then
@@ -25,17 +26,5 @@ if [[ "${UI_SERVICE}" =~ "weston.service"|"*sway*" ]]; then
sed -i '/get_controls && export/c\get_controls' "$port"
echo Fixing: "$port";
done;
- else
- case "${QUIRK_DEVICE}" in
- "Hardkernel ODROID-GO-Ultra"|"Powkiddy RGB10 MAX 3 Pro"|"Hardkernel ODROID-N2*")
- #Fixing ports on S922X, exclude FNA games
- for port in /storage/roms/ports/*.sh; do
- if ! grep -q FNA "$port"; then
- sed -i '/get_controls/c\get_controls && export SDL_VIDEO_GL_DRIVER=/usr/lib/egl/libGL.so.1 SDL_VIDEO_EGL_DRIVER=/usr/lib/egl/libEGL.so.1' "$port"
- echo Fixing: "$port";
- fi
- done;
- ;;
- esac
fi
fi
diff --git a/packages/apps/portmaster/scripts/start_portmaster.sh b/packages/apps/portmaster/scripts/start_portmaster.sh
index 44ca162eb1..5d0a46a812 100644
--- a/packages/apps/portmaster/scripts/start_portmaster.sh
+++ b/packages/apps/portmaster/scripts/start_portmaster.sh
@@ -4,6 +4,7 @@
# Copyright (C) 2022-present JELOS (https://github.com/JustEnoughLinuxOS)
. /etc/profile
+. /etc/os-release
set_kill set "PortMaster"
#Make sure PortMaster exists in .config/PortMaster
@@ -73,6 +74,5 @@ fi
/usr/bin/portmaster_compatibility.sh
#Start PortMaster
-@LIBEGL@
cd /storage/roms/ports/PortMaster
./PortMaster.sh 2>/dev/null
diff --git a/packages/devel/SDL2_mixer/package.mk b/packages/audio/SDL2_mixer/package.mk
similarity index 85%
rename from packages/devel/SDL2_mixer/package.mk
rename to packages/audio/SDL2_mixer/package.mk
index 6750d4ae71..19eea8516d 100644
--- a/packages/devel/SDL2_mixer/package.mk
+++ b/packages/audio/SDL2_mixer/package.mk
@@ -2,11 +2,11 @@
# Copyright (C) 2019-present Team CoreELEC (https://coreelec.org)
PKG_NAME="SDL2_mixer"
-PKG_VERSION="2.6.3"
+PKG_VERSION="2.8.0"
PKG_LICENSE="GPLv3"
PKG_SITE="http://www.libsdl.org/projects/SDL_mixer/release"
PKG_URL="${PKG_SITE}/${PKG_NAME}-${PKG_VERSION}.tar.gz"
-PKG_DEPENDS_TARGET="toolchain fluidsynth opusfile alsa-lib SDL2 libogg libvorbis flac mpg123 libmodplug"
+PKG_DEPENDS_TARGET="toolchain fluidsynth opusfile alsa-lib SDL2 libogg libvorbis flac mpg123 libmodplug wavpack libxmp"
PKG_LONGDESC="SDL2 mixer"
pre_configure_target() {
diff --git a/packages/audio/fluidsynth/package.mk b/packages/audio/fluidsynth/package.mk
index db06ff773c..d831003bfb 100644
--- a/packages/audio/fluidsynth/package.mk
+++ b/packages/audio/fluidsynth/package.mk
@@ -3,7 +3,7 @@
# Copyright (C) 2019-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="fluidsynth"
-PKG_VERSION="2.3.6"
+PKG_VERSION="2.4.0"
PKG_LICENSE="GPL"
PKG_SITE="http://fluidsynth.org/"
PKG_URL="https://github.com/FluidSynth/fluidsynth/archive/v${PKG_VERSION}.tar.gz"
@@ -11,7 +11,7 @@ PKG_DEPENDS_TARGET="toolchain glib libsndfile pulseaudio pipewire"
PKG_LONGDESC="FluidSynth renders midi music files as raw audio data, for playing or conversion."
PKG_BUILD_FLAGS="+pic"
-PKG_CMAKE_OPTS_TARGET="-DBUILD_SHARED_LIBS=0 \
+PKG_CMAKE_OPTS_TARGET="-DBUILD_SHARED_LIBS=1 \
-DLIB_SUFFIX= \
-Denable-libsndfile=1 \
-Denable-pkgconfig=1 \
diff --git a/packages/audio/libxmp/package.mk b/packages/audio/libxmp/package.mk
new file mode 100644
index 0000000000..de3ad76094
--- /dev/null
+++ b/packages/audio/libxmp/package.mk
@@ -0,0 +1,10 @@
+# SPDX-License-Identifier: GPL-2.0-or-later
+# Copyright (C) 2024-present ROCKNIX (https://github.com/ROCKNIX)
+
+PKG_NAME="libxmp"
+PKG_VERSION="8201d26cf933688a8be64292457c429fd8e654ab" #v4.6.0
+PKG_LICENSE="GPLv3"
+PKG_SITE="https://github.com/libxmp/libxmp"
+PKG_URL="${PKG_SITE}/archive/${PKG_VERSION}.tar.gz"
+PKG_LONGDESC="Libxmp is a library that renders module files to PCM data."
+PKG_TOOLCHAIN="cmake"
diff --git a/packages/audio/pipewire/package.mk b/packages/audio/pipewire/package.mk
index c6d8fdad4a..1088e87635 100644
--- a/packages/audio/pipewire/package.mk
+++ b/packages/audio/pipewire/package.mk
@@ -2,7 +2,7 @@
# Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="pipewire"
-PKG_VERSION="1.2.5"
+PKG_VERSION="1.2.6"
PKG_LICENSE="LGPL"
PKG_SITE="https://pipewire.org"
PKG_URL="https://github.com/PipeWire/pipewire/archive/${PKG_VERSION}.tar.gz"
diff --git a/packages/audio/wavpack/package.mk b/packages/audio/wavpack/package.mk
new file mode 100644
index 0000000000..746d9feff2
--- /dev/null
+++ b/packages/audio/wavpack/package.mk
@@ -0,0 +1,17 @@
+# SPDX-License-Identifier: GPL-2.0
+# Copyright (C) 2020-present Team LibreELEC (https://libreelec.tv)
+
+PKG_NAME="wavpack"
+PKG_VERSION="5.7.0"
+PKG_LICENSE="BSD"
+PKG_SITE="https://www.wavpack.com"
+PKG_URL="https://www.wavpack.com/wavpack-${PKG_VERSION}.tar.xz"
+PKG_DEPENDS_TARGET="toolchain libiconv"
+PKG_LONGDESC="Audio compression format providing lossless, high-quality lossy and hybrid compression mode."
+
+PKG_CMAKE_OPTS_TARGET="-DBUILD_TESTING=OFF \
+ -DBUILD_SHARED_LIBS=ON \
+ -DCMAKE_INSTALL_INCLUDEDIR=include/wavpack \
+ -DWAVPACK_BUILD_PROGRAMS=OFF \
+ -DWAVPACK_ENABLE_ASM=OFF \
+ -DWAVPACK_INSTALL_DOCS=OFF"
diff --git a/packages/audio/wireplumber/package.mk b/packages/audio/wireplumber/package.mk
index a0c7ad4c8c..8aec51fc3d 100644
--- a/packages/audio/wireplumber/package.mk
+++ b/packages/audio/wireplumber/package.mk
@@ -2,7 +2,7 @@
# Copyright (C) 2022-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="wireplumber"
-PKG_VERSION="0.4.17"
+PKG_VERSION="0.5.6"
PKG_LICENSE="MIT"
PKG_SITE="https://gitlab.freedesktop.org/pipewire/wireplumber"
PKG_URL="https://gitlab.freedesktop.org/pipewire/wireplumber/-/archive/${PKG_VERSION}/${PKG_NAME}-${PKG_VERSION}.tar.gz"
@@ -20,28 +20,42 @@ PKG_MESON_OPTS_TARGET="-Dintrospection=disabled \
-Dtests=false"
post_makeinstall_target() {
+ # connect to the system bus
+ sed '/^\[Service\]/a Environment=DBUS_SESSION_BUS_ADDRESS=unix:path=/run/dbus/system_bus_socket' -i ${INSTALL}/usr/lib/systemd/system/wireplumber.service
- mkdir -p ${INSTALL}/usr/share/wireplumber/{main.lua.d,bluetooth.lua.d}
# ref https://gitlab.freedesktop.org/pipewire/wireplumber/-/commit/0da29f38181e391160fa8702623050b8544ec775
- cat > ${INSTALL}/usr/share/wireplumber/main.lua.d/89-disable-session-dbus-dependent-features.lua << EOF
-alsa_monitor.properties["alsa.reserve"] = false
-default_access.properties["enable-flatpak-portal"] = false
-EOF
-
- cat > ${INSTALL}/usr/share/wireplumber/main.lua.d/89-disable-v4l2.lua << EOF
-v4l2_monitor.enabled = false
+ # ref https://github.com/PipeWire/wireplumber/blob/master/docs/rst/daemon/configuration/migration.rst
+ # ref https://github.com/PipeWire/wireplumber/blob/master/docs/rst/daemon/configuration/features.rst
+ cat >${INSTALL}/usr/share/wireplumber/wireplumber.conf.d/89-disable-session-dbus-dependent-features.conf < ${INSTALL}/usr/share/wireplumber/bluetooth.lua.d/89-disable-session-dbus-dependent-features.lua << EOF
-bluez_monitor.properties["with-logind"] = false
+ cat >${INSTALL}/usr/share/wireplumber/wireplumber.conf.d/89-disable-v4l2.conf < ${INSTALL}/usr/share/wireplumber/bluetooth.lua.d/89-disable-bluez-hfphsp-backend.lua << EOF
-bluez_monitor.properties["bluez5.hfphsp-backend"] = "none"
+ cat >${INSTALL}/usr/share/wireplumber/wireplumber.conf.d/89-disable-bluez-hfphsp-backend.conf < ${INSTALL}/usr/share/wireplumber/main.lua.d/50-libcamera-config.lua << EOF
-libcamera_monitor.enabled = false
+ cat > ${INSTALL}/usr/share/wireplumber/wireplumber.conf.d/89-disable-libcamera.conf << EOF
+wireplumber.profiles = {
+ main = {
+ monitor.libcamera = disabled
+ }
+}
EOF
}
diff --git a/packages/audio/wireplumber/patches/002-optimize-auto-connect.patch b/packages/audio/wireplumber/patches/002-optimize-auto-connect.patch
deleted file mode 100644
index 9ebafaaa57..0000000000
--- a/packages/audio/wireplumber/patches/002-optimize-auto-connect.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -rupN wireplumber-0.4.15.orig/src/config/bluetooth.lua.d/50-bluez-config.lua wireplumber-0.4.15/src/config/bluetooth.lua.d/50-bluez-config.lua
---- wireplumber-0.4.15.orig/src/config/bluetooth.lua.d/50-bluez-config.lua 2023-11-13 16:40:22.581908134 +0000
-+++ wireplumber-0.4.15/src/config/bluetooth.lua.d/50-bluez-config.lua 2023-12-29 13:00:57.296239132 +0000
-@@ -85,6 +85,7 @@ bluez_monitor.rules = {
- -- profiles have connected. Disabled by default if the property
- -- is not specified.
- --["bluez5.auto-connect"] = "[ hfp_hf hsp_hs a2dp_sink hfp_ag hsp_ag a2dp_source ]",
-+ ["bluez5.auto-connect"] = "[ hfp_hf hsp_hs a2dp_sink ]",
-
- -- Hardware volume control (default: [ hfp_ag hsp_ag a2dp_source ])
- --["bluez5.hw-volume"] = "[ hfp_hf hsp_hs a2dp_sink hfp_ag hsp_ag a2dp_source ]",
diff --git a/packages/compat/box64/package.mk b/packages/compat/box64/package.mk
index cadaf8c254..71911ad921 100644
--- a/packages/compat/box64/package.mk
+++ b/packages/compat/box64/package.mk
@@ -2,7 +2,7 @@
# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS)
PKG_NAME="box64"
-PKG_VERSION="b29e9b706e00f4650cbce4b2c0b6fe27b6cccad4"
+PKG_VERSION="3ba91a651384b0ea4207e91e206440cae2684db2"
PKG_ARCH="aarch64"
PKG_LICENSE="MIT"
PKG_SITE="https://github.com/ptitSeb/box64"
@@ -17,6 +17,9 @@ case ${DEVICE} in
RK3588)
PKG_CMAKE_OPTS_TARGET+=" -DRK3588=On"
;;
+ SD865)
+ PKG_CMAKE_OPTS_TARGET+=" -DSD865=On"
+ ;;
esac
makeinstall_target() {
@@ -25,7 +28,7 @@ makeinstall_target() {
mkdir -p ${INSTALL}/usr/bin
cp ${PKG_BUILD}/.${TARGET_NAME}/box64 ${INSTALL}/usr/bin
- cp ${PKG_BUILD}/tests/bash ${INSTALL}/usr/bin/bash-x64
+ cp ${PKG_BUILD}/tests/box64-bash ${INSTALL}/usr/bin/bash-x64
mkdir -p ${INSTALL}/usr/config
cp ${PKG_DIR}/config/box64.box64rc ${INSTALL}/usr/config/box64.box64rc
diff --git a/packages/compat/box86/package.mk b/packages/compat/box86/package.mk
index 9d9197715b..90e75cf44d 100644
--- a/packages/compat/box86/package.mk
+++ b/packages/compat/box86/package.mk
@@ -2,7 +2,7 @@
# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS)
PKG_NAME="box86"
-PKG_VERSION="a7855d3bcbc59e2952c8231a3c04896cd45301e6"
+PKG_VERSION="ce0b4d1884d75ac774b3390c76316e91867c7638"
PKG_LICENSE="MIT"
PKG_SITE="https://github.com/ptitSeb/box86"
PKG_URL="${PKG_SITE}.git"
@@ -29,9 +29,12 @@ case ${TARGET_ARCH} in
esac
case ${DEVICE} in
- RK3588|SD865)
+ RK3588)
PKG_CMAKE_OPTS_TARGET+=" -DRK3588=On"
;;
+ SD865)
+ PKG_CMAKE_OPTS_TARGET+=" -DSD865=On"
+ ;;
RK3399)
PKG_CMAKE_OPTS_TARGET+=" -DRK3399=On"
;;
diff --git a/packages/compat/wine/package.mk b/packages/compat/wine/package.mk
index ad62870bd9..70939a1a79 100644
--- a/packages/compat/wine/package.mk
+++ b/packages/compat/wine/package.mk
@@ -5,7 +5,8 @@ PKG_NAME="wine"
PKG_VERSION="9.19"
PKG_LICENSE="MIT"
PKG_SITE="https://github.com/Kron4ek/Wine-Builds"
-PKG_URL="${PKG_SITE}/releases/download/${PKG_VERSION}/wine-${PKG_VERSION}-x86.tar.xz"
+# Use the amd64 release as it supports running both 32-bit and 64-bit windows apps
+PKG_URL="${PKG_SITE}/releases/download/${PKG_VERSION}/wine-${PKG_VERSION}-amd64.tar.xz"
PKG_DEPENDS_TARGET="toolchain libXcomposite libXdmcp cups"
PKG_LONGDESC="Wine is a compatibility layer capable of running Windows applications"
PKG_TOOLCHAIN="manual"
diff --git a/packages/emulators/libretro/emuscv-lr/package.mk b/packages/emulators/libretro/emuscv-lr/package.mk
index 70bd4ed950..b625799e91 100644
--- a/packages/emulators/libretro/emuscv-lr/package.mk
+++ b/packages/emulators/libretro/emuscv-lr/package.mk
@@ -6,7 +6,7 @@ PKG_VERSION="dfce10df090ce3f5eb23bdbee289702ec1478246"
#PKG_ARCH="aarch64"
PKG_SITE="https://gitlab.com/MaaaX-EmuSCV/libretro-emuscv"
PKG_URL="${PKG_SITE}.git"
-PKG_DEPENDS_TARGET="toolchain"
+PKG_DEPENDS_TARGET="toolchain bin2c:host"
PKG_LONGDESC="An EPOCH/YENO Super Cassette Vision (1984) home video game emulator for Libretro"
PKG_TOOLCHAIN="make"
@@ -15,6 +15,7 @@ PKG_MAKE_OPTS_TARGET="-C . platform=unix"
pre_configure_target() {
export TERM=xterm
CXXFLAGS+=" -I$(get_build_dir glibc)/sysdeps/unix/sysv/linux/x86"
+ sed -i 's~tools/bin2c/~'${TOOLCHAIN}'/usr/bin/~g' Makefile.libretro
}
makeinstall_target() {
diff --git a/packages/emulators/libretro/flycast-lr/package.mk b/packages/emulators/libretro/flycast-lr/package.mk
index 9de5cf462c..f66f9a28be 100644
--- a/packages/emulators/libretro/flycast-lr/package.mk
+++ b/packages/emulators/libretro/flycast-lr/package.mk
@@ -18,7 +18,7 @@ else
fi
if [ "${OPENGLES_SUPPORT}" = yes ] && \
- [ ! "${TARGET_ARCH}" = "x86_64" ]
+ [ "${PREFER_GLES}" = "yes" ]
then
PKG_DEPENDS_TARGET+=" ${OPENGLES}"
### Will fail to compile if USE_OPENGL=OFF and USE_GLES=ON as both options are required.
diff --git a/packages/emulators/libretro/flycast2021-lr/package.mk b/packages/emulators/libretro/flycast2021-lr/package.mk
index fb87d5cd39..3456672b76 100644
--- a/packages/emulators/libretro/flycast2021-lr/package.mk
+++ b/packages/emulators/libretro/flycast2021-lr/package.mk
@@ -30,31 +30,32 @@ PKG_TOOLCHAIN="make"
PKG_BUILD_FLAGS="-gold"
PKG_PATCH_DIRS+="${DEVICE}"
-if [ ! "${OPENGL}" = "no" ]; then
+if [ "${OPENGL_SUPPORT}" = "yes" ] && [ ! "${PREFER_GLES}" = "yes" ]; then
PKG_DEPENDS_TARGET+=" ${OPENGL} glu libglvnd"
-fi
-
-if [ "${OPENGLES_SUPPORT}" = yes ]; then
+ PKG_MAKE_OPTS_TARGET+=" FORCE_GLES=0"
+elif [ "${OPENGLES_SUPPORT}" = yes ]; then
PKG_DEPENDS_TARGET+=" ${OPENGLES}"
PKG_MAKE_OPTS_TARGET+=" FORCE_GLES=1"
fi
+if [ "${VULKAN_SUPPORT}" = "yes" ]; then
+ PKG_DEPENDS_TARGET+=" vulkan-loader vulkan-headers"
+ PKG_MAKE_OPTS_TARGET+=" HAVE_VULKAN=1"
+fi
+
pre_configure_target() {
export CXXFLAGS="${CXXFLAGS} -Wno-implicit-function-declaration"
sed -i 's/define CORE_OPTION_NAME "reicast"/define CORE_OPTION_NAME "flycast2021"/g' core/libretro/libretro_core_option_defines.h
sed -i 's/\-O[23]/-Ofast/' ${PKG_BUILD}/Makefile
- PKG_MAKE_OPTS_TARGET="${PKG_MAKE_OPTS_TARGET} ARCH=${TARGET_ARCH} HAVE_OPENMP=1 GIT_VERSION=${PKG_VERSION:0:7} HAVE_LTCG=0"
+ PKG_MAKE_OPTS_TARGET="${PKG_MAKE_OPTS_TARGET} ARCH=${TARGET_ARCH} HAVE_OPENMP=0 GIT_VERSION=${PKG_VERSION:0:7} HAVE_LTCG=0"
}
pre_make_target() {
export BUILD_SYSROOT=${SYSROOT_PREFIX}
- case ${DEVICE} in
- RK3*|S922X|SD865)
+ case ${ARCH} in
+ aarch64)
PKG_MAKE_OPTS_TARGET+=" platform=${DEVICE}"
- ;;
- H700)
- PKG_MAKE_OPTS_TARGET+=" platform=RK3326"
- ;;
+ ;;
esac
}
diff --git a/packages/emulators/libretro/flycast2021-lr/patches/AMD64/000-build-fix.patch b/packages/emulators/libretro/flycast2021-lr/patches/000-build-fix.patch
similarity index 100%
rename from packages/emulators/libretro/flycast2021-lr/patches/AMD64/000-build-fix.patch
rename to packages/emulators/libretro/flycast2021-lr/patches/000-build-fix.patch
diff --git a/packages/emulators/libretro/flycast2021-lr/patches/H700/000-platform.patch b/packages/emulators/libretro/flycast2021-lr/patches/H700/000-platform.patch
deleted file mode 100644
index 2dad924ad0..0000000000
--- a/packages/emulators/libretro/flycast2021-lr/patches/H700/000-platform.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-diff -rupN flycast.orig/Makefile flycast/Makefile
---- flycast.orig/Makefile 2022-06-18 13:29:52.675787687 -0400
-+++ flycast/Makefile 2022-06-18 13:53:23.564624927 -0400
-@@ -403,26 +403,30 @@ else ifeq ($(platform), arm64_cortex_a53
-
- #######################################
-
--# ARM64 SM1 Odroid C4
--else ifeq ($(platform), odroidc4)
-+# ARM64 RK3326
-+else ifeq ($(platform), RK3326)
- EXT ?= so
- TARGET := $(TARGET_NAME)_libretro.$(EXT)
- SHARED += -shared -Wl,--version-script=link.T
-- LDFLAGS += -Wl,--no-undefined
- fpic = -fPIC
- LIBS += -lrt
- ARM_FLOAT_ABI_HARD = 0
- FORCE_GLES = 1
- SINGLE_PREC_FLAGS = 1
-- CPUFLAGS += -DHOST_CPU=0x20000006 -DTARGET_LINUX_ARMv8 -frename-registers
-- CFLAGS += -mcpu=cortex-a55 -mtune=cortex-a55 $(CPUFLAGS)
-- CXXFLAGS += -mcpu=cortex-a55 -mtune=cortex-a55 $(CPUFLAGS)
-- ASFLAGS += $(CFLAGS) -c -frename-registers -fno-strict-aliasing -ffast-math -ftree-vectorize
-+ HAVE_LTCG = 0
-+ HAVE_OPENMP = 0
-+ CFLAGS += -Ofast \
-+ -fuse-linker-plugin \
-+ -fno-stack-protector -fno-ident -fomit-frame-pointer \
-+ -fmerge-all-constants -ffast-math -funroll-all-loops \
-+ -mcpu=cortex-a35 -mtune=cortex-a35 -mno-outline-atomics
-+ CXXFLAGS += $(CFLAGS)
-+ LDFLAGS += -mcpu=cortex-a35 -mtune=cortex-a35 -Ofast -flto -fuse-linker-plugin
- PLATFORM_EXT := unix
-+ CORE_DEFINES += -DLOW_END -DLOW_RES
- WITH_DYNAREC=arm64
-+ PLATFORM_EXT := unix
- HAVE_GENERIC_JIT = 0
-- HAVE_VULKAN = 0
-- HAVE_LTCG = 0
-
- #######################################
-
diff --git a/packages/emulators/libretro/flycast2021-lr/patches/RK3326/000-platform.patch b/packages/emulators/libretro/flycast2021-lr/patches/RK3326/000-platform.patch
deleted file mode 100644
index 2dad924ad0..0000000000
--- a/packages/emulators/libretro/flycast2021-lr/patches/RK3326/000-platform.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-diff -rupN flycast.orig/Makefile flycast/Makefile
---- flycast.orig/Makefile 2022-06-18 13:29:52.675787687 -0400
-+++ flycast/Makefile 2022-06-18 13:53:23.564624927 -0400
-@@ -403,26 +403,30 @@ else ifeq ($(platform), arm64_cortex_a53
-
- #######################################
-
--# ARM64 SM1 Odroid C4
--else ifeq ($(platform), odroidc4)
-+# ARM64 RK3326
-+else ifeq ($(platform), RK3326)
- EXT ?= so
- TARGET := $(TARGET_NAME)_libretro.$(EXT)
- SHARED += -shared -Wl,--version-script=link.T
-- LDFLAGS += -Wl,--no-undefined
- fpic = -fPIC
- LIBS += -lrt
- ARM_FLOAT_ABI_HARD = 0
- FORCE_GLES = 1
- SINGLE_PREC_FLAGS = 1
-- CPUFLAGS += -DHOST_CPU=0x20000006 -DTARGET_LINUX_ARMv8 -frename-registers
-- CFLAGS += -mcpu=cortex-a55 -mtune=cortex-a55 $(CPUFLAGS)
-- CXXFLAGS += -mcpu=cortex-a55 -mtune=cortex-a55 $(CPUFLAGS)
-- ASFLAGS += $(CFLAGS) -c -frename-registers -fno-strict-aliasing -ffast-math -ftree-vectorize
-+ HAVE_LTCG = 0
-+ HAVE_OPENMP = 0
-+ CFLAGS += -Ofast \
-+ -fuse-linker-plugin \
-+ -fno-stack-protector -fno-ident -fomit-frame-pointer \
-+ -fmerge-all-constants -ffast-math -funroll-all-loops \
-+ -mcpu=cortex-a35 -mtune=cortex-a35 -mno-outline-atomics
-+ CXXFLAGS += $(CFLAGS)
-+ LDFLAGS += -mcpu=cortex-a35 -mtune=cortex-a35 -Ofast -flto -fuse-linker-plugin
- PLATFORM_EXT := unix
-+ CORE_DEFINES += -DLOW_END -DLOW_RES
- WITH_DYNAREC=arm64
-+ PLATFORM_EXT := unix
- HAVE_GENERIC_JIT = 0
-- HAVE_VULKAN = 0
-- HAVE_LTCG = 0
-
- #######################################
-
diff --git a/packages/emulators/libretro/flycast2021-lr/patches/RK3399/000-platform.patch b/packages/emulators/libretro/flycast2021-lr/patches/RK3399/000-platform.patch
deleted file mode 100644
index 046bf71916..0000000000
--- a/packages/emulators/libretro/flycast2021-lr/patches/RK3399/000-platform.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-diff -rupN flycast.orig/Makefile flycast/Makefile
---- flycast.orig/Makefile 2022-06-18 13:29:52.675787687 -0400
-+++ flycast/Makefile 2022-06-18 13:53:23.564624927 -0400
-@@ -403,26 +403,30 @@ else ifeq ($(platform), arm64_cortex_a53
-
- #######################################
-
--# ARM64 SM1 Odroid C4
--else ifeq ($(platform), odroidc4)
-+# RK3399
-+else ifeq ($(platform), RK3399)
- EXT ?= so
- TARGET := $(TARGET_NAME)_libretro.$(EXT)
- SHARED += -shared -Wl,--version-script=link.T
-- LDFLAGS += -Wl,--no-undefined
- fpic = -fPIC
- LIBS += -lrt
- ARM_FLOAT_ABI_HARD = 0
- FORCE_GLES = 1
- SINGLE_PREC_FLAGS = 1
-- CPUFLAGS += -DHOST_CPU=0x20000006 -DTARGET_LINUX_ARMv8 -frename-registers
-- CFLAGS += -mcpu=cortex-a55 -mtune=cortex-a55 $(CPUFLAGS)
-- CXXFLAGS += -mcpu=cortex-a55 -mtune=cortex-a55 $(CPUFLAGS)
-- ASFLAGS += $(CFLAGS) -c -frename-registers -fno-strict-aliasing -ffast-math -ftree-vectorize
-+ HAVE_LTCG = 0
-+ HAVE_OPENMP = 0
-+ CFLAGS += -Ofast \
-+ -fuse-linker-plugin \
-+ -fno-stack-protector -fno-ident -fomit-frame-pointer \
-+ -fmerge-all-constants -ffast-math -funroll-all-loops \
-+ -mcpu=cortex-a72 -mtune=cortex-a72 -mno-outline-atomics
-+ CXXFLAGS += $(CFLAGS)
-+ LDFLAGS += -mcpu=cortex-a72 -mtune=cortex-a72 -Ofast -flto -fuse-linker-plugin
- PLATFORM_EXT := unix
-+ CORE_DEFINES += -DLOW_END -DLOW_RES
- WITH_DYNAREC=arm64
-+ PLATFORM_EXT := unix
- HAVE_GENERIC_JIT = 0
-- HAVE_VULKAN = 0
-- HAVE_LTCG = 0
-
- #######################################
-
diff --git a/packages/emulators/libretro/flycast2021-lr/patches/RK3566/000-platform.patch b/packages/emulators/libretro/flycast2021-lr/patches/RK3566/000-platform.patch
deleted file mode 100644
index be04e4fae1..0000000000
--- a/packages/emulators/libretro/flycast2021-lr/patches/RK3566/000-platform.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-diff -rupN flycast.orig/Makefile flycast/Makefile
---- flycast.orig/Makefile 2022-06-18 13:29:52.675787687 -0400
-+++ flycast/Makefile 2022-06-18 13:53:23.564624927 -0400
-@@ -403,26 +403,30 @@ else ifeq ($(platform), arm64_cortex_a53
-
- #######################################
-
--# ARM64 SM1 Odroid C4
--else ifeq ($(platform), odroidc4)
-+# ARM64 RG503, RG353x, x55, rk2023
-+else ifeq ($(platform), RK3566)
- EXT ?= so
- TARGET := $(TARGET_NAME)_libretro.$(EXT)
- SHARED += -shared -Wl,--version-script=link.T
-- LDFLAGS += -Wl,--no-undefined
- fpic = -fPIC
- LIBS += -lrt
- ARM_FLOAT_ABI_HARD = 0
- FORCE_GLES = 1
- SINGLE_PREC_FLAGS = 1
-- CPUFLAGS += -DHOST_CPU=0x20000006 -DTARGET_LINUX_ARMv8 -frename-registers
-- CFLAGS += -mcpu=cortex-a55 -mtune=cortex-a55 $(CPUFLAGS)
-- CXXFLAGS += -mcpu=cortex-a55 -mtune=cortex-a55 $(CPUFLAGS)
-- ASFLAGS += $(CFLAGS) -c -frename-registers -fno-strict-aliasing -ffast-math -ftree-vectorize
-+ HAVE_LTCG = 0
-+ HAVE_OPENMP = 0
-+ CFLAGS += -Ofast \
-+ -fuse-linker-plugin \
-+ -fno-stack-protector -fno-ident -fomit-frame-pointer \
-+ -fmerge-all-constants -ffast-math -funroll-all-loops \
-+ -mcpu=cortex-a55 -mtune=cortex-a55
-+ CXXFLAGS += $(CFLAGS)
-+ LDFLAGS += -mcpu=cortex-a55 -mtune=cortex-a55 -Ofast -flto -fuse-linker-plugin
- PLATFORM_EXT := unix
-+ CORE_DEFINES += -DLOW_END -DLOW_RES
- WITH_DYNAREC=arm64
-+ PLATFORM_EXT := unix
- HAVE_GENERIC_JIT = 0
-- HAVE_VULKAN = 0
-- HAVE_LTCG = 0
-
- #######################################
-
diff --git a/packages/emulators/libretro/flycast2021-lr/patches/RK3588/000-platform.patch b/packages/emulators/libretro/flycast2021-lr/patches/RK3588/000-platform.patch
deleted file mode 100644
index 3ba86d6d38..0000000000
--- a/packages/emulators/libretro/flycast2021-lr/patches/RK3588/000-platform.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-diff -rupN flycast.orig/Makefile flycast/Makefile
---- flycast.orig/Makefile 2022-06-18 13:29:52.675787687 -0400
-+++ flycast/Makefile 2022-06-18 13:53:23.564624927 -0400
-@@ -403,26 +403,30 @@ else ifeq ($(platform), arm64_cortex_a53
-
- #######################################
-
--# ARM64 SM1 Odroid C4
--else ifeq ($(platform), odroidc4)
-+# ARM64 RK3588
-+else ifeq ($(platform), RK3588)
- EXT ?= so
- TARGET := $(TARGET_NAME)_libretro.$(EXT)
- SHARED += -shared -Wl,--version-script=link.T
-- LDFLAGS += -Wl,--no-undefined
- fpic = -fPIC
- LIBS += -lrt
- ARM_FLOAT_ABI_HARD = 0
- FORCE_GLES = 1
- SINGLE_PREC_FLAGS = 1
-- CPUFLAGS += -DHOST_CPU=0x20000006 -DTARGET_LINUX_ARMv8 -frename-registers
-- CFLAGS += -mcpu=cortex-a55 -mtune=cortex-a55 $(CPUFLAGS)
-- CXXFLAGS += -mcpu=cortex-a55 -mtune=cortex-a55 $(CPUFLAGS)
-- ASFLAGS += $(CFLAGS) -c -frename-registers -fno-strict-aliasing -ffast-math -ftree-vectorize
-+ HAVE_LTCG = 0
-+ HAVE_OPENMP = 0
-+ CFLAGS += -Ofast \
-+ -fuse-linker-plugin \
-+ -fno-stack-protector -fno-ident -fomit-frame-pointer \
-+ -fmerge-all-constants -ffast-math -funroll-all-loops \
-+ -mcpu=cortex-a76 -mtune=cortex-a76
-+ CXXFLAGS += $(CFLAGS)
-+ LDFLAGS += -mcpu=cortex-a76 -mtune=cortex-a76 -Ofast -flto -fuse-linker-plugin
- PLATFORM_EXT := unix
-+ CORE_DEFINES += -DLOW_END -DLOW_RES
- WITH_DYNAREC=arm64
-+ PLATFORM_EXT := unix
- HAVE_GENERIC_JIT = 0
-- HAVE_VULKAN = 0
-- HAVE_LTCG = 0
-
- #######################################
-
diff --git a/packages/emulators/libretro/flycast2021-lr/patches/S922X/000-platform.patch b/packages/emulators/libretro/flycast2021-lr/patches/S922X/000-platform.patch
deleted file mode 100644
index 888d7f9064..0000000000
--- a/packages/emulators/libretro/flycast2021-lr/patches/S922X/000-platform.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-diff -rupN flycast.orig/Makefile flycast/Makefile
---- flycast.orig/Makefile 2022-04-08 18:10:23.156125702 -0400
-+++ flycast/Makefile 2022-04-08 18:48:44.236265589 -0400
-@@ -610,6 +610,24 @@ else ifneq (,$(findstring RK,$(platform)
- WITH_DYNAREC=arm
- HAVE_GENERIC_JIT = 0
-
-+else ifeq ($(platform), S922X)
-+ EXT ?= so
-+ TARGET := $(TARGET_NAME)_libretro.$(EXT)
-+ SHARED += -shared -Wl,--version-script=link.T
-+ fpic = -fPIC
-+ LIBS += -lrt
-+ ARM_FLOAT_ABI_HARD = 0
-+ FORCE_GLES = 1
-+ SINGLE_PREC_FLAGS = 1
-+ FORCE_GLES = 1
-+ CPUFLAGS += -DTARGET_LINUX_ARMv8 -frename-registers
-+ CFLAGS += -mno-outline-atomics -march=armv8-a+crc -mcpu=cortex-a73 -mtune=cortex-a73 $(CPUFLAGS)
-+ CXXFLAGS += -march=armv8-a+crc -mcpu=cortex-a73 -mtune=cortex-a73 $(CPUFLAGS)
-+ ASFLAGS += -march=armv8-a+crc -mcpu=cortex-a73 -c
-+ WITH_DYNAREC=arm64
-+ PLATFORM_EXT := unix
-+ HAVE_GENERIC_JIT = 0
-+
- # RockPro64
- else ifeq ($(platform), rockpro64)
- EXT ?= so
diff --git a/packages/emulators/libretro/flycast2021-lr/patches/SD865/000-platform.patch b/packages/emulators/libretro/flycast2021-lr/patches/aarch64/000-platform.patch
similarity index 63%
rename from packages/emulators/libretro/flycast2021-lr/patches/SD865/000-platform.patch
rename to packages/emulators/libretro/flycast2021-lr/patches/aarch64/000-platform.patch
index e7ecd2bc34..852634c66e 100644
--- a/packages/emulators/libretro/flycast2021-lr/patches/SD865/000-platform.patch
+++ b/packages/emulators/libretro/flycast2021-lr/patches/aarch64/000-platform.patch
@@ -1,14 +1,15 @@
-diff -rupN flycast.orig/Makefile flycast/Makefile
---- flycast.orig/Makefile 2022-06-18 13:29:52.675787687 -0400
-+++ flycast/Makefile 2022-06-18 13:53:23.564624927 -0400
-@@ -403,26 +403,30 @@ else ifeq ($(platform), arm64_cortex_a53
+diff --git a/Makefile b/Makefile
+index 01d99c3..0b80603 100644
+--- a/Makefile
++++ b/Makefile
+@@ -403,25 +403,27 @@ else ifeq ($(platform), arm64_cortex_a53_gles2)
#######################################
-# ARM64 SM1 Odroid C4
-else ifeq ($(platform), odroidc4)
-+# ARM64 SD865
-+else ifeq ($(platform), SD865)
++# ROCKNIX device
++else ifeq ($(platform), @DEVICE@)
EXT ?= so
TARGET := $(TARGET_NAME)_libretro.$(EXT)
SHARED += -shared -Wl,--version-script=link.T
@@ -16,28 +17,25 @@ diff -rupN flycast.orig/Makefile flycast/Makefile
fpic = -fPIC
LIBS += -lrt
ARM_FLOAT_ABI_HARD = 0
- FORCE_GLES = 1
+- FORCE_GLES = 1
SINGLE_PREC_FLAGS = 1
++ HAVE_OPENMP = 0
- CPUFLAGS += -DHOST_CPU=0x20000006 -DTARGET_LINUX_ARMv8 -frename-registers
- CFLAGS += -mcpu=cortex-a55 -mtune=cortex-a55 $(CPUFLAGS)
- CXXFLAGS += -mcpu=cortex-a55 -mtune=cortex-a55 $(CPUFLAGS)
- ASFLAGS += $(CFLAGS) -c -frename-registers -fno-strict-aliasing -ffast-math -ftree-vectorize
-+ HAVE_LTCG = 0
-+ HAVE_OPENMP = 0
+ CFLAGS += -Ofast \
+ -fuse-linker-plugin \
+ -fno-stack-protector -fno-ident -fomit-frame-pointer \
+ -fmerge-all-constants -ffast-math -funroll-all-loops \
-+ -mcpu=cortex-a77 -mtune=cortex-a77
++ -mcpu=@TARGET_CPU@ -mtune=@TARGET_CPU@ -mno-outline-atomics
+ CXXFLAGS += $(CFLAGS)
-+ LDFLAGS += -mcpu=cortex-a77 -mtune=cortex-a77 -Ofast -flto -fuse-linker-plugin
++ LDFLAGS += -mcpu=@TARGET_CPU@ -mtune=@TARGET_CPU@ -Ofast -flto -fuse-linker-plugin
PLATFORM_EXT := unix
-+ CORE_DEFINES += -DLOW_END -DLOW_RES
++ CORE_DEFINES += -DLOW_END -DLOW_RES
WITH_DYNAREC=arm64
-+ PLATFORM_EXT := unix
HAVE_GENERIC_JIT = 0
- HAVE_VULKAN = 0
-- HAVE_LTCG = 0
+ HAVE_LTCG = 0
#######################################
-
diff --git a/packages/emulators/libretro/kronos-lr/package.mk b/packages/emulators/libretro/kronos-lr/package.mk
index 39b9170b42..fe249fc9dc 100644
--- a/packages/emulators/libretro/kronos-lr/package.mk
+++ b/packages/emulators/libretro/kronos-lr/package.mk
@@ -3,25 +3,29 @@
PKG_NAME="kronos-lr"
PKG_LICENSE="GPLv2"
-PKG_SITE="https://github.com/libretro/yabause"
-PKG_ARCH="x86_64"
+PKG_SITE="https://github.com/FCare/Kronos"
+PKG_ARCH="x86_64 aarch64"
PKG_URL="${PKG_SITE}.git"
-PKG_VERSION="3646a3fc9e414d9474b7a21a39bc2734bb805932"
-PKG_GIT_CLONE_BRANCH="kronos"
+PKG_VERSION="46e687cb07f4bf8cb1717b0a7b4b48d208d20bb6"
+PKG_GIT_CLONE_BRANCH="extui-align"
PKG_DEPENDS_TARGET="toolchain boost zlib"
PKG_LONGDESC="Kronos is a Sega Saturn emulator forked from yabause."
PKG_TOOLCHAIN="make"
GET_HANDLER_SUPPORT="git"
PKG_PATCH_DIRS+="${DEVICE}"
-pre_configure_target() {
- sed -i 's/\-latomic//' ${PKG_BUILD}/yabause/src/libretro/Makefile
-}
+case ${ARCH} in
+ aarch64)
+ platform="platform=arm64"
+ ;;
+ x86_64)
+ platform=""
+ ;;
+esac
make_target() {
-# This was only necessary in the main repo, but may come to libretro later on
-# make -C ${PKG_BUILD}/yabause/src/libretro/ generate-files
- make -C ${PKG_BUILD}/yabause/src/libretro/
+ make -C ${PKG_BUILD}/yabause/src/libretro/ generate-files CC="${HOSTCC}"
+ make -C ${PKG_BUILD}/yabause/src/libretro/ ${platform} HAVE_CDROM=1 FORCE_GLES=0
}
makeinstall_target() {
diff --git a/packages/emulators/libretro/kronos-lr/patches/001-ygl-width.patch b/packages/emulators/libretro/kronos-lr/patches/001-ygl-width.patch
new file mode 100644
index 0000000000..3c4d276ef3
--- /dev/null
+++ b/packages/emulators/libretro/kronos-lr/patches/001-ygl-width.patch
@@ -0,0 +1,23 @@
+From 4543a4cfde4697188887795fa1d96905401219db Mon Sep 17 00:00:00 2001
+From: pstef <3462925+pstef@users.noreply.github.com>
+Date: Sat, 26 Oct 2024 20:33:08 +0200
+Subject: [PATCH] Consistently use _Ygl for width and height in
+ libretro-specific code
+
+---
+ yabause/src/core/video/opengl/compute_shader/src/yglcs.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/yabause/src/core/video/opengl/compute_shader/src/yglcs.c b/yabause/src/core/video/opengl/compute_shader/src/yglcs.c
+index 3cb37a75f..849c38937 100755
+--- a/yabause/src/core/video/opengl/compute_shader/src/yglcs.c
++++ b/yabause/src/core/video/opengl/compute_shader/src/yglcs.c
+@@ -268,7 +268,7 @@ void VIDCSRender(Vdp2 *varVdp2Regs) {
+ scale = MAX(w/_Ygl->rwidth, h/_Ygl->rheight);
+ #else
+ //Libretro is taking care to the resize
+- w = width;
++ w = _Ygl->width;
+ h = _Ygl->height;
+ x = y = 0;
+ #endif
diff --git a/packages/emulators/libretro/mupen64plus-lr/package.mk b/packages/emulators/libretro/mupen64plus-lr/package.mk
index 70fccf9e82..5444d984ab 100644
--- a/packages/emulators/libretro/mupen64plus-lr/package.mk
+++ b/packages/emulators/libretro/mupen64plus-lr/package.mk
@@ -30,41 +30,23 @@ PKG_TOOLCHAIN="make"
PKG_BUILD_FLAGS="-lto"
PKG_PATCH_DIRS+=" ${DEVICE}"
-if [ ! "${OPENGL}" = "no" ]; then
+if [ "${OPENGL}" = "yes" ] && [ ! "${PREFER_GLES}" = "yes" ]; then
PKG_DEPENDS_TARGET+=" ${OPENGL} glu"
-fi
-
-if [ "${OPENGLES_SUPPORT}" = yes ]; then
+ PKG_MAKE_OPTS_TARGET+=" GLES=0 GL_LIB=\"-lGL\""
+elif [ "${OPENGLES_SUPPORT}" = yes ]; then
PKG_DEPENDS_TARGET+=" ${OPENGLES}"
+ PKG_MAKE_OPTS_TARGET+=" GLES=1 GL_LIB=\"-lGLESv2\""
fi
-pre_make_target() {
- export CFLAGS="${CFLAGS} -fcommon"
-}
-
pre_configure_target() {
-export CFLAGS="${CFLAGS} -Wno-error=incompatible-pointer-types"
+ export CFLAGS="${CFLAGS} -fcommon -Wno-error=incompatible-pointer-types"
- case ${DEVICE} in
- RK3*)
- PKG_MAKE_OPTS_TARGET=" platform=${DEVICE}"
- CFLAGS="${CFLAGS} -DLINUX -DEGL_API_FB"
- CPPFLAGS="${CPPFLAGS} -DLINUX -DEGL_API_FB"
- ;;
- SD865)
- PKG_MAKE_OPTS_TARGET=" platform=RK3588"
- CFLAGS="${CFLAGS} -DLINUX -DEGL_API_FB"
- CPPFLAGS="${CPPFLAGS} -DLINUX -DEGL_API_FB"
- ;;
- H700)
- PKG_MAKE_OPTS_TARGET=" platform=RKH700"
- CFLAGS="${CFLAGS} -DLINUX -DEGL_API_FB"
- CPPFLAGS="${CPPFLAGS} -DLINUX -DEGL_API_FB"
- ;;
- *)
- PKG_MAKE_OPTS_TARGET="GLES=0 GLES3=0"
+ case ${ARCH} in
+ aarch64)
+ PKG_MAKE_OPTS_TARGET+=" OS_LINUX=1 platform=${DEVICE}"
;;
esac
+
sed -i 's/\-O[23]/-Ofast/' ${PKG_BUILD}/Makefile
}
diff --git a/packages/emulators/libretro/mupen64plus-lr/patches/aarch64/001-optimizations.patch b/packages/emulators/libretro/mupen64plus-lr/patches/aarch64/001-optimizations.patch
index ff046268a3..9377c1d7b0 100644
--- a/packages/emulators/libretro/mupen64plus-lr/patches/aarch64/001-optimizations.patch
+++ b/packages/emulators/libretro/mupen64plus-lr/patches/aarch64/001-optimizations.patch
@@ -1,37 +1,20 @@
diff -rupN mupen64plus.orig/Makefile mupen64plus/Makefile
--- mupen64plus.orig/Makefile 2022-02-27 09:19:06.080700288 -0500
+++ mupen64plus/Makefile 2022-02-27 13:27:51.390268523 -0500
-@@ -238,6 +238,35 @@ else ifneq (,$(findstring osx,$(platform
+@@ -238,6 +238,18 @@ else ifneq (,$(findstring osx,$(platform
COREFLAGS += -DOS_LINUX
ASFLAGS = -f elf -d ELF_TYPE
+
+# Rockchip @DEVICE@
-+else ifneq (,$(findstring RK,$(platform)))
++else ifneq (,$(findstring @DEVICE@,$(platform)))
+ TARGET := $(TARGET_NAME)_libretro.so
+ LDFLAGS += -shared -Wl,--version-script=$(LIBRETRO_DIR)/link.T -Wl,--no-undefined -ldl
+
-+ ifneq (,$(findstring @DEVICE@,$(platform)))
-+ ifneq (,$(findstring @DEVICE@,$(platform)))
-+ CPUFLAGS += -march=armv8-a -mtune=@TARGET_CPU@
-+ else ifneq (,$(findstring RK3566,$(platform)))
-+ CPUFLAGS += -march=armv8-a -mtune=cortex-a55
-+ GLES = 1
-+ endif
-+ else ifneq (,$(findstring RK3288,$(platform)))
-+ CPUFLAGS += -march=armv7ve -mtune=cortex-a17 -mfloat-abi=hard -mfpu=neon-vfpv4
-+ GLES3 = 1
-+ endif
-+
-+ ifneq (,$(findstring mesa,$(platform)))
-+ COREFLAGS += -DEGL_NO_X11
-+ endif
-+
-+ GLES = 1
-+ GL_LIB := -lGLESv2
++ CPUFLAGS += -march=armv8-a -mtune=@TARGET_CPU@
++ COREFLAGS += -DOS_LINUX
+ HAVE_NEON = 0
+ WITH_DYNAREC := aarch64
-+ COREFLAGS += -DUSE_GENERIC_GLESV2 -DOS_LINUX
+ ASFLAGS = -f elf -d ELF_TYPE
+
# iOS
diff --git a/packages/emulators/libretro/mupen64plus-nx-lr/package.mk b/packages/emulators/libretro/mupen64plus-nx-lr/package.mk
index 7d3c997e46..d45086216d 100755
--- a/packages/emulators/libretro/mupen64plus-nx-lr/package.mk
+++ b/packages/emulators/libretro/mupen64plus-nx-lr/package.mk
@@ -11,16 +11,21 @@ PKG_LONGDESC="mupen64plus NX"
PKG_TOOLCHAIN="make"
PKG_BUILD_FLAGS="-lto"
-PKG_PATCH_DIRS+="${DEVICE}"
-
-if [ ! "${OPENGL}" = "no" ]; then
+if [ "${OPENGL_SUPPORT}" = "yes" ] && [ ! "${PREFER_GLES}" = "yes" ]; then
PKG_DEPENDS_TARGET+=" ${OPENGL} glu libglvnd"
+ PKG_MAKE_OPTS_TARGET+=" GL_LIB=\"-lGL\" GLES3=0"
+elif [ "${OPENGLES_SUPPORT}" = yes ]; then
+ PKG_DEPENDS_TARGET+=" ${OPENGLES}"
+ PKG_MAKE_OPTS_TARGET+=" GL_LIB=\"-lGLESv2\" GLES3=1"
fi
-if [ "${OPENGLES_SUPPORT}" = yes ]; then
- PKG_DEPENDS_TARGET+=" ${OPENGLES}"
+if [ "${VULKAN_SUPPORT}" = "yes" ]; then
+ PKG_DEPENDS_TARGET+=" vulkan-loader vulkan-headers"
+ PKG_MAKE_OPTS_TARGET+=" HAVE_PARALLEL_RSP=1 HAVE_PARALLEL_RDP=1"
fi
+echo PKG_DEPENDS_TARGET ${PKG_DEPENDS_TARGET}
+
pre_configure_target() {
export CFLAGS="${CFLAGS} -DHAVE_UNISTD_H -Wno-error=incompatible-pointer-types"
if [ "${ARCH}" = "aarch64" ]; then
@@ -34,16 +39,11 @@ pre_configure_target() {
done
sed -e "s|^GIT_VERSION ?.*$|GIT_VERSION := \" ${PKG_VERSION:0:7}\"|" -i Makefile
sed -i 's/\-O[23]/-Ofast/' ${PKG_BUILD}/Makefile
- case ${DEVICE} in
- RK3*|S922X)
- PKG_MAKE_OPTS_TARGET=" platform=${DEVICE}"
- ;;
- SD865)
- PKG_MAKE_OPTS_TARGET=" platform=RK3588"
- ;;
- H700)
- PKG_MAKE_OPTS_TARGET=" platform=RK3326"
- ;;
+
+ case ${ARCH} in
+ aarch64)
+ PKG_MAKE_OPTS_TARGET+=" platform=${DEVICE}"
+ ;;
esac
}
diff --git a/packages/emulators/libretro/mupen64plus-nx-lr/patches/000-platform.patch b/packages/emulators/libretro/mupen64plus-nx-lr/patches/000-platform.patch
index bf0f972484..92b4bb852c 100644
--- a/packages/emulators/libretro/mupen64plus-nx-lr/patches/000-platform.patch
+++ b/packages/emulators/libretro/mupen64plus-nx-lr/patches/000-platform.patch
@@ -1,26 +1,18 @@
diff --git a/Makefile b/Makefile
-index c7c20ed..13017e5 100644
+index 481e8b9..2a4e365 100644
--- a/Makefile
+++ b/Makefile
-@@ -356,34 +356,29 @@ else ifneq (,$(findstring arm64_cortex_a53_gles3,$(platform)))
+@@ -366,34 +366,14 @@ else ifneq (,$(findstring arm64_cortex_a53_gles3,$(platform)))
COREFLAGS += -DOS_LINUX
ASFLAGS = -f elf64 -d ELF_TYPE
-# Rockchip RK3288 e.g. Asus Tinker Board / RK3328 e.g. PINE64 Rock64 / RK3399 e.g. PINE64 RockPro64 - 32-bit userspace
-else ifneq (,$(findstring RK,$(platform)))
-+# Amlogic S922X
-+else ifneq (,$(findstring S922X,$(platform)))
++# Rocknix DEVICE
++else ifneq (,$(findstring @DEVICE@,$(platform)))
TARGET := $(TARGET_NAME)_libretro.so
LDFLAGS += -shared -Wl,--version-script=$(LIBRETRO_DIR)/link.T -Wl,--no-undefined -ldl
-+ CPUFLAGS += -march=armv8-a -mtune=@TARGET_CPU@
-+ GL_LIB := -lGLESv2
-+ WITH_DYNAREC := aarch64
-+ GLES3 = 1
-+ HAVE_PARALLEL_RSP = 1
-+ HAVE_PARALLEL_RDP = 1
-+ COREFLAGS += -DOS_LINUX
-+ ASFLAGS = -f elf64 -d ELF_TYPE
-
+-
- ifneq (,$(findstring RK33,$(platform)))
- CPUFLAGS += -march=armv8-a+crc -mfloat-abi=hard -mfpu=neon-fp-armv8
- ifneq (,$(findstring RK3399,$(platform)))
@@ -39,18 +31,13 @@ index c7c20ed..13017e5 100644
- COREFLAGS += -DEGL_NO_X11
- endif
-
-+# Rockchip RK3326, RK3566, RK3588
-+else ifneq (,$(findstring RK3,$(platform)))
-+ TARGET := $(TARGET_NAME)_libretro.so
-+ LDFLAGS += -shared -Wl,--version-script=$(LIBRETRO_DIR)/link.T -Wl,--no-undefined -ldl
-+ CPUFLAGS += -march=armv8-a -mtune=@TARGET_CPU@
- GL_LIB := -lGLESv2
+- GL_LIB := -lGLESv2
- HAVE_NEON = 1
- WITH_DYNAREC=arm
- COREFLAGS += -DUSE_GENERIC_GLESV2 -DOS_LINUX
- ASFLAGS = -f elf -d ELF_TYPE
++ CPUFLAGS += -march=armv8-a -mtune=@TARGET_CPU@
+ WITH_DYNAREC := aarch64
-+ GLES3 = 1
+ COREFLAGS += -DOS_LINUX
+ ASFLAGS = -f elf64 -d ELF_TYPE
diff --git a/packages/emulators/libretro/parallel-n64-lr/package.mk b/packages/emulators/libretro/parallel-n64-lr/package.mk
index 55481fa458..a20bc86a54 100644
--- a/packages/emulators/libretro/parallel-n64-lr/package.mk
+++ b/packages/emulators/libretro/parallel-n64-lr/package.mk
@@ -11,32 +11,26 @@ PKG_LONGDESC="Optimized/rewritten Nintendo 64 emulator made specifically for Lib
PKG_TOOLCHAIN="make"
PKG_BUILD_FLAGS="-lto"
-if [ ! "${OPENGL}" = "no" ]; then
+if [ "${OPENGL_SUPPORT}" = "yes" ] && [ ! "${PREFER_GLES}" = "yes" ]; then
PKG_DEPENDS_TARGET+=" ${OPENGL} glu libglvnd"
-fi
-
-if [ "${OPENGLES_SUPPORT}" = yes ]; then
+ PKG_MAKE_OPTS_TARGET+=" GLES=0 GL_LIB=\"-lGL\""
+elif [ "${OPENGLES_SUPPORT}" = yes ]; then
PKG_DEPENDS_TARGET+=" ${OPENGLES}"
+ PKG_MAKE_OPTS_TARGET+=" GLES=1 GL_LIB=\"-lGLESv2\""
fi
-if [ "${VULKAN_SUPPORT}" = "yes" ]; then
+if [ "${VULKAN_SUPPORT}" = "yes" ] && [ ! ${DEVICE} = "SD865" ]; then
+ PKG_DEPENDS_TARGET+=" vulkan-loader vulkan-headers"
PKG_MAKE_OPTS_TARGET+=" HAVE_PARALLEL=1"
fi
-case ${DEVICE} in
- RK3*|S922X|H700|SD865)
- PKG_MAKE_OPTS_TARGET+=" platform=${DEVICE}"
- ;;
- AMD64)
- PKG_MAKE_OPTS_TARGET+=" HAVE_PARALLEL_RSP=1"
-esac
-
pre_configure_target() {
if [ "${ARCH}" = "aarch64" ]; then
# This is only needed for armv8.2-a targets where we don't use this flag
# as it prohibits the use of LSE-instructions, this is a package bug most likely
export CFLAGS="${CFLAGS} -mno-outline-atomics"
export CXXFLAGS="${CXXFLAGS} -mno-outline-atomics"
+ PKG_MAKE_OPTS_TARGET+=" platform=${DEVICE}"
fi
}
diff --git a/packages/emulators/libretro/parallel-n64-lr/patches/002-rk3588-make.patch b/packages/emulators/libretro/parallel-n64-lr/patches/002-rk3588-make.patch
index 88e5c4d83e..a738ea3779 100644
--- a/packages/emulators/libretro/parallel-n64-lr/patches/002-rk3588-make.patch
+++ b/packages/emulators/libretro/parallel-n64-lr/patches/002-rk3588-make.patch
@@ -11,7 +11,7 @@ index 8a719d55..0872e619 100644
endif
# system platform
-@@ -171,6 +173,15 @@ ifneq (,$(findstring unix,$(platform)))
+@@ -171,6 +173,13 @@ ifneq (,$(findstring unix,$(platform)))
endif
@@ -20,8 +20,6 @@ index 8a719d55..0872e619 100644
+ TARGET := $(TARGET_NAME)_libretro.so
+ CPUFLAGS += -march=armv8-a+crc+simd -mtune=@TARGET_CPU@ -DARM_FIX -DCLASSIC -DARM64
+ WITH_DYNAREC = aarch64
-+ GLES = 1
-+ GL_LIB := -lGLESv2
+ endif
+
# ODROIDs
diff --git a/packages/emulators/libretro/play-lr/package.mk b/packages/emulators/libretro/play-lr/package.mk
new file mode 100644
index 0000000000..4e4cb211af
--- /dev/null
+++ b/packages/emulators/libretro/play-lr/package.mk
@@ -0,0 +1,43 @@
+# SPDX-License-Identifier: GPL-2.0-or-later
+# Copyright (C) 2024-present ROCKNIX (https://github.com/ROCKNIX)
+
+PKG_NAME="play-lr"
+PKG_VERSION="b3be9d4840ab947448aedf2228496510257726ac"
+PKG_LICENSE="BSDv2"
+PKG_SITE="https://github.com/jpd002/Play-"
+PKG_URL="${PKG_SITE}.git"
+PKG_DEPENDS_TARGET="toolchain libevdev zstd"
+PKG_LONGDESC="Play! is an attempt to create a PlayStation 2 emulator for Windows, macOS, UNIX, Android & iOS platforms."
+PKG_TOOLCHAIN="cmake"
+
+if [ "${OPENGL_SUPPORT}" = "yes" ]; then
+ PKG_DEPENDS_TARGET+=" ${OPENGL} glu"
+fi
+
+if [ "${OPENGLES_SUPPORT}" = "yes" ]; then
+ PKG_DEPENDS_TARGET+=" ${OPENGLES}"
+fi
+
+case ${TARGET_ARCH} in
+ aarch64)
+ PKG_CMAKE_OPTS_TARGET+=" -DUSE_GLEW=off \
+ -DUSE_GLES=on
+ -DTARGET_PLATFORM_UNIX_AARCH64=yes"
+ ;;
+esac
+
+PKG_CMAKE_OPTS_TARGET+=" -DBUILD_LIBRETRO_CORE=yes \
+ -DBUILD_PLAY=off \
+ -DBUILD_TESTS=no \
+ -DENABLE_AMAZON_S3=no \
+ -DCMAKE_BUILD_TYPE=Release"
+
+pre_make_target() {
+ find ${PKG_BUILD} -name flags.make -exec sed -i "s:isystem :I:g" \{} \;
+ find ${PKG_BUILD} -name build.ninja -exec sed -i "s:isystem :I:g" \{} \;
+}
+
+makeinstall_target() {
+ mkdir -p ${INSTALL}/usr/lib/libretro
+ cp ${PKG_BUILD}/.${TARGET_NAME}/Source/ui_libretro/play_libretro.so ${INSTALL}/usr/lib/libretro/
+}
diff --git a/packages/emulators/libretro/play-lr/patches/000-fix-build.patch b/packages/emulators/libretro/play-lr/patches/000-fix-build.patch
new file mode 100644
index 0000000000..b51e897223
--- /dev/null
+++ b/packages/emulators/libretro/play-lr/patches/000-fix-build.patch
@@ -0,0 +1,13 @@
+diff --git a/Source/ui_libretro/CMakeLists.txt b/Source/ui_libretro/CMakeLists.txt
+index cc195c1a..cf1acb44 100644
+--- a/Source/ui_libretro/CMakeLists.txt
++++ b/Source/ui_libretro/CMakeLists.txt
+@@ -50,7 +50,7 @@ elseif(TARGET_PLATFORM_IOS)
+ list(APPEND PROJECT_LIBS "-ObjC -lsqlite3 -framework OpenGLES")
+ elseif(TARGET_PLATFORM_UNIX)
+ list(APPEND PROJECT_LIBS "-static-libgcc")
+- list(APPEND PROJECT_LIBS "-static-libstdc++")
++# list(APPEND PROJECT_LIBS "-static-libstdc++")
+ endif()
+
+ if(CMAKE_CXX_COMPILER_ID MATCHES "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 8 AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 9)
diff --git a/packages/emulators/libretro/retroarch/package.mk b/packages/emulators/libretro/retroarch/package.mk
index fc396cea07..314b2e6e50 100644
--- a/packages/emulators/libretro/retroarch/package.mk
+++ b/packages/emulators/libretro/retroarch/package.mk
@@ -70,29 +70,16 @@ else
PKG_CONFIGURE_OPTS_TARGET+=" --disable-wayland"
fi
-if [ "${OPENGLES_SUPPORT}" = "yes" ]; then
+if [ "${OPENGLES_SUPPORT}" = "yes" ] && \
+ [ "${PREFER_GLES}" = "yes" ]; then
PKG_DEPENDS_TARGET+=" ${OPENGLES}"
- PKG_CONFIGURE_OPTS_TARGET+=" --enable-opengles --enable-opengles3"
- case ${DEVICE} in
- RK33*|RK35*|H700|SD856)
- PKG_CONFIGURE_OPTS_TARGET+=" --enable-opengles3_1"
- ;;
- S922X)
- PKG_CONFIGURE_OPTS_TARGET+=" --enable-opengles3_1 --enable-opengles3_2"
- ;;
- AMD64)
- PKG_CONFIGURE_OPTS_TARGET+=" --disable-opengles --disable-opengles3 --disable-opengles3_1 --disable-opengles3_2"
- ;;
- esac
+ PKG_CONFIGURE_OPTS_TARGET+=" --enable-opengles --enable-opengles3_1"
+ PKG_CONFIGURE_OPTS_TARGET+=" --disable-opengl"
else
- PKG_CONFIGURE_OPTS_TARGET+=" --disable-opengles --disable-opengles3 --disable-opengles3_1 --disable-opengles3_2"
-fi
-
-if [[ "${OPENGL_SUPPORT}" = "yes" ]]; then
+ # Full OpenGL
PKG_DEPENDS_TARGET+=" ${OPENGL} glu libglvnd"
PKG_CONFIGURE_OPTS_TARGET+=" --enable-opengl"
-else
- PKG_CONFIGURE_OPTS_TARGET+=" --disable-opengl"
+ PKG_CONFIGURE_OPTS_TARGET+=" --disable-opengles --disable-opengles3 --disable-opengles3_1 --disable-opengles3_2"
fi
if [ "${VULKAN_SUPPORT}" = "yes" ]
diff --git a/packages/emulators/libretro/retroarch/retroarch-joypads/gamepads/h700-retrogame_joypad.cfg b/packages/emulators/libretro/retroarch/retroarch-joypads/gamepads/h700-retrogame_joypad.cfg
new file mode 100644
index 0000000000..d26fd53020
--- /dev/null
+++ b/packages/emulators/libretro/retroarch/retroarch-joypads/gamepads/h700-retrogame_joypad.cfg
@@ -0,0 +1,56 @@
+input_driver = "udev"
+input_device = "retrogame_joypad"
+input_vendor_id = "18507"
+input_product_id = "5343"
+input_a = "x"
+input_a_btn = "1"
+input_analog_dpad_mode = "0"
+input_b = "z"
+input_b_btn = "0"
+input_down = "down"
+input_down_btn = "14"
+input_gun_trigger_mbtn = "1"
+input_joypad_index = "0"
+input_l = "q"
+input_l2_btn = "6"
+input_l3_btn = "11"
+input_l_btn = "4"
+input_l_x_minus_axis = "-0"
+input_l_x_plus_axis = "+0"
+input_l_y_minus_axis = "-1"
+input_l_y_plus_axis = "+1"
+input_left = "left"
+input_left_btn = "15"
+input_mouse_index = "0"
+input_r = "w"
+input_r2_btn = "7"
+input_r3_btn = "12"
+input_r_btn = "5"
+input_r_x_minus_axis = "-2"
+input_r_x_plus_axis = "+2"
+input_r_y_minus_axis = "-3"
+input_r_y_plus_axis = "+3"
+input_right = "right"
+input_right_btn = "16"
+input_select = "rshift"
+input_select_btn = "8"
+input_start = "enter"
+input_start_btn = "9"
+input_up = "up"
+input_up_btn = "13"
+input_x = "s"
+input_x_btn = "2"
+input_y = "a"
+input_y_btn = "3"
+input_enable_hotkey_btn = "10"
+input_exit_emulator_btn = "9"
+input_screenshot_btn = "nul"
+input_pause_toggle_btn = "nul"
+input_menu_toggle_btn = "2"
+input_fps_toggle_btn = "3"
+input_state_slot_increase_btn = "nul"
+input_state_slot_decrease_btn = "nul"
+input_load_state_btn = "4"
+input_save_state_btn = "5"
+input_rewind_btn = "6"
+input_toggle_fast_forward_btn = "7"
diff --git a/packages/emulators/libretro/retroarch/sources/H700/retroarch.cfg b/packages/emulators/libretro/retroarch/sources/H700/retroarch.cfg
index be01a15cfd..2edc43d64b 100755
--- a/packages/emulators/libretro/retroarch/sources/H700/retroarch.cfg
+++ b/packages/emulators/libretro/retroarch/sources/H700/retroarch.cfg
@@ -23,12 +23,11 @@ audio_enable_menu_ok = "false"
audio_enable = "true"
audio_fastforward_mute = "false"
audio_filter_dir = "~/.config/retroarch/filters/audio"
-audio_latency = "32"
audio_max_timing_skew = "0.049999"
audio_mixer_mute_enable = "false"
audio_mixer_volume = "0.000000"
audio_mute_enable = "false"
-audio_out_rate = "48000"
+audio_out_rate = "44100"
audio_rate_control_delta = "0.004999"
audio_rate_control = "true"
audio_resampler_quality = "2"
@@ -496,7 +495,7 @@ menu_use_preferred_system_color_theme = "false"
menu_wallpaper = ""
menu_wallpaper_opacity = "1.000000"
menu_widget_scale_auto = "false"
-menu_widget_scale_factor = "0.350000"
+menu_widget_scale_factor = "0.750000"
menu_widget_scale_factor_windowed = "1.000000"
menu_xmb_animation_horizontal_highlight = "0"
menu_xmb_animation_move_up_down = "0"
diff --git a/packages/emulators/libretro/scummvm-lr/package.mk b/packages/emulators/libretro/scummvm-lr/package.mk
index 0b18d98649..5f9c5864ec 100644
--- a/packages/emulators/libretro/scummvm-lr/package.mk
+++ b/packages/emulators/libretro/scummvm-lr/package.mk
@@ -20,7 +20,7 @@
################################################################################
PKG_NAME="scummvm-lr"
-PKG_VERSION="2b4260db36733e9e05c4215d84ef8c0d23d5c932"
+PKG_VERSION="e09c521cd8b91069808dcdeda9d19e842a798349"
PKG_LICENSE="GPLv2"
PKG_SITE="https://github.com/libretro/scummvm"
PKG_URL="${PKG_SITE}.git"
diff --git a/packages/emulators/libretro/vitaquake2-lr/package.mk b/packages/emulators/libretro/vitaquake2-lr/package.mk
index 6e13073b4e..c424e55ac6 100644
--- a/packages/emulators/libretro/vitaquake2-lr/package.mk
+++ b/packages/emulators/libretro/vitaquake2-lr/package.mk
@@ -18,7 +18,11 @@ fi
pre_make_target() {
export BUILD_SYSROOT=${SYSROOT_PREFIX}
- PKG_MAKE_OPTS_TARGET+=" platform=${DEVICE}_rocknix"
+ case ${TARGET_ARCH} in
+ aarch64)
+ PKG_MAKE_OPTS_TARGET+=" platform=${DEVICE}_rocknix"
+ ;;
+ esac
}
makeinstall_target() {
diff --git a/packages/emulators/libretro/vitaquake2-lr/vitaquake2-rogue-lr/package.mk b/packages/emulators/libretro/vitaquake2-lr/vitaquake2-rogue-lr/package.mk
index 29f58bf9b4..24e0a09e61 100644
--- a/packages/emulators/libretro/vitaquake2-lr/vitaquake2-rogue-lr/package.mk
+++ b/packages/emulators/libretro/vitaquake2-lr/vitaquake2-rogue-lr/package.mk
@@ -2,7 +2,7 @@
# Copyright (C) 2024-present ROCKNIX (https://github.com/ROCKNIX)
PKG_NAME="vitaquake2-rogue-lr"
-PKG_VERSION="69e56a470638ca8ed15b53212923220360a69f97"
+PKG_VERSION="$(get_pkg_version vitaquake2-lr)"
PKG_LICENSE="GPLv2"
PKG_SITE="https://github.com/libretro/vitaquake2"
PKG_URL="$PKG_SITE/archive/$PKG_VERSION.tar.gz"
@@ -18,7 +18,13 @@ fi
pre_make_target() {
export BUILD_SYSROOT=${SYSROOT_PREFIX}
- PKG_MAKE_OPTS_TARGET+=" basegame=rogue platform=${DEVICE}_rocknix"
+ PKG_MAKE_OPTS_TARGET+=" basegame=rogue"
+
+ case ${TARGET_ARCH} in
+ aarch64)
+ PKG_MAKE_OPTS_TARGET+=" platform=${DEVICE}_rocknix"
+ ;;
+ esac
}
makeinstall_target() {
diff --git a/packages/emulators/libretro/vitaquake2-lr/vitaquake2-xatrix-lr/package.mk b/packages/emulators/libretro/vitaquake2-lr/vitaquake2-xatrix-lr/package.mk
index 3e48e20cde..d8dd063d84 100644
--- a/packages/emulators/libretro/vitaquake2-lr/vitaquake2-xatrix-lr/package.mk
+++ b/packages/emulators/libretro/vitaquake2-lr/vitaquake2-xatrix-lr/package.mk
@@ -2,7 +2,7 @@
# Copyright (C) 2024-present ROCKNIX (https://github.com/ROCKNIX)
PKG_NAME="vitaquake2-xatrix-lr"
-PKG_VERSION="69e56a470638ca8ed15b53212923220360a69f97"
+PKG_VERSION="$(get_pkg_version vitaquake2-lr)"
PKG_LICENSE="GPLv2"
PKG_SITE="https://github.com/libretro/vitaquake2"
PKG_URL="$PKG_SITE/archive/$PKG_VERSION.tar.gz"
@@ -18,7 +18,13 @@ fi
pre_make_target() {
export BUILD_SYSROOT=${SYSROOT_PREFIX}
- PKG_MAKE_OPTS_TARGET+=" basegame=xatrix platform=${DEVICE}_rocknix"
+ PKG_MAKE_OPTS_TARGET+=" basegame=xatrix"
+
+ case ${TARGET_ARCH} in
+ aarch64)
+ PKG_MAKE_OPTS_TARGET+=" platform=${DEVICE}_rocknix"
+ ;;
+ esac
}
makeinstall_target() {
diff --git a/packages/emulators/libretro/vitaquake2-lr/vitaquake2-zaero-lr/package.mk b/packages/emulators/libretro/vitaquake2-lr/vitaquake2-zaero-lr/package.mk
index f712920354..408615e3a7 100644
--- a/packages/emulators/libretro/vitaquake2-lr/vitaquake2-zaero-lr/package.mk
+++ b/packages/emulators/libretro/vitaquake2-lr/vitaquake2-zaero-lr/package.mk
@@ -2,7 +2,7 @@
# Copyright (C) 2024-present ROCKNIX (https://github.com/ROCKNIX)
PKG_NAME="vitaquake2-zaero-lr"
-PKG_VERSION="69e56a470638ca8ed15b53212923220360a69f97"
+PKG_VERSION="$(get_pkg_version vitaquake2-lr)"
PKG_LICENSE="GPLv2"
PKG_SITE="https://github.com/libretro/vitaquake2"
PKG_URL="$PKG_SITE/archive/$PKG_VERSION.tar.gz"
@@ -18,7 +18,13 @@ fi
pre_make_target() {
export BUILD_SYSROOT=${SYSROOT_PREFIX}
- PKG_MAKE_OPTS_TARGET+=" basegame=zaero platform=${DEVICE}_rocknix"
+ PKG_MAKE_OPTS_TARGET+=" basegame=zaero"
+
+ case ${TARGET_ARCH} in
+ aarch64)
+ PKG_MAKE_OPTS_TARGET+=" platform=${DEVICE}_rocknix"
+ ;;
+ esac
}
makeinstall_target() {
diff --git a/packages/emulators/libretro/wasm4-lr/package.mk b/packages/emulators/libretro/wasm4-lr/package.mk
new file mode 100644
index 0000000000..7a434da2c4
--- /dev/null
+++ b/packages/emulators/libretro/wasm4-lr/package.mk
@@ -0,0 +1,27 @@
+# SPDX-License-Identifier: GPL-2.0
+# Copyright (C) 2024-present ROCKNIX (https://github.com/ROCKNIX)
+
+
+PKG_NAME="wasm4-lr"
+PKG_VERSION="979be845216ee9d613cb6555fb8b11c01bec39a0"
+PKG_LICENSE="ISC"
+PKG_SITE="https://github.com/aduros/wasm4"
+PKG_URL="${PKG_SITE}.git"
+PKG_DEPENDS_TARGET="toolchain"
+PKG_LONGDESC="WASM-4 is a low-level fantasy game console for building small games with WebAssembly. Game cartridges (ROMs) are small, self-contained .wasm files that can be built with any programming language that compiles to WebAssembly."
+GET_HANDLER_SUPPORT="git"
+PKG_TOOLCHAIN='manual'
+PKG_CMAKE_OPTS_TARGET="-DBUILD_TARGET=wasm4_libretro \
+ -DCMAKE_BUILD_TYPE=Release"
+
+make_target() {
+ cd ${PKG_BUILD}/runtimes/native
+ cmake -B build
+ cmake --build build --target wasm4_libretro
+}
+
+
+makeinstall_target() {
+ mkdir -p ${INSTALL}/usr/lib/libretro
+ cp ${PKG_BUILD}/runtimes/native/build/wasm4_libretro.so ${INSTALL}/usr/lib/libretro/
+}
diff --git a/packages/emulators/libretro/yabasanshiro-lr/package.mk b/packages/emulators/libretro/yabasanshiro-lr/package.mk
index e09e95375f..16e9628e52 100644
--- a/packages/emulators/libretro/yabasanshiro-lr/package.mk
+++ b/packages/emulators/libretro/yabasanshiro-lr/package.mk
@@ -29,38 +29,30 @@ PKG_LONGDESC="Port of YabaSanshiro to libretro."
PKG_TOOLCHAIN="make"
GET_HANDLER_SUPPORT="git"
-PKG_PATCH_DIRS+="${DEVICE}"
-
-if [ ! "${OPENGL}" = "no" ]; then
+PKG_MAKE_OPTS_TARGET+=" -C yabause/src/libretro"
+if [ "${OPENGL_SUPPORT}" = "yes" ] && [ ! "${PREFER_GLES}" = "yes" ]; then
PKG_DEPENDS_TARGET+=" ${OPENGL} glu libglvnd"
-fi
-
-if [ "${OPENGLES_SUPPORT}" = yes ]; then
+ PKG_MAKE_OPTS_TARGET+=" FORCE_GLES=0"
+elif [ "${OPENGLES_SUPPORT}" = yes ]; then
PKG_DEPENDS_TARGET+=" ${OPENGLES}"
+ PKG_MAKE_OPTS_TARGET+=" FORCE_GLES=1"
fi
pre_configure_target() {
export CFLAGS="${CFLAGS} -Wno-implicit-function-declaration"
- if [ "${ARCH}" = "aarch64" ]; then
- # This is only needed for armv8.2-a targets where we don't use this flag
- # as it prohibits the use of LSE-instructions, this is a package bug most likely
- export CFLAGS="${CFLAGS} -flto -fipa-pta -mno-outline-atomics"
- export CXXFLAGS="${CXXFLAGS} -flto -fipa-pta -mno-outline-atomics"
- export LDFLAGS="${CXXFLAGS} -flto -fipa-pta"
- fi
sed -i 's/\-O[23]/-Ofast -ffast-math/' ${PKG_BUILD}/yabause/src/libretro/Makefile
- case ${DEVICE} in
- RK3*|S922X|SD865)
- PKG_MAKE_OPTS_TARGET+=" -C yabause/src/libretro platform=rockpro64 HAVE_NEON=0 FORCE_GLES=1"
- ;;
- H700)
- PKG_MAKE_OPTS_TARGET+=" -C yabause/src/libretro platform=arm64_cortex_a53_gles3 HAVE_NEON=0 FORCE_GLES=1"
- ;;
- AMD64)
- PKG_MAKE_OPTS_TARGET+=" -C yabause/src/libretro FORCE_GLES=0 USE_X86_DRC=1 FASTMATH=1"
- ;;
- *)
- PKG_MAKE_OPTS_TARGET+=" -C yabause/src/libretro FORCE_GLES=1"
+
+ case ${ARCH} in
+ aarch64)
+ PKG_MAKE_OPTS_TARGET+=" platform=rockpro64 HAVE_NEON=0"
+ # no-outline-atomics is only needed for armv8.2-a targets where we don't use this flag
+ # as it prohibits the use of LSE-instructions, this is a package bug most likely
+ export CFLAGS="${CFLAGS} -flto -fipa-pta -mno-outline-atomics"
+ export CXXFLAGS="${CXXFLAGS} -flto -fipa-pta -mno-outline-atomics"
+ export LDFLAGS="${CXXFLAGS} -flto -fipa-pta"
+ ;;
+ x86_64)
+ PKG_MAKE_OPTS_TARGET+=" USE_X86_DRC=1 FASTMATH=1"
;;
esac
}
diff --git a/packages/emulators/standalone/aethersx2-sa/package.mk b/packages/emulators/standalone/aethersx2-sa/package.mk
index 3cfc7ad303..b32baf7ade 100644
--- a/packages/emulators/standalone/aethersx2-sa/package.mk
+++ b/packages/emulators/standalone/aethersx2-sa/package.mk
@@ -21,7 +21,7 @@ makeinstall_target() {
cp -rf ${PKG_BUILD}/usr/share/* ${INSTALL}/usr/share/aethersx2-sa/
- cp -rf ${PKG_DIR}/scripts/start_aethersx2.sh ${INSTALL}/usr/bin
+ cp -rf ${PKG_DIR}/scripts/* ${INSTALL}/usr/bin
chmod 755 ${INSTALL}/usr/bin/*
mkdir -p ${INSTALL}/usr/config
diff --git a/packages/emulators/standalone/aethersx2-sa/scripts/cheevos_aethersx2.sh b/packages/emulators/standalone/aethersx2-sa/scripts/cheevos_aethersx2.sh
new file mode 100644
index 0000000000..ed92ce26a4
--- /dev/null
+++ b/packages/emulators/standalone/aethersx2-sa/scripts/cheevos_aethersx2.sh
@@ -0,0 +1,67 @@
+#! /bin/bash
+
+# SPDX-License-Identifier: GPL-2.0-or-later
+# Copyright (C) 2022-present Hector Calvarro (https://github.com/kelvfimer)
+# Copyright (C) 2024-present ROCKNIX (https://github.com/ROCKNIX)
+
+. /etc/profile
+
+AETHERSX2_CFG="/storage/.config/aethersx2/inis/PCSX2.ini"
+LOG_FILE="/var/log/cheevos.log"
+
+# Extract username, password, token, if enabled, and hardcore mode from system.cfg
+username=$(get_setting "global.retroachievements.username")
+password=$(get_setting "global.retroachievements.password")
+token=$(get_setting "global.retroachievements.token")
+enabled=$(get_setting "global.retroachievements")
+hardcore=$(get_setting "global.retroachievements.hardcore")
+
+# Check if RetroAchievements are enabled in Emulation Station
+if [ ! ${enabled} = 1 ]; then
+ echo "RetroAchievements are not enabled, please turn them on in Emulation Station." > ${LOG_FILE}
+ sed -i '/\[Achievements\]/,/^\s*$/s/Enabled =.*/Enabled = false/' ${AETHERSX2_CFG}
+ exit 1
+fi
+
+# Check if api token is present in system.cfg
+if [ -z "${token}" ]; then
+ echo "RetroAchievements token is empty, please log in with your RetroAchievements credentials in Emulation Station." > ${LOG_FILE}
+ exit 1
+fi
+
+# Set hardcore mode
+if [ "${hardcore}" = 1 ]; then
+ hardcore="true"
+else
+ hardcore="false"
+fi
+
+# Update emulator config with RetroAchievements settings
+zcheevos=$(grep -Fx "[Achievements]" ${AETHERSX2_CFG})
+datets=$(date +%s%N | cut -b1-13)
+
+if [ -z "${zcheevos}" ]; then
+ sed -i "\$a [Achievements]\nEnabled = true\nUsername = ${username}\nToken = ${token}\nChallengeMode = ${hardcore}\nLoginTimestamp = ${datets}" ${AETHERSX2_CFG}
+else
+ sed -i '/\[Achievements\]/,/^\s*$/s/Enabled =.*/Enabled = true/' ${AETHERSX2_CFG}
+
+ if ! grep -q "^Username = " ${AETHERSX2_CFG}; then
+ sed -i "/^\[Achievements\]/a Username = ${username}" ${AETHERSX2_CFG}
+ else
+ sed -i "/^\[Achievements\]/,/^\[/{s/^Username = .*/Username = ${username}/;}" ${AETHERSX2_CFG}
+ fi
+
+ if ! grep -q "^Token = " ${AETHERSX2_CFG}; then
+ sed -i "/^\[Achievements\]/a Token = ${token}" ${AETHERSX2_CFG}
+ else
+ sed -i "/^\[Achievements\]/,/^\[/{s/^Token = .*/Token = ${token}/;}" ${AETHERSX2_CFG}
+ fi
+
+ if ! grep -q "^ChallengeMode = " ${AETHERSX2_CFG}; then
+ sed -i "/^\[Achievements\]/a ChallengeMode = ${hardcore}" ${AETHERSX2_CFG}
+ else
+ sed -i "/^\[Achievements\]/,/^\[/{s/^ChallengeMode = .*/ChallengeMode = ${hardcore}/;}" ${AETHERSX2_CFG}
+ fi
+
+ sed -i "/^\[Achievements\]/,/^\[/{s/^LoginTimestamp = .*/LoginTimestamp = ${datets}/;}" ${AETHERSX2_CFG}
+fi
diff --git a/packages/emulators/standalone/aethersx2-sa/scripts/start_aethersx2.sh b/packages/emulators/standalone/aethersx2-sa/scripts/start_aethersx2.sh
index 4eba256137..eed6fbf1d9 100755
--- a/packages/emulators/standalone/aethersx2-sa/scripts/start_aethersx2.sh
+++ b/packages/emulators/standalone/aethersx2-sa/scripts/start_aethersx2.sh
@@ -164,6 +164,9 @@ fi
sed -i '/^EECycleSkip =/c\EECycleSkip = 3' /storage/.config/aethersx2/inis/PCSX2.ini
fi
+#Retroachievements
+ /usr/bin/cheevos_aethersx2.sh
+
#Set OpenGL 3.3 on panfrost
export MESA_GL_VERSION_OVERRIDE=3.3
export MESA_GLSL_VERSION_OVERRIDE=330
diff --git a/packages/emulators/standalone/cemu-sa/package.mk b/packages/emulators/standalone/cemu-sa/package.mk
index 4381e2fc6b..fe2b53e012 100644
--- a/packages/emulators/standalone/cemu-sa/package.mk
+++ b/packages/emulators/standalone/cemu-sa/package.mk
@@ -3,8 +3,7 @@
# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS)
PKG_NAME="cemu-sa"
-PKG_VERSION="8b37e316d0537da9c717cb0698c9141e668d6fff"
-PKG_ARCH="x86_64"
+PKG_VERSION="1a4d9660e756f52a01589add71df619361543a2f"
PKG_LICENSE="MPL-2.0"
PKG_SITE="https://github.com/cemu-project/Cemu"
PKG_URL="${PKG_SITE}.git"
diff --git a/packages/emulators/standalone/dolphin-sa/package.mk b/packages/emulators/standalone/dolphin-sa/package.mk
index d909485168..4dc2c4225c 100644
--- a/packages/emulators/standalone/dolphin-sa/package.mk
+++ b/packages/emulators/standalone/dolphin-sa/package.mk
@@ -9,7 +9,7 @@ PKG_TOOLCHAIN="cmake"
case ${DEVICE} in
SD865)
- PKG_VERSION="904ac5592daf7adc0013110da60a706b21c5d72d"
+ PKG_VERSION="80ea68b13c06ae3fa57775de39c902ed9c3c8e84"
PKG_SITE="https://github.com/dolphin-emu/dolphin"
PKG_URL="${PKG_SITE}.git"
PKG_PATCH_DIRS+=" x11"
@@ -105,8 +105,4 @@ post_install() {
-i ${INSTALL}/usr/bin/start_dolphin_gc.sh
sed -e "s/@LIBMALI@/${LIBMALI}/g" \
-i ${INSTALL}/usr/bin/start_dolphin_wii.sh
-
- if [ "${DEVICE}" = "S922X" -a "${USE_MALI}" = "no" ]; then
- sed -e "s/GFXBackend = Vulkan/GFXBackend =/g" -i ${INSTALL}/usr/config/dolphin-emu/Dolphin.ini
- fi
}
diff --git a/packages/emulators/standalone/dolphin-sa/scripts/start_dolphin_gc.sh b/packages/emulators/standalone/dolphin-sa/scripts/start_dolphin_gc.sh
index 5d8ea3d196..53f1b417b4 100644
--- a/packages/emulators/standalone/dolphin-sa/scripts/start_dolphin_gc.sh
+++ b/packages/emulators/standalone/dolphin-sa/scripts/start_dolphin_gc.sh
@@ -123,31 +123,32 @@ fi
fi
#Clock Speed
- sed -i '/^OverclockEnable =/c\OverclockEnable = False' /storage/.config/dolphin-emu/Dolphin.ini
- if [ "$CLOCK" = "0" ]
- then
+ if [ "$CLOCK" = "050" ]; then
sed -i '/^Overclock =/c\Overclock = 0.5' /storage/.config/dolphin-emu/Dolphin.ini
sed -i '/^OverclockEnable =/c\OverclockEnable = True' /storage/.config/dolphin-emu/Dolphin.ini
- fi
- if [ "$CLOCK" = "1" ]
- then
+ elif [ "$CLOCK" = "075" ]; then
sed -i '/^Overclock =/c\Overclock = 0.75' /storage/.config/dolphin-emu/Dolphin.ini
sed -i '/^OverclockEnable =/c\OverclockEnable = True' /storage/.config/dolphin-emu/Dolphin.ini
- fi
- if [ "$CLOCK" = "2" ]
- then
+ elif [ "$CLOCK" = "100" ]; then
sed -i '/^Overclock =/c\Overclock = 1.0' /storage/.config/dolphin-emu/Dolphin.ini
sed -i '/^OverclockEnable =/c\OverclockEnable = False' /storage/.config/dolphin-emu/Dolphin.ini
- fi
- if [ "$CLOCK" = "3" ]
- then
+ elif [ "$CLOCK" = "125" ]; then
sed -i '/^Overclock =/c\Overclock = 1.25' /storage/.config/dolphin-emu/Dolphin.ini
sed -i '/^OverclockEnable =/c\OverclockEnable = True' /storage/.config/dolphin-emu/Dolphin.ini
- fi
- if [ "$CLOCK" = "4" ]
- then
+ elif [ "$CLOCK" = "150" ]; then
sed -i '/^Overclock =/c\Overclock = 1.5' /storage/.config/dolphin-emu/Dolphin.ini
sed -i '/^OverclockEnable =/c\OverclockEnable = True' /storage/.config/dolphin-emu/Dolphin.ini
+ elif [ "$CLOCK" = "200" ]; then
+ sed -i '/^Overclock =/c\Overclock = 2.0' /storage/.config/dolphin-emu/Dolphin.ini
+ sed -i '/^OverclockEnable =/c\OverclockEnable = True' /storage/.config/dolphin-emu/Dolphin.ini
+ elif [ "$CLOCK" = "300" ]; then
+ sed -i '/^Overclock =/c\Overclock = 3.0' /storage/.config/dolphin-emu/Dolphin.ini
+ sed -i '/^OverclockEnable =/c\OverclockEnable = True' /storage/.config/dolphin-emu/Dolphin.ini
+ elif [ "$CLOCK" = "400" ]; then
+ sed -i '/^Overclock =/c\Overclock = 4.0' /storage/.config/dolphin-emu/Dolphin.ini
+ sed -i '/^OverclockEnable =/c\OverclockEnable = True' /storage/.config/dolphin-emu/Dolphin.ini
+ else
+ sed -i '/^OverclockEnable =/c\OverclockEnable = False' /storage/.config/dolphin-emu/Dolphin.ini
fi
#Video Backend
diff --git a/packages/emulators/standalone/dolphin-sa/scripts/start_dolphin_wii.sh b/packages/emulators/standalone/dolphin-sa/scripts/start_dolphin_wii.sh
index 5d7f1ee619..93f936c616 100755
--- a/packages/emulators/standalone/dolphin-sa/scripts/start_dolphin_wii.sh
+++ b/packages/emulators/standalone/dolphin-sa/scripts/start_dolphin_wii.sh
@@ -131,31 +131,32 @@ fi
fi
#Clock Speed
- sed -i '/^OverclockEnable =/c\OverclockEnable = False' /storage/.config/dolphin-emu/Dolphin.ini
- if [ "$CLOCK" = "0" ]
- then
+ if [ "$CLOCK" = "050" ]; then
sed -i '/^Overclock =/c\Overclock = 0.5' /storage/.config/dolphin-emu/Dolphin.ini
sed -i '/^OverclockEnable =/c\OverclockEnable = True' /storage/.config/dolphin-emu/Dolphin.ini
- fi
- if [ "$CLOCK" = "1" ]
- then
+ elif [ "$CLOCK" = "075" ]; then
sed -i '/^Overclock =/c\Overclock = 0.75' /storage/.config/dolphin-emu/Dolphin.ini
sed -i '/^OverclockEnable =/c\OverclockEnable = True' /storage/.config/dolphin-emu/Dolphin.ini
- fi
- if [ "$CLOCK" = "2" ]
- then
+ elif [ "$CLOCK" = "100" ]; then
sed -i '/^Overclock =/c\Overclock = 1.0' /storage/.config/dolphin-emu/Dolphin.ini
sed -i '/^OverclockEnable =/c\OverclockEnable = False' /storage/.config/dolphin-emu/Dolphin.ini
- fi
- if [ "$CLOCK" = "3" ]
- then
+ elif [ "$CLOCK" = "125" ]; then
sed -i '/^Overclock =/c\Overclock = 1.25' /storage/.config/dolphin-emu/Dolphin.ini
sed -i '/^OverclockEnable =/c\OverclockEnable = True' /storage/.config/dolphin-emu/Dolphin.ini
- fi
- if [ "$CLOCK" = "4" ]
- then
+ elif [ "$CLOCK" = "150" ]; then
sed -i '/^Overclock =/c\Overclock = 1.5' /storage/.config/dolphin-emu/Dolphin.ini
sed -i '/^OverclockEnable =/c\OverclockEnable = True' /storage/.config/dolphin-emu/Dolphin.ini
+ elif [ "$CLOCK" = "200" ]; then
+ sed -i '/^Overclock =/c\Overclock = 2.0' /storage/.config/dolphin-emu/Dolphin.ini
+ sed -i '/^OverclockEnable =/c\OverclockEnable = True' /storage/.config/dolphin-emu/Dolphin.ini
+ elif [ "$CLOCK" = "300" ]; then
+ sed -i '/^Overclock =/c\Overclock = 3.0' /storage/.config/dolphin-emu/Dolphin.ini
+ sed -i '/^OverclockEnable =/c\OverclockEnable = True' /storage/.config/dolphin-emu/Dolphin.ini
+ elif [ "$CLOCK" = "400" ]; then
+ sed -i '/^Overclock =/c\Overclock = 4.0' /storage/.config/dolphin-emu/Dolphin.ini
+ sed -i '/^OverclockEnable =/c\OverclockEnable = True' /storage/.config/dolphin-emu/Dolphin.ini
+ else
+ sed -i '/^OverclockEnable =/c\OverclockEnable = False' /storage/.config/dolphin-emu/Dolphin.ini
fi
#Video Backend
diff --git a/packages/emulators/standalone/drastic-sa/package.mk b/packages/emulators/standalone/drastic-sa/package.mk
index ccc69b4e07..147be2537f 100644
--- a/packages/emulators/standalone/drastic-sa/package.mk
+++ b/packages/emulators/standalone/drastic-sa/package.mk
@@ -10,7 +10,7 @@ PKG_DEPENDS_TARGET="toolchain rocknix-hotkey"
PKG_LONGDESC="Install Drastic Launcher script, will dowload bin on first run"
PKG_TOOLCHAIN="make"
-if [ "${DEVICE}" = "S922X" -a "${USE_MALI}" != "no" ]; then
+if [ "${DEVICE}" = "S922X" ]; then
PKG_DEPENDS_TARGET+=" libegl"
fi
@@ -32,26 +32,13 @@ makeinstall_target() {
post_install() {
case ${DEVICE} in
- S922X)
- if [ "${USE_MALI}" != "no" ]; then
- LIBEGL="export SDL_VIDEO_GL_DRIVER=\/usr\/lib\/egl\/libGL.so.1 SDL_VIDEO_EGL_DRIVER=\/usr\/lib\/egl\/libEGL.so.1"
- else
- LIBEGL=""
- fi
-
- HOTKEY=""
- ;;
RK3588)
- LIBEGL=""
HOTKEY="export HOTKEY="guide""
;;
*)
- LIBEGL=""
HOTKEY=""
;;
esac
- sed -e "s/@LIBEGL@/${LIBEGL}/g" \
- -i ${INSTALL}/usr/bin/start_drastic.sh
sed -e "s/@HOTKEY@/${HOTKEY}/g" \
-i ${INSTALL}/usr/bin/start_drastic.sh
}
diff --git a/packages/emulators/standalone/drastic-sa/scripts/start_drastic.sh b/packages/emulators/standalone/drastic-sa/scripts/start_drastic.sh
index 01ebed02a0..8923e2fb74 100644
--- a/packages/emulators/standalone/drastic-sa/scripts/start_drastic.sh
+++ b/packages/emulators/standalone/drastic-sa/scripts/start_drastic.sh
@@ -4,6 +4,7 @@
# Copyright (C) 2022-present JELOS (https://github.com/JustEnoughLinuxOS)
. /etc/profile
+. /etc/os-release
set_kill set "-9 drastic"
@@ -55,7 +56,17 @@ fi
cd /storage/.config/drastic/
@HOTKEY@
-@LIBEGL@
+
+# Fix for libmali gpu driver on S922X platform
+if [ "${HW_DEVICE}" = "S922X" ]; then
+ GPUDRIVER=$(/usr/bin/gpudriver)
+
+ if [ "${GPUDRIVER}" = "libmali" ]; then
+ export SDL_VIDEO_GL_DRIVER=\/usr\/lib\/egl\/libGL.so.1
+ export SDL_VIDEO_EGL_DRIVER=\/usr\/lib\/egl\/libEGL.so.1
+ fi
+fi
+
$GPTOKEYB "drastic" -c "drastic.gptk" &
./drastic "$1"
kill -9 $(pidof gptokeyb)
diff --git a/packages/emulators/standalone/duckstation-sa/package.mk b/packages/emulators/standalone/duckstation-sa/package.mk
index 76b1b7fefe..c8cee0de8a 100644
--- a/packages/emulators/standalone/duckstation-sa/package.mk
+++ b/packages/emulators/standalone/duckstation-sa/package.mk
@@ -9,14 +9,14 @@ PKG_URL="${PKG_SITE}.git"
PKG_LONGDESC="Fast PlayStation 1 emulator for x86-64/AArch32/AArch64 "
PKG_TOOLCHAIN="cmake"
-case ${TARGET_ARCH} in
- aarch64)
- PKG_VERSION="bfa792ddbff11c102521124f235ccb310cac6e6a"
- PKG_PATCH_DIRS+=" wayland/${TARGET_ARCH}"
- ;;
- x86_64)
+case ${DEVICE} in
+ AMD64|SD865)
PKG_VERSION="a45b50c3e996af823d35a6a193458532c4f4316d"
- PKG_PATCH_DIRS+=" wayland/${TARGET_ARCH}"
+ PKG_PATCH_DIRS+=" wayland"
+ ;;
+ *)
+ PKG_VERSION="bfa792ddbff11c102521124f235ccb310cac6e6a"
+ PKG_PATCH_DIRS+=" legacy"
;;
esac
@@ -72,5 +72,5 @@ makeinstall_target() {
rm -rf ${INSTALL}/usr/config/duckstation/duckstation-nogui
rm -rf ${INSTALL}/usr/config/duckstation/common-tests
- chmod +x ${INSTALL}/usr/bin/start_duckstation.sh
+ chmod +x ${INSTALL}/usr/bin/*
}
diff --git a/packages/emulators/standalone/duckstation-sa/patches/wayland/aarch64/001-path-program.patch b/packages/emulators/standalone/duckstation-sa/patches/legacy/001-path-program.patch
similarity index 100%
rename from packages/emulators/standalone/duckstation-sa/patches/wayland/aarch64/001-path-program.patch
rename to packages/emulators/standalone/duckstation-sa/patches/legacy/001-path-program.patch
diff --git a/packages/emulators/standalone/duckstation-sa/patches/wayland/aarch64/002-path-getdirectory.patch b/packages/emulators/standalone/duckstation-sa/patches/legacy/002-path-getdirectory.patch
similarity index 100%
rename from packages/emulators/standalone/duckstation-sa/patches/wayland/aarch64/002-path-getdirectory.patch
rename to packages/emulators/standalone/duckstation-sa/patches/legacy/002-path-getdirectory.patch
diff --git a/packages/emulators/standalone/duckstation-sa/patches/wayland/aarch64/003-fix-wayland-compile.patch b/packages/emulators/standalone/duckstation-sa/patches/legacy/003-fix-wayland-compile.patch
similarity index 100%
rename from packages/emulators/standalone/duckstation-sa/patches/wayland/aarch64/003-fix-wayland-compile.patch
rename to packages/emulators/standalone/duckstation-sa/patches/legacy/003-fix-wayland-compile.patch
diff --git a/packages/emulators/standalone/duckstation-sa/patches/wayland/x86_64/000-fix-build.patch b/packages/emulators/standalone/duckstation-sa/patches/wayland/000-fix-build.patch
similarity index 100%
rename from packages/emulators/standalone/duckstation-sa/patches/wayland/x86_64/000-fix-build.patch
rename to packages/emulators/standalone/duckstation-sa/patches/wayland/000-fix-build.patch
diff --git a/packages/emulators/standalone/duckstation-sa/patches/wayland/x86_64/001-path-program.patch b/packages/emulators/standalone/duckstation-sa/patches/wayland/001-path-program.patch
similarity index 100%
rename from packages/emulators/standalone/duckstation-sa/patches/wayland/x86_64/001-path-program.patch
rename to packages/emulators/standalone/duckstation-sa/patches/wayland/001-path-program.patch
diff --git a/packages/emulators/standalone/duckstation-sa/patches/wayland/x86_64/002-path-getdirectory.patch b/packages/emulators/standalone/duckstation-sa/patches/wayland/002-path-getdirectory.patch
similarity index 100%
rename from packages/emulators/standalone/duckstation-sa/patches/wayland/x86_64/002-path-getdirectory.patch
rename to packages/emulators/standalone/duckstation-sa/patches/wayland/002-path-getdirectory.patch
diff --git a/packages/emulators/standalone/duckstation-sa/scripts/cheevos_duckstation.sh b/packages/emulators/standalone/duckstation-sa/scripts/cheevos_duckstation.sh
new file mode 100644
index 0000000000..0fad8e2dab
--- /dev/null
+++ b/packages/emulators/standalone/duckstation-sa/scripts/cheevos_duckstation.sh
@@ -0,0 +1,66 @@
+#! /bin/bash
+
+# SPDX-License-Identifier: GPL-2.0-or-later
+# Copyright (C) 2022-present Hector Calvarro (https://github.com/kelvfimer)
+# Copyright (C) 2024-present ROCKNIX (https://github.com/ROCKNIX)
+
+. /etc/profile
+
+DUCK_CFG="/storage/.config/duckstation/settings.ini"
+LOG_FILE="/var/log/cheevos.log"
+
+# Extract username, password, token, if enabled, and hardcore mode from system.cfg
+username=$(get_setting "global.retroachievements.username")
+password=$(get_setting "global.retroachievements.password")
+token=$(get_setting "global.retroachievements.token")
+enabled=$(get_setting "global.retroachievements")
+hardcore=$(get_setting "global.retroachievements.hardcore")
+
+# Check if RetroAchievements are enabled in Emulation Station
+if [ ! ${enabled} = 1 ]; then
+ echo "RetroAchievements are not enabled, please turn them on in Emulation Station." > ${LOG_FILE}
+ sed -i '/\[Cheevos\]/,/^\s*$/s/Enabled =.*/Enabled = false/' ${DUCK_CFG}
+ exit 1
+fi
+
+# Check if api token is present in system.cfg
+if [ -z "${token}" ]; then
+ echo "RetroAchievements token is empty, please log in with your RetroAchievements credentials in Emulation Station." > ${LOG_FILE}
+ exit 1
+fi
+
+# Set hardcore mode
+if [ "${hardcore}" = 1 ]; then
+ hardcore="true"
+else
+ hardcore="false"
+fi
+
+# Update emulator config with RetroAchievements settings
+zcheevos=$(grep -Fx "[Cheevos]" ${DUCK_CFG})
+datets=$(date +%s%N | cut -b1-13)
+
+if [ -z "${zcheevos}" ]; then
+ sed -i "\$a [Cheevos]\nEnabled = true\nUsername = ${username}\nToken = ${token}\nLoginTimestamp = ${datets}\nChallengeMode = ${hardcore}" ${DUCK_CFG}
+else
+ sed -i '/\[Cheevos\]/,/^\s*$/s/Enabled =.*/Enabled = true/' ${DUCK_CFG}
+ if ! grep -q "^Username = " ${DUCK_CFG}; then
+ sed -i "/^\[Cheevos\]/a Username = ${username}" ${DUCK_CFG}
+ else
+ sed -i "/^\[Cheevos\]/,/^\[/{s/^Username = .*/Username = ${username}/;}" ${DUCK_CFG}
+ fi
+
+ if ! grep -q "^Token = " ${DUCK_CFG}; then
+ sed -i "/^\[Cheevos\]/a Token = ${token}" ${DUCK_CFG}
+ else
+ sed -i "/^\[Cheevos\]/,/^\[/{s/^Token = .*/Token = ${token}/;}" ${DUCK_CFG}
+ fi
+
+ if ! grep -q "^ChallengeMode = " ${DUCK_CFG}; then
+ sed -i "/^\[Cheevos\]/a ChallengeMode = ${hardcore}" ${DUCK_CFG}
+ else
+ sed -i "/^\[Cheevos\]/,/^\[/{s/^ChallengeMode = .*/ChallengeMode = ${hardcore}/;}" ${DUCK_CFG}
+ fi
+
+ sed -i "/^\[Cheevos\]/,/^\[/{s/^LoginTimestamp = .*/LoginTimestamp = ${datets}/;}" ${DUCK_CFG}
+fi
diff --git a/packages/emulators/standalone/duckstation-sa/scripts/start_duckstation.sh b/packages/emulators/standalone/duckstation-sa/scripts/start_duckstation.sh
index dc3d75ea22..1ff02fd529 100644
--- a/packages/emulators/standalone/duckstation-sa/scripts/start_duckstation.sh
+++ b/packages/emulators/standalone/duckstation-sa/scripts/start_duckstation.sh
@@ -120,6 +120,8 @@ fi
sed -i '/^VSync =/c\VSync = true' /storage/.config/duckstation/settings.ini
fi
+#Retroachievements
+/usr/bin/cheevos_duckstation.sh
#Run Duckstation
${EMUPERF} duckstation-nogui -fullscreen -settings "/storage/.config/duckstation/settings.ini" -- "${1}" > /dev/null 2>&1
diff --git a/packages/emulators/standalone/flycast-sa/config/AMD64/emu.cfg b/packages/emulators/standalone/flycast-sa/config/AMD64/emu.cfg
index ce42e97956..694047dbf3 100644
--- a/packages/emulators/standalone/flycast-sa/config/AMD64/emu.cfg
+++ b/packages/emulators/standalone/flycast-sa/config/AMD64/emu.cfg
@@ -1,6 +1,9 @@
[audio]
backend = pulse
+[config]
+rend.Resolution = 480
+
[input]
maple_sdl_joystick_0 = 0
maple_sdl_joystick_1 = 1
diff --git a/packages/emulators/standalone/flycast-sa/config/RK3326/emu.cfg b/packages/emulators/standalone/flycast-sa/config/RK3326/emu.cfg
index ce42e97956..7def526a21 100644
--- a/packages/emulators/standalone/flycast-sa/config/RK3326/emu.cfg
+++ b/packages/emulators/standalone/flycast-sa/config/RK3326/emu.cfg
@@ -1,6 +1,9 @@
[audio]
backend = pulse
+[config]
+rend.Resolution = 240
+
[input]
maple_sdl_joystick_0 = 0
maple_sdl_joystick_1 = 1
diff --git a/packages/emulators/standalone/flycast-sa/config/RK3399/emu.cfg b/packages/emulators/standalone/flycast-sa/config/RK3399/emu.cfg
index deb1f31ea2..9b66c3d516 100644
--- a/packages/emulators/standalone/flycast-sa/config/RK3399/emu.cfg
+++ b/packages/emulators/standalone/flycast-sa/config/RK3399/emu.cfg
@@ -3,6 +3,7 @@ backend = pulse
[config]
pvr.AutoSkipFrame = 2
+rend.Resolution = 480
[input]
maple_sdl_joystick_0 = 0
diff --git a/packages/emulators/standalone/flycast-sa/config/RK3588/emu.cfg b/packages/emulators/standalone/flycast-sa/config/RK3588/emu.cfg
index ce42e97956..694047dbf3 100644
--- a/packages/emulators/standalone/flycast-sa/config/RK3588/emu.cfg
+++ b/packages/emulators/standalone/flycast-sa/config/RK3588/emu.cfg
@@ -1,6 +1,9 @@
[audio]
backend = pulse
+[config]
+rend.Resolution = 480
+
[input]
maple_sdl_joystick_0 = 0
maple_sdl_joystick_1 = 1
diff --git a/packages/emulators/standalone/flycast-sa/config/SD865/emu.cfg b/packages/emulators/standalone/flycast-sa/config/SD865/emu.cfg
index 84a035fdf0..eb221fc9ef 100644
--- a/packages/emulators/standalone/flycast-sa/config/SD865/emu.cfg
+++ b/packages/emulators/standalone/flycast-sa/config/SD865/emu.cfg
@@ -4,6 +4,7 @@ backend = pulse
[config]
pvr.AutoSkipFrame = 2
pvr.rend = 0
+rend.Resolution = 480
[input]
maple_sdl_joystick_0 = 0
diff --git a/packages/emulators/standalone/flycast-sa/package.mk b/packages/emulators/standalone/flycast-sa/package.mk
index 8a6560d3be..705246093c 100644
--- a/packages/emulators/standalone/flycast-sa/package.mk
+++ b/packages/emulators/standalone/flycast-sa/package.mk
@@ -3,7 +3,7 @@
# Copyright (C) 2022-present JELOS (https://github.com/JustEnoughLinuxOS)
PKG_NAME="flycast-sa"
-PKG_VERSION="8e96590065fd23cd37a0d426d30f4aef6587d860"
+PKG_VERSION="8108e63907fc676f898522d20c762a4de3cd2a21" #v2.4
PKG_LICENSE="GPLv2"
PKG_SITE="https://github.com/flyinghead/flycast"
PKG_URL="${PKG_SITE}.git"
@@ -41,5 +41,5 @@ makeinstall_target() {
cp ${PKG_DIR}/scripts/* ${INSTALL}/usr/bin
cp -r ${PKG_DIR}/config/${DEVICE}/* ${INSTALL}/usr/config/flycast
- chmod +x ${INSTALL}/usr/bin/start_flycast.sh
+ chmod +x ${INSTALL}/usr/bin/*
}
diff --git a/packages/emulators/standalone/flycast-sa/patches/000-conf-dir.patch b/packages/emulators/standalone/flycast-sa/patches/000-conf-dir.patch
index f7dcb67af6..171694b7b5 100644
--- a/packages/emulators/standalone/flycast-sa/patches/000-conf-dir.patch
+++ b/packages/emulators/standalone/flycast-sa/patches/000-conf-dir.patch
@@ -1,52 +1,83 @@
diff --git a/core/linux-dist/main.cpp b/core/linux-dist/main.cpp
-index e970f880a..2b2567c32 100644
+index 83a18bc7..1c3ac548 100644
--- a/core/linux-dist/main.cpp
+++ b/core/linux-dist/main.cpp
-@@ -113,9 +113,9 @@ void common_linux_setup();
+@@ -42,6 +42,10 @@ void common_linux_setup();
// $HOME/.config/flycast on linux
- std::string find_user_config_dir()
+ static std::string find_user_config_dir()
{
--#ifdef __SWITCH__
-- flycast::mkdir("/flycast", 0755);
-- return "/flycast/";
+#ifdef __unix__
+ flycast::mkdir("/storage/.config/flycast", 0755);
+ return "/storage/.config/flycast/";
- #else
++#else
std::string xdg_home;
if (nowide::getenv("XDG_CONFIG_HOME") != nullptr)
-@@ -147,9 +147,9 @@ std::string find_user_config_dir()
+ // If XDG_CONFIG_HOME is set explicitly, we'll use that instead of $HOME/.config
+@@ -65,12 +69,17 @@ static std::string find_user_config_dir()
+ }
+ // Unable to detect config dir, use the current folder
+ return ".";
++#endif
+ }
+
+ // Find the user data directory.
// $HOME/.local/share/flycast on linux
- std::string find_user_data_dir()
+ static std::string find_user_data_dir()
{
--#ifdef __SWITCH__
-- flycast::mkdir("/flycast/data", 0755);
-- return "/flycast/data/";
+#ifdef __unix__
+ flycast::mkdir("/storage/roms/dreamcast/data", 0755);
+ return "/storage/roms/dreamcast/data/";
- #else
++#else
std::string xdg_home;
if (nowide::getenv("XDG_DATA_HOME") != nullptr)
-@@ -208,8 +208,8 @@ std::vector find_system_config_dirs()
- {
- std::vector dirs;
+ // If XDG_DATA_HOME is set explicitly, we'll use that instead of $HOME/.local/share
+@@ -94,6 +103,7 @@ static std::string find_user_data_dir()
+ }
+ // Unable to detect data dir, use the current folder
+ return ".";
++#endif
+ }
--#ifdef __SWITCH__
-- dirs.push_back("/flycast/");
+ static void addDirectoriesFromPath(std::vector& dirs, const std::string& path, const std::string& suffix)
+@@ -123,8 +133,10 @@ static void addDirectoriesFromPath(std::vector& dirs, const std::st
+ // .
+ static std::vector find_system_config_dirs()
+ {
+- std::vector dirs;
+-
++ std::vector dirs;
+#ifdef __unix__
+ dirs.push_back("/storage/.config/flycast/");
- #else
++#else
std::string xdg_home;
if (nowide::getenv("XDG_CONFIG_HOME") != nullptr)
-@@ -256,8 +256,8 @@ std::vector find_system_data_dirs()
+ // If XDG_CONFIG_HOME is set explicitly, we'll use that instead of $HOME/.config
+@@ -150,7 +162,7 @@ static std::vector find_system_config_dirs()
+ dirs.push_back("/etc/xdg/flycast/");
+ }
+ dirs.push_back("./");
+-
++#endif
+ return dirs;
+ }
+
+@@ -168,7 +180,9 @@ static std::vector find_system_config_dirs()
+ static std::vector find_system_data_dirs()
{
std::vector dirs;
-
--#ifdef __SWITCH__
-- dirs.push_back("/flycast/data/");
+-
+#ifdef __unix__
+ dirs.push_back("/storage/roms/dreamcast/data/");
- #else
++#else
std::string xdg_home;
if (nowide::getenv("XDG_DATA_HOME") != nullptr)
+ // If XDG_DATA_HOME is set explicitly, we'll use that instead of $HOME/.local/share
+@@ -200,7 +214,7 @@ static std::vector find_system_data_dirs()
+ }
+ dirs.push_back("./");
+ dirs.push_back("data/");
+-
++#endif
+ return dirs;
+ }
+
diff --git a/packages/emulators/standalone/flycast-sa/scripts/cheevos_flycast.sh b/packages/emulators/standalone/flycast-sa/scripts/cheevos_flycast.sh
new file mode 100644
index 0000000000..a080355582
--- /dev/null
+++ b/packages/emulators/standalone/flycast-sa/scripts/cheevos_flycast.sh
@@ -0,0 +1,63 @@
+#! /bin/bash
+
+# SPDX-License-Identifier: GPL-2.0-or-later
+# Copyright (C) 2022-present Hector Calvarro (https://github.com/kelvfimer)
+# Copyright (C) 2024-present ROCKNIX (https://github.com/ROCKNIX)
+
+. /etc/profile
+
+FLYCAST_CFG="/storage/.config/flycast/emu.cfg"
+LOG_FILE="/var/log/cheevos.log"
+
+# Extract username, password, token, if enabled, and hardcore mode from system.cfg
+username=$(get_setting "global.retroachievements.username")
+password=$(get_setting "global.retroachievements.password")
+token=$(get_setting "global.retroachievements.token")
+enabled=$(get_setting "global.retroachievements")
+hardcore=$(get_setting "global.retroachievements.hardcore")
+
+# Check if RetroAchievements are enabled in Emulation Station
+if [ ! ${enabled} = 1 ]; then
+ echo "RetroAchievements are not enabled, please turn them on in Emulation Station." > ${LOG_FILE}
+ sed -i '/\[achievements\]/,/^\s*$/s/Enabled =.*/Enabled = no/' ${FLYCAST_CFG}
+ exit 1
+fi
+
+# Check if api token is present in system.cfg
+if [ -z "${token}" ]; then
+ echo "RetroAchievements token is empty, please log in with your RetroAchievements credentials in Emulation Station." > ${LOG_FILE}
+ exit 1
+fi
+
+# Set hardcore mode
+if [ "${hardcore}" = 1 ]; then
+ hardcore="true"
+else
+ hardcore="false"
+fi
+
+# Update emulator config with RetroAchievements settings
+zcheevos=$(grep -Fx "[achievements]" ${FLYCAST_CFG})
+
+if [ -z "${zcheevos}" ]; then
+ sed -i "\$a [achievements]\nEnabled = yes\nHardcoreMode = ${hardcore}\nUserName = ${username}\nToken = ${token}" ${FLYCAST_CFG}
+else
+ sed -i '/\[achievements\]/,/^\s*$/s/Enabled =.*/Enabled = yes/' ${FLYCAST_CFG}
+ if ! grep -q "^HardcoreMode = " ${FLYCAST_CFG}; then
+ sed -i "/^\[achievements\]/a HardcoreMode = ${hardcore}" ${FLYCAST_CFG}
+ else
+ sed -i "/^\[achievements\]/,/^\[/{s/^HardcoreMode = .*/HardcoreMode = ${hardcore}/;}" ${FLYCAST_CFG}
+ fi
+
+ if ! grep -q "^UserName = " ${FLYCAST_CFG}; then
+ sed -i "/^\[achievements\]/a UserName = ${username}" ${FLYCAST_CFG}
+ else
+ sed -i "/^\[achievements\]/,/^\[/{s/^UserName = .*/UserName = ${username}/;}" ${FLYCAST_CFG}
+ fi
+
+ if ! grep -q "^Token = " ${FLYCAST_CFG}; then
+ sed -i "/^\[achievements\]/a Token = ${token}" ${FLYCAST_CFG}
+ else
+ sed -i "/^\[achievements\]/,/^\[/{s/^Token = .*/Token = ${token}/;}" ${FLYCAST_CFG}
+ fi
+fi
diff --git a/packages/emulators/standalone/flycast-sa/scripts/start_flycast.sh b/packages/emulators/standalone/flycast-sa/scripts/start_flycast.sh
index 287abc5bc5..15992321a9 100644
--- a/packages/emulators/standalone/flycast-sa/scripts/start_flycast.sh
+++ b/packages/emulators/standalone/flycast-sa/scripts/start_flycast.sh
@@ -31,8 +31,10 @@ PLATFORM=$(echo "${2}"| sed "s#^/.*/##")
ASPECT=$(get_setting aspect_ratio "${PLATFORM}" "${GAME}")
ASKIP=$(get_setting auto_frame_skip "${PLATFORM}" "${GAME}")
FPS=$(get_setting show_fps "${PLATFORM}" "${GAME}")
+IRES=$(get_setting internal_resolution "${PLATFORM}" "${GAME}")
RENDERER=$(get_setting graphics_backend "${PLATFORM}" "${GAME}")
VSYNC=$(get_setting vsync "${PLATFORM}" "${GAME}")
+CHEEVOS=$(get_setting retroachievements "${PLATFORM}" "${GAME}")
#Set the cores to use
CORES=$(get_setting "cores" "${PLATFORM}" "${GAME}")
@@ -78,6 +80,21 @@ fi
sed -i '/^pvr.AutoSkipFrame =/c\pvr.AutoSkipFrame = 2' /storage/.config/flycast/emu.cfg
fi
+ #Internal Resolution
+ if [ "$IRES" = "0" ]; then
+ sed -i '/rend.Resolution =/c\rend.Resolution = 240' /storage/.config/flycast/emu.cfg
+ elif [ "$IRES" = "2" ]; then
+ sed -i '/rend.Resolution =/c\rend.Resolution = 720' /storage/.config/flycast/emu.cfg
+ elif [ "$IRES" = "3" ]; then
+ sed -i '/rend.Resolution =/c\rend.Resolution = 960' /storage/.config/flycast/emu.cfg
+ elif [ "$IRES" = "4" ]; then
+ sed -i '/rend.Resolution =/c\rend.Resolution = 1200' /storage/.config/flycast/emu.cfg
+ elif [ "$IRES" = "5" ]; then
+ sed -i '/rend.Resolution =/c\rend.Resolution = 1440' /storage/.config/flycast/emu.cfg
+ else
+ sed -i '/rend.Resolution =/c\rend.Resolution = 480' /storage/.config/flycast/emu.cfg
+ fi
+
#Renderer
if [ "$RENDERER" = "opengl" ]
then
@@ -108,5 +125,8 @@ fi
sed -i '/^rend.vsync =/c\rend.vsync = yes' /storage/.config/flycast/emu.cfg
fi
+#Retroachievements
+/usr/bin/cheevos_flycast.sh
+
#Run flycast emulator
${EMUPERF} /usr/bin/flycast "${1}"
diff --git a/packages/emulators/standalone/lime3ds-sa/package.mk b/packages/emulators/standalone/lime3ds-sa/package.mk
index a03ded2ef3..5212c6d186 100644
--- a/packages/emulators/standalone/lime3ds-sa/package.mk
+++ b/packages/emulators/standalone/lime3ds-sa/package.mk
@@ -2,11 +2,11 @@
# Copyright (C) 2024-present ROCKNIX (https://github.com/ROCKNIX)
PKG_NAME="lime3ds-sa"
-PKG_VERSION="ff46656809278d797ff8d79514e0a1c6e57bf9be"
+PKG_VERSION="1f7247c86156a13b93e372a51ec84a9697a4a619"
PKG_LICENSE="GPL"
PKG_SITE="https://github.com/Lime3DS/Lime3DS"
PKG_URL="${PKG_SITE}.git"
-PKG_DEPENDS_TARGET="toolchain ffmpeg mesa SDL2 boost zlib libusb boost zstd control-gen"
+PKG_DEPENDS_TARGET="toolchain ffmpeg mesa SDL2 boost zlib libusb boost zstd control-gen spirv-tools"
PKG_LONGDESC="Lime3DS - Nintendo 3DS emulator"
PKG_TOOLCHAIN="cmake"
@@ -26,12 +26,14 @@ fi
PKG_CMAKE_OPTS_TARGET+="-DENABLE_QT=OFF \
-DENABLE_QT_TRANSLATION=OFF \
-DENABLE_SDL2=ON \
- -DCITRA_WARNINGS_AS_ERRORS=OFF \
+ -DENABLE_SDL2_FRONTEND=ON \
+ -DENABLE_TESTS=OFF \
+ -DENABLE_DEDICATED_ROOM=OFF \
-DUSE_DISCORD_PRESENCE=OFF"
makeinstall_target() {
mkdir -p ${INSTALL}/usr/bin
- cp ${PKG_BUILD}/.${TARGET_NAME}/bin/MinSizeRel/lime ${INSTALL}/usr/bin/lime3ds
+ cp ${PKG_BUILD}/.${TARGET_NAME}/bin/MinSizeRel/lime3ds ${INSTALL}/usr/bin/lime3ds
cp ${PKG_DIR}/scripts/* ${INSTALL}/usr/bin
mkdir -p ${INSTALL}/usr/config/lime3ds
diff --git a/packages/emulators/standalone/lime3ds-sa/patches/000-fix-sdl.patch b/packages/emulators/standalone/lime3ds-sa/patches/000-fix-sdl.patch
index dffb90c1bc..2cc161ebb3 100644
--- a/packages/emulators/standalone/lime3ds-sa/patches/000-fix-sdl.patch
+++ b/packages/emulators/standalone/lime3ds-sa/patches/000-fix-sdl.patch
@@ -1,8 +1,8 @@
-diff --git a/src/lime/emu_window/emu_window_sdl2_vk.cpp b/src/lime/emu_window/emu_window_sdl2_vk.cpp
-index d6c103955..9402fd9f0 100644
---- a/src/lime/emu_window/emu_window_sdl2_vk.cpp
-+++ b/src/lime/emu_window/emu_window_sdl2_vk.cpp
-@@ -24,7 +24,7 @@ EmuWindow_SDL2_VK::EmuWindow_SDL2_VK(bool fullscreen, bool is_secondary)
+diff --git a/src/lime_sdl/emu_window/emu_window_sdl2_vk.cpp b/src/lime_sdl/emu_window/emu_window_sdl2_vk.cpp
+index 5837e330..fdb7deab 100644
+--- a/src/lime_sdl/emu_window/emu_window_sdl2_vk.cpp
++++ b/src/lime_sdl/emu_window/emu_window_sdl2_vk.cpp
+@@ -24,7 +24,7 @@ EmuWindow_SDL2_VK::EmuWindow_SDL2_VK(Core::System& system, bool fullscreen, bool
SDL_WINDOWPOS_UNDEFINED, // x position
SDL_WINDOWPOS_UNDEFINED, // y position
Core::kScreenTopWidth, Core::kScreenTopHeight + Core::kScreenBottomHeight,
diff --git a/packages/emulators/standalone/lime3ds-sa/patches/001-lime3ds.patch b/packages/emulators/standalone/lime3ds-sa/patches/001-lime3ds.patch
index 4ef0b56b7e..d067128324 100644
--- a/packages/emulators/standalone/lime3ds-sa/patches/001-lime3ds.patch
+++ b/packages/emulators/standalone/lime3ds-sa/patches/001-lime3ds.patch
@@ -1,13 +1,20 @@
diff --git a/src/common/common_paths.h b/src/common/common_paths.h
-index f12eedb..1390abe 100644
+index de3db35f..83022e5b 100644
--- a/src/common/common_paths.h
+++ b/src/common/common_paths.h
-@@ -29,7 +29,7 @@
+@@ -25,11 +25,11 @@
+ #define APPLE_EMU_DATA_DIR "Library" DIR_SEP "Application Support" DIR_SEP "Lime3DS"
+ #define LEGACY_APPLE_EMU_DATA_DIR "Library" DIR_SEP "Application Support" DIR_SEP "Citra"
// For compatibility with XDG paths.
- #define EMU_DATA_DIR "citra-emu"
+-#define EMU_DATA_DIR "lime3ds-emu"
+-#define LEGACY_EMU_DATA_DIR "citra-emu"
++#define EMU_DATA_DIR "lime3ds"
++#define LEGACY_EMU_DATA_DIR "lime3ds"
#else
--#define EMU_DATA_DIR "citra-emu"
+-#define EMU_DATA_DIR "lime3ds-emu"
+-#define LEGACY_EMU_DATA_DIR "citra-emu"
+#define EMU_DATA_DIR "lime3ds"
++#define LEGACY_EMU_DATA_DIR "lime3ds"
#endif
#endif
@@ -20,20 +27,11 @@ index f12eedb..1390abe 100644
#define CHEATS_DIR "cheats"
#define DLL_DIR "external_dlls"
#define SHADER_DIR "shaders"
-@@ -55,7 +55,7 @@
-
- // Filenames
- // Files in the directory returned by GetUserPath(UserPath::LogDir)
--#define LOG_FILE "citra_log.txt"
-+#define LOG_FILE "lime3ds.log"
-
- // Files in the directory returned by GetUserPath(UserPath::ConfigDir)
- #define EMU_CONFIG "emu.ini"
diff --git a/src/common/file_util.cpp b/src/common/file_util.cpp
-index cda752e..c645390 100644
+index bf70d5cf..f6a191af 100644
--- a/src/common/file_util.cpp
+++ b/src/common/file_util.cpp
-@@ -819,7 +819,7 @@ void SetUserPath(const std::string& path) {
+@@ -834,7 +834,7 @@ void SetUserPath(const std::string& path) {
g_paths.emplace(UserPath::NANDDir, user_path + NAND_DIR DIR_SEP);
g_paths.emplace(UserPath::SysDataDir, user_path + SYSDATA_DIR DIR_SEP);
// TODO: Put the logs in a better location for each OS
diff --git a/packages/emulators/standalone/lime3ds-sa/scripts/start_lime3ds.sh b/packages/emulators/standalone/lime3ds-sa/scripts/start_lime3ds.sh
index d9451297fa..1393e502c3 100755
--- a/packages/emulators/standalone/lime3ds-sa/scripts/start_lime3ds.sh
+++ b/packages/emulators/standalone/lime3ds-sa/scripts/start_lime3ds.sh
@@ -26,14 +26,15 @@ ln -sf /storage/roms/3ds/lime3ds/nand /storage/.config/lime3ds/nand
# Emulation Station Features
GAME=$(echo "${1}"| sed "s#^/.*/##")
-CPU=$(get_setting cpu_speed 3ds "${GAME}")
-EMOUSE=$(get_setting emulate_mouse 3ds "${GAME}")
-RENDERER=$(get_setting graphics_backend 3ds "${GAME}")
-RES=$(get_setting resolution_scale 3ds "${GAME}")
-ROTATE=$(get_setting rotate_screen 3ds "${GAME}")
-SLAYOUT=$(get_setting screen_layout 3ds "${GAME}")
-CSHADERS=$(get_setting cache_shaders 3ds "${GAME}")
-HSHADERS=$(get_setting hardware_shaders 3ds "${GAME}")
+PLATFORM=$(echo "${2}"| sed "s#^/.*/##")
+CPU=$(get_setting cpu_speed "${PLATFORM}" "${GAME}")
+EMOUSE=$(get_setting emulate_mouse "${PLATFORM}" "${GAME}")
+RENDERER=$(get_setting graphics_backend "${PLATFORM}" "${GAME}")
+RES=$(get_setting resolution_scale "${PLATFORM}" "${GAME}")
+ROTATE=$(get_setting rotate_screen "${PLATFORM}" "${GAME}")
+SLAYOUT=$(get_setting screen_layout "${PLATFORM}" "${GAME}")
+CSHADERS=$(get_setting cache_shaders "${PLATFORM}" "${GAME}")
+HSHADERS=$(get_setting hardware_shaders "${PLATFORM}" "${GAME}")
# CPU Underclock
@@ -67,8 +68,8 @@ esac
# Hardware Shaders
case "${HSHADERS}" in
- 0) sed -i '/use_hw_shader =/c\use_hw_shader = 0' /storage/.config/lime3ds/sdl2-config.ini;;
1) sed -i '/use_hw_shader =/c\use_hw_shader = 1' /storage/.config/lime3ds/sdl2-config.ini;;
+ *) sed -i '/use_hw_shader =/c\use_hw_shader = 0' /storage/.config/lime3ds/sdl2-config.ini;;
esac
# Screen Layout
diff --git a/packages/emulators/standalone/mednafen/package.mk b/packages/emulators/standalone/mednafen/package.mk
index 7c962463bf..24ecca86a0 100644
--- a/packages/emulators/standalone/mednafen/package.mk
+++ b/packages/emulators/standalone/mednafen/package.mk
@@ -9,10 +9,6 @@ PKG_URL="${PKG_SITE}/releases/files/${PKG_NAME}-${PKG_VERSION}.tar.xz"
PKG_DEPENDS_TARGET="toolchain SDL2 flac"
PKG_TOOLCHAIN="configure"
-if [ "${DEVICE}" = "S922X" ]; then
- PKG_DEPENDS_TARGET+=" libegl"
-fi
-
pre_configure_target() {
export CFLAGS="${CFLAGS} -flto -fipa-pta"
@@ -30,10 +26,6 @@ case ${DEVICE} in
--disable-ss \
--disable-psx"
;;
- S922X)
- DISABLED_MODULES+=" --disable-ss \
- --disable-snes"
- ;;
RK3588*)
DISABLED_MODULES+=" --disable-snes"
;;
@@ -53,16 +45,3 @@ makeinstall_target() {
mkdir -p ${INSTALL}/usr/config/${PKG_NAME}
cp ${PKG_DIR}/config/common/* ${INSTALL}/usr/config/${PKG_NAME}
}
-
-post_install() {
- case ${DEVICE} in
- S922X)
- LIBEGL="export SDL_VIDEO_GL_DRIVER=\/usr\/lib\/egl\/libGL.so.1 SDL_VIDEO_EGL_DRIVER=\/usr\/lib\/egl\/libEGL.so.1"
- ;;
- *)
- LIBEGL=""
- ;;
- esac
- sed -e "s/@LIBEGL@/${LIBEGL}/g" \
- -i ${INSTALL}/usr/bin/start_mednafen.sh
-}
diff --git a/packages/emulators/standalone/mednafen/scripts/start_mednafen.sh b/packages/emulators/standalone/mednafen/scripts/start_mednafen.sh
index 35b66e5249..412c70254f 100644
--- a/packages/emulators/standalone/mednafen/scripts/start_mednafen.sh
+++ b/packages/emulators/standalone/mednafen/scripts/start_mednafen.sh
@@ -224,5 +224,4 @@ then
fi
#Run mednafen
-@LIBEGL@
${EMUPERF} /usr/bin/mednafen -force_module ${CORE} -${CORE}.stretch ${STRETCH:="aspect"} -${CORE}.shader ${SHADER:="ipsharper"} ${FEATURES_CMDLINE} "${1}"
diff --git a/packages/emulators/standalone/ppsspp-sa/package.mk b/packages/emulators/standalone/ppsspp-sa/package.mk
index 08884e7f92..23328bb4da 100644
--- a/packages/emulators/standalone/ppsspp-sa/package.mk
+++ b/packages/emulators/standalone/ppsspp-sa/package.mk
@@ -5,7 +5,7 @@
PKG_NAME="ppsspp-sa"
PKG_SITE="https://github.com/hrydgard/ppsspp"
PKG_URL="${PKG_SITE}.git"
-PKG_VERSION="d479b74ed9c3e321bc3735da29bc125a2ac3b9b2" # 1.17.1
+PKG_VERSION="cbd19c967fdac12b76a76b42b3ce9ff6cdac1e71" # v1.18.0
CHEAT_DB_VERSION="31d7280ed5bad454df5bddc6d953de84f34c9ef5" # Update cheat.db (26/06/2024)
PKG_LICENSE="GPLv2"
PKG_DEPENDS_TARGET="toolchain ffmpeg libzip SDL2 zlib zip"
diff --git a/packages/emulators/standalone/ppsspp-sa/patches/004-set-paths.patch b/packages/emulators/standalone/ppsspp-sa/patches/004-set-paths.patch
index 1806a233a4..afa693ca9f 100644
--- a/packages/emulators/standalone/ppsspp-sa/patches/004-set-paths.patch
+++ b/packages/emulators/standalone/ppsspp-sa/patches/004-set-paths.patch
@@ -1,7 +1,8 @@
-diff -rupN ppsspp.orig/Core/Config.cpp ppsspp/Core/Config.cpp
---- ppsspp.orig/Core/Config.cpp 2024-04-24 20:38:11.626645801 +0000
-+++ ppsspp/Core/Config.cpp 2024-04-24 20:39:14.719993428 +0000
-@@ -1075,10 +1075,10 @@ void Config::Reload() {
+diff --git a/Core/Config.cpp b/Core/Config.cpp
+index fac682fb84..e1db1d288a 100644
+--- a/Core/Config.cpp
++++ b/Core/Config.cpp
+@@ -1091,7 +1091,7 @@ void Config::Reload() {
void Config::UpdateIniLocation(const char *iniFileName, const char *controllerIniFilename) {
const bool useIniFilename = iniFileName != nullptr && strlen(iniFileName) > 0;
const char *ppssppIniFilename = IsVREnabled() ? "ppssppvr.ini" : "ppsspp.ini";
@@ -9,14 +10,11 @@ diff -rupN ppsspp.orig/Core/Config.cpp ppsspp/Core/Config.cpp
+ iniFilename_ = Path("/storage/.config/ppsspp/PSP/SYSTEM") / ppssppIniFilename;
const bool useControllerIniFilename = controllerIniFilename != nullptr && strlen(controllerIniFilename) > 0;
const char *controlsIniFilename = IsVREnabled() ? "controlsvr.ini" : "controls.ini";
-- controllerIniFilename_ = FindConfigFile(useControllerIniFilename ? controllerIniFilename : controlsIniFilename);
-+ controllerIniFilename_ = Path("/storage/.config/ppsspp/PSP/SYSTEM") / controlsIniFilename;
- }
-
- bool Config::LoadAppendedConfig() {
-diff -rupN ppsspp.orig/Core/SaveState.cpp ppsspp/Core/SaveState.cpp
---- ppsspp.orig/Core/SaveState.cpp 2024-04-24 20:38:11.630645887 +0000
-+++ ppsspp/Core/SaveState.cpp 2024-04-24 21:19:52.911740439 +0000
+ controllerIniFilename_ = FindConfigFile(useControllerIniFilename ? controllerIniFilename : controlsIniFilename);
+diff --git a/Core/SaveState.cpp b/Core/SaveState.cpp
+index 49ac73c0af..a2c254c18b 100644
+--- a/Core/SaveState.cpp
++++ b/Core/SaveState.cpp
@@ -532,7 +532,7 @@ namespace SaveState
Path GenerateSaveSlotFilename(const Path &gameFilename, int slot, const char *extension)
@@ -26,10 +24,11 @@ diff -rupN ppsspp.orig/Core/SaveState.cpp ppsspp/Core/SaveState.cpp
return GetSysDirectory(DIRECTORY_SAVESTATE) / filename;
}
-diff -rupN ppsspp.orig/Core/System.cpp ppsspp/Core/System.cpp
---- ppsspp.orig/Core/System.cpp 2024-04-24 20:38:11.630645887 +0000
-+++ ppsspp/Core/System.cpp 2024-04-24 21:23:17.568309911 +0000
-@@ -659,14 +659,8 @@ std::string PSP_GetLoading() {
+diff --git a/Core/System.cpp b/Core/System.cpp
+index 155c3bbba3..8fbb29dd19 100644
+--- a/Core/System.cpp
++++ b/Core/System.cpp
+@@ -651,14 +651,8 @@ std::string PSP_GetLoading() {
}
Path GetSysDirectory(PSPDirectories directoryType) {
@@ -46,19 +45,19 @@ diff -rupN ppsspp.orig/Core/System.cpp ppsspp/Core/System.cpp
switch (directoryType) {
case DIRECTORY_PSP:
-@@ -676,9 +670,9 @@ Path GetSysDirectory(PSPDirectories dire
+@@ -668,9 +662,9 @@ Path GetSysDirectory(PSPDirectories directoryType) {
case DIRECTORY_GAME:
return pspDirectory / "GAME";
case DIRECTORY_SAVEDATA:
- return pspDirectory / "SAVEDATA";
-+ return Path("/storage/roms/psp/");
++ return Path("/storage/roms/psp/");
case DIRECTORY_SCREENSHOT:
- return pspDirectory / "SCREENSHOT";
+ return Path("/storage/roms/screenshots/");
case DIRECTORY_SYSTEM:
return pspDirectory / "SYSTEM";
case DIRECTORY_PAUTH:
-@@ -688,7 +682,7 @@ Path GetSysDirectory(PSPDirectories dire
+@@ -680,7 +674,7 @@ Path GetSysDirectory(PSPDirectories directoryType) {
case DIRECTORY_DUMP:
return pspDirectory / "SYSTEM/DUMP";
case DIRECTORY_SAVESTATE:
@@ -67,7 +66,7 @@ diff -rupN ppsspp.orig/Core/System.cpp ppsspp/Core/System.cpp
case DIRECTORY_CACHE:
return pspDirectory / "SYSTEM/CACHE";
case DIRECTORY_TEXTURES:
-@@ -710,11 +704,11 @@ Path GetSysDirectory(PSPDirectories dire
+@@ -702,11 +696,11 @@ Path GetSysDirectory(PSPDirectories directoryType) {
return pspDirectory / "themes";
case DIRECTORY_MEMSTICK_ROOT:
@@ -75,16 +74,17 @@ diff -rupN ppsspp.orig/Core/System.cpp ppsspp/Core/System.cpp
+ return memStickDirectory;
// Just return the memory stick root if we run into some sort of problem.
default:
- ERROR_LOG(FILESYS, "Unknown directory type.");
+ ERROR_LOG(Log::FileSystem, "Unknown directory type.");
- return g_Config.memStickDirectory;
+ return pspDirectory;
}
}
-diff -rupN ppsspp.orig/SDL/SDLJoystick.cpp ppsspp/SDL/SDLJoystick.cpp
---- ppsspp.orig/SDL/SDLJoystick.cpp 2024-04-24 20:38:11.650646325 +0000
-+++ ppsspp/SDL/SDLJoystick.cpp 2024-04-24 20:53:07.224922822 +0000
-@@ -25,7 +25,7 @@ SDLJoystick::SDLJoystick(bool init_SDL )
+diff --git a/SDL/SDLJoystick.cpp b/SDL/SDLJoystick.cpp
+index a0d206ee21..3bdca780b6 100644
+--- a/SDL/SDLJoystick.cpp
++++ b/SDL/SDLJoystick.cpp
+@@ -25,7 +25,7 @@ SDLJoystick::SDLJoystick(bool init_SDL ) : registeredAsEventHandler(false) {
SDL_Init(SDL_INIT_JOYSTICK | SDL_INIT_VIDEO | SDL_INIT_GAMECONTROLLER);
}
@@ -93,7 +93,7 @@ diff -rupN ppsspp.orig/SDL/SDLJoystick.cpp ppsspp/SDL/SDLJoystick.cpp
cout << "loading control pad mappings from " << dbPath << ": ";
size_t size;
-@@ -34,7 +34,7 @@ SDLJoystick::SDLJoystick(bool init_SDL )
+@@ -34,7 +34,7 @@ SDLJoystick::SDLJoystick(bool init_SDL ) : registeredAsEventHandler(false) {
SDL_RWops *rw = SDL_RWFromConstMem(mappingData, size);
// 1 to free the rw after use
if (SDL_GameControllerAddMappingsFromRW(rw, 1) == -1) {
@@ -102,10 +102,11 @@ diff -rupN ppsspp.orig/SDL/SDLJoystick.cpp ppsspp/SDL/SDLJoystick.cpp
}
delete[] mappingData;
} else {
-diff -rupN ppsspp.orig/UI/NativeApp.cpp ppsspp/UI/NativeApp.cpp
---- ppsspp.orig/UI/NativeApp.cpp 2024-04-24 20:38:11.658646498 +0000
-+++ ppsspp/UI/NativeApp.cpp 2024-04-24 20:53:07.224922822 +0000
-@@ -390,7 +390,7 @@ void NativeInit(int argc, const char *ar
+diff --git a/UI/NativeApp.cpp b/UI/NativeApp.cpp
+index 272ff35e16..91a58b5691 100644
+--- a/UI/NativeApp.cpp
++++ b/UI/NativeApp.cpp
+@@ -390,7 +390,7 @@ void NativeInit(int argc, const char *argv[], const char *savegame_dir, const ch
g_VFS.Register("", new DirectoryReader(File::GetExeDirectory()));
g_VFS.Register("", new DirectoryReader(Path("/usr/local/share/ppsspp/assets")));
g_VFS.Register("", new DirectoryReader(Path("/usr/local/share/games/ppsspp/assets")));
@@ -114,7 +115,7 @@ diff -rupN ppsspp.orig/UI/NativeApp.cpp ppsspp/UI/NativeApp.cpp
g_VFS.Register("", new DirectoryReader(Path("/usr/share/games/ppsspp/assets")));
#endif
-@@ -495,7 +495,7 @@ void NativeInit(int argc, const char *ar
+@@ -495,7 +495,7 @@ void NativeInit(int argc, const char *argv[], const char *savegame_dir, const ch
else // Just in case
config = "./config";
diff --git a/packages/emulators/standalone/ppsspp-sa/scripts/cheevos_ppsspp.sh b/packages/emulators/standalone/ppsspp-sa/scripts/cheevos_ppsspp.sh
new file mode 100644
index 0000000000..28362226d3
--- /dev/null
+++ b/packages/emulators/standalone/ppsspp-sa/scripts/cheevos_ppsspp.sh
@@ -0,0 +1,62 @@
+#! /bin/bash
+
+# SPDX-License-Identifier: GPL-2.0-or-later
+# Copyright (C) 2022-present Hector Calvarro (https://github.com/kelvfimer)
+# Copyright (C) 2024-present ROCKNIX (https://github.com/ROCKNIX)
+
+. /etc/profile
+
+PPSSPP_ACHIEVEMENTS="/storage/.config/ppsspp/PSP/SYSTEM/ppsspp_retroachievements.dat"
+PPSSPP_INI="/storage/.config/ppsspp/PSP/SYSTEM/ppsspp.ini"
+LOG_FILE="/var/log/cheevos.log"
+
+# Extract username, password, token, if enabled, and hardcore mode from system.cfg
+username=$(get_setting "global.retroachievements.username")
+password=$(get_setting "global.retroachievements.password")
+token=$(get_setting "global.retroachievements.token")
+enabled=$(get_setting "global.retroachievements")
+hardcore=$(get_setting "global.retroachievements.hardcore")
+
+# Check if RetroAchievements are enabled in Emulation Station
+if [ ! ${enabled} = 1 ]; then
+ echo "RetroAchievements are not enabled, please turn them on in Emulation Station." > ${LOG_FILE}
+ sed -i '/^AchievementsEnable =/c\AchievementsEnable = False' ${PPSSPP_INI}
+ exit 1
+fi
+
+# Check if api token is present in system.cfg
+if [ -z "${token}" ]; then
+ echo "RetroAchievements token is empty, please log in with your RetroAchievements credentials in Emulation Station." > ${LOG_FILE}
+ exit 1
+fi
+
+echo "${token}" > ${PPSSPP_ACHIEVEMENTS}
+
+# Set hardcore mode
+if [ "${hardcore}" = 1 ]; then
+ hardcore="True"
+else
+ hardcore="False"
+fi
+
+# Update emulator config with RetroAchievements settings
+zcheevos=$(grep -Fx "[Achievements]" ${PPSSPP_INI})
+echo "${token}" > ${PPSSPP_ACHIEVEMENTS}
+
+if [ -z "${zcheevos}" ]
+then
+ echo -e "[Achievements]\nAchievementsEnable = True\nAchievementsUserName = ${username}\nAchievementsChallengeMode = ${hardcore}" >> ${PPSSPP_INI}
+else
+ sed -i '/^AchievementsEnable =/c\AchievementsEnable = True' ${PPSSPP_INI}
+ if ! grep -q "^AchievementsUserName = " ${PPSSPP_INI}; then
+ sed -i "/^\[Achievements\]/a AchievementsUserName = ${username}" ${PPSSPP_INI}
+ else
+ sed -i "/^\[Achievements\]/,/^\[/{s/^AchievementsUserName = .*/AchievementsUserName = ${username}/;}" ${PPSSPP_INI}
+ fi
+
+ if ! grep -q "^AchievementsChallengeMode = " ${PPSSPP_INI}; then
+ sed -i "/^\[Achievements\]/a AchievementsChallengeMode = ${hardcore}" ${PPSSPP_INI}
+ else
+ sed -i "/^\[Achievements\]/,/^\[/{s/^AchievementsChallengeMode = .*/AchievementsChallengeMode = ${hardcore}/;}" ${PPSSPP_INI}
+ fi
+fi
diff --git a/packages/emulators/standalone/ppsspp-sa/scripts/start_ppsspp.sh b/packages/emulators/standalone/ppsspp-sa/scripts/start_ppsspp.sh
index 8ad301be1d..2f984d4783 100755
--- a/packages/emulators/standalone/ppsspp-sa/scripts/start_ppsspp.sh
+++ b/packages/emulators/standalone/ppsspp-sa/scripts/start_ppsspp.sh
@@ -128,6 +128,9 @@ fi
sed -i '/^VSyncInterval =/c\VSyncInterval = True' ${CONF_DIR}/${PPSSPP_INI}
fi
+#Retroachievements
+/usr/bin/cheevos_ppsspp.sh
+
ARG=${1//[\\]/}
set_kill set "-9 ppsspp"
diff --git a/packages/emulators/standalone/xemu-sa/config/AMD64/xemu.toml b/packages/emulators/standalone/xemu-sa/config/AMD64/xemu.toml
index de57c67fa8..9934355976 100644
--- a/packages/emulators/standalone/xemu-sa/config/AMD64/xemu.toml
+++ b/packages/emulators/standalone/xemu-sa/config/AMD64/xemu.toml
@@ -1,22 +1,22 @@
[general]
+skip_boot_anim = true
show_welcome = false
+screenshot_dir = '/storage/roms/screenshots'
+
+[input.bindings]
+port1 = '3000000de280000ff11000001000000'
[display.quality]
surface_scale = 1
[display.window]
fullscreen_on_startup = true
-
-[general.misc]
-skip_boot_anim = true
-
-[input.bindings]
-port1 = '03000000de280000ff11000001000000'
+vsync = true
[display.ui]
show_menubar = false
-scale = 2
fit = 'stretch'
+aspect_ratio = 'native'
[sys]
mem_limit = '128'
@@ -26,3 +26,8 @@ bootrom_path = '/storage/roms/bios/xemu/bios/mcpx_1.0.bin'
flashrom_path = '/storage/roms/bios/xemu/bios/Complex_4627v1.03.bin'
eeprom_path = '/storage/roms/bios/xemu/eeprom/eeprom.bin'
hdd_path = '/storage/roms/bios/xemu/hdd/xbox_hdd.qcow2'
+
+[perf]
+cache_shaders = false
+override_clockspeed = false
+cpu_clockspeed_scale = 1.000000
diff --git a/packages/emulators/standalone/xemu-sa/config/SD865/xemu.toml b/packages/emulators/standalone/xemu-sa/config/SD865/xemu.toml
index 30c81cf6c3..20b1c04337 100644
--- a/packages/emulators/standalone/xemu-sa/config/SD865/xemu.toml
+++ b/packages/emulators/standalone/xemu-sa/config/SD865/xemu.toml
@@ -1,15 +1,22 @@
[general]
+skip_boot_anim = true
show_welcome = false
+screenshot_dir = '/storage/roms/screenshots'
[input.bindings]
port1 = '0000f353526574726f696420506f6300'
+[display.quality]
+surface_scale = 1
+
[display.window]
fullscreen_on_startup = true
+vsync = true
[display.ui]
show_menubar = false
fit = 'stretch'
+aspect_ratio = 'native'
[sys]
mem_limit = '128'
@@ -19,3 +26,8 @@ bootrom_path = '/storage/roms/bios/xemu/bios/mcpx_1.0.bin'
flashrom_path = '/storage/roms/bios/xemu/bios/Complex_4627v1.03.bin'
eeprom_path = '/storage/roms/bios/xemu/eeprom/eeprom.bin'
hdd_path = '/storage/roms/bios/xemu/hdd/xbox_hdd.qcow2'
+
+[perf]
+cache_shaders = false
+override_clockspeed = false
+cpu_clockspeed_scale = 1.000000
diff --git a/packages/emulators/standalone/xemu-sa/package.mk b/packages/emulators/standalone/xemu-sa/package.mk
index 8a809682ab..ce7b62b394 100644
--- a/packages/emulators/standalone/xemu-sa/package.mk
+++ b/packages/emulators/standalone/xemu-sa/package.mk
@@ -1,44 +1,100 @@
# SPDX-License-Identifier: GPL-2.0-or-later
-# Copyright (C) 2022-present JELOS (https://github.com/JustEnoughLinuxOS)
+# Copyright (C) 2024-present ROCKNIX (https://github.com/ROCKNIX)
PKG_NAME="xemu-sa"
-PKG_VERSION="v0.7.127"
+PKG_VERSION="2f8981168143a11e3001cab724975c73f24bcc4b"
PKG_LICENSE="GPLv3"
PKG_SITE="https://github.com/xemu-project/xemu"
-PKG_DEPENDS_TARGET="toolchain libthai gtk3 libsamplerate libpcap atk"
-PKG_LONGDESC="Xbox Emulator appimage"
-PKG_TOOLCHAIN="manual"
+PKG_URL="${PKG_SITE}.git"
+PKG_DEPENDS_TARGET="toolchain libthai gtk3 libsamplerate libpcap atk SDL2 Python3 zlib pixman bzip2 openssl xwayland"
+PKG_LONGDESC="Xemu - A free and open-source application that emulates the original Microsoft Xbox game console."
+PKG_TOOLCHAIN="make"
+PKG_PATCH_DIRS+="${DEVICE}"
+
+# Open source xbox hdd image
PKG_HDD_IMAGE="https://github.com/xqemu/xqemu-hdd-image/releases/download/v1.0/xbox_hdd.qcow2.zip"
-case ${TARGET_ARCH} in
- x86_64)
- PKG_URL="${PKG_SITE}/releases/download/${PKG_VERSION}/xemu-${PKG_VERSION}-x86_64.AppImage"
- ;;
- aarch64)
- PKG_URL="https://github.com/ROCKNIX/packages/raw/refs/heads/main/xemu-aarch64.tar.gz"
- ;;
-esac
+if [ "${OPENGL_SUPPORT}" = "yes" ]; then
+ PKG_DEPENDS_TARGET+=" ${OPENGL} glu libglvnd"
+fi
+
+if [ "${VULKAN_SUPPORT}" = "yes" ]
+then
+ PKG_DEPENDS_TARGET+=" vulkan-loader vulkan-headers"
+fi
+
+pre_configure_target() {
+ # xemu does not build with NDEBUG
+ export TARGET_CFLAGS=$(echo ${TARGET_CFLAGS} | sed -e "s|-DNDEBUG||g")
+ export TARGET_CXXFLAGS=$(echo ${TARGET_CXXFLAGS} | sed -e "s|-DNDEBUG||g")
+ export CFLAGS=$(echo ${CFLAGS} | sed -e "s|-DNDEBUG||g")
+ export CXXFLAGS=$(echo ${CXXFLAGS} | sed -e "s|-DNDEBUG||g")
+}
+
+make_target() {
+ cd ${PKG_BUILD}
+ ./build.sh --cross-prefix="${TARGET_PREFIX}" \
+ --host="${TARGET_NAME}" \
+ --enable-sdl \
+ --enable-opengl \
+ --enable-trace-backends="nop" \
+ --disable-kvm \
+ --disable-xen \
+ --disable-werror \
+ --disable-curl \
+ --disable-vnc \
+ --disable-vnc-sasl \
+ --disable-docs \
+ --disable-tools \
+ --disable-guest-agent \
+ --disable-tpm \
+ --disable-live-block-migration \
+ --disable-rdma \
+ --disable-replication \
+ --disable-capstone \
+ --disable-libiscsi \
+ --disable-spice \
+ --disable-user \
+ --disable-stack-protector \
+ --disable-glusterfs \
+ --disable-curses \
+ --disable-gnutls \
+ --disable-nettle \
+ --disable-gcrypt \
+ --disable-crypto-afalg \
+ --disable-virglrenderer \
+ --disable-vhost-net \
+ --disable-vhost-crypto \
+ --disable-vhost-user \
+ --disable-virtfs \
+ --disable-snappy \
+ --disable-bzip2 \
+ --disable-vde \
+ --disable-seccomp \
+ --disable-numa \
+ --disable-lzo \
+ --disable-smartcard \
+ --disable-usb-redir \
+ --disable-bochs \
+ --disable-cloop \
+ --disable-dmg \
+ --disable-vdi \
+ --disable-vvfat \
+ --disable-qcow1 \
+ --disable-qed \
+ --disable-parallels \
+ --disable-hax \
+ --disable-hvf \
+ --disable-whpx \
+ --with-default-devices \
+ --disable-renderdoc
+}
makeinstall_target() {
- # Redefine strip or the AppImage will be stripped rendering it unusable.
- export STRIP=true
mkdir -p ${INSTALL}/usr/bin
+ cp -p ${PKG_BUILD}/dist/xemu ${INSTALL}/usr/bin
cp -rf ${PKG_DIR}/scripts/start_xemu.sh ${INSTALL}/usr/bin
- mkdir -p ${INSTALL}/usr/share/xemu-sa
- case ${TARGET_ARCH} in
- x86_64)
- cp ${PKG_BUILD}/${PKG_NAME}-${PKG_VERSION}.AppImage ${INSTALL}/usr/share/xemu-sa/${PKG_NAME}
- APPIMAGE=${PKG_NAME}
- ;;
- aarch64)
- cp -r ${PKG_BUILD}/xemu ${INSTALL}/usr/share/xemu-sa/
- cp -r ${PKG_BUILD}/license.txt ${INSTALL}/usr/share/xemu-sa/
- APPIMAGE="xemu"
- ;;
- esac
- sed -e "s/@APPIMAGE@/${APPIMAGE}/g" -i ${INSTALL}/usr/bin/start_xemu.sh
chmod 755 ${INSTALL}/usr/bin/*
- chmod 755 ${INSTALL}/usr/share/xemu-sa/*
mkdir -p ${INSTALL}/usr/config/xemu
cp -rf ${PKG_DIR}/config/${DEVICE}/xemu.toml ${INSTALL}/usr/config/xemu
diff --git a/packages/emulators/standalone/xemu-sa/patches/000-internal-clock-speed.patch b/packages/emulators/standalone/xemu-sa/patches/000-internal-clock-speed.patch
new file mode 100644
index 0000000000..bb9093eb77
--- /dev/null
+++ b/packages/emulators/standalone/xemu-sa/patches/000-internal-clock-speed.patch
@@ -0,0 +1,912 @@
+From 472804b8b90d3dc8f026ddbc403fe556d1c00789 Mon Sep 17 00:00:00 2001
+From: Spidy123222 <64176728+Spidy123222@users.noreply.github.com>
+Date: Thu, 29 Jun 2023 10:12:51 -0700
+Subject: [PATCH 01/20] Add Overclock setting and Override setting (#6)
+
+* Adds Overclock setting inside x86.c
+
+* Add clockspeed and override toggle in config_spec.yml
+
+* Implement Override Toggle
+
+* Add clock speed value to cpu
+
+* Add Changes to UI
+---
+ config_spec.yml | 6 ++++++
+ hw/i386/x86.c | 17 +++++++++++++++--
+ ui/xui/main-menu.cc | 9 +++++++++
+ 3 files changed, 30 insertions(+), 2 deletions(-)
+
+diff --git a/config_spec.yml b/config_spec.yml
+index b858606e685..5f8d9b064b0 100644
+--- a/config_spec.yml
++++ b/config_spec.yml
+@@ -253,3 +253,9 @@ perf:
+ cache_shaders:
+ type: bool
+ default: true
++ override_clockspeed:
++ type: bool
++ default: false
++ cpu_clockspeed:
++ type: number
++ default: 0.5
+diff --git a/hw/i386/x86.c b/hw/i386/x86.c
+index 018fbb8b0ae..dce494e2749 100644
+--- a/hw/i386/x86.c
++++ b/hw/i386/x86.c
+@@ -59,6 +59,9 @@
+ #include CONFIG_DEVICES
+ #include "kvm/kvm_i386.h"
+
++#include "ui/xemu-settings.h"
++
++
+ /* Physical Address of PVH entry point read from kernel ELF NOTE */
+ static size_t pvh_start_addr;
+
+@@ -532,8 +535,18 @@ static long get_file_size(FILE *f)
+ uint64_t cpu_get_tsc(CPUX86State *env)
+ {
+ #ifdef XBOX
+- return muldiv64(qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL), 733333333,
+- NANOSECONDS_PER_SECOND);
++ int DEFAULT_CPU_CLOCK = 733333333; /* 733333333 hz */
++ float clockOutput;
++ float OVERCLOCK_VALUE = g_config.perf.cpu_clockspeed; /* 0.5 is 100% */
++ float PERCENTAGE_OUTPUT = OVERCLOCK_VALUE * 2;
++
++ if (g_config.perf.override_clockspeed) {
++ float clockOutput = DEFAULT_CPU_CLOCK * PERCENTAGE_OUTPUT;
++ return muldiv64(qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL), clockOutput, NANOSECONDS_PER_SECOND);
++ } else {
++ float clockOutput = DEFAULT_CPU_CLOCK;
++ return muldiv64(qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL), clockOutput, NANOSECONDS_PER_SECOND);
++ }
+ #else
+ return cpus_get_elapsed_ticks();
+ #endif
+diff --git a/ui/xui/main-menu.cc b/ui/xui/main-menu.cc
+index 75b88cafb6e..adef1a24443 100644
+--- a/ui/xui/main-menu.cc
++++ b/ui/xui/main-menu.cc
+@@ -66,6 +66,15 @@ void MainMenuGeneralView::Draw()
+ Toggle("Cache shaders to disk", &g_config.perf.cache_shaders,
+ "Reduce stutter in games by caching previously generated shaders");
+
++ Toggle("Emulated CPU clock override", &g_config.perf.override_clockspeed,
++ "Enables to override default CPU clock speed");
++
++ char buf[32];
++ snprintf(buf, sizeof(buf), "Clock Speed (%d%%)",
++ (int)(g_config.perf.cpu_clockspeed * 200));
++ Slider("Virtual CPU clock", &g_config.perf.cpu_clockspeed, buf);
++
++
+ SectionTitle("Miscellaneous");
+ Toggle("Skip startup animation", &g_config.general.skip_boot_anim,
+ "Skip the full Xbox boot animation sequence");
+
+From 371c430ca07149a89e47cef885c16bce2c5f38a5 Mon Sep 17 00:00:00 2001
+From: Spidy123222 <64176728+Spidy123222@users.noreply.github.com>
+Date: Thu, 29 Jun 2023 17:44:45 -0700
+Subject: [PATCH 02/20] Block reports using override toggle
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+This adds a disable feature for when having the override toggle enabled to prevent bad reports. This also grey’s out the send button and tells a message that it’s not allowed.
+---
+ ui/xui/compat.cc | 12 +++++++++++-
+ 1 file changed, 11 insertions(+), 1 deletion(-)
+
+diff --git a/ui/xui/compat.cc b/ui/xui/compat.cc
+index d0405389f53..c9f47ae63b9 100644
+--- a/ui/xui/compat.cc
++++ b/ui/xui/compat.cc
+@@ -206,6 +206,11 @@ void CompatibilityReporter::Draw()
+ ImGui::SetCursorPosX(ImGui::GetWindowWidth()-(120+10)*g_viewport_mgr.m_scale);
+
+ ImGui::SetItemDefaultFocus();
++ if (g_config.perf.override_clockspeed)
++ {
++ ImGui::PushItemFlag(ImGuiItemFlags_Disabled, true);
++ ImGui::PushStyleVar(ImGuiStyleVar_Alpha, ImGui::GetStyle().Alpha * 0.5f);
++ }
+ if (ImGui::Button("Send", ImVec2(120*g_viewport_mgr.m_scale, 0))) {
+ did_send = true;
+ send_result = report.Send();
+@@ -213,7 +218,12 @@ void CompatibilityReporter::Draw()
+ is_open = false;
+ }
+ }
+-
++ if (g_config.perf.override_clockspeed)
++ {
++ ImGui::Text("Reports using Emulated CPU clock override is not allowed.");
++ ImGui::PopItemFlag();
++ ImGui::PopStyleVar();
++ }
+ ImGui::End();
+ }
+
+
+From 241ca872b74600e5acc8a7506e94085b1df93a31 Mon Sep 17 00:00:00 2001
+From: Spidy123222 <64176728+Spidy123222@users.noreply.github.com>
+Date: Thu, 29 Jun 2023 17:48:03 -0700
+Subject: [PATCH 03/20] Update hw/i386/x86.c
+
+Co-authored-by: antangelo
+---
+ hw/i386/x86.c | 8 +++-----
+ 1 file changed, 3 insertions(+), 5 deletions(-)
+
+diff --git a/hw/i386/x86.c b/hw/i386/x86.c
+index dce494e2749..2b2727e6cce 100644
+--- a/hw/i386/x86.c
++++ b/hw/i386/x86.c
+@@ -540,13 +540,11 @@ uint64_t cpu_get_tsc(CPUX86State *env)
+ float OVERCLOCK_VALUE = g_config.perf.cpu_clockspeed; /* 0.5 is 100% */
+ float PERCENTAGE_OUTPUT = OVERCLOCK_VALUE * 2;
+
++ float cpu_clock_hz = 733333333;
+ if (g_config.perf.override_clockspeed) {
+- float clockOutput = DEFAULT_CPU_CLOCK * PERCENTAGE_OUTPUT;
+- return muldiv64(qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL), clockOutput, NANOSECONDS_PER_SECOND);
+- } else {
+- float clockOutput = DEFAULT_CPU_CLOCK;
+- return muldiv64(qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL), clockOutput, NANOSECONDS_PER_SECOND);
++ cpu_clock_hz *= clock_multiplier;
+ }
++ return muldiv64(qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL), cpu_clock_hz, NANOSECONDS_PER_SECOND);
+ #else
+ return cpus_get_elapsed_ticks();
+ #endif
+
+From 08f9ec0eb913fc74dd67c861065a440e63bdf657 Mon Sep 17 00:00:00 2001
+From: Spidy123222 <64176728+Spidy123222@users.noreply.github.com>
+Date: Thu, 29 Jun 2023 18:07:03 -0700
+Subject: [PATCH 04/20] Refine code
+
+---
+ hw/i386/x86.c | 13 ++++++-------
+ 1 file changed, 6 insertions(+), 7 deletions(-)
+
+diff --git a/hw/i386/x86.c b/hw/i386/x86.c
+index 2b2727e6cce..52b766aff32 100644
+--- a/hw/i386/x86.c
++++ b/hw/i386/x86.c
+@@ -59,8 +59,9 @@
+ #include CONFIG_DEVICES
+ #include "kvm/kvm_i386.h"
+
++#ifdef XBOX
+ #include "ui/xemu-settings.h"
+-
++#endif
+
+ /* Physical Address of PVH entry point read from kernel ELF NOTE */
+ static size_t pvh_start_addr;
+@@ -535,14 +536,12 @@ static long get_file_size(FILE *f)
+ uint64_t cpu_get_tsc(CPUX86State *env)
+ {
+ #ifdef XBOX
+- int DEFAULT_CPU_CLOCK = 733333333; /* 733333333 hz */
+- float clockOutput;
+- float OVERCLOCK_VALUE = g_config.perf.cpu_clockspeed; /* 0.5 is 100% */
+- float PERCENTAGE_OUTPUT = OVERCLOCK_VALUE * 2;
+-
++ float clockOutput;
++ float clock_multiplier = g_config.perf.cpu_clockspeed * 2;
+ float cpu_clock_hz = 733333333;
++
+ if (g_config.perf.override_clockspeed) {
+- cpu_clock_hz *= clock_multiplier;
++ cpu_clock_hz *= clock_multiplier;
+ }
+ return muldiv64(qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL), cpu_clock_hz, NANOSECONDS_PER_SECOND);
+ #else
+
+From 4e6af2f77f2a3c1daf861974902c35fdbb824ea4 Mon Sep 17 00:00:00 2001
+From: Spidy123222 <64176728+Spidy123222@users.noreply.github.com>
+Date: Thu, 29 Jun 2023 18:24:42 -0700
+Subject: [PATCH 05/20] Remove blank variable
+
+---
+ hw/i386/x86.c | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/hw/i386/x86.c b/hw/i386/x86.c
+index 52b766aff32..20ec0856f80 100644
+--- a/hw/i386/x86.c
++++ b/hw/i386/x86.c
+@@ -536,7 +536,6 @@ static long get_file_size(FILE *f)
+ uint64_t cpu_get_tsc(CPUX86State *env)
+ {
+ #ifdef XBOX
+- float clockOutput;
+ float clock_multiplier = g_config.perf.cpu_clockspeed * 2;
+ float cpu_clock_hz = 733333333;
+
+
+From 62375177bbd143ccdc0007a31494eb23d0492b7b Mon Sep 17 00:00:00 2001
+From: Spidy123222 <64176728+Spidy123222@users.noreply.github.com>
+Date: Thu, 29 Jun 2023 19:21:12 -0700
+Subject: [PATCH 06/20] Make numbers to float.
+
+---
+ hw/i386/x86.c | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/hw/i386/x86.c b/hw/i386/x86.c
+index 20ec0856f80..5211d310fb7 100644
+--- a/hw/i386/x86.c
++++ b/hw/i386/x86.c
+@@ -536,12 +536,13 @@ static long get_file_size(FILE *f)
+ uint64_t cpu_get_tsc(CPUX86State *env)
+ {
+ #ifdef XBOX
+- float clock_multiplier = g_config.perf.cpu_clockspeed * 2;
+- float cpu_clock_hz = 733333333;
++ float clock_multiplier = g_config.perf.cpu_clockspeed * 2.0;
++ float cpu_clock_hz = 733333333.0;
+
+ if (g_config.perf.override_clockspeed) {
+ cpu_clock_hz *= clock_multiplier;
+ }
++ printf(cpu_clock_hz)
+ return muldiv64(qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL), cpu_clock_hz, NANOSECONDS_PER_SECOND);
+ #else
+ return cpus_get_elapsed_ticks();
+
+From baf3d8f584a84dfaf4ddee7da65cec675bdfb5fa Mon Sep 17 00:00:00 2001
+From: Spidy123222 <64176728+Spidy123222@users.noreply.github.com>
+Date: Thu, 29 Jun 2023 19:37:18 -0700
+Subject: [PATCH 07/20] Add print for multiplier
+
+---
+ hw/i386/x86.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/hw/i386/x86.c b/hw/i386/x86.c
+index 5211d310fb7..f5c51830aa8 100644
+--- a/hw/i386/x86.c
++++ b/hw/i386/x86.c
+@@ -541,6 +541,7 @@ uint64_t cpu_get_tsc(CPUX86State *env)
+
+ if (g_config.perf.override_clockspeed) {
+ cpu_clock_hz *= clock_multiplier;
++ printf(clock_multiplier)
+ }
+ printf(cpu_clock_hz)
+ return muldiv64(qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL), cpu_clock_hz, NANOSECONDS_PER_SECOND);
+
+From 349f9ad299e59580f813eed6c8f625212488b7bd Mon Sep 17 00:00:00 2001
+From: Spidy123222 <64176728+Spidy123222@users.noreply.github.com>
+Date: Thu, 29 Jun 2023 19:40:33 -0700
+Subject: [PATCH 08/20] Fix formatting
+
+---
+ hw/i386/x86.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/hw/i386/x86.c b/hw/i386/x86.c
+index f5c51830aa8..1ffc2988552 100644
+--- a/hw/i386/x86.c
++++ b/hw/i386/x86.c
+@@ -541,9 +541,9 @@ uint64_t cpu_get_tsc(CPUX86State *env)
+
+ if (g_config.perf.override_clockspeed) {
+ cpu_clock_hz *= clock_multiplier;
+- printf(clock_multiplier)
++ printf(clock_multiplier);
+ }
+- printf(cpu_clock_hz)
++ printf(cpu_clock_hz);
+ return muldiv64(qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL), cpu_clock_hz, NANOSECONDS_PER_SECOND);
+ #else
+ return cpus_get_elapsed_ticks();
+
+From 30f5771cbfc0ba8c1971536bcf08eabe6e76c2a9 Mon Sep 17 00:00:00 2001
+From: Spidy123222 <64176728+Spidy123222@users.noreply.github.com>
+Date: Fri, 30 Jun 2023 20:57:52 -0700
+Subject: [PATCH 09/20] Remove printf
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Some reason before print was added it wasn’t working on my end and apparently it started working some reason. Might of been a compile issue.
+---
+ hw/i386/x86.c | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/hw/i386/x86.c b/hw/i386/x86.c
+index 1ffc2988552..1e64c748093 100644
+--- a/hw/i386/x86.c
++++ b/hw/i386/x86.c
+@@ -541,9 +541,7 @@ uint64_t cpu_get_tsc(CPUX86State *env)
+
+ if (g_config.perf.override_clockspeed) {
+ cpu_clock_hz *= clock_multiplier;
+- printf(clock_multiplier);
+ }
+- printf(cpu_clock_hz);
+ return muldiv64(qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL), cpu_clock_hz, NANOSECONDS_PER_SECOND);
+ #else
+ return cpus_get_elapsed_ticks();
+
+From 552c5b96f53a87817bc0c5904871c3355a72ee1e Mon Sep 17 00:00:00 2001
+From: Spidy123222 <64176728+Spidy123222@users.noreply.github.com>
+Date: Fri, 30 Jun 2023 22:36:21 -0700
+Subject: [PATCH 10/20] Add mhz to slider
+
+* Add MHz to slider to be able to see the frequency.
+---
+ ui/xui/main-menu.cc | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/ui/xui/main-menu.cc b/ui/xui/main-menu.cc
+index adef1a24443..b76babe8282 100644
+--- a/ui/xui/main-menu.cc
++++ b/ui/xui/main-menu.cc
+@@ -70,8 +70,8 @@ void MainMenuGeneralView::Draw()
+ "Enables to override default CPU clock speed");
+
+ char buf[32];
+- snprintf(buf, sizeof(buf), "Clock Speed (%d%%)",
+- (int)(g_config.perf.cpu_clockspeed * 200));
++ snprintf(buf, sizeof(buf), "Clock Speed %d%% (%.2f MHz)",
++ (int)(g_config.perf.cpu_clockspeed * 200), (733333333.0 * g_config.perf.cpu_clockspeed * 2.0)/1000000);
+ Slider("Virtual CPU clock", &g_config.perf.cpu_clockspeed, buf);
+
+
+
+From 2286db6f5e5bc01b5d43154d65b7bae0ad125bea Mon Sep 17 00:00:00 2001
+From: Spidy123222 <64176728+Spidy123222@users.noreply.github.com>
+Date: Sat, 1 Jul 2023 01:21:35 -0700
+Subject: [PATCH 11/20] Snap Slider
+
+This snaps the slider to use default clockspeed if it is in 100% or very close to it.
+---
+ ui/xui/main-menu.cc | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/ui/xui/main-menu.cc b/ui/xui/main-menu.cc
+index b76babe8282..addf09552ed 100644
+--- a/ui/xui/main-menu.cc
++++ b/ui/xui/main-menu.cc
+@@ -70,10 +70,14 @@ void MainMenuGeneralView::Draw()
+ "Enables to override default CPU clock speed");
+
+ char buf[32];
++
++
++
+ snprintf(buf, sizeof(buf), "Clock Speed %d%% (%.2f MHz)",
+ (int)(g_config.perf.cpu_clockspeed * 200), (733333333.0 * g_config.perf.cpu_clockspeed * 2.0)/1000000);
+ Slider("Virtual CPU clock", &g_config.perf.cpu_clockspeed, buf);
+
++ if ((g_config.perf.cpu_clockspeed-0.495)*(g_config.perf.cpu_clockspeed-0.505) <= 0) {g_config.perf.cpu_clockspeed = 0.5;}
+
+ SectionTitle("Miscellaneous");
+ Toggle("Skip startup animation", &g_config.general.skip_boot_anim,
+
+From 06c643a580f7819d0717e7d934d3c53355ca1a7d Mon Sep 17 00:00:00 2001
+From: spidy123222
+Date: Sun, 9 Jul 2023 23:23:47 +0000
+Subject: [PATCH 12/20] remove 2x multiply
+
+---
+ hw/i386/x86.c | 4 ++--
+ ui/xui/main-menu.cc | 3 +--
+ 2 files changed, 3 insertions(+), 4 deletions(-)
+
+diff --git a/hw/i386/x86.c b/hw/i386/x86.c
+index 1e64c748093..88cdd6f0785 100644
+--- a/hw/i386/x86.c
++++ b/hw/i386/x86.c
+@@ -536,8 +536,8 @@ static long get_file_size(FILE *f)
+ uint64_t cpu_get_tsc(CPUX86State *env)
+ {
+ #ifdef XBOX
+- float clock_multiplier = g_config.perf.cpu_clockspeed * 2.0;
+- float cpu_clock_hz = 733333333.0;
++ float clock_multiplier = g_config.perf.cpu_clockspeed;
++ int cpu_clock_hz = 733333333;
+
+ if (g_config.perf.override_clockspeed) {
+ cpu_clock_hz *= clock_multiplier;
+diff --git a/ui/xui/main-menu.cc b/ui/xui/main-menu.cc
+index addf09552ed..d2119cc1999 100644
+--- a/ui/xui/main-menu.cc
++++ b/ui/xui/main-menu.cc
+@@ -73,8 +73,7 @@ void MainMenuGeneralView::Draw()
+
+
+
+- snprintf(buf, sizeof(buf), "Clock Speed %d%% (%.2f MHz)",
+- (int)(g_config.perf.cpu_clockspeed * 200), (733333333.0 * g_config.perf.cpu_clockspeed * 2.0)/1000000);
++ snprintf(buf, sizeof(buf), "Clock Speed %d%% (%.2f MHz)", (int)(g_config.perf.cpu_clockspeed * 100), (733333333 * g_config.perf.cpu_clockspeed)/1000000);
+ Slider("Virtual CPU clock", &g_config.perf.cpu_clockspeed, buf);
+
+ if ((g_config.perf.cpu_clockspeed-0.495)*(g_config.perf.cpu_clockspeed-0.505) <= 0) {g_config.perf.cpu_clockspeed = 0.5;}
+
+From e0ef52d7cb70012c9e69d0b2c04d9282415419d0 Mon Sep 17 00:00:00 2001
+From: Spidy123222 <64176728+Spidy123222@users.noreply.github.com>
+Date: Wed, 19 Jul 2023 15:49:46 -0700
+Subject: [PATCH 13/20] Add max, minimum, gamepad speed Overloading to slider.
+ (#14)
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+This adds a minimum and maximum and gamepad speed values to change the behavior of the slider.
+
+This change included separating slider value and the properties value for the actual setting because increasing the sliders clamp also keeps the slider handle in the right position and if increased it will allow outside of the slider range. So using some math I was able to make the slider keep its range while also making the value change appropriately.
+
+Adding gamepad speed allowed for better fine control of the slider for certain sliders if needed. Minimum and maximum is value ranges that can be set when making a slider. In this commit I also slightly adjusted the notch when hitting 100% so that the gamepad can escape it. This also has been tested with audio to work like before and can even increase the range it can do even if audio won’t go higher but just proves that it Infact changes the range.
+---
+ ui/xui/main-menu.cc | 13 +++++++++----
+ ui/xui/widgets.cc | 16 +++++++++-------
+ ui/xui/widgets.hh | 2 +-
+ 3 files changed, 19 insertions(+), 12 deletions(-)
+
+diff --git a/ui/xui/main-menu.cc b/ui/xui/main-menu.cc
+index d2119cc1999..acaec50190a 100644
+--- a/ui/xui/main-menu.cc
++++ b/ui/xui/main-menu.cc
+@@ -70,13 +70,15 @@ void MainMenuGeneralView::Draw()
+ "Enables to override default CPU clock speed");
+
+ char buf[32];
+-
++ float min = 0.01;
++ float max = 2;
++ float gpspeed = 0.01;
+
+
+ snprintf(buf, sizeof(buf), "Clock Speed %d%% (%.2f MHz)", (int)(g_config.perf.cpu_clockspeed * 100), (733333333 * g_config.perf.cpu_clockspeed)/1000000);
+- Slider("Virtual CPU clock", &g_config.perf.cpu_clockspeed, buf);
++ Slider("Virtual CPU clock", &g_config.perf.cpu_clockspeed, min , max, gpspeed, buf);
+
+- if ((g_config.perf.cpu_clockspeed-0.495)*(g_config.perf.cpu_clockspeed-0.505) <= 0) {g_config.perf.cpu_clockspeed = 0.5;}
++ if ((g_config.perf.cpu_clockspeed-0.999)*(g_config.perf.cpu_clockspeed-1.009) <= 0) {g_config.perf.cpu_clockspeed = 1;}
+
+ SectionTitle("Miscellaneous");
+ Toggle("Skip startup animation", &g_config.general.skip_boot_anim,
+@@ -549,9 +551,12 @@ void MainMenuAudioView::Draw()
+ {
+ SectionTitle("Volume");
+ char buf[32];
++ float min = 0;
++ float max = 1;
++ float gpspeed = 0.05;
+ snprintf(buf, sizeof(buf), "Limit output volume (%d%%)",
+ (int)(g_config.audio.volume_limit * 100));
+- Slider("Output volume limit", &g_config.audio.volume_limit, buf);
++ Slider("Output volume limit", &g_config.audio.volume_limit, min, max, gpspeed, buf);
+
+ SectionTitle("Quality");
+ Toggle("Real-time DSP processing", &g_config.audio.use_dsp,
+diff --git a/ui/xui/widgets.cc b/ui/xui/widgets.cc
+index 67430ecda8a..3f3c3d8a565 100644
+--- a/ui/xui/widgets.cc
++++ b/ui/xui/widgets.cc
+@@ -222,8 +222,9 @@ bool Toggle(const char *str_id, bool *v, const char *description)
+ return status;
+ }
+
+-void Slider(const char *str_id, float *v, const char *description)
++void Slider(const char *str_id, float *v, float min, float max, float gpspeed, const char *description)
+ {
++ float x = *v / max;
+ ImGui::PushStyleColor(ImGuiCol_Button, IM_COL32_BLACK_TRANS);
+
+ ImGuiStyle &style = ImGui::GetStyle();
+@@ -261,13 +262,13 @@ void Slider(const char *str_id, float *v, const char *description)
+ ImGui::IsKeyPressed(ImGuiKey_GamepadDpadLeft) ||
+ ImGui::IsKeyPressed(ImGuiKey_GamepadLStickLeft) ||
+ ImGui::IsKeyPressed(ImGuiKey_GamepadRStickLeft)) {
+- *v -= 0.05;
++ x -= gpspeed / max;
+ }
+ if (ImGui::IsKeyPressed(ImGuiKey_RightArrow) ||
+ ImGui::IsKeyPressed(ImGuiKey_GamepadDpadRight) ||
+ ImGui::IsKeyPressed(ImGuiKey_GamepadLStickRight) ||
+ ImGui::IsKeyPressed(ImGuiKey_GamepadRStickRight)) {
+- *v += 0.05;
++ x += gpspeed / max;
+ }
+
+ if (
+@@ -283,13 +284,14 @@ void Slider(const char *str_id, float *v, const char *description)
+ ImGui::NavMoveRequestCancel();
+ }
+ }
+-
++
+ if (ImGui::IsItemActive()) {
+ ImVec2 mouse = ImGui::GetMousePos();
+- *v = GetSliderValueForMousePos(mouse, slider_pos, slider_size);
++ x = GetSliderValueForMousePos(mouse, slider_pos, slider_size);
+ }
+- *v = fmax(0, fmin(*v, 1));
+- DrawSlider(*v, ImGui::IsItemHovered() || ImGui::IsItemActive(), slider_pos,
++ x = fmax(0, fmin(x, 1));
++ *v = fmax(min,fmin(x * max,max));
++ DrawSlider(x, ImGui::IsItemHovered() || ImGui::IsItemActive(), slider_pos,
+ slider_size);
+
+ ImVec2 slider_max = ImVec2(slider_pos.x + slider_size.x, slider_pos.y + slider_size.y);
+diff --git a/ui/xui/widgets.hh b/ui/xui/widgets.hh
+index 168878bb9fc..41855ae92fc 100644
+--- a/ui/xui/widgets.hh
++++ b/ui/xui/widgets.hh
+@@ -34,7 +34,7 @@ float GetSliderValueForMousePos(ImVec2 mouse, ImVec2 pos, ImVec2 size);
+ void DrawSlider(float v, bool hovered, ImVec2 pos, ImVec2 size);
+ void DrawToggle(bool enabled, bool hovered, ImVec2 pos, ImVec2 size);
+ bool Toggle(const char *str_id, bool *v, const char *description = nullptr);
+-void Slider(const char *str_id, float *v, const char *description = nullptr);
++void Slider(const char *str_id, float *v, float min, float max, float gpspeed, const char *description = nullptr);
+ bool FilePicker(const char *str_id, const char **buf, const char *filters,
+ bool dir = false);
+ void DrawComboChevron();
+
+From f23f21cb94adc392352526d902ddef665d2985df Mon Sep 17 00:00:00 2001
+From: Spidy123222 <64176728+Spidy123222@users.noreply.github.com>
+Date: Thu, 20 Jul 2023 03:53:01 -0700
+Subject: [PATCH 14/20] Cleanup Code and fix some code
+
+---
+ config_spec.yml | 2 +-
+ ui/xui/compat.cc | 5 ++---
+ ui/xui/main-menu.cc | 12 ++----------
+ ui/xui/widgets.cc | 14 +++++++-------
+ ui/xui/widgets.hh | 2 +-
+ 5 files changed, 13 insertions(+), 22 deletions(-)
+
+diff --git a/config_spec.yml b/config_spec.yml
+index 5f8d9b064b0..5db1a23f3ea 100644
+--- a/config_spec.yml
++++ b/config_spec.yml
+@@ -258,4 +258,4 @@ perf:
+ default: false
+ cpu_clockspeed:
+ type: number
+- default: 0.5
++ default: 1
+diff --git a/ui/xui/compat.cc b/ui/xui/compat.cc
+index c9f47ae63b9..4e05b11e7bc 100644
+--- a/ui/xui/compat.cc
++++ b/ui/xui/compat.cc
+@@ -218,9 +218,8 @@ void CompatibilityReporter::Draw()
+ is_open = false;
+ }
+ }
+- if (g_config.perf.override_clockspeed)
+- {
+- ImGui::Text("Reports using Emulated CPU clock override is not allowed.");
++ if (g_config.perf.override_clockspeed) {
++ ImGui::Text("Reports cannot be made while using altered CPU clock speeds");
+ ImGui::PopItemFlag();
+ ImGui::PopStyleVar();
+ }
+diff --git a/ui/xui/main-menu.cc b/ui/xui/main-menu.cc
+index acaec50190a..c8409e5c791 100644
+--- a/ui/xui/main-menu.cc
++++ b/ui/xui/main-menu.cc
+@@ -70,13 +70,8 @@ void MainMenuGeneralView::Draw()
+ "Enables to override default CPU clock speed");
+
+ char buf[32];
+- float min = 0.01;
+- float max = 2;
+- float gpspeed = 0.01;
+-
+-
+ snprintf(buf, sizeof(buf), "Clock Speed %d%% (%.2f MHz)", (int)(g_config.perf.cpu_clockspeed * 100), (733333333 * g_config.perf.cpu_clockspeed)/1000000);
+- Slider("Virtual CPU clock", &g_config.perf.cpu_clockspeed, min , max, gpspeed, buf);
++ Slider("Virtual CPU clock", &g_config.perf.cpu_clockspeed, buf,0.01f , 2.f, 0.01f);
+
+ if ((g_config.perf.cpu_clockspeed-0.999)*(g_config.perf.cpu_clockspeed-1.009) <= 0) {g_config.perf.cpu_clockspeed = 1;}
+
+@@ -551,12 +546,9 @@ void MainMenuAudioView::Draw()
+ {
+ SectionTitle("Volume");
+ char buf[32];
+- float min = 0;
+- float max = 1;
+- float gpspeed = 0.05;
+ snprintf(buf, sizeof(buf), "Limit output volume (%d%%)",
+ (int)(g_config.audio.volume_limit * 100));
+- Slider("Output volume limit", &g_config.audio.volume_limit, min, max, gpspeed, buf);
++ Slider("Output volume limit", &g_config.audio.volume_limit, buf);
+
+ SectionTitle("Quality");
+ Toggle("Real-time DSP processing", &g_config.audio.use_dsp,
+diff --git a/ui/xui/widgets.cc b/ui/xui/widgets.cc
+index 3f3c3d8a565..8a173a11215 100644
+--- a/ui/xui/widgets.cc
++++ b/ui/xui/widgets.cc
+@@ -22,6 +22,7 @@
+ #include "viewport-manager.hh"
+ #include "ui/xemu-os-utils.h"
+ #include "gl-helpers.hh"
++#include
+
+ void Separator()
+ {
+@@ -222,9 +223,8 @@ bool Toggle(const char *str_id, bool *v, const char *description)
+ return status;
+ }
+
+-void Slider(const char *str_id, float *v, float min, float max, float gpspeed, const char *description)
+-{
+- float x = *v / max;
++void Slider(const char *str_id, float *v, const char *description, float min, float max, float increment) {
++ float x = (*v - min) / (max - min);
+ ImGui::PushStyleColor(ImGuiCol_Button, IM_COL32_BLACK_TRANS);
+
+ ImGuiStyle &style = ImGui::GetStyle();
+@@ -262,13 +262,13 @@ void Slider(const char *str_id, float *v, float min, float max, float gpspeed, c
+ ImGui::IsKeyPressed(ImGuiKey_GamepadDpadLeft) ||
+ ImGui::IsKeyPressed(ImGuiKey_GamepadLStickLeft) ||
+ ImGui::IsKeyPressed(ImGuiKey_GamepadRStickLeft)) {
+- x -= gpspeed / max;
++ x -= increment / max;
+ }
+ if (ImGui::IsKeyPressed(ImGuiKey_RightArrow) ||
+ ImGui::IsKeyPressed(ImGuiKey_GamepadDpadRight) ||
+ ImGui::IsKeyPressed(ImGuiKey_GamepadLStickRight) ||
+ ImGui::IsKeyPressed(ImGuiKey_GamepadRStickRight)) {
+- x += gpspeed / max;
++ x += increment / max;
+ }
+
+ if (
+@@ -289,8 +289,8 @@ void Slider(const char *str_id, float *v, float min, float max, float gpspeed, c
+ ImVec2 mouse = ImGui::GetMousePos();
+ x = GetSliderValueForMousePos(mouse, slider_pos, slider_size);
+ }
+- x = fmax(0, fmin(x, 1));
+- *v = fmax(min,fmin(x * max,max));
++ x = std::clamp(x, 0.f, 1.f);
++ *v = x * (max - min) + min;
+ DrawSlider(x, ImGui::IsItemHovered() || ImGui::IsItemActive(), slider_pos,
+ slider_size);
+
+diff --git a/ui/xui/widgets.hh b/ui/xui/widgets.hh
+index 41855ae92fc..f698d437887 100644
+--- a/ui/xui/widgets.hh
++++ b/ui/xui/widgets.hh
+@@ -34,7 +34,7 @@ float GetSliderValueForMousePos(ImVec2 mouse, ImVec2 pos, ImVec2 size);
+ void DrawSlider(float v, bool hovered, ImVec2 pos, ImVec2 size);
+ void DrawToggle(bool enabled, bool hovered, ImVec2 pos, ImVec2 size);
+ bool Toggle(const char *str_id, bool *v, const char *description = nullptr);
+-void Slider(const char *str_id, float *v, float min, float max, float gpspeed, const char *description = nullptr);
++void Slider(const char *str_id, float *v, const char *description = nullptr, float min = 0, float max = 1, float increment = 0.05);
+ bool FilePicker(const char *str_id, const char **buf, const char *filters,
+ bool dir = false);
+ void DrawComboChevron();
+
+From a8c461fd0830db70a30ec3a6f0c0a70d65c2857d Mon Sep 17 00:00:00 2001
+From: Spidy123222 <64176728+Spidy123222@users.noreply.github.com>
+Date: Thu, 20 Jul 2023 04:04:50 -0700
+Subject: [PATCH 15/20] nit: Fix formatting
+
+---
+ ui/xui/compat.cc | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/ui/xui/compat.cc b/ui/xui/compat.cc
+index 4e05b11e7bc..6f07b77e9dd 100644
+--- a/ui/xui/compat.cc
++++ b/ui/xui/compat.cc
+@@ -206,8 +206,7 @@ void CompatibilityReporter::Draw()
+ ImGui::SetCursorPosX(ImGui::GetWindowWidth()-(120+10)*g_viewport_mgr.m_scale);
+
+ ImGui::SetItemDefaultFocus();
+- if (g_config.perf.override_clockspeed)
+- {
++ if (g_config.perf.override_clockspeed) {
+ ImGui::PushItemFlag(ImGuiItemFlags_Disabled, true);
+ ImGui::PushStyleVar(ImGuiStyleVar_Alpha, ImGui::GetStyle().Alpha * 0.5f);
+ }
+
+From 3b6f7b3e83e328072dde6a73e4f9f97dbba783df Mon Sep 17 00:00:00 2001
+From: Spidy123222 <64176728+Spidy123222@users.noreply.github.com>
+Date: Thu, 20 Jul 2023 22:45:54 -0700
+Subject: [PATCH 16/20] Update ui/xui/main-menu.cc
+
+Co-authored-by: Stanislav Motylkov
+---
+ ui/xui/main-menu.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/ui/xui/main-menu.cc b/ui/xui/main-menu.cc
+index c8409e5c791..e0303edbcc9 100644
+--- a/ui/xui/main-menu.cc
++++ b/ui/xui/main-menu.cc
+@@ -71,7 +71,7 @@ void MainMenuGeneralView::Draw()
+
+ char buf[32];
+ snprintf(buf, sizeof(buf), "Clock Speed %d%% (%.2f MHz)", (int)(g_config.perf.cpu_clockspeed * 100), (733333333 * g_config.perf.cpu_clockspeed)/1000000);
+- Slider("Virtual CPU clock", &g_config.perf.cpu_clockspeed, buf,0.01f , 2.f, 0.01f);
++ Slider("Virtual CPU clock", &g_config.perf.cpu_clockspeed, buf, 0.01f, 2.f, 0.01f);
+
+ if ((g_config.perf.cpu_clockspeed-0.999)*(g_config.perf.cpu_clockspeed-1.009) <= 0) {g_config.perf.cpu_clockspeed = 1;}
+
+
+From 8a7d2a84630f1c9adced3e59b387a94dac9a0506 Mon Sep 17 00:00:00 2001
+From: Spidy123222 <64176728+Spidy123222@users.noreply.github.com>
+Date: Sat, 22 Jul 2023 02:58:04 -0700
+Subject: [PATCH 17/20] Fix readability and use fabs
+
+---
+ ui/xui/main-menu.cc | 4 +++-
+ ui/xui/widgets.cc | 2 +-
+ 2 files changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/ui/xui/main-menu.cc b/ui/xui/main-menu.cc
+index e0303edbcc9..1bf016fbfc3 100644
+--- a/ui/xui/main-menu.cc
++++ b/ui/xui/main-menu.cc
+@@ -73,7 +73,9 @@ void MainMenuGeneralView::Draw()
+ snprintf(buf, sizeof(buf), "Clock Speed %d%% (%.2f MHz)", (int)(g_config.perf.cpu_clockspeed * 100), (733333333 * g_config.perf.cpu_clockspeed)/1000000);
+ Slider("Virtual CPU clock", &g_config.perf.cpu_clockspeed, buf, 0.01f, 2.f, 0.01f);
+
+- if ((g_config.perf.cpu_clockspeed-0.999)*(g_config.perf.cpu_clockspeed-1.009) <= 0) {g_config.perf.cpu_clockspeed = 1;}
++ if (fabs(g_config.perf.cpu_clockspeed - 1.f) <= 0.0099f) {
++ g_config.perf.cpu_clockspeed = 1;
++ }
+
+ SectionTitle("Miscellaneous");
+ Toggle("Skip startup animation", &g_config.general.skip_boot_anim,
+diff --git a/ui/xui/widgets.cc b/ui/xui/widgets.cc
+index 8a173a11215..d8e930bca8a 100644
+--- a/ui/xui/widgets.cc
++++ b/ui/xui/widgets.cc
+@@ -284,7 +284,7 @@ void Slider(const char *str_id, float *v, const char *description, float min, fl
+ ImGui::NavMoveRequestCancel();
+ }
+ }
+-
++
+ if (ImGui::IsItemActive()) {
+ ImVec2 mouse = ImGui::GetMousePos();
+ x = GetSliderValueForMousePos(mouse, slider_pos, slider_size);
+
+From 1f3f9e3499075fbab6c249572cb185364f857076 Mon Sep 17 00:00:00 2001
+From: Spidy123222 <64176728+Spidy123222@users.noreply.github.com>
+Date: Sat, 22 Jul 2023 18:49:27 -0700
+Subject: [PATCH 18/20] Align text and button in compatibility page
+
+Co-authored-by: antangelo
+---
+ ui/xui/compat.cc | 10 +++++++---
+ 1 file changed, 7 insertions(+), 3 deletions(-)
+
+diff --git a/ui/xui/compat.cc b/ui/xui/compat.cc
+index 6f07b77e9dd..063f1b07bdf 100644
+--- a/ui/xui/compat.cc
++++ b/ui/xui/compat.cc
+@@ -203,13 +203,17 @@ void CompatibilityReporter::Draw()
+ ImGui::SameLine();
+ }
+
+- ImGui::SetCursorPosX(ImGui::GetWindowWidth()-(120+10)*g_viewport_mgr.m_scale);
+-
+- ImGui::SetItemDefaultFocus();
+ if (g_config.perf.override_clockspeed) {
+ ImGui::PushItemFlag(ImGuiItemFlags_Disabled, true);
+ ImGui::PushStyleVar(ImGuiStyleVar_Alpha, ImGui::GetStyle().Alpha * 0.5f);
++
++ ImGui::Text("Reports cannot be made while using altered CPU clock speeds");
++ ImGui::SameLine();
+ }
++
++ ImGui::SetCursorPosX(ImGui::GetWindowWidth()-(120+10)*g_viewport_mgr.m_scale);
++
++ ImGui::SetItemDefaultFocus();
+ if (ImGui::Button("Send", ImVec2(120*g_viewport_mgr.m_scale, 0))) {
+ did_send = true;
+ send_result = report.Send();
+
+From 68f741b18b2bd909013b10f9feefaea7c8216cb9 Mon Sep 17 00:00:00 2001
+From: Spidy123222 <64176728+Spidy123222@users.noreply.github.com>
+Date: Sat, 22 Jul 2023 18:53:44 -0700
+Subject: [PATCH 19/20] Remove imgui text
+
+---
+ ui/xui/compat.cc | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/ui/xui/compat.cc b/ui/xui/compat.cc
+index 063f1b07bdf..34f5ac965b5 100644
+--- a/ui/xui/compat.cc
++++ b/ui/xui/compat.cc
+@@ -222,7 +222,6 @@ void CompatibilityReporter::Draw()
+ }
+ }
+ if (g_config.perf.override_clockspeed) {
+- ImGui::Text("Reports cannot be made while using altered CPU clock speeds");
+ ImGui::PopItemFlag();
+ ImGui::PopStyleVar();
+ }
+
+From 83af776c60d61a4be897051118d3c6153638f8e2 Mon Sep 17 00:00:00 2001
+From: spidy123222
+Date: Wed, 23 Aug 2023 04:57:05 +0000
+Subject: [PATCH 20/20] Fix Nit's
+
+---
+ config_spec.yml | 2 +-
+ hw/i386/x86.c | 3 +--
+ ui/xui/main-menu.cc | 8 ++++----
+ ui/xui/widgets.cc | 3 ++-
+ 4 files changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/config_spec.yml b/config_spec.yml
+index 5db1a23f3ea..b8090035d18 100644
+--- a/config_spec.yml
++++ b/config_spec.yml
+@@ -256,6 +256,6 @@ perf:
+ override_clockspeed:
+ type: bool
+ default: false
+- cpu_clockspeed:
++ cpu_clockspeed_scale:
+ type: number
+ default: 1
+diff --git a/hw/i386/x86.c b/hw/i386/x86.c
+index 88cdd6f0785..6c5e27dc02a 100644
+--- a/hw/i386/x86.c
++++ b/hw/i386/x86.c
+@@ -536,11 +536,10 @@ static long get_file_size(FILE *f)
+ uint64_t cpu_get_tsc(CPUX86State *env)
+ {
+ #ifdef XBOX
+- float clock_multiplier = g_config.perf.cpu_clockspeed;
+ int cpu_clock_hz = 733333333;
+
+ if (g_config.perf.override_clockspeed) {
+- cpu_clock_hz *= clock_multiplier;
++ cpu_clock_hz *= g_config.perf.cpu_clockspeed_scale;
+ }
+ return muldiv64(qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL), cpu_clock_hz, NANOSECONDS_PER_SECOND);
+ #else
+diff --git a/ui/xui/main-menu.cc b/ui/xui/main-menu.cc
+index 1bf016fbfc3..5c6f9dde42b 100644
+--- a/ui/xui/main-menu.cc
++++ b/ui/xui/main-menu.cc
+@@ -70,11 +70,11 @@ void MainMenuGeneralView::Draw()
+ "Enables to override default CPU clock speed");
+
+ char buf[32];
+- snprintf(buf, sizeof(buf), "Clock Speed %d%% (%.2f MHz)", (int)(g_config.perf.cpu_clockspeed * 100), (733333333 * g_config.perf.cpu_clockspeed)/1000000);
+- Slider("Virtual CPU clock", &g_config.perf.cpu_clockspeed, buf, 0.01f, 2.f, 0.01f);
++ snprintf(buf, sizeof(buf), "Clock Speed %d%% (%.2f MHz)", (int)(g_config.perf.cpu_clockspeed_scale * 100), (733333333 * g_config.perf.cpu_clockspeed_scale) / 1000000);
++ Slider("Virtual CPU clock", &g_config.perf.cpu_clockspeed_scale, buf, 0.01f, 2.f, 0.01f);
+
+- if (fabs(g_config.perf.cpu_clockspeed - 1.f) <= 0.0099f) {
+- g_config.perf.cpu_clockspeed = 1;
++ if (fabs(g_config.perf.cpu_clockspeed_scale - 1.f) <= 0.0099f) {
++ g_config.perf.cpu_clockspeed_scale = 1;
+ }
+
+ SectionTitle("Miscellaneous");
+diff --git a/ui/xui/widgets.cc b/ui/xui/widgets.cc
+index d8e930bca8a..3809a4a227f 100644
+--- a/ui/xui/widgets.cc
++++ b/ui/xui/widgets.cc
+@@ -223,7 +223,8 @@ bool Toggle(const char *str_id, bool *v, const char *description)
+ return status;
+ }
+
+-void Slider(const char *str_id, float *v, const char *description, float min, float max, float increment) {
++void Slider(const char *str_id, float *v, const char *description, float min, float max, float increment)
++{
+ float x = (*v - min) / (max - min);
+ ImGui::PushStyleColor(ImGuiCol_Button, IM_COL32_BLACK_TRANS);
+
diff --git a/packages/emulators/standalone/xemu-sa/patches/001-faster-swizzle-code.patch b/packages/emulators/standalone/xemu-sa/patches/001-faster-swizzle-code.patch
new file mode 100644
index 0000000000..9059aa4bec
--- /dev/null
+++ b/packages/emulators/standalone/xemu-sa/patches/001-faster-swizzle-code.patch
@@ -0,0 +1,159 @@
+From 2d8596cb20775e786902fc5f4113320f8efe8334 Mon Sep 17 00:00:00 2001
+From: Anthony Miles
+Date: Fri, 29 Mar 2024 22:34:28 +1300
+Subject: [PATCH] Faster swizzle/unswizzle implementation based on
+ https://fgiesen.wordpress.com/2011/01/17/texture-tiling-and-swizzling/ -
+ Increment swizzled offsets, instead of calculating them from scratch for each
+ pixel. This seems to be around 30X faster. - Add/update comments, including
+ high-level comment on what swizzle.c is for.
+
+This improves FPS in certain areas in Fable: The Lost Chapters
+---
+ hw/xbox/nv2a/swizzle.c | 93 +++++++++++++++++++++++-------------------
+ 1 file changed, 51 insertions(+), 42 deletions(-)
+
+diff --git a/hw/xbox/nv2a/swizzle.c b/hw/xbox/nv2a/swizzle.c
+index 30bf232bb83..4c900a4d7c9 100644
+--- a/hw/xbox/nv2a/swizzle.c
++++ b/hw/xbox/nv2a/swizzle.c
+@@ -26,10 +26,23 @@
+
+ #include "swizzle.h"
+
+-/* This should be pretty straightforward.
+- * It creates a bit pattern like ..zyxzyxzyx from ..xxx, ..yyy and ..zzz
+- * If there are no bits left from any component it will pack the other masks
+- * more tighly (Example: zzxzxzyx = Fewer x than z and even fewer y)
++/*
++ * Helpers for converting to and from swizzled (Z-ordered) texture formats.
++ * Swizzled textures store pixels in a more cache-friendly layout for rendering
++ * than linear textures.
++ * Width, height, and depth must be powers of two.
++ * See also:
++ * https://en.wikipedia.org/wiki/Z-order_curve
++ */
++
++/*
++ * Create masks representing the interleaving of each linear texture dimension (x, y, z).
++ * These can be used to map linear texture coordinates to a swizzled "Z" offset.
++ * For example, a 2D 8x32 texture needs 3 bits for x, and 5 bits for y:
++ * mask_x: 00010101
++ * mask_y: 11101010
++ * mask_z: 00000000
++ * for "Z": yyyxyxyx
+ */
+ static void generate_swizzle_masks(unsigned int width,
+ unsigned int height,
+@@ -49,40 +62,12 @@ static void generate_swizzle_masks(unsigned int width,
+ if (bit < depth) { z |= mask_bit; mask_bit <<= 1; done = false; }
+ bit <<= 1;
+ } while(!done);
+- assert((x ^ y ^ z) == (mask_bit - 1));
++ assert((x ^ y ^ z) == (mask_bit - 1)); /* masks are mutually exclusive */
+ *mask_x = x;
+ *mask_y = y;
+ *mask_z = z;
+ }
+
+-/* This fills a pattern with a value if your value has bits abcd and your
+- * pattern is 11010100100 this will return: 0a0b0c00d00
+- */
+-static uint32_t fill_pattern(uint32_t pattern, uint32_t value)
+-{
+- uint32_t result = 0;
+- uint32_t bit = 1;
+- while(value) {
+- if (pattern & bit) {
+- /* Copy bit to result */
+- result |= value & 1 ? bit : 0;
+- value >>= 1;
+- }
+- bit <<= 1;
+- }
+- return result;
+-}
+-
+-static unsigned int get_swizzled_offset(
+- unsigned int x, unsigned int y, unsigned int z,
+- uint32_t mask_x, uint32_t mask_y, uint32_t mask_z,
+- unsigned int bytes_per_pixel)
+-{
+- return bytes_per_pixel * (fill_pattern(mask_x, x)
+- | fill_pattern(mask_y, y)
+- | fill_pattern(mask_z, z));
+-}
+-
+ void swizzle_box(
+ const uint8_t *src_buf,
+ unsigned int width,
+@@ -96,19 +81,36 @@ void swizzle_box(
+ uint32_t mask_x, mask_y, mask_z;
+ generate_swizzle_masks(width, height, depth, &mask_x, &mask_y, &mask_z);
+
++ /*
++ * Map linear texture to swizzled texture using swizzle masks.
++ * https://fgiesen.wordpress.com/2011/01/17/texture-tiling-and-swizzling/
++ */
++
+ int x, y, z;
++ int off_z = 0;
+ for (z = 0; z < depth; z++) {
++ int off_y = 0;
+ for (y = 0; y < height; y++) {
++ int off_x = 0;
++ const uint8_t *src_tmp = src_buf + y * row_pitch;
++ uint8_t *dst_tmp = dst_buf + (off_y + off_z) * bytes_per_pixel;
+ for (x = 0; x < width; x++) {
+- const uint8_t *src = src_buf
+- + y * row_pitch + x * bytes_per_pixel;
+- uint8_t *dst = dst_buf +
+- get_swizzled_offset(x, y, z, mask_x, mask_y, mask_z,
+- bytes_per_pixel);
++ const uint8_t *src = src_tmp + x * bytes_per_pixel;
++ uint8_t *dst = dst_tmp + off_x * bytes_per_pixel;
+ memcpy(dst, src, bytes_per_pixel);
++
++ /*
++ * Increment x offset, letting the increment
++ * ripple through bits that aren't in the mask.
++ * Equivalent to:
++ * off_x = (off_x + (~mask_x + 1)) & mask_x;
++ */
++ off_x = (off_x - mask_x) & mask_x;
+ }
++ off_y = (off_y - mask_y) & mask_y;
+ }
+ src_buf += slice_pitch;
++ off_z = (off_z - mask_z) & mask_z;
+ }
+ }
+
+@@ -126,17 +128,24 @@ void unswizzle_box(
+ generate_swizzle_masks(width, height, depth, &mask_x, &mask_y, &mask_z);
+
+ int x, y, z;
++ int off_z = 0;
+ for (z = 0; z < depth; z++) {
++ int off_y = 0;
+ for (y = 0; y < height; y++) {
++ int off_x = 0;
++ const uint8_t *src_tmp = src_buf + (off_y + off_z) * bytes_per_pixel;
++ uint8_t *dst_tmp = dst_buf + y * row_pitch;
+ for (x = 0; x < width; x++) {
+- const uint8_t *src = src_buf
+- + get_swizzled_offset(x, y, z, mask_x, mask_y, mask_z,
+- bytes_per_pixel);
+- uint8_t *dst = dst_buf + y * row_pitch + x * bytes_per_pixel;
++ const uint8_t *src = src_tmp + off_x * bytes_per_pixel;
++ uint8_t *dst = dst_tmp + x * bytes_per_pixel;
+ memcpy(dst, src, bytes_per_pixel);
++
++ off_x = (off_x - mask_x) & mask_x;
+ }
++ off_y = (off_y - mask_y) & mask_y;
+ }
+ dst_buf += slice_pitch;
++ off_z = (off_z - mask_z) & mask_z;
+ }
+ }
+
diff --git a/packages/emulators/standalone/xemu-sa/patches/SD865/000-fix-face-buttons.patch b/packages/emulators/standalone/xemu-sa/patches/SD865/000-fix-face-buttons.patch
new file mode 100644
index 0000000000..6c9a90d80a
--- /dev/null
+++ b/packages/emulators/standalone/xemu-sa/patches/SD865/000-fix-face-buttons.patch
@@ -0,0 +1,55 @@
+diff --git a/hw/xbox/xid.c b/hw/xbox/xid.c
+index 86f34f7de2..935c809cfd 100644
+--- a/hw/xbox/xid.c
++++ b/hw/xbox/xid.c
+@@ -171,10 +171,10 @@ static const XIDDesc desc_xid_xbox_gamepad = {
+ .wAlternateProductIds = { 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF },
+ };
+
+-#define GAMEPAD_A 0
+-#define GAMEPAD_B 1
+-#define GAMEPAD_X 2
+-#define GAMEPAD_Y 3
++#define GAMEPAD_B 0
++#define GAMEPAD_A 1
++#define GAMEPAD_Y 2
++#define GAMEPAD_X 3
+ #define GAMEPAD_BLACK 4
+ #define GAMEPAD_WHITE 5
+ #define GAMEPAD_LEFT_TRIGGER 6
+diff --git a/ui/xui/gl-helpers.cc b/ui/xui/gl-helpers.cc
+index 6c07d087b4..448b5d51af 100644
+--- a/ui/xui/gl-helpers.cc
++++ b/ui/xui/gl-helpers.cc
+@@ -473,10 +473,10 @@ void RenderController(float frame_x, float frame_y, uint32_t primary_color,
+ const struct rect lstick_ctr = { 93, 246, 0, 0 };
+ const struct rect rstick_ctr = { 342, 148, 0, 0 };
+ const struct rect buttons[12] = {
+- { 367, 187, 30, 38 }, // A
+ { 368, 229, 30, 38 }, // B
+- { 330, 204, 30, 38 }, // X
++ { 367, 187, 30, 38 }, // A
+ { 331, 247, 30, 38 }, // Y
++ { 330, 204, 30, 38 }, // X
+ { 82, 121, 31, 47 }, // D-Left
+ { 104, 160, 44, 25 }, // D-Up
+ { 141, 121, 31, 47 }, // D-Right
+diff --git a/ui/xui/input-manager.cc b/ui/xui/input-manager.cc
+index 786b54b176..43736e32f8 100644
+--- a/ui/xui/input-manager.cc
++++ b/ui/xui/input-manager.cc
+@@ -60,10 +60,10 @@ void InputManager::Update()
+ const int thumb_dead_zone = 8000; // SDL_gamecontroller.h suggests using this value.
+ MAP_BUTTON(ImGuiKey_GamepadStart, CONTROLLER_BUTTON_START);
+ MAP_BUTTON(ImGuiKey_GamepadBack, CONTROLLER_BUTTON_BACK);
+- MAP_BUTTON(ImGuiKey_GamepadFaceDown, CONTROLLER_BUTTON_A); // Xbox A, PS Cross
+- MAP_BUTTON(ImGuiKey_GamepadFaceRight, CONTROLLER_BUTTON_B); // Xbox B, PS Circle
+- MAP_BUTTON(ImGuiKey_GamepadFaceLeft, CONTROLLER_BUTTON_X); // Xbox X, PS Square
+- MAP_BUTTON(ImGuiKey_GamepadFaceUp, CONTROLLER_BUTTON_Y); // Xbox Y, PS Triangle
++ MAP_BUTTON(ImGuiKey_GamepadFaceDown, CONTROLLER_BUTTON_B); // Xbox A, PS Cross
++ MAP_BUTTON(ImGuiKey_GamepadFaceRight, CONTROLLER_BUTTON_A); // Xbox B, PS Circle
++ MAP_BUTTON(ImGuiKey_GamepadFaceLeft, CONTROLLER_BUTTON_Y); // Xbox X, PS Square
++ MAP_BUTTON(ImGuiKey_GamepadFaceUp, CONTROLLER_BUTTON_X); // Xbox Y, PS Triangle
+ MAP_BUTTON(ImGuiKey_GamepadDpadLeft, CONTROLLER_BUTTON_DPAD_LEFT);
+ MAP_BUTTON(ImGuiKey_GamepadDpadRight, CONTROLLER_BUTTON_DPAD_RIGHT);
+ MAP_BUTTON(ImGuiKey_GamepadDpadUp, CONTROLLER_BUTTON_DPAD_UP);
diff --git a/packages/emulators/standalone/xemu-sa/patches/SD865/000-fix-face-buttons.patch.disabled b/packages/emulators/standalone/xemu-sa/patches/SD865/000-fix-face-buttons.patch.disabled
new file mode 100644
index 0000000000..9032e1514a
--- /dev/null
+++ b/packages/emulators/standalone/xemu-sa/patches/SD865/000-fix-face-buttons.patch.disabled
@@ -0,0 +1,19 @@
+diff --git a/ui/xemu-input.h b/ui/xemu-input.h
+index 330ae58a7c..f643a124a6 100644
+--- a/ui/xemu-input.h
++++ b/ui/xemu-input.h
+@@ -31,10 +31,10 @@
+ #include "qemu/queue.h"
+
+ enum controller_state_buttons_mask {
+- CONTROLLER_BUTTON_A = (1 << 0),
+- CONTROLLER_BUTTON_B = (1 << 1),
+- CONTROLLER_BUTTON_X = (1 << 2),
+- CONTROLLER_BUTTON_Y = (1 << 3),
++ CONTROLLER_BUTTON_B = (1 << 0),
++ CONTROLLER_BUTTON_A = (1 << 1),
++ CONTROLLER_BUTTON_Y = (1 << 2),
++ CONTROLLER_BUTTON_X = (1 << 3),
+ CONTROLLER_BUTTON_DPAD_LEFT = (1 << 4),
+ CONTROLLER_BUTTON_DPAD_UP = (1 << 5),
+ CONTROLLER_BUTTON_DPAD_RIGHT = (1 << 6),
diff --git a/packages/emulators/standalone/xemu-sa/scripts/start_xemu.sh b/packages/emulators/standalone/xemu-sa/scripts/start_xemu.sh
index 879f916cb9..f3edd20756 100755
--- a/packages/emulators/standalone/xemu-sa/scripts/start_xemu.sh
+++ b/packages/emulators/standalone/xemu-sa/scripts/start_xemu.sh
@@ -4,26 +4,14 @@
. /etc/profile
set_kill set "-9 xemu"
-syscfg="/storage/.config/system/configs/system.cfg"
-if ! grep -q 'ports\["xemu"\].port_controller_layout=xbox' "$syscfg"; then
-echo 'ports["xemu"].port_controller_layout=xbox' >> "$syscfg"
-fi
-
-# Load gptokeyb support files
-control-gen_init.sh
-source /storage/.config/gptokeyb/control.ini
-get_controls
-
#Check if xemu exists in .config
if [ ! -d "/storage/.config/xemu" ]; then
mkdir -p "/storage/.config/xemu"
cp -r "/usr/config/xemu" "/storage/.config/"
fi
-#Check if xemu.toml exists in .config
-if [ ! -f "/storage/.config/xemu/xemu.toml" ]; then
- cp -r "/usr/config/xemu/xemu.toml" "/storage/.config/xemu/xemu.toml"
-fi
+#Copy Xemu config at script launch
+cp -r "/usr/config/xemu/xemu.toml" "/storage/.config/xemu/xemu.toml"
#Make xemu bios folder
if [ ! -d "/storage/roms/bios/xemu/bios" ]; then
@@ -45,13 +33,112 @@ if [ ! -f "/storage/roms/bios/xemu/hdd/xbox_hdd.qcow2" ]; then
unzip -o /usr/config/xemu/hdd.zip -d /storage/roms/bios/xemu/hdd/
fi
+#Emulation Station Features
+GAME=$(echo "${1}"| sed "s#^/.*/##")
+PLATFORM=$(echo "${2}"| sed "s#^/.*/##")
+ASPECT=$(get_setting aspect_ratio "${PLATFORM}" "${GAME}")
+CLOCK=$(get_setting cpu_clock_speed "${PLATFORM}" "${GAME}")
+CSHADERS=$(get_setting cache_shaders_to_disk "${PLATFORM}" "${GAME}")
+IRES=$(get_setting internal_resolution "${PLATFORM}" "${GAME}")
+#RENDERER=$(get_setting graphics_backend "${PLATFORM}" "${GAME}")
+SHOWFPS=$(get_setting show_fps "${PLATFORM}" "${GAME}")
+SKIPBOOT=$(get_setting skip_boot_animation "${PLATFORM}" "${GAME}")
+SMEM=$(get_setting system_memory "${PLATFORM}" "${GAME}")
+VSYNC=$(get_setting vsync "${PLATFORM}" "${GAME}")
+
+ #Aspect Ratio
+ if [ "$ASPECT" = "0" ]; then
+ sed -i "/aspect_ratio =/c\aspect_ratio = '4x3'" /storage/.config/xemu/xemu.toml
+ elif [ "$ASPECT" = "1" ]; then
+ sed -i "/aspect_ratio =/c\aspect_ratio = '16x9'" /storage/.config/xemu/xemu.toml
+ else
+ sed -i "/aspect_ratio =/c\aspect_ratio = 'native'" /storage/.config/xemu/xemu.toml
+ fi
+
+ #Cache shaders to disk
+ if [ "$CSHADERS" = "false" ]; then
+ sed -i "/cache_shaders =/c\cache_shaders = false" /storage/.config/xemu/xemu.toml
+ else
+ sed -i "/cache_shaders =/c\cache_shaders = true" /storage/.config/xemu/xemu.toml
+ fi
+
+ #CPU Clock Speed
+ if [ "$CLOCK" = "050" ]; then
+ sed -i "/override_clockspeed =/c\override_clockspeed = true" /storage/.config/xemu/xemu.toml
+ sed -i "/cpu_clockspeed_scale =/c\cpu_clockspeed_scale = 0.500000" /storage/.config/xemu/xemu.toml
+ elif [ "$CLOCK" = "060" ]; then
+ sed -i "/override_clockspeed =/c\override_clockspeed = true" /storage/.config/xemu/xemu.toml
+ sed -i "/cpu_clockspeed_scale =/c\cpu_clockspeed_scale = 0.600000" /storage/.config/xemu/xemu.toml
+ elif [ "$CLOCK" = "070" ]; then
+ sed -i "/override_clockspeed =/c\override_clockspeed = true" /storage/.config/xemu/xemu.toml
+ sed -i "/cpu_clockspeed_scale =/c\cpu_clockspeed_scale = 0.700000" /storage/.config/xemu/xemu.toml
+ elif [ "$CLOCK" = "080" ]; then
+ sed -i "/override_clockspeed =/c\override_clockspeed = true" /storage/.config/xemu/xemu.toml
+ sed -i "/cpu_clockspeed_scale =/c\cpu_clockspeed_scale = 0.800000" /storage/.config/xemu/xemu.toml
+ elif [ "$CLOCK" = "090" ]; then
+ sed -i "/override_clockspeed =/c\override_clockspeed = true" /storage/.config/xemu/xemu.toml
+ sed -i "/cpu_clockspeed_scale =/c\cpu_clockspeed_scale = 0.900000" /storage/.config/xemu/xemu.toml
+ elif [ "$CLOCK" = "110" ]; then
+ sed -i "/override_clockspeed =/c\override_clockspeed = true" /storage/.config/xemu/xemu.toml
+ sed -i "/cpu_clockspeed_scale =/c\cpu_clockspeed_scale = 1.100000" /storage/.config/xemu/xemu.toml
+ elif [ "$CLOCK" = "120" ]; then
+ sed -i "/override_clockspeed =/c\override_clockspeed = true" /storage/.config/xemu/xemu.toml
+ sed -i "/cpu_clockspeed_scale =/c\cpu_clockspeed_scale = 1.200000" /storage/.config/xemu/xemu.toml
+ elif [ "$CLOCK" = "130" ]; then
+ sed -i "/override_clockspeed =/c\override_clockspeed = true" /storage/.config/xemu/xemu.toml
+ sed -i "/cpu_clockspeed_scale =/c\cpu_clockspeed_scale = 1.300000" /storage/.config/xemu/xemu.toml
+ elif [ "$CLOCK" = "140" ]; then
+ sed -i "/override_clockspeed =/c\override_clockspeed = true" /storage/.config/xemu/xemu.toml
+ sed -i "/cpu_clockspeed_scale =/c\cpu_clockspeed_scale = 1.400000" /storage/.config/xemu/xemu.toml
+ elif [ "$CLOCK" = "150" ]; then
+ sed -i "/override_clockspeed =/c\override_clockspeed = true" /storage/.config/xemu/xemu.toml
+ sed -i "/cpu_clockspeed_scale =/c\cpu_clockspeed_scale = 1.500000" /storage/.config/xemu/xemu.toml
+ else
+ sed -i "/override_clockspeed =/c\override_clockspeed = false" /storage/.config/xemu/xemu.toml
+ fi
+
+ #Internal Resolution
+ if [ "$IRES" = "2" ]; then
+ sed -i "/surface_scale =/c\surface_scale = 2" /storage/.config/xemu/xemu.toml
+ elif [ "$IRES" = "3" ]; then
+ sed -i "/surface_scale =/c\surface_scale = 3" /storage/.config/xemu/xemu.toml
+ elif [ "$IRES" = "4" ]; then
+ sed -i "/surface_scale =/c\surface_scale = 4" /storage/.config/xemu/xemu.toml
+ else
+ sed -i "/surface_scale =/c\surface_scale = 1" /storage/.config/xemu/xemu.toml
+ fi
+
+ #Show FPS
+ if [ "$SHOWFPS" = "1" ]
+ then
+ export GALLIUM_HUD="simple,fps"
+ fi
+
+ #Skip boot animation
+ if [ "$SKIPBOOT" = "false" ]; then
+ sed -i "/skip_boot_anim =/c\skip_boot_anim = false" /storage/.config/xemu/xemu.toml
+ else
+ sed -i "/skip_boot_anim =/c\skip_boot_anim = true" /storage/.config/xemu/xemu.toml
+ fi
+
+ #System memory
+ if [ "$SMEM" = "128" ]; then
+ sed -i "/mem_limit =/c\mem_limit = '128'" /storage/.config/xemu/xemu.toml
+ else
+ sed -i "/mem_limit =/c\mem_limit = '64'" /storage/.config/xemu/xemu.toml
+ fi
+
+ #Vsync
+ if [ "$VSYNC" = "false" ]; then
+ sed -i "/vsync =/c\vsync = false" /storage/.config/xemu/xemu.toml
+ else
+ sed -i "/vsync =/c\vsync = true" /storage/.config/xemu/xemu.toml
+ fi
+
# Set config file location
CONFIG=/storage/.config/xemu/xemu.toml
-# Set gamecontroller db location
-export SDL_GAMECONTROLLERCONFIG_FILE="/tmp/gamecontrollerdb.txt"
-
-/usr/share/xemu-sa/@APPIMAGE@ -full-screen -config_path $CONFIG -dvd_path "${1}"
+/usr/bin/xemu -full-screen -config_path $CONFIG -dvd_path "${1}"
#Workaround until we can learn why it doesn't exit cleanly when asked.
-killall -9 xemu-sa
+killall -9 xemu
diff --git a/packages/emulators/standalone/yabasanshiro-sa/package.mk b/packages/emulators/standalone/yabasanshiro-sa/package.mk
index f91e9c89aa..3b9386a811 100644
--- a/packages/emulators/standalone/yabasanshiro-sa/package.mk
+++ b/packages/emulators/standalone/yabasanshiro-sa/package.mk
@@ -5,26 +5,16 @@
PKG_NAME="yabasanshiro-sa"
PKG_LICENSE="GPLv2"
-PKG_SITE="https://github.com/devmiyax/yabause"
-PKG_ARCH="arm aarch64"
+PKG_SITE="https://github.com/sydarn/yabause"
PKG_URL="${PKG_SITE}.git"
+PKG_VERSION="a40dace1ae0af3ebd45848549fdf396f40e3930f"
+PKG_GIT_CLONE_BRANCH="pi4-update"
+PKG_ARCH="aarch64"
PKG_DEPENDS_TARGET="toolchain SDL2 boost openal-soft zlib"
PKG_LONGDESC="Yabause is a Sega Saturn emulator and took over as Yaba Sanshiro"
PKG_TOOLCHAIN="cmake-make"
GET_HANDLER_SUPPORT="git"
PKG_BUILD_FLAGS="+speed"
-PKG_PATCH_DIRS+="${DEVICE}"
-
-case ${TARGET_ARCH} in
- aarch64|arm)
- PKG_VERSION="c7618d2ecbf77b1e8188fa8af4fa1cfb34833a72"
- PKG_GIT_CLONE_BRANCH="pi4-1-9-0"
- ;;
- *)
- PKG_VERSION="82cb29171ebe61cf0129682794af5ceb5acaa0f2"
- PKG_GIT_CLONE_BRANCH="master"
- ;;
-esac
if [ ! "${OPENGL}" = "no" ]; then
PKG_DEPENDS_TARGET+=" ${OPENGL} glu libglvnd"
@@ -62,13 +52,6 @@ pre_configure_target() {
PKG_CMAKE_OPTS_TARGET+=" -DUSE_EGL=ON -DUSE_OPENGL=OFF"
fi
- #if [ "${VULKAN_SUPPORT}" = "yes" ]
- #then
- # PKG_CMAKE_OPTS_TARGET+=" -DYAB_WANT_VULKAN=ON"
- #else
- # PKG_CMAKE_OPTS_TARGET+=" -DYAB_WANT_VULKAN=OFF"
- #fi
-
case ${ARCH} in
aarch64)
PKG_CMAKE_OPTS_TARGET+=" -DYAB_WANT_ARM7=ON \
diff --git a/packages/emulators/standalone/yabasanshiro-sa/patches/01-yabasanshiroSA-add-missing-include.patch b/packages/emulators/standalone/yabasanshiro-sa/patches/01-yabasanshiroSA-add-missing-include.patch
deleted file mode 100644
index fc70ab3b1b..0000000000
--- a/packages/emulators/standalone/yabasanshiro-sa/patches/01-yabasanshiroSA-add-missing-include.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/yabause/src/threads.h 2022-01-05 15:41:03.685887385 -0600
-+++ b/yabause/src/threads.h 2022-01-05 15:43:05.404177636 -0600
-@@ -115,6 +115,8 @@
-
- int YabCopyFile(const char * src, const char * dst);
- int YabMakeCleanDir( const char * dirname );
-+
-+#include
- int YabNanosleep(u64 ns);
-
- ///////////////////////////////////////////////////////////////////////////
diff --git a/packages/emulators/standalone/yabasanshiro-sa/patches/03-yabasanshiroSA-removegl3ext.patch b/packages/emulators/standalone/yabasanshiro-sa/patches/03-yabasanshiroSA-removegl3ext.patch
deleted file mode 100644
index 60d85c7fb0..0000000000
--- a/packages/emulators/standalone/yabasanshiro-sa/patches/03-yabasanshiroSA-removegl3ext.patch
+++ /dev/null
@@ -1,20 +0,0 @@
---- a/yabause/src/ygl.h
-+++ b/yabause/src/ygl.h
-@@ -50,7 +50,6 @@
- #include
- #elif defined(__ANDROID__)
- #include
-- #include
- #include
-
-
---- a/yabause/src/nanovg/nanovg_osdcore.c
-+++ b/yabause/src/nanovg/nanovg_osdcore.c
-@@ -36,7 +36,6 @@
-
- #if defined(_OGLES3_)
- #include
--#include
- #else
- #include "ygl.h"
- #endif
diff --git a/packages/emulators/standalone/yabasanshiro-sa/patches/04-yabasanshiroSA-use-paths.patch b/packages/emulators/standalone/yabasanshiro-sa/patches/04-yabasanshiroSA-use-paths.patch
index 9c0407607d..045abed6d4 100644
--- a/packages/emulators/standalone/yabasanshiro-sa/patches/04-yabasanshiroSA-use-paths.patch
+++ b/packages/emulators/standalone/yabasanshiro-sa/patches/04-yabasanshiroSA-use-paths.patch
@@ -1,44 +1,8 @@
---- a/yabause/src/retro_arena/main.cpp
-+++ b/yabause/src/retro_arena/main.cpp
-@@ -286,12 +286,12 @@
-
- // Inisialize home directory
- std::string home_dir = getenv("HOME");
-- home_dir += "/.yabasanshiro/";
-+ home_dir = "/storage/.config/yabasanshiro/";
- struct stat st = {0};
- if (stat(home_dir.c_str(), &st) == -1) {
- mkdir(home_dir.c_str(), 0700);
- }
-- std::string bckup_dir = home_dir + "backup.bin";
-+ std::string bckup_dir = "/storage/roms/bios/yabasanshiro/backup.bin";
- strcpy( buppath, bckup_dir.c_str() );
- strcpy( s_savepath, home_dir.c_str() );
- g_keymap_filename = home_dir + "keymapv2.json";
-@@ -597,7 +597,7 @@
- if( ret == 0 ){
- char pngname[256];
- snprintf(pngname,256,"%s/%s_%d.png", s_savepath, cdip->itemnum, e.user.code);
-- fs::copy(tmpfilename, pngname, fs::copy_options::overwrite_existing );
-+ system((std::string("cp -f ") + tmpfilename + " " + pngname).c_str());
- }
- hideMenuScreen();
- }
-
---- a/yabause/src/retro_arena/Preference.cpp
-+++ b/yabause/src/retro_arena/Preference.cpp
-@@ -17,7 +17,7 @@
- }
-
- std::string home_dir = getenv("HOME");
-- home_dir += "/.yabasanshiro/";
-+ home_dir = "/storage/.config/yabasanshiro/";
-
- this->filename = home_dir + input_trace_filename + ".config";
-
+diff --git a/yabause/src/retro_arena/InputManager.cpp b/yabause/src/retro_arena/InputManager.cpp
+index bd806736..c32af4a7 100644
--- a/yabause/src/retro_arena/InputManager.cpp
+++ b/yabause/src/retro_arena/InputManager.cpp
-@@ -213,7 +213,7 @@
+@@ -213,7 +213,7 @@ int mapKeys( const json & configs ){
if( SDL_NumJoysticks() == 0 ){
@@ -47,7 +11,7 @@
padbits = PerPadAdd(&PORTDATA1);
if( configs.find("player1") == configs.end() ){
return setDefalutSettings(padbits);
-@@ -460,22 +460,22 @@
+@@ -460,22 +460,22 @@ int getPlayerJsonFromInputConfig( int joy, InputConfig * inputconfig, json & pla
}
Input result;
@@ -74,7 +38,7 @@
player[guid]["z"] = { { "type", input_types[result.type] },{ "id", result.id },{ "value", result.value } };
inputconfig->getInputByName("lefttrigger", &result);
-@@ -1209,7 +1209,7 @@
+@@ -1209,7 +1209,7 @@ void InputManager::writeDeviceConfig(InputConfig* config)
std::string InputManager::getConfigPath()
{
std::string path = getenv("HOME");
@@ -83,3 +47,47 @@
return path;
}
+diff --git a/yabause/src/retro_arena/Preference.cpp b/yabause/src/retro_arena/Preference.cpp
+index 1108c843..49815002 100644
+--- a/yabause/src/retro_arena/Preference.cpp
++++ b/yabause/src/retro_arena/Preference.cpp
+@@ -17,7 +17,7 @@ Preference::Preference( const std::string & filename ){
+ }
+
+ std::string home_dir = getenv("HOME");
+- home_dir += "/.yabasanshiro/";
++ home_dir = "/storage/.config/yabasanshiro/";
+
+ this->filename = home_dir + input_trace_filename + ".config";
+
+diff --git a/yabause/src/retro_arena/main.cpp b/yabause/src/retro_arena/main.cpp
+index 3b3b581c..dacfee8e 100644
+--- a/yabause/src/retro_arena/main.cpp
++++ b/yabause/src/retro_arena/main.cpp
+@@ -290,14 +290,14 @@ int main(int argc, char** argv)
+
+ // Inisialize home directory
+ std::string home_dir = getenv("HOME");
+- home_dir += "/.yabasanshiro/";
++ home_dir = "/storage/.config/yabasanshiro/";
+ struct stat st = {0};
+ if (stat(home_dir.c_str(), &st) == -1) {
+ mkdir(home_dir.c_str(), 0700);
+ }
+- std::string bckup_dir = home_dir + "backup.bin";
++ std::string bckup_dir = "/storage/roms/bios/yabasanshiro/backup.bin";
+ strcpy( buppath, bckup_dir.c_str() );
+- strcpy( s_savepath, home_dir.c_str() );
++ strcpy( s_savepath, "/storage/roms/savestates/saturn/yabasanshiro/" );
+ g_keymap_filename = home_dir + "keymapv2.json";
+
+ std::string current_exec_name = argv[0]; // Name of the current exec program
+@@ -601,7 +601,7 @@ int main(int argc, char** argv)
+ if( ret == 0 ){
+ char pngname[256];
+ snprintf(pngname,256,"%s/%s_%d.png", s_savepath, cdip->itemnum, e.user.code);
+- fs::copy(tmpfilename, pngname, fs::copy_options::overwrite_existing );
++ system((std::string("cp -f ") + tmpfilename + " " + pngname).c_str());
+ }
+ hideMenuScreen();
+ }
diff --git a/packages/emulators/standalone/yabasanshiro-sa/patches/05-yabasanshiroSA-low-res-mode.patch b/packages/emulators/standalone/yabasanshiro-sa/patches/05-yabasanshiroSA-low-res-mode.patch
deleted file mode 100644
index e44bfac117..0000000000
--- a/packages/emulators/standalone/yabasanshiro-sa/patches/05-yabasanshiroSA-low-res-mode.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-diff --git a/yabause/src/nx/main.cpp b/yabause/src/nx/main.cpp
-index 7d7ee2a30..51f5c12ed 100644
---- a/yabause/src/nx/main.cpp
-+++ b/yabause/src/nx/main.cpp
-@@ -190,7 +190,7 @@ OSD_struct *OSDCoreList[] = {
- static SDL_Window* wnd;
- static SDL_GLContext glc;
- int g_EnagleFPS = 1;
--int g_resolution_mode = 0;
-+int g_resolution_mode = 3;
- int g_keep_aspect_rate = 0;
- int g_scsp_sync = 1;
- int g_frame_skip = 0;
-diff --git a/yabause/src/sdl/main.c b/yabause/src/sdl/main.c
-index b990c1df5..8577c5546 100644
---- a/yabause/src/sdl/main.c
-+++ b/yabause/src/sdl/main.c
-@@ -141,7 +141,7 @@ NULL
- #endif
-
- static int fullscreen = 0;
--static int lowres_mode = 0;
-+static int lowres_mode = 1;
-
- static char biospath[256] = "\0";
- static char strgsyslangeid[256] = "english";
diff --git a/packages/emulators/standalone/yabasanshiro-sa/patches/06-large-files.patch b/packages/emulators/standalone/yabasanshiro-sa/patches/06-large-files.patch
deleted file mode 100644
index 8ef4578f49..0000000000
--- a/packages/emulators/standalone/yabasanshiro-sa/patches/06-large-files.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/yabause/src/CMakeLists.txt b/yabause/src/CMakeLists.txt
-index 0b0e624..7e4037e 100644
---- a/yabause/src/CMakeLists.txt
-+++ b/yabause/src/CMakeLists.txt
-@@ -194,7 +194,8 @@ if (YAB_USE_SSF)
- find_package(ZLIB)
-
- if (ZLIB_FOUND)
- add_definitions(-DYAB_WANT_SSF=1)
-+ set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-error=incompatible-pointer-types -Wno-int-conversion -Wno-implicit-function-declaration -D_LARGEFILE_SOURCE" )
- include_directories(${ZLIB_INCLUDE_DIRS})
- set(YABAUSE_LIBRARIES ${YABAUSE_LIBRARIES} ${ZLIB_LIBRARIES})
-
diff --git a/packages/emulators/standalone/yabasanshiro-sa/patches/aarch64/06-yabasanshiroSA-sh2-cache-perf.patch b/packages/emulators/standalone/yabasanshiro-sa/patches/aarch64/06-yabasanshiroSA-sh2-cache-perf.patch
deleted file mode 100644
index 31fc9af564..0000000000
--- a/packages/emulators/standalone/yabasanshiro-sa/patches/aarch64/06-yabasanshiroSA-sh2-cache-perf.patch
+++ /dev/null
@@ -1,13 +0,0 @@
---- a/yabause/src/retro_arena/main.cpp
-+++ b/yabause/src/retro_arena/main.cpp
-@@ -263,9 +263,9 @@ int yabauseinit()
- yinit.rbg_use_compute_shader = pre.getBool( "Use compute shader" , false);
- #endif
-
- yinit.use_cpu_affinity = 1;
-
-- yinit.use_sh2_cache = 1;
-+ yinit.use_sh2_cache = 0;
-
- res = YabauseInit(&yinit);
- if( res == -1) {
diff --git a/packages/emulators/standalone/yabasanshiro-sa/scripts/start_yabasanshiro.sh b/packages/emulators/standalone/yabasanshiro-sa/scripts/start_yabasanshiro.sh
index cee22233f0..821633fed1 100644
--- a/packages/emulators/standalone/yabasanshiro-sa/scripts/start_yabasanshiro.sh
+++ b/packages/emulators/standalone/yabasanshiro-sa/scripts/start_yabasanshiro.sh
@@ -12,6 +12,7 @@ ROM_DIR="/storage/roms/saturn/yabasanshiro"
CONFIG_DIR="/storage/.config/yabasanshiro"
SOURCE_DIR="/usr/config/yabasanshiro"
BIOS_BACKUP="/storage/roms/bios/yabasanshiro"
+SAVESTATE_DIR="/storage/roms/savestates/saturn/yabasanshiro/"
if [ ! -d "${ROM_DIR}" ]
then
@@ -28,6 +29,11 @@ then
mkdir -p "${CONFIG_DIR}"
fi
+if [ ! -d "${SAVESTATE_DIR}" ]
+then
+ mkdir -p "${SAVESTATE_DIR}"
+fi
+
if [ ! -e "${CONFIG_DIR}/input.cfg" ]
then
rm -f ${CONFIG_DIR}/keymapv2.json
diff --git a/packages/graphics/SDL2/package.mk b/packages/graphics/SDL2/package.mk
index c8209d511b..48bedc4662 100644
--- a/packages/graphics/SDL2/package.mk
+++ b/packages/graphics/SDL2/package.mk
@@ -3,7 +3,7 @@
# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS)
PKG_NAME="SDL2"
-PKG_VERSION="2.30.8"
+PKG_VERSION="2.30.9"
PKG_LICENSE="GPL"
PKG_SITE="https://www.libsdl.org/"
PKG_URL="https://www.libsdl.org/release/SDL2-${PKG_VERSION}.tar.gz"
diff --git a/packages/graphics/gdk-pixbuf/package.mk b/packages/graphics/gdk-pixbuf/package.mk
index a03f30a847..1e3c51e0ff 100644
--- a/packages/graphics/gdk-pixbuf/package.mk
+++ b/packages/graphics/gdk-pixbuf/package.mk
@@ -7,7 +7,7 @@ PKG_VERSION="2.42.10"
PKG_SHA256="ee9b6c75d13ba096907a2e3c6b27b61bcd17f5c7ebeab5a5b439d2f2e39fe44b"
PKG_LICENSE="OSS"
PKG_SITE="http://www.gtk.org/"
-PKG_URL="https://ftp.gnome.org/pub/gnome/sources/gdk-pixbuf/${PKG_VERSION:0:4}/gdk-pixbuf-${PKG_VERSION}.tar.xz"
+PKG_URL="https://www.mirrorservice.org/sites/ftp.gnome.org//pub/GNOME/sources/gdk-pixbuf/${PKG_VERSION:0:4}/gdk-pixbuf-${PKG_VERSION}.tar.xz"
PKG_DEPENDS_TARGET="toolchain glib libjpeg-turbo libpng jasper shared-mime-info tiff zlib"
PKG_DEPENDS_CONFIG="shared-mime-info"
PKG_LONGDESC="GdkPixbuf is a a GNOME library for image loading and manipulation."
diff --git a/packages/graphics/libmali/autostart/003-gpudriver b/packages/graphics/gpudriver/autostart/003-gpudriver
similarity index 100%
rename from packages/graphics/libmali/autostart/003-gpudriver
rename to packages/graphics/gpudriver/autostart/003-gpudriver
diff --git a/packages/graphics/libmali/modprobe.d/mali-gpu-noauto.conf b/packages/graphics/gpudriver/modprobe.d/mali-gpu-noauto.conf
similarity index 100%
rename from packages/graphics/libmali/modprobe.d/mali-gpu-noauto.conf
rename to packages/graphics/gpudriver/modprobe.d/mali-gpu-noauto.conf
diff --git a/packages/graphics/gpudriver/package.mk b/packages/graphics/gpudriver/package.mk
new file mode 100644
index 0000000000..029c93650a
--- /dev/null
+++ b/packages/graphics/gpudriver/package.mk
@@ -0,0 +1,44 @@
+# SPDX-License-Identifier: GPL-2.0-or-later
+# Copyright (C) 2022-present JELOS (https://github.com/JustEnoughLinuxOS)
+
+PKG_NAME="gpudriver"
+PKG_VERSION=""
+PKG_LICENSE="GPLv2"
+PKG_SITE=""
+PKG_URL=""
+PKG_DEPENDS_TARGET="toolchain mesa vulkan-tools"
+PKG_TOOLCHAIN="manual"
+PKG_LONGDESC="GPU driver util for switching between panfrost / panthor and libmali / libmali-vulkan"
+
+post_makeinstall_target() {
+ mkdir -p "${INSTALL}/usr/bin/"
+ cp -v "${PKG_BUILD}/bin/gpudriver" "${INSTALL}/usr/bin/"
+
+ # set the correct mesa pan kernel driver module based on device
+ case ${DEVICE} in
+ RK3588)
+ PAN="panthor"
+ DTB_OVERLAY_LOAD="\/usr\/bin\/dtb_overlay set driver-gpu driver-gpu-panthor.dtbo"
+ DTB_OVERLAY_UNLOAD="\/usr\/bin\/dtb_overlay set driver-gpu None"
+ ;;
+ S922X)
+ PAN="panfrost"
+ DTB_OVERLAY_LOAD="\/usr\/bin\/dtb_overlay set driver-gpu driver-gpu-panfrost.dtbo"
+ DTB_OVERLAY_UNLOAD="\/usr\/bin\/dtb_overlay set driver-gpu None"
+ ;;
+ *)
+ PAN="panfrost"
+ DTB_OVERLAY=""
+ DTB_OVERLAY_UNLOAD=""
+ ;;
+ esac
+
+ sed -e "s/@PAN@/${PAN}/g" \
+ -i ${INSTALL}/usr/bin/gpudriver
+
+ sed -e "s/@DTB_OVERLAY_LOAD@/${DTB_OVERLAY_LOAD}/g" \
+ -i ${INSTALL}/usr/bin/gpudriver
+
+ sed -e "s/@DTB_OVERLAY_UNLOAD@/${DTB_OVERLAY_UNLOAD}/g" \
+ -i ${INSTALL}/usr/bin/gpudriver
+}
\ No newline at end of file
diff --git a/packages/graphics/gpudriver/sources/bin/gpudriver b/packages/graphics/gpudriver/sources/bin/gpudriver
new file mode 100755
index 0000000000..e5387295cd
--- /dev/null
+++ b/packages/graphics/gpudriver/sources/bin/gpudriver
@@ -0,0 +1,95 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0
+# Copyright (C) 2024 ROCKNIX (https://github.com/ROCKNIX)
+
+. /etc/profile.d/001-functions
+
+GPU_DRIVER_SETTING_KEY="gpu.driver"
+
+get_current_driver() {
+ CONFDRIVER=$(get_setting ${GPU_DRIVER_SETTING_KEY})
+ if [ -z ${CONFDRIVER} ]; then
+ CONFDRIVER="libmali" # DEFAULT
+ set_setting ${GPU_DRIVER_SETTING_KEY} ${CONFDRIVER}
+ fi
+}
+
+
+# When loading a driver, do two things:
+# * ensure needed driver is loaded and other is not
+# * ensure graphics related libs are overridden (or not)
+load_driver() {
+ DRIVER_TO_LOAD=$1
+
+ case ${DRIVER_TO_LOAD} in
+ "libmali")
+ modprobe -r @PAN@
+ modprobe mali_kbase
+
+ case ${HW_DEVICE} in
+ "S922X")
+ grep -q /usr/lib/libEGL.so /proc/mounts || find /usr/lib/mali -type f -exec bash -c 'lib={}; mount --bind $lib ${lib/\/mali\//\/}' ';'
+ grep -q /usr/lib/libEGL.so /proc/mounts || mount -o ro,bind /usr/lib/mali/libEGL.so.1.4.0 /usr/lib/libEGL.so.1.1.0
+ grep -q /usr/lib/libEGL.so /proc/mounts || mount -o ro,bind /usr/lib/mali/libGLESv1_CM.so.1.1.0 /usr/lib/libGLESv1_CM.so.1.2.0
+ # Portmaster is not ready for SDL in glesonly subdir, so override libs the dirty way
+ if [ -d /usr/lib/glesonly ]; then
+ grep -q /usr/lib/libSDL2-2.0.so /proc/mounts || find /usr/lib/glesonly -type f -exec bash -c 'lib={}; mount --bind $lib ${lib/\/glesonly\//\/}' ';'
+ fi
+ mount --bind /dev/null /usr/lib/libGL.so
+ ;;
+ *)
+ grep -q /usr/lib/libEGL.so /proc/mounts || find /usr/{lib,lib32}/mali -type f -exec bash -c 'lib={}; mount --bind $lib ${lib/\/mali\//\/}' ';'
+ # Portmaster is not ready for SDL in glesonly subdir, so override libs the dirty way
+ if [ -d /usr/lib/glesonly ]; then
+ grep -q /usr/lib/libSDL2-2.0.so /proc/mounts || find /usr/{lib,lib32}/glesonly -type f -exec bash -c 'lib={}; mount --bind $lib ${lib/\/glesonly\//\/}' ';'
+ fi
+ mount --bind /dev/null /usr/lib/libGL.so
+ mount --bind /dev/null /usr/lib32/libGL.so
+ ;;
+ esac
+ ;;
+ "panfrost")
+ modprobe -r mali_kbase
+ modprobe @PAN@
+ grep -q /usr/lib/libEGL.so /proc/mounts && find /usr/lib/mali -type f -exec bash -c 'lib={}; umount ${lib/\/mali\//\/}' ';'
+ if [ -d /usr/lib/glesonly ]; then
+ grep -q /usr/lib/libSDL2-2.0.so /proc/mounts && find /usr/lib/glesonly -type f -exec bash -c 'lib={}; umount ${lib/\/glesonly\//\/}' ';'
+ fi
+ ;;
+ *)
+ exit 3
+ ;;
+ esac
+}
+
+
+case "$1" in
+ "--options")
+ echo "panfrost libmali"
+ ;;
+ "--start")
+ get_current_driver
+ load_driver ${CONFDRIVER}
+ ;;
+ "libmali")
+ set_setting ${GPU_DRIVER_SETTING_KEY} $1
+ @DTB_OVERLAY_UNLOAD@
+ ;;
+ "panfrost")
+ set_setting ${GPU_DRIVER_SETTING_KEY} $1
+ @DTB_OVERLAY_LOAD@
+ ;;
+ "")
+ get_current_driver
+ echo ${CONFDRIVER}
+ ;;
+ *)
+ echo "Unexpected parameter $1" >&2
+ echo "Usage:" >&2
+ echo " List available drivers: $0 --options" >&2
+ echo " Load configured driver and set libs: $0 --start" >&2
+ echo " Get current driver: $0" >&2
+ echo " Configure driver to load on next boot: $0 " >&2
+ exit 1
+ ;;
+esac
diff --git a/packages/graphics/gtk3/package.mk b/packages/graphics/gtk3/package.mk
index 3ebcbee67b..1e40c7e3b6 100644
--- a/packages/graphics/gtk3/package.mk
+++ b/packages/graphics/gtk3/package.mk
@@ -6,7 +6,7 @@ PKG_NAME="gtk3"
PKG_VERSION="3.24.38"
PKG_LICENSE="LGPL"
PKG_SITE="http://www.gtk.org/"
-PKG_URL="https://ftp.gnome.org/pub/gnome/sources/gtk+/${PKG_VERSION:0:4}/gtk+-${PKG_VERSION}.tar.xz"
+PKG_URL="https://www.mirrorservice.org/sites/ftp.gnome.org//pub/GNOME/sources/gtk+/${PKG_VERSION:0:4}/gtk+-${PKG_VERSION}.tar.xz"
PKG_DEPENDS_TARGET="toolchain at-spi2-atk atk cairo gdk-pixbuf glib libX11 libXi libXrandr libepoxy pango libxkbcommon wayland wayland-protocols libepoxy libpng tiff libjpeg-turbo libffi glew"
PKG_DEPENDS_CONFIG="libXft pango gdk-pixbuf shared-mime-info"
PKG_LONGDESC="A library for creating graphical user interfaces for the X Window System."
diff --git a/packages/graphics/libmali/sources/bin/gpudriver b/packages/graphics/libmali/sources/bin/gpudriver
deleted file mode 100755
index 4e43b7cf41..0000000000
--- a/packages/graphics/libmali/sources/bin/gpudriver
+++ /dev/null
@@ -1,79 +0,0 @@
-#!/bin/sh
-# SPDX-License-Identifier: GPL-2.0
-# Copyright (C) 2024 ROCKNIX (https://github.com/ROCKNIX)
-
-. /etc/profile.d/001-functions
-
-GPU_DRIVER_SETTING_KEY="gpu.driver"
-
-get_current_driver() {
- CONFDRIVER=$(get_setting ${GPU_DRIVER_SETTING_KEY})
- if [ -z ${CONFDRIVER} ]; then
- CONFDRIVER="libmali" # DEFAULT
- set_setting ${GPU_DRIVER_SETTING_KEY} ${CONFDRIVER}
- fi
-}
-
-
-# When loading a driver, do two things:
-# * ensure needed driver is loaded and other is not
-# * ensure graphics related libs are overridden (or not)
-load_driver() {
- DRIVER_TO_LOAD=$1
- case ${DRIVER_TO_LOAD} in
- "libmali")
- modprobe -r @PAN@
- modprobe mali_kbase
- grep -q /usr/lib/libEGL.so /proc/mounts || find /usr/{lib,lib32}/mali -type f -exec bash -c 'lib={}; mount --bind $lib ${lib/\/mali\//\/}' ';'
- # Portmaster is not ready for SDL in glesonly subdir, so override libs the dirty way
- if [ -d /usr/lib/glesonly ]; then
- grep -q /usr/lib/libSDL2-2.0.so /proc/mounts || find /usr/{lib,lib32}/glesonly -type f -exec bash -c 'lib={}; mount --bind $lib ${lib/\/glesonly\//\/}' ';'
- fi
- mount --bind /dev/null /usr/lib/libGL.so
- mount --bind /dev/null /usr/lib32/libGL.so
- ;;
- "panfrost")
- modprobe -r mali_kbase
- modprobe @PAN@
- grep -q /usr/lib/libEGL.so /proc/mounts && find /usr/{lib,lib32}/mali -type f -exec bash -c 'lib={}; umount ${lib/\/mali\//\/}' ';'
- if [ -d /usr/lib/glesonly ]; then
- grep -q /usr/lib/libSDL2-2.0.so /proc/mounts && find /usr/{lib,lib32}/glesonly -type f -exec bash -c 'lib={}; umount ${lib/\/glesonly\//\/}' ';'
- fi
- ;;
- *)
- exit 3
- ;;
- esac
-}
-
-
-case "$1" in
- "--options")
- echo "panfrost libmali"
- ;;
- "--start")
- get_current_driver
- load_driver ${CONFDRIVER}
- ;;
- "libmali")
- set_setting ${GPU_DRIVER_SETTING_KEY} $1
- @DTB_OVERLAY_UNLOAD@
- ;;
- "panfrost")
- set_setting ${GPU_DRIVER_SETTING_KEY} $1
- @DTB_OVERLAY_LOAD@
- ;;
- "")
- get_current_driver
- echo ${CONFDRIVER}
- ;;
- *)
- echo "Unexpected parameter $1" >&2
- echo "Usage:" >&2
- echo " List available drivers: $0 --options" >&2
- echo " Load configured driver and set libs: $0 --start" >&2
- echo " Get current driver: $0" >&2
- echo " Configure driver to load on next boot: $0 " >&2
- exit 1
- ;;
-esac
diff --git a/packages/graphics/libmali/sources/hook/hook.c b/packages/graphics/libmali/sources/hook/hook.c
deleted file mode 100644
index 6dbacc04c7..0000000000
--- a/packages/graphics/libmali/sources/hook/hook.c
+++ /dev/null
@@ -1,707 +0,0 @@
-/*
- * Copyright (c) 2020, Rockchip Electronics Co., Ltd
- *
- * 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.
- *
- * 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.
- */
-
-#ifndef _GNU_SOURCE
-#define _GNU_SOURCE 1
-#endif
-
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-#ifdef HAS_GBM
-#include
-#endif
-
-#ifdef HAS_EGL
-#include
-#include
-#endif
-
-#ifdef HAS_X11
-#include
-
-#include
-#include
-#endif
-
-#ifndef ARRAY_SIZE
-#define ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0]))
-#endif
-
-#ifndef DRM_FORMAT_MOD_LINEAR
-#define DRM_FORMAT_MOD_LINEAR 0
-#endif
-
-#ifndef DRM_FORMAT_MOD_INVALID
-#define DRM_FORMAT_MOD_INVALID ((1ULL<<56) - 1)
-#endif
-
-/* A stub symbol to ensure that the hook library would not be removed as unused */
-int mali_injected = 0;
-
-/* Override libmali symbols */
-EGLAPI EGLBoolean EGLAPIENTRY _eglDestroySurface (EGLDisplay dpy, EGLSurface surface);
-
-#ifdef HAS_EGL
-static PFNEGLGETPLATFORMDISPLAYPROC eglGetPlatformDisplay_orig = NULL;
-#ifdef HAS_X11
-EGLAPI __eglMustCastToProperFunctionPointerType EGLAPIENTRY _eglGetProcAddress (const char *procname);
-static PFNEGLGETPLATFORMDISPLAYEXTPROC eglGetPlatformDisplayEXT_orig = NULL;
-#endif
-#endif
-
-
-#define PUBLIC
-
-__attribute__((constructor)) static void
-load_mali_symbols(void)
-{
- void *handle;
-
- /* The libmali should be already loaded */
- handle = dlopen(LIBMALI_SO, RTLD_LAZY | RTLD_NOLOAD);
- if (!handle) {
- /* Should not reach here */
- fprintf(stderr, "FATAL: dlopen(" LIBMALI_SO ") failed(%s)\n", dlerror());
- exit(-1);
- }
-
-#ifdef HAS_EGL
- eglGetPlatformDisplay_orig =
- (PFNEGLGETPLATFORMDISPLAYPROC)eglGetProcAddress("eglGetPlatformDisplay");
-#ifdef HAS_X11
- eglGetPlatformDisplayEXT_orig =
- (PFNEGLGETPLATFORMDISPLAYEXTPROC)_eglGetProcAddress("eglGetPlatformDisplayEXT");
-#endif
-#endif
-}
-
-#ifdef HAS_GBM
-
-/* Implement new GBM APIs */
-
-__attribute__((unused)) static inline bool
-can_ignore_modifiers(const uint64_t *modifiers,
- const unsigned int count)
-{
- for (int i = 0; i < count; i++) {
- if (modifiers[i] == DRM_FORMAT_MOD_LINEAR ||
- modifiers[i] == DRM_FORMAT_MOD_INVALID) {
- return true;
- }
- }
-
- return !count;
-}
-
-#ifndef HAS_gbm_bo_get_offset
-uint32_t
-gbm_bo_get_offset(struct gbm_bo *bo, int plane)
-{
- return 0;
-}
-#endif
-
-#ifndef HAS_gbm_bo_get_plane_count
-int
-gbm_bo_get_plane_count(struct gbm_bo *bo)
-{
- return 1;
-}
-#endif
-
-#ifndef HAS_gbm_bo_get_stride_for_plane
-uint32_t
-gbm_bo_get_stride_for_plane(struct gbm_bo *bo, int plane)
-{
- if (plane)
- return 0;
-
- return gbm_bo_get_stride(bo);
-}
-#endif
-
-#ifndef HAS_gbm_bo_get_fd_for_plane
-int
-gbm_bo_get_fd_for_plane(struct gbm_bo *bo, int plane)
-{
- if (plane)
- return -1;
-
- return gbm_bo_get_fd(bo);
-}
-#endif
-
-#ifndef HAS_gbm_bo_get_handle_for_plane
-union gbm_bo_handle
-gbm_bo_get_handle_for_plane(struct gbm_bo *bo, int plane)
-{
- union gbm_bo_handle ret;
- ret.s32 = -1;
-
- if (plane)
- return ret;
-
- return gbm_bo_get_handle(bo);
-}
-#endif
-
-#ifndef HAS_gbm_device_get_format_modifier_plane_count
-int
-gbm_device_get_format_modifier_plane_count(struct gbm_device *gbm,
- uint32_t format,
- uint64_t modifier)
-{
- return can_ignore_modifiers(&modifier, 1) ? 1 : 0;
-}
-#endif
-
-#ifndef HAS_gbm_bo_create_with_modifiers2
-struct gbm_bo *
-gbm_bo_create_with_modifiers2(struct gbm_device *gbm,
- uint32_t width, uint32_t height,
- uint32_t format,
- const uint64_t *modifiers,
- const unsigned int count,
- uint32_t flags)
-{
-#ifdef HAS_gbm_bo_create_with_modifiers
- /* flags ignored */
- return gbm_bo_create_with_modifiers(gbm, width, height, format,
- modifiers, count);
-#else
- if (!can_ignore_modifiers(modifiers, count))
- return NULL;
-
- return gbm_bo_create(gbm, width, height, format, flags);
-#endif
-}
-#endif
-
-#ifndef HAS_gbm_bo_create_with_modifiers
-struct gbm_bo *
-gbm_bo_create_with_modifiers(struct gbm_device *gbm,
- uint32_t width, uint32_t height,
- uint32_t format,
- const uint64_t *modifiers,
- const unsigned int count)
-{
- return gbm_bo_create_with_modifiers2(gbm, width, height, format,
- modifiers, count, GBM_BO_USE_SCANOUT);
-}
-#endif
-
-#ifndef HAS_gbm_surface_create_with_modifiers2
-struct gbm_surface *
-gbm_surface_create_with_modifiers2(struct gbm_device *gbm,
- uint32_t width, uint32_t height,
- uint32_t format,
- const uint64_t *modifiers,
- const unsigned int count,
- uint32_t flags)
-{
-#ifdef HAS_gbm_surface_create_with_modifiers
- /* flags ignored */
- return gbm_surface_create_with_modifiers(gbm, width, height, format,
- modifiers, count);
-#else
- if (!can_ignore_modifiers(modifiers, count))
- return NULL;
-
- return gbm_surface_create(gbm, width, height, format, 0);
-#endif
-}
-#endif
-
-#ifndef HAS_gbm_surface_create_with_modifiers
-struct gbm_surface *
-gbm_surface_create_with_modifiers(struct gbm_device *gbm,
- uint32_t width, uint32_t height,
- uint32_t format,
- const uint64_t *modifiers,
- const unsigned int count)
-{
- return gbm_surface_create_with_modifiers2(gbm, width, height, format,
- modifiers, count,
- GBM_BO_USE_SCANOUT);
-}
-#endif
-
-#ifndef HAS_gbm_bo_map
-void *
-gbm_bo_map(struct gbm_bo *bo,
- uint32_t x, uint32_t y, uint32_t width, uint32_t height,
- uint32_t flags, uint32_t *stride, void **map_data)
-{
- struct drm_mode_map_dumb arg;
- struct gbm_device *gbm_dev;
- void *map;
- int fd, ret;
-
- if (!bo || !map_data || width <= 0 || width > gbm_bo_get_width(bo) ||
- height <= 0 || height > gbm_bo_get_height(bo)) {
- errno = EINVAL;
- return MAP_FAILED;
- }
-
- gbm_dev = gbm_bo_get_device(bo);
- if (!gbm_dev)
- return MAP_FAILED;
-
- fd = gbm_device_get_fd(gbm_dev);
- if (fd < 0)
- return MAP_FAILED;
-
- memset(&arg, 0, sizeof(arg));
- arg.handle = gbm_bo_get_handle(bo).u32;
- ret = drmIoctl(fd, DRM_IOCTL_MODE_MAP_DUMB, &arg);
- if (ret)
- return MAP_FAILED;
-
- map = mmap(NULL, gbm_bo_get_stride(bo) * gbm_bo_get_height(bo),
- PROT_READ | PROT_WRITE, MAP_SHARED, fd, arg.offset);
- if (map == MAP_FAILED)
- return map;
-
- *map_data = map;
-
- if (stride)
- *stride = gbm_bo_get_stride(bo);
-
- return map + y * gbm_bo_get_stride(bo) + x * (gbm_bo_get_bpp(bo) >> 3);
-}
-#endif
-
-#ifndef HAS_gbm_bo_unmap
-void
-gbm_bo_unmap(struct gbm_bo *bo, void *map_data)
-{
- if (map_data)
- munmap(map_data, gbm_bo_get_stride(bo) * gbm_bo_get_height(bo));
-}
-#endif
-
-/* From mesa3d mesa-23.1.3-1 : src/gbm/main/gbm.c */
-#ifndef HAS_gbm_bo_get_bpp
-uint32_t
-gbm_bo_get_bpp(struct gbm_bo *bo)
-{
- switch (gbm_bo_get_format(bo)) {
- default:
- return 0;
- case GBM_FORMAT_C8:
- case GBM_FORMAT_R8:
- case GBM_FORMAT_RGB332:
- case GBM_FORMAT_BGR233:
- return 8;
- case GBM_FORMAT_R16:
- case GBM_FORMAT_GR88:
- case GBM_FORMAT_XRGB4444:
- case GBM_FORMAT_XBGR4444:
- case GBM_FORMAT_RGBX4444:
- case GBM_FORMAT_BGRX4444:
- case GBM_FORMAT_ARGB4444:
- case GBM_FORMAT_ABGR4444:
- case GBM_FORMAT_RGBA4444:
- case GBM_FORMAT_BGRA4444:
- case GBM_FORMAT_XRGB1555:
- case GBM_FORMAT_XBGR1555:
- case GBM_FORMAT_RGBX5551:
- case GBM_FORMAT_BGRX5551:
- case GBM_FORMAT_ARGB1555:
- case GBM_FORMAT_ABGR1555:
- case GBM_FORMAT_RGBA5551:
- case GBM_FORMAT_BGRA5551:
- case GBM_FORMAT_RGB565:
- case GBM_FORMAT_BGR565:
- return 16;
- case GBM_FORMAT_RGB888:
- case GBM_FORMAT_BGR888:
- return 24;
- case GBM_FORMAT_RG1616:
- case GBM_FORMAT_GR1616:
- case GBM_FORMAT_XRGB8888:
- case GBM_FORMAT_XBGR8888:
- case GBM_FORMAT_RGBX8888:
- case GBM_FORMAT_BGRX8888:
- case GBM_FORMAT_ARGB8888:
- case GBM_FORMAT_ABGR8888:
- case GBM_FORMAT_RGBA8888:
- case GBM_FORMAT_BGRA8888:
- case GBM_FORMAT_XRGB2101010:
- case GBM_FORMAT_XBGR2101010:
- case GBM_FORMAT_RGBX1010102:
- case GBM_FORMAT_BGRX1010102:
- case GBM_FORMAT_ARGB2101010:
- case GBM_FORMAT_ABGR2101010:
- case GBM_FORMAT_RGBA1010102:
- case GBM_FORMAT_BGRA1010102:
- return 32;
- case GBM_FORMAT_XBGR16161616:
- case GBM_FORMAT_ABGR16161616:
- case GBM_FORMAT_XBGR16161616F:
- case GBM_FORMAT_ABGR16161616F:
- return 64;
- }
-}
-#endif
-
-/* From mesa3d mesa-23.1.3-1 : src/gbm/main/gbm.c */
-#ifndef HAS_gbm_format_get_name
-static uint32_t
-gbm_format_canonicalize(uint32_t gbm_format)
-{
- switch (gbm_format) {
- case GBM_BO_FORMAT_XRGB8888:
- return GBM_FORMAT_XRGB8888;
- case GBM_BO_FORMAT_ARGB8888:
- return GBM_FORMAT_ARGB8888;
- default:
- return gbm_format;
- }
-}
-
-char *
-gbm_format_get_name(uint32_t gbm_format, struct gbm_format_name_desc *desc)
-{
- gbm_format = gbm_format_canonicalize(gbm_format);
-
- desc->name[0] = gbm_format;
- desc->name[1] = gbm_format >> 8;
- desc->name[2] = gbm_format >> 16;
- desc->name[3] = gbm_format >> 24;
- desc->name[4] = 0;
-
- return desc->name;
-}
-#endif
-
-/* Wrappers for invalid modifier */
-
-uint64_t
-_gbm_bo_get_modifier(struct gbm_bo *bo);
-
-uint64_t
-gbm_bo_get_modifier(struct gbm_bo *bo)
-{
-#ifdef HAS_gbm_bo_get_modifier
- uint64_t modifier = _gbm_bo_get_modifier(bo);
- if (modifier != DRM_FORMAT_MOD_INVALID)
- return modifier;
-#endif
- return DRM_FORMAT_MOD_LINEAR;
-}
-
-/* Wrappers for unsupported flags */
-
-struct gbm_surface *
-_gbm_surface_create(struct gbm_device *gbm,
- uint32_t width, uint32_t height,
- uint32_t format, uint32_t flags);
-struct gbm_surface *
-gbm_surface_create(struct gbm_device *gbm,
- uint32_t width, uint32_t height,
- uint32_t format, uint32_t flags)
-{
- struct gbm_surface *surface;
-
- surface = _gbm_surface_create(gbm, width, height, format, flags);
- if (surface)
- return surface;
-
- flags &= GBM_BO_USE_SCANOUT | GBM_BO_USE_RENDERING;
- return _gbm_surface_create(gbm, width, height, format, flags);
-}
-
-struct gbm_bo *
-_gbm_bo_create(struct gbm_device *gbm,
- uint32_t width, uint32_t height,
- uint32_t format, uint32_t flags);
-struct gbm_bo *
-gbm_bo_create(struct gbm_device *gbm,
- uint32_t width, uint32_t height,
- uint32_t format, uint32_t flags)
-{
- struct gbm_bo *bo;
-
- bo = _gbm_bo_create(gbm, width, height, format, flags);
- if (bo)
- return bo;
-
- flags &= GBM_BO_USE_SCANOUT | GBM_BO_USE_RENDERING |
- GBM_BO_USE_WRITE | GBM_BO_USE_CURSOR_64X64;
- return _gbm_bo_create(gbm, width, height, format, flags);
-}
-
-#endif // HAS_GBM
-
-#ifdef HAS_EGL
-#ifdef HAS_X11
-
-/* Hacked displays (should not be much) */
-#define MAX_X11_DISPLAY 32
-static Display *_x11_displays[MAX_X11_DISPLAY] = { NULL, };
-
-static pthread_mutex_t _x11_mutex = PTHREAD_MUTEX_INITIALIZER;
-
-static inline int
-force_x11_threads(void)
-{
- return !getenv("MALI_X11_NO_FORCE_THREADS");
-}
-
-__attribute__((constructor)) static void
-init_x11_threads(void)
-{
- if (force_x11_threads())
- XInitThreads();
-}
-
-__attribute__((destructor)) static void
-cleanup_x11_display(void)
-{
- int i;
-
- for (i = 0; i < MAX_X11_DISPLAY; i++) {
- Display *display = _x11_displays[i];
- if (display)
- XCloseDisplay(display);
- }
-}
-
-static Display *
-fixup_x11_display(Display *display)
-{
- int i;
-
- if (!force_x11_threads())
- return display;
-
- if (!display || display->lock_fns)
- return display;
-
- pthread_mutex_lock(&_x11_mutex);
- /* Create a new threaded display */
- display = XOpenDisplay(DisplayString(display));
-
- for (i = 0; i < MAX_X11_DISPLAY; i++) {
- if (!_x11_displays[i]) {
- _x11_displays[i] = display;
- break;
- }
- }
- pthread_mutex_unlock(&_x11_mutex);
-
- return display;
-}
-
-/* Override EGL symbols */
-
-EGLAPI EGLDisplay EGLAPIENTRY
-eglGetPlatformDisplayEXT (EGLenum platform, void *native_display, const EGLint *attrib_list)
-{
- if (!eglGetPlatformDisplayEXT_orig)
- return EGL_NO_DISPLAY;
-
- if (platform == EGL_PLATFORM_X11_KHR && native_display) {
- native_display = (void *)fixup_x11_display(native_display);
- if (!native_display)
- return EGL_NO_DISPLAY;
- }
-
- return eglGetPlatformDisplayEXT_orig(platform, native_display, attrib_list);
-}
-
-PUBLIC __eglMustCastToProperFunctionPointerType EGLAPIENTRY
-eglGetProcAddress(const char *procname)
-{
- if (!procname)
- return NULL;
-
- if (!strcmp(procname, __func__))
- return (__eglMustCastToProperFunctionPointerType)_eglGetProcAddress;
-
- if (!strcmp(procname, "eglGetDisplay"))
- return (__eglMustCastToProperFunctionPointerType)eglGetDisplay;
-
- if (!strcmp(procname, "eglGetPlatformDisplay")) {
- if (!eglGetPlatformDisplay_orig && !eglGetPlatformDisplayEXT_orig)
- return NULL;
- return (__eglMustCastToProperFunctionPointerType)eglGetPlatformDisplay;
- }
-
- if (!strcmp(procname, "eglGetPlatformDisplayEXT")) {
- if (!eglGetPlatformDisplayEXT_orig)
- return NULL;
- return (__eglMustCastToProperFunctionPointerType)eglGetPlatformDisplayEXT;
- }
-
- if (!strcmp(procname, "eglDestroySurface"))
- return (__eglMustCastToProperFunctionPointerType)eglDestroySurface;
-
- return _eglGetProcAddress(procname);
-}
-
-#endif // HAS_X11
-
-EGLAPI EGLDisplay EGLAPIENTRY _eglGetDisplay (EGLNativeDisplayType display_id);
-PUBLIC EGLDisplay EGLAPIENTRY
-eglGetDisplay (EGLNativeDisplayType display_id)
-{
- const char *type = getenv("MALI_DEFAULT_WINSYS");
-
-#ifdef HAS_GBM
- if (type && !strcmp(type, "gbm"))
- return eglGetPlatformDisplay(EGL_PLATFORM_GBM_KHR, display_id, NULL);
-#endif
-
-#ifdef HAS_WAYLAND
- if (type && !strcmp(type, "wayland"))
- return eglGetPlatformDisplay(EGL_PLATFORM_WAYLAND_EXT, display_id, NULL);
-#endif
-
-#ifdef HAS_X11
- /* Use X11 by default when avaiable */
- return eglGetPlatformDisplay(EGL_PLATFORM_X11_KHR, display_id, NULL);
-#else
- return _eglGetDisplay(display_id);
-#endif
-}
-
-/* Export for EGL 1.5 */
-
-#define GET_PROC_ADDR(v, n) v = (typeof(v))eglGetProcAddress(n)
-
-/* From mesa3d mesa-23.1.3-1 : src/egl/main/egldisplay.h */
-static inline size_t
-_eglNumAttribs(const EGLAttrib *attribs)
-{
- size_t len = 0;
-
- if (attribs) {
- while (attribs[len] != EGL_NONE)
- len += 2;
- len++;
- }
- return len;
-}
-
-/* From mesa3d mesa-23.1.3-1 : src/egl/main/eglapi.c */
-static EGLint *
-_eglConvertAttribsToInt(const EGLAttrib *attr_list)
-{
- size_t size = _eglNumAttribs(attr_list);
- EGLint *int_attribs = NULL;
-
- /* Convert attributes from EGLAttrib[] to EGLint[] */
- if (size) {
- int_attribs = calloc(size, sizeof(int_attribs[0]));
- if (!int_attribs)
- return NULL;
-
- for (size_t i = 0; i < size; i++)
- int_attribs[i] = attr_list[i];
- }
- return int_attribs;
-}
-
-EGLAPI EGLDisplay EGLAPIENTRY
-eglGetPlatformDisplay(EGLenum platform, void *native_display, const EGLAttrib *attrib_list)
-{
- PFNEGLGETPLATFORMDISPLAYEXTPROC get_platform_display_ext;
-
- GET_PROC_ADDR(get_platform_display_ext, "eglGetPlatformDisplayEXT");
- if (get_platform_display_ext) {
- EGLint *int_attribs = _eglConvertAttribsToInt(attrib_list);
- if (!int_attribs == !attrib_list) {
- EGLDisplay display =
- get_platform_display_ext(platform, native_display, int_attribs);
- free(int_attribs);
- return display;
- }
- }
-
- if (!eglGetPlatformDisplay_orig)
- return EGL_NO_DISPLAY;
-
-#ifdef HAS_X11
- if (platform == EGL_PLATFORM_X11_KHR && native_display) {
- native_display = (void *)fixup_x11_display(native_display);
- if (!native_display)
- return EGL_NO_DISPLAY;
- }
-#endif
-
- return eglGetPlatformDisplay_orig(platform, native_display, attrib_list);
-}
-
-EGLAPI EGLSurface EGLAPIENTRY
-eglCreatePlatformWindowSurface(EGLDisplay dpy, EGLConfig config, void *native_window, const EGLAttrib *attrib_list)
-{
- PFNEGLCREATEPLATFORMWINDOWSURFACEPROC create_platform_window_surface;
-
- GET_PROC_ADDR(create_platform_window_surface,
- "eglCreatePlatformWindowSurface");
- if (!create_platform_window_surface) {
- EGLint *int_attribs = _eglConvertAttribsToInt(attrib_list);
- if (!int_attribs == !attrib_list) {
- EGLSurface surface =
- eglCreateWindowSurface(dpy, config, native_window, int_attribs);
- free(int_attribs);
- return surface;
- }
- }
-
- return create_platform_window_surface(dpy, config, native_window, attrib_list);
-}
-
-EGLAPI EGLSurface EGLAPIENTRY
-eglCreatePlatformPixmapSurface(EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLAttrib *attrib_list)
-{
- PFNEGLCREATEPLATFORMPIXMAPSURFACEPROC create_platform_pixmap_surface;
-
- GET_PROC_ADDR(create_platform_pixmap_surface,
- "eglCreatePlatformPixmapSurface");
- if (!create_platform_pixmap_surface) {
- EGLint *int_attribs = _eglConvertAttribsToInt(attrib_list);
- if (!int_attribs == !attrib_list) {
- EGLSurface surface =
- eglCreatePixmapSurface(dpy, config, native_pixmap, int_attribs);
- free(int_attribs);
- return surface;
- }
- }
-
- return create_platform_pixmap_surface(dpy, config, native_pixmap, attrib_list);
-}
-
-/* Unset current surface before destroying it */
-PUBLIC EGLBoolean
-eglDestroySurface(EGLDisplay dpy, EGLSurface surface)
-{
- if (eglGetCurrentSurface(EGL_DRAW) == surface ||
- eglGetCurrentSurface(EGL_READ) == surface)
- eglMakeCurrent(dpy, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
-
- return _eglDestroySurface(dpy, surface);
-}
-
-#endif // HAS_EGL
diff --git a/packages/graphics/libmali/sources/hook/meson.build b/packages/graphics/libmali/sources/hook/meson.build
deleted file mode 100644
index 091cfdd71e..0000000000
--- a/packages/graphics/libmali/sources/hook/meson.build
+++ /dev/null
@@ -1,72 +0,0 @@
-# The gbm functions that might be missing
-gbm_check_funcs = [
- 'gbm_bo_map',
- 'gbm_bo_unmap',
- 'gbm_bo_get_offset',
- 'gbm_bo_get_plane_count',
- 'gbm_device_get_format_modifier_plane_count',
- 'gbm_bo_get_handle_for_plane',
- 'gbm_bo_get_stride_for_plane',
- 'gbm_bo_get_fd_for_plane',
- 'gbm_bo_get_modifier',
- 'gbm_bo_create_with_modifiers',
- 'gbm_bo_create_with_modifiers2',
- 'gbm_surface_create_with_modifiers',
- 'gbm_surface_create_with_modifiers2',
- 'gbm_bo_get_bpp',
- 'gbm_format_get_name',
-]
-
-libhook_cflags = [
- '-DLIBMALI_SO="libmali.so.' + mali_version.split('.')[0] + '"',
-]
-
-libhook_dep = [
- dependency('threads'),
- cc.find_library('dl', required : false),
- dependency('libdrm', version : '>= 2.4.0'),
-]
-
-libhook_inc = []
-
-if cc.has_function('gbm_create_device', dependencies : mali)
- # Add hooks to support new GBM APIs
- libhook_inc += include_directories('..' / gbm_headers.keys()[0])
- libhook_cflags += '-DHAS_GBM'
- foreach symbol : gbm_check_funcs
- if cc.has_function(symbol, dependencies : mali)
- libhook_cflags += '-DHAS_' + symbol
- endif
- endforeach
-endif
-
-if cc.has_function('eglCreateContext', dependencies : mali)
- # Add hooks to support default winsys
- libhook_inc += include_directories('../include')
- libhook_cflags += '-DHAS_EGL'
-
- if cc.has_function('wl_egl_window_create', dependencies : mali)
- libhook_cflags += '-DHAS_WAYLAND'
- endif
-
- if has_x11
- # Add hooks to init X11 threads
- libhook_dep += dependency('x11')
- libhook_cflags += '-DHAS_X11'
- endif
-endif
-
-vflag = '-Wl,--export-dynamic'
-
-libhook = shared_library(
- 'mali-hook',
- 'hook.c',
- c_args : libhook_cflags,
- link_args : [vflag, '-L.', '-lmali-prebuilt'],
- include_directories : libhook_inc,
- dependencies : libhook_dep,
- install : true,
- install_rpath : '$ORIGIN',
- version : mali_version)
-
-libhook_ldflags = ['-L${libdir}', '-lmali-hook']
diff --git a/packages/graphics/libmali/sources/rename.syms b/packages/graphics/libmali/sources/rename.syms
deleted file mode 100644
index 777f046ec2..0000000000
--- a/packages/graphics/libmali/sources/rename.syms
+++ /dev/null
@@ -1,5 +0,0 @@
-gbm_surface_create _gbm_surface_create
-gbm_bo_create _gbm_bo_create
-gbm_bo_get_modifier _gbm_bo_get_modifier
-eglGetDisplay _eglGetDisplay
-eglDestroySurface _eglDestroySurface
diff --git a/packages/graphics/mesa/package.mk b/packages/graphics/mesa/package.mk
index 3e6af89e87..bd695e2577 100644
--- a/packages/graphics/mesa/package.mk
+++ b/packages/graphics/mesa/package.mk
@@ -4,7 +4,7 @@
PKG_NAME="mesa"
PKG_LICENSE="OSS"
-PKG_VERSION="24.2.5"
+PKG_VERSION="24.2.7"
PKG_SITE="http://www.mesa3d.org/"
PKG_URL="https://gitlab.freedesktop.org/mesa/mesa/-/archive/mesa-${PKG_VERSION}/mesa-mesa-${PKG_VERSION}.tar.gz"
PKG_DEPENDS_TARGET="toolchain expat libdrm zstd Mako:host pyyaml:host"
@@ -103,9 +103,3 @@ if [ "${VULKAN_SUPPORT}" = "yes" ]; then
else
PKG_MESON_OPTS_TARGET+=" -Dvulkan-drivers="
fi
-
-post_makeinstall_target() {
- if listcontains "${GRAPHIC_DRIVERS}" "(panfrost)"; then
- rm -f ${INSTALL}/usr/lib/libvulkan_panfrost.so ${INSTALL}/usr/share/vulkan/icd.d/panfrost_icd.aarch64.json
- fi
-}
diff --git a/packages/graphics/qt5/package.mk b/packages/graphics/qt5/package.mk
index bd35e015b3..aac2c63461 100644
--- a/packages/graphics/qt5/package.mk
+++ b/packages/graphics/qt5/package.mk
@@ -3,7 +3,7 @@
# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS)
PKG_NAME="qt5"
-PKG_VERSION="4765fa1df7a837db9c1f89c4da0dd76b74bb5fab"
+PKG_VERSION="933cb1705c9d8b1d733c719d1cffb8efbec89d7b"
PKG_LICENSE="GPL"
PKG_SITE="http://qt-project.org"
PKG_URL="https://invent.kde.org/qt/qt/qt5.git"
diff --git a/packages/hardware/quirks/autostart/020-set_audio_latency b/packages/hardware/quirks/autostart/020-set_audio_latency
new file mode 100644
index 0000000000..f9e7726312
--- /dev/null
+++ b/packages/hardware/quirks/autostart/020-set_audio_latency
@@ -0,0 +1,11 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0
+# Copyright (C) 2024 ROCKNIX (https://github.com/ROCKNIX)
+
+. /etc/profile.d/001-functions
+
+AUDIO_LATENCY=$(get_setting audiolatency)
+if [ -z "${AUDIO_LATENCY}" ]
+then
+ set_setting global.audiolatency 32
+fi
diff --git a/packages/hardware/quirks/devices/Powkiddy x35s b/packages/hardware/quirks/devices/Powkiddy x35s
new file mode 120000
index 0000000000..11e0fe3199
--- /dev/null
+++ b/packages/hardware/quirks/devices/Powkiddy x35s
@@ -0,0 +1 @@
+Powkiddy x55
\ No newline at end of file
diff --git a/packages/hardware/quirks/devices/RetrOLED CM5/050-audio_path b/packages/hardware/quirks/devices/RetrOLED CM5/050-audio_path
index a142c4dd8c..f1c1e6a734 100755
--- a/packages/hardware/quirks/devices/RetrOLED CM5/050-audio_path
+++ b/packages/hardware/quirks/devices/RetrOLED CM5/050-audio_path
@@ -7,13 +7,14 @@ pactl set-default-sink ${SPEAKER}
cat </storage/.config/profile.d/002-audio_path
DEVICE_PLAYBACK_PATH="Playback Mux"
+DEFAULT_SINK=${SPEAKER}
EOF
### Set sound properties
-amixer -c 1 -q cset numid=21 243,243
-amixer -c 1 -q cset numid=24 127,127
-amixer -c 1 -q cset numid=26 5
-amixer -c 1 -q cset numid=27 5
-amixer -c 1 -q cset numid=62 on
-amixer -c 1 -q cset numid=65 on
+amixer -c 0 -q cset name='Playback Volume' 243,243
+amixer -c 0 -q cset name='Speaker Playback Volume' 127,127
+amixer -c 0 -q cset name='Speaker DC Volume' 5
+amixer -c 0 -q cset name='Speaker AC Volume' 5
+amixer -c 0 -q cset name='Left Output Mixer PCM Playback Switch' on
+amixer -c 0 -q cset name='Right Output Mixer PCM Playback Switch' on
diff --git a/packages/hardware/quirks/devices/Retro Lite CM5/050-audio_path b/packages/hardware/quirks/devices/Retro Lite CM5/050-audio_path
index a142c4dd8c..f1c1e6a734 100755
--- a/packages/hardware/quirks/devices/Retro Lite CM5/050-audio_path
+++ b/packages/hardware/quirks/devices/Retro Lite CM5/050-audio_path
@@ -7,13 +7,14 @@ pactl set-default-sink ${SPEAKER}
cat </storage/.config/profile.d/002-audio_path
DEVICE_PLAYBACK_PATH="Playback Mux"
+DEFAULT_SINK=${SPEAKER}
EOF
### Set sound properties
-amixer -c 1 -q cset numid=21 243,243
-amixer -c 1 -q cset numid=24 127,127
-amixer -c 1 -q cset numid=26 5
-amixer -c 1 -q cset numid=27 5
-amixer -c 1 -q cset numid=62 on
-amixer -c 1 -q cset numid=65 on
+amixer -c 0 -q cset name='Playback Volume' 243,243
+amixer -c 0 -q cset name='Speaker Playback Volume' 127,127
+amixer -c 0 -q cset name='Speaker DC Volume' 5
+amixer -c 0 -q cset name='Speaker AC Volume' 5
+amixer -c 0 -q cset name='Left Output Mixer PCM Playback Switch' on
+amixer -c 0 -q cset name='Right Output Mixer PCM Playback Switch' on
diff --git a/packages/hardware/quirks/devices/Retroid Pocket 5/001-device_config b/packages/hardware/quirks/devices/Retroid Pocket 5/001-device_config
index ba0abfceab..1615d7929a 100644
--- a/packages/hardware/quirks/devices/Retroid Pocket 5/001-device_config
+++ b/packages/hardware/quirks/devices/Retroid Pocket 5/001-device_config
@@ -6,4 +6,5 @@ cat </storage/.config/profile.d/001-device_config
# Device Features
DEVICE_HAS_TOUCHSCREEN="true"
DEVICE_NO_MAC="true"
+DEVICE_GPU_OVERCLOCK="true"
EOF
diff --git a/packages/hardware/quirks/platforms/SD865/025-set_audio_latency b/packages/hardware/quirks/platforms/H700/020-set_audio_latency
old mode 100644
new mode 100755
similarity index 100%
rename from packages/hardware/quirks/platforms/SD865/025-set_audio_latency
rename to packages/hardware/quirks/platforms/H700/020-set_audio_latency
diff --git a/packages/hardware/quirks/platforms/H700/091-ui_shader b/packages/hardware/quirks/platforms/H700/091-ui_shader
index d087007a42..7eab4389f5 100755
--- a/packages/hardware/quirks/platforms/H700/091-ui_shader
+++ b/packages/hardware/quirks/platforms/H700/091-ui_shader
@@ -4,5 +4,5 @@
### Set the default device configuration
cat </storage/.config/profile.d/091-ui_shader
-UI_SHADER="slangp"
+UI_SHADER="glslp"
EOF
diff --git a/packages/hardware/quirks/platforms/S922X/090-ui_service b/packages/hardware/quirks/platforms/S922X/090-ui_service
index 4c9e45dae1..bc7013fc95 100755
--- a/packages/hardware/quirks/platforms/S922X/090-ui_service
+++ b/packages/hardware/quirks/platforms/S922X/090-ui_service
@@ -3,12 +3,6 @@
# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS)
### Set the default device configuration
-if [ -f "/usr/lib/systemd/system/sway.service" ]; then
- cat </storage/.config/profile.d/090-ui_service
-UI_SERVICE="sway.service essway.service"
-EOF
-else
- cat </storage/.config/profile.d/090-ui_service
+cat </storage/.config/profile.d/090-ui_service
UI_SERVICE="weston.service"
EOF
-fi
\ No newline at end of file
diff --git a/packages/hardware/quirks/platforms/SD865/015-set_mac_addr b/packages/hardware/quirks/platforms/SD865/015-set_mac_addr
deleted file mode 100644
index 6ee0dc4f80..0000000000
--- a/packages/hardware/quirks/platforms/SD865/015-set_mac_addr
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/bin/bash
-
-# SPDX-License-Identifier: GPL-2.0-or-later
-# Copyright (C) 2024-present ROCKNIX (https://github.com/ROCKNIX)
-
-. /etc/profile
-
- if [ ! -f "/storage/.config/mac_addr.conf" ]; then
- # Generate random bytes
- bytes=$(dd if=/dev/urandom bs=2 count=1 2>/dev/null | xxd -p)
- # Format bytes into MAC address format
- MAC_ADDR=$(echo "00:03:7F:12:${bytes:0:2}:${bytes:2:4}")
-
- # Output the random MAC address
- echo $MAC_ADDR > "/storage/.config/mac_addr.conf"
- fi
diff --git a/packages/hardware/quirks/platforms/SD865/020-set_audio_latency b/packages/hardware/quirks/platforms/SD865/020-set_audio_latency
new file mode 100644
index 0000000000..657e2394d2
--- /dev/null
+++ b/packages/hardware/quirks/platforms/SD865/020-set_audio_latency
@@ -0,0 +1,11 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0
+# Copyright (C) 2024 ROCKNIX (https://github.com/ROCKNIX)
+
+. /etc/profile.d/001-functions
+
+AUDIO_LATENCY=$(get_setting audiolatency)
+if [ -z "${AUDIO_LATENCY}" ]
+then
+ set_setting global.audiolatency 64
+fi
diff --git a/packages/hardware/quirks/platforms/SD865/091-ui_shader b/packages/hardware/quirks/platforms/SD865/091-ui_shader
index 213adf69ee..28e51157da 100755
--- a/packages/hardware/quirks/platforms/SD865/091-ui_shader
+++ b/packages/hardware/quirks/platforms/SD865/091-ui_shader
@@ -4,5 +4,5 @@
### Set the default device configuration
cat </storage/.config/profile.d/091-ui_shader
-UI_SHADER="glslp"
+UI_SHADER="slangp"
EOF
diff --git a/packages/hardware/quirks/platforms/SD865/400-set_gpu_overclock b/packages/hardware/quirks/platforms/SD865/400-set_gpu_overclock
new file mode 100644
index 0000000000..6014d4f573
--- /dev/null
+++ b/packages/hardware/quirks/platforms/SD865/400-set_gpu_overclock
@@ -0,0 +1,21 @@
+#!/bin/bash
+
+# SPDX-License-Identifier: GPL-2.0-or-later
+# Copyright (C) 2024-present ROCKNIX (https://github.com/ROCKNIX)
+
+. /etc/profile
+
+# Get GPU overclock state
+GPU_OC_STATE=$(get_setting "enable.gpu-overclock")
+if [ ! -n "${GPU_OC_STATE}" ]; then
+ GPU_OC_STATE="disable"
+ set_setting "enable.gpu-overclock" "0"
+elif [ "${GPU_OC_STATE}" = 1 ]; then
+ GPU_OC_STATE="enable"
+else
+ GPU_OC_STATE="disable"
+ set_setting "enable.gpu-overclock" "0"
+fi
+
+# Set GPU OC state
+/usr/lib/autostart/quirks/platforms/SD865/bin/gpu_overclock ${GPU_OC_STATE}
diff --git a/packages/hardware/quirks/platforms/SD865/bin/gpu_overclock b/packages/hardware/quirks/platforms/SD865/bin/gpu_overclock
new file mode 100644
index 0000000000..5ab99c44a1
--- /dev/null
+++ b/packages/hardware/quirks/platforms/SD865/bin/gpu_overclock
@@ -0,0 +1,17 @@
+#!/bin/bash
+# SPDX-License-Identifier: GPL-2.0
+# Copyright (C) 2024 ROCKNIX (https://github.com/ROCKNIX)
+
+. /etc/profile
+
+# Set max gpu freq
+case $1 in
+ disable)
+ echo 587000000 > $GPU_FREQ/max_freq
+ set_setting enable.gpu-overclock 0
+ ;;
+ enable)
+ echo 650000000 > $GPU_FREQ/max_freq
+ set_setting enable.gpu-overclock 1
+ ;;
+esac
diff --git a/packages/hardware/quirks/profile.d/999-export b/packages/hardware/quirks/profile.d/999-export
index a8efa0c4da..fe0675e4c9 100755
--- a/packages/hardware/quirks/profile.d/999-export
+++ b/packages/hardware/quirks/profile.d/999-export
@@ -19,6 +19,7 @@ export SLOW_CORES \
DEVICE_FUNC_KEYA_MODIFIER \
DEVICE_FUNC_KEYB_MODIFIER \
DEVICE_HAS_FAN \
+ DEVICE_GPU_OVERCLOCK \
DEVICE_HAS_HDMI \
DEVICE_HAS_TOUCHSCREEN \
DEVICE_HDMI_GPIO \
diff --git a/packages/kernel/device-tree-overlays/sources/S922X/driver-gpu-panfrost.dts b/packages/kernel/device-tree-overlays/sources/S922X/driver-gpu-panfrost.dts
new file mode 100644
index 0000000000..1bc4b9c0fc
--- /dev/null
+++ b/packages/kernel/device-tree-overlays/sources/S922X/driver-gpu-panfrost.dts
@@ -0,0 +1,18 @@
+/dts-v1/;
+/plugin/;
+
+/ {
+ fragment@0 {
+ target = <&mali>;
+ __overlay__ {
+ status = "okay";
+ };
+ };
+
+ fragment@1 {
+ target = <&mali_vulkan>;
+ __overlay__ {
+ status = "disabled";
+ };
+ };
+};
diff --git a/packages/kernel/drivers/ayn-platform/package.mk b/packages/kernel/drivers/ayn-platform/package.mk
index 8c9b254e53..5b0ad35db4 100644
--- a/packages/kernel/drivers/ayn-platform/package.mk
+++ b/packages/kernel/drivers/ayn-platform/package.mk
@@ -2,7 +2,7 @@
# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS)
PKG_NAME="ayn-platform"
-PKG_VERSION="02befd684c15743f9c8fd8e018c50b86feb0ae7b"
+PKG_VERSION="7ec810ed2aebe196b68b9cce580d3c9e520e6425"
PKG_LICENSE="GPL"
PKG_SITE="https://github.com/ShadowBlip/ayn-platform"
PKG_URL="${PKG_SITE}.git"
diff --git a/packages/kernel/linux/package.mk b/packages/kernel/linux/package.mk
index b9d7414cde..9a4af1cfa4 100644
--- a/packages/kernel/linux/package.mk
+++ b/packages/kernel/linux/package.mk
@@ -15,13 +15,9 @@ PKG_STAMP="${KERNEL_TARGET} ${KERNEL_MAKE_EXTRACMD}"
PKG_PATCH_DIRS="${LINUX} mainline ${DEVICE} default"
-if [ "${DEVICE}" = "S922X" -a "${USE_MALI}" = "no" ]; then
- PKG_PATCH_DIRS+=" S922X-PANFROST"
-fi
-
case ${DEVICE} in
RK3588)
- PKG_VERSION="0c0949a270027b749ab2c818e7ff61fc542757cc"
+ PKG_VERSION="b8e62bed74766b6c8c423a767b35495e78b64caf"
PKG_URL="https://github.com/armbian/linux-rockchip/archive/${PKG_VERSION}.tar.gz"
PKG_GIT_CLONE_BRANCH="rk-6.1-rkr3"
PKG_PATCH_DIRS="${LINUX} ${DEVICE} default"
@@ -30,12 +26,8 @@ case ${DEVICE} in
PKG_VERSION="6.12-rc3"
PKG_URL="https://git.kernel.org/torvalds/t/linux-${PKG_VERSION}.tar.gz"
;;
- RK3566)
- PKG_VERSION="6.11.4"
- PKG_URL="https://www.kernel.org/pub/linux/kernel/v${PKG_VERSION/.*/}.x/${PKG_NAME}-${PKG_VERSION}.tar.xz"
- ;;
*)
- PKG_VERSION="6.11.5"
+ PKG_VERSION="6.11.9"
PKG_URL="https://www.kernel.org/pub/linux/kernel/v${PKG_VERSION/.*/}.x/${PKG_NAME}-${PKG_VERSION}.tar.xz"
;;
esac
@@ -66,13 +58,10 @@ for pkg in $(get_pkg_variable initramfs PKG_DEPENDS_TARGET); do
! listcontains "${PKG_DEPENDS_TARGET}" "${pkg}" && PKG_DEPENDS_TARGET+=" ${pkg}" || true
done
-if [ "${DEVICE}" = "RK3326" ]; then
+if [ "${DEVICE}" = "RK3326" -o "${DEVICE}" = "RK3566" ]; then
PKG_DEPENDS_UNPACK+=" generic-dsi"
-
- post_unpack() {
- cp -v $(get_pkg_directory generic-dsi)/sources/panel-generic-dsi.c ${PKG_BUILD}/drivers/gpu/drm/panel/
- echo "obj-y" += panel-generic-dsi.o >> ${PKG_BUILD}/drivers/gpu/drm/panel/Makefile
- }
+elif [ "${DEVICE}" = "SD865" ]; then
+ PKG_DEPENDS_UNPACK+=" kernel-firmware"
fi
post_patch() {
@@ -84,6 +73,11 @@ post_patch() {
# restore the required Module.symvers from an earlier build
cp -p ${PKG_INSTALL}/.image/Module.symvers ${PKG_BUILD}
fi
+
+ if [ "${DEVICE}" = "RK3326" -o "${DEVICE}" = "RK3566" ]; then
+ cp -v $(get_pkg_directory generic-dsi)/sources/panel-generic-dsi.c ${PKG_BUILD}/drivers/gpu/drm/panel/
+ echo "obj-y" += panel-generic-dsi.o >> ${PKG_BUILD}/drivers/gpu/drm/panel/Makefile
+ fi
}
make_init() {
@@ -152,9 +146,6 @@ pre_make_target() {
${PKG_BUILD}/scripts/config --disable CONFIG_ISCSI_IBFT
fi
- # enable panfrost for S922X if Mali is not being used
- [ "${DEVICE}" = "S922X" -a "${USE_MALI}" = "no" ] && ${PKG_BUILD}/scripts/config --enable CONFIG_DRM_PANFROST
-
# disable lima/panfrost if libmali is configured
if [ "${OPENGLES}" = "libmali" ]; then
${PKG_BUILD}/scripts/config --disable CONFIG_DRM_LIMA
@@ -175,6 +166,19 @@ pre_make_target() {
FW_LIST="$(find ${PKG_BUILD}/external-firmware \( -type f -o -type l \) \( -iname '*.bin' -o -iname '*.fw' -o -path '*/intel-ucode/*' \) | sed 's|.*external-firmware/||' | sort | xargs)"
+ ${PKG_BUILD}/scripts/config --set-str CONFIG_EXTRA_FIRMWARE "${FW_LIST}"
+ ${PKG_BUILD}/scripts/config --set-str CONFIG_EXTRA_FIRMWARE_DIR "external-firmware"
+ elif [ "${TARGET_ARCH}" = "aarch64" -a "${DEVICE}" = "SD865" ]; then
+ mkdir -p ${PKG_BUILD}/external-firmware/qcom/sm8250
+ mkdir -p ${PKG_BUILD}/external-firmware/qcom/vpu-1.0
+ cp -Lv $(get_build_dir kernel-firmware)/.copied-firmware/qcom/a650_gmu.bin ${PKG_BUILD}/external-firmware/qcom
+ cp -Lv $(get_build_dir kernel-firmware)/.copied-firmware/qcom/a650_sqe.fw ${PKG_BUILD}/external-firmware/qcom
+ cp -Lv $(get_build_dir kernel-firmware)/.copied-firmware/qcom/sm8250/a650_zap.mbn ${PKG_BUILD}/external-firmware/qcom/sm8250
+ cp -Lv $(get_build_dir kernel-firmware)/.copied-firmware/qcom/sm8250/adsp.mbn ${PKG_BUILD}/external-firmware/qcom/sm8250
+ cp -Lv $(get_build_dir kernel-firmware)/.copied-firmware/qcom/sm8250/cdsp.mbn ${PKG_BUILD}/external-firmware/qcom/sm8250
+
+ FW_LIST="$(find ${PKG_BUILD}/external-firmware -type f | sed 's|.*external-firmware/||' | sort | xargs)"
+
${PKG_BUILD}/scripts/config --set-str CONFIG_EXTRA_FIRMWARE "${FW_LIST}"
${PKG_BUILD}/scripts/config --set-str CONFIG_EXTRA_FIRMWARE_DIR "external-firmware"
fi
diff --git a/packages/kernel/linux/patches/AMD64/010-optimize-harder-O3.patch b/packages/kernel/linux/patches/AMD64/010-optimize-harder-O3.patch
deleted file mode 100644
index 7fdce27f75..0000000000
--- a/packages/kernel/linux/patches/AMD64/010-optimize-harder-O3.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-diff --git a/Makefile b/Makefile
---- a/Makefile
-+++ b/Makefile
-@@ -442,7 +442,7 @@ endif
- HOSTPKG_CONFIG = pkg-config
-
- KBUILD_USERHOSTCFLAGS := -Wall -Wmissing-prototypes -Wstrict-prototypes \
-- -O2 -fomit-frame-pointer -std=gnu11
-+ -O3 -fomit-frame-pointer -std=gnu11
- KBUILD_USERCFLAGS := $(KBUILD_USERHOSTCFLAGS) $(USERCFLAGS)
- KBUILD_USERLDFLAGS := $(USERLDFLAGS)
-
-@@ -474,7 +474,7 @@ endif
- -Wclippy::dbg_macro
-
- KBUILD_HOSTCFLAGS := $(KBUILD_USERHOSTCFLAGS) $(HOST_LFS_CFLAGS) $(HOSTCFLAGS)
--KBUILD_HOSTCXXFLAGS := -Wall -O2 $(HOST_LFS_CFLAGS) $(HOSTCXXFLAGS)
-+KBUILD_HOSTCXXFLAGS := -Wall -O3 $(HOST_LFS_CFLAGS) $(HOSTCXXFLAGS)
- KBUILD_HOSTRUSTFLAGS := $(rust_common_flags) -O -Cstrip=debuginfo \
- -Zallow-features= $(HOSTRUSTFLAGS)
- KBUILD_HOSTLDFLAGS := $(HOST_LFS_LDFLAGS) $(HOSTLDFLAGS)
-@@ -757,7 +757,7 @@ KBUILD_CFLAGS += $(call cc-disable-warning, format-overflow)
- KBUILD_CFLAGS += $(call cc-disable-warning, address-of-packed-member)
-
- ifdef CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE
--KBUILD_CFLAGS += -O2
-+KBUILD_CFLAGS += -O3
- KBUILD_RUSTFLAGS += -Copt-level=2
- else ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE
- KBUILD_CFLAGS += -Os
-diff --git a/init/Kconfig b/init/Kconfig
---- a/init/Kconfig
-+++ b/init/Kconfig
-@@ -1401,10 +1401,10 @@ choice
- default CC_OPTIMIZE_FOR_PERFORMANCE
-
- config CC_OPTIMIZE_FOR_PERFORMANCE
-- bool "Optimize for performance (-O2)"
-+ bool "Optimize for performance (-O3)"
- help
- This is the default optimization level for the kernel, building
-- with the "-O2" compiler flag for best performance and most
-+ with the "-O3" compiler flag for best performance and most
- helpful compile-time warnings.
-
- config CC_OPTIMIZE_FOR_SIZE
diff --git a/packages/misc/modules/package.mk b/packages/misc/modules/package.mk
index 1594c0dfc6..e588b533d9 100644
--- a/packages/misc/modules/package.mk
+++ b/packages/misc/modules/package.mk
@@ -34,13 +34,6 @@ post_makeinstall_target() {
;;
esac
- case ${DEVICE} in
- S922X)
- rm -f ${INSTALL}/usr/config/modules/*ScummVM*
- rm -f ${INSTALL}/usr/config/modules/*32bit*
- ;;
- esac
-
if [ ! "${INSTALLER_SUPPORT}" = "yes" ] || \
[ ! "${DISPLAYSERVER}" = "wl" ]
then
diff --git a/packages/misc/modules/sources/gamelist.xml b/packages/misc/modules/sources/gamelist.xml
index 2fdb2833e7..93f78f0756 100755
--- a/packages/misc/modules/sources/gamelist.xml
+++ b/packages/misc/modules/sources/gamelist.xml
@@ -3,7 +3,7 @@
./fileman.sh
File Manager
- Enables you to browse the ROCKNIX filesystem and manage files directly on your device. You can also use this tool to copy files from external drives to your ROCKNIX filesystem.
+ Enables you to browse the ROCKNIX filesystem and manage files directly on your device. You can also use this tool to copy files from external drives to your ROCKNIX filesystem.
Tardigrade and ROCKNIX
ROCKNIX
5.0
@@ -15,7 +15,7 @@
./Install ROCKNIX.sh
Install ROCKNIX
- Use this utility to install ROCKNIX to the local storage on your device. Note: This process will wipe the drive that you choose to install ROCKNIX on.
+ Use this utility to install ROCKNIX to the local storage on your device. Note: This process will wipe the drive that you choose to install ROCKNIX on.
ROCKNIX
ROCKNIX
5.0
@@ -27,9 +27,9 @@
./Start PortMaster.sh
PortMaster
- PortMaster is a simple tool that allows you to download various game ports that are available for 351Elec, ArkOS, ROCKNIX, RetroOZ, and TheRA for ARM based devices. You can find details at github.com/christianhaitian/PortMaster
- ROCKNIX
- ROCKNIX
+ PortMaster is a simple tool that allows you to download various game ports that are available for ROCKNIX and other ARM based devices. You can find details at portmaster.games
+ Portmaster
+ Portmaster
5.0
2022
Tool
@@ -63,7 +63,7 @@
./Remove ._ Files.sh
Remove ._ Files
- This tool can be run to remove hidden ._ files created by the MacOS filesystem
+ This tool will remove hidden ._ files created by the MacOS filesystem
ROCKNIX
ROCKNIX
5.0
@@ -87,7 +87,7 @@
./Start CEMU.sh
Start Cemu
- Opens the Cemu GUI (WiiU) to enable global configuration changes to be made directly to the emulator. It's recommended to have a mouse and keyboard available to modify settings. Software to emulate Wii U games and applications.
+ Opens the Cemu GUI (WiiU) to enable global configuration changes to be made directly to the emulator. It's recommended to have a mouse and keyboard available to modify settings.
ROCKNIX
ROCKNIX
5.0
@@ -171,9 +171,7 @@
./Start RPCS3.sh
Start RPCS3
- Opens the RPCS3 GUI (PS3) to enable configuration changes to be made directly to the emulator. You can use this to set up firmware, update controls and install packages. It's recommended to have a mouse and keyboard available to modify settings. RPCS3 is a multi-platform open-source Sony PlayStation 3 emulator and debugger written in C++ for Windows, Linux, macOS and FreeBSD.
-
-
+ Opens the RPCS3 GUI (PS3) to enable configuration changes to be made directly to the emulator. You can use this to set up firmware, update controls and install packages. It's recommended to have a mouse and keyboard available to modify settings. RPCS3 is a multi-platform open-source Sony PlayStation 3 emulator and debugger written in C++ for Windows, Linux, macOS and FreeBSD.
ROCKNIX
ROCKNIX
5.0
@@ -214,25 +212,26 @@
ROCKNIX
5.0
2023
- Emulator
+ Script
1
./images/idtech.svg
./Test Gamepad.sh
Test Gamepad
- Simple SDL GUI gamepad tester
+ A simple SDL GUI gamepad tester to help validate your gamepad inputs.
ROCKNIX
ROCKNIX
5.0
2024
tool
1
+ ./images/test-gamepad.svg
./Mount NFS.sh
Mount NFS
- Mounts an NFS share at a location defined in /storage/.nfs-mount and creates a merged storage with the games-internal card as the upper/writeable location
+ Mounts an NFS share at a location defined in /storage/.nfs-mount and creates a merged storage with the games-internal card as the upper/writeable location
ROCKNIX
ROCKNIX
5.0
@@ -241,4 +240,4 @@
1
./images/nfs.svg
-
+
\ No newline at end of file
diff --git a/packages/misc/modules/sources/images/aethersx2.svg b/packages/misc/modules/sources/images/aethersx2.svg
index 4f5c8ad353..9bd1a880de 100644
--- a/packages/misc/modules/sources/images/aethersx2.svg
+++ b/packages/misc/modules/sources/images/aethersx2.svg
@@ -1,32 +1,18 @@
-
-
-
+
+
\ No newline at end of file
diff --git a/packages/misc/modules/sources/images/cemu.svg b/packages/misc/modules/sources/images/cemu.svg
index 15e441ea5f..f65b7df175 100644
--- a/packages/misc/modules/sources/images/cemu.svg
+++ b/packages/misc/modules/sources/images/cemu.svg
@@ -1,24 +1,12 @@
-
-
-
+
+
\ No newline at end of file
diff --git a/packages/misc/modules/sources/images/file-manager.svg b/packages/misc/modules/sources/images/file-manager.svg
index 42f9d41b75..954f7254d3 100644
--- a/packages/misc/modules/sources/images/file-manager.svg
+++ b/packages/misc/modules/sources/images/file-manager.svg
@@ -1,26 +1,18 @@
-
-
-
+
+
\ No newline at end of file
diff --git a/packages/misc/modules/sources/images/hatari.svg b/packages/misc/modules/sources/images/hatari.svg
index 4b262e9c42..0d7fe547bd 100644
--- a/packages/misc/modules/sources/images/hatari.svg
+++ b/packages/misc/modules/sources/images/hatari.svg
@@ -1,23 +1,13 @@
-
-
-
+
+
\ No newline at end of file
diff --git a/packages/misc/modules/sources/images/idtech.svg b/packages/misc/modules/sources/images/idtech.svg
index 3feeb848c4..3f605e50b0 100644
--- a/packages/misc/modules/sources/images/idtech.svg
+++ b/packages/misc/modules/sources/images/idtech.svg
@@ -1,19 +1,8 @@
-
-
-
+
+
\ No newline at end of file
diff --git a/packages/misc/modules/sources/images/install-rocknix.svg b/packages/misc/modules/sources/images/install-rocknix.svg
index e7729920a3..746a81d184 100644
--- a/packages/misc/modules/sources/images/install-rocknix.svg
+++ b/packages/misc/modules/sources/images/install-rocknix.svg
@@ -1,31 +1,23 @@
-
-
-
+
+
\ No newline at end of file
diff --git a/packages/misc/modules/sources/images/moonlight.svg b/packages/misc/modules/sources/images/moonlight.svg
index 05ac3be904..717a475501 100644
--- a/packages/misc/modules/sources/images/moonlight.svg
+++ b/packages/misc/modules/sources/images/moonlight.svg
@@ -1,38 +1,20 @@
-
-
-
+
+
\ No newline at end of file
diff --git a/packages/misc/modules/sources/images/nfs.svg b/packages/misc/modules/sources/images/nfs.svg
index 1b5b6f705f..80444090cb 100644
--- a/packages/misc/modules/sources/images/nfs.svg
+++ b/packages/misc/modules/sources/images/nfs.svg
@@ -1,106 +1,15 @@
-
-
+
+
\ No newline at end of file
diff --git a/packages/misc/modules/sources/images/pcsx2.svg b/packages/misc/modules/sources/images/pcsx2.svg
index ed7843d586..fce25b5f9e 100644
--- a/packages/misc/modules/sources/images/pcsx2.svg
+++ b/packages/misc/modules/sources/images/pcsx2.svg
@@ -1,22 +1,12 @@
-
-
-
+
+
\ No newline at end of file
diff --git a/packages/misc/modules/sources/images/portmaster.svg b/packages/misc/modules/sources/images/portmaster.svg
index 59be41d94f..5f7a19f255 100644
--- a/packages/misc/modules/sources/images/portmaster.svg
+++ b/packages/misc/modules/sources/images/portmaster.svg
@@ -1,27 +1,17 @@
-
-
-
+
+
\ No newline at end of file
diff --git a/packages/misc/modules/sources/images/ppsspp.svg b/packages/misc/modules/sources/images/ppsspp.svg
index a93c405782..efea020368 100644
--- a/packages/misc/modules/sources/images/ppsspp.svg
+++ b/packages/misc/modules/sources/images/ppsspp.svg
@@ -1,34 +1,16 @@
-
-
-
+
+
\ No newline at end of file
diff --git a/packages/misc/modules/sources/images/rclone-backup.svg b/packages/misc/modules/sources/images/rclone-backup.svg
index 766e880390..2f84942872 100644
--- a/packages/misc/modules/sources/images/rclone-backup.svg
+++ b/packages/misc/modules/sources/images/rclone-backup.svg
@@ -1,35 +1,21 @@
-
-
-
+
+
\ No newline at end of file
diff --git a/packages/misc/modules/sources/images/rclone-restore.svg b/packages/misc/modules/sources/images/rclone-restore.svg
index c24b337f10..d6662e6bc9 100644
--- a/packages/misc/modules/sources/images/rclone-restore.svg
+++ b/packages/misc/modules/sources/images/rclone-restore.svg
@@ -1,36 +1,22 @@
-
-
-
+
+
\ No newline at end of file
diff --git a/packages/misc/modules/sources/images/remove-mac-files.svg b/packages/misc/modules/sources/images/remove-mac-files.svg
index b6a2133428..f6dfa04106 100644
--- a/packages/misc/modules/sources/images/remove-mac-files.svg
+++ b/packages/misc/modules/sources/images/remove-mac-files.svg
@@ -1,30 +1,20 @@
-
-
-
+
+
\ No newline at end of file
diff --git a/packages/misc/modules/sources/images/retroarch-32.svg b/packages/misc/modules/sources/images/retroarch-32.svg
index 2edac2f32e..6ebf7b568b 100644
--- a/packages/misc/modules/sources/images/retroarch-32.svg
+++ b/packages/misc/modules/sources/images/retroarch-32.svg
@@ -1,32 +1,22 @@
-
-
-
+
+
\ No newline at end of file
diff --git a/packages/misc/modules/sources/images/retroarch-64.svg b/packages/misc/modules/sources/images/retroarch-64.svg
index 2c189d245b..561cc3edd1 100644
--- a/packages/misc/modules/sources/images/retroarch-64.svg
+++ b/packages/misc/modules/sources/images/retroarch-64.svg
@@ -1,32 +1,22 @@
-
-
-
+
+
\ No newline at end of file
diff --git a/packages/misc/modules/sources/images/rpcs3.svg b/packages/misc/modules/sources/images/rpcs3.svg
index cf3076f1ea..de1a4b0730 100644
--- a/packages/misc/modules/sources/images/rpcs3.svg
+++ b/packages/misc/modules/sources/images/rpcs3.svg
@@ -1,22 +1,12 @@
-
-
-
+
+
\ No newline at end of file
diff --git a/packages/misc/modules/sources/images/scummvm.svg b/packages/misc/modules/sources/images/scummvm.svg
index 88901f77f5..4e24a53819 100644
--- a/packages/misc/modules/sources/images/scummvm.svg
+++ b/packages/misc/modules/sources/images/scummvm.svg
@@ -1,24 +1,14 @@
-
-
-
+
+
\ No newline at end of file
diff --git a/packages/misc/modules/sources/images/test-gamepad.svg b/packages/misc/modules/sources/images/test-gamepad.svg
new file mode 100644
index 0000000000..ccfa947386
--- /dev/null
+++ b/packages/misc/modules/sources/images/test-gamepad.svg
@@ -0,0 +1,18 @@
+
+
\ No newline at end of file
diff --git a/packages/misc/modules/sources/images/vita3k.svg b/packages/misc/modules/sources/images/vita3k.svg
index d525706658..1121056dac 100644
--- a/packages/misc/modules/sources/images/vita3k.svg
+++ b/packages/misc/modules/sources/images/vita3k.svg
@@ -1,23 +1,13 @@
-
-
-
+
+
\ No newline at end of file
diff --git a/packages/misc/modules/sources/images/xemu.svg b/packages/misc/modules/sources/images/xemu.svg
index 3f07b1758c..ffee367b66 100644
--- a/packages/misc/modules/sources/images/xemu.svg
+++ b/packages/misc/modules/sources/images/xemu.svg
@@ -1,21 +1,11 @@
-
-
-
+
+
\ No newline at end of file
diff --git a/packages/multimedia/gstreamer/gst-plugins-base/package.mk b/packages/multimedia/gstreamer/gst-plugins-base/package.mk
index e9f33a5e73..4d5e956fb5 100644
--- a/packages/multimedia/gstreamer/gst-plugins-base/package.mk
+++ b/packages/multimedia/gstreamer/gst-plugins-base/package.mk
@@ -21,7 +21,7 @@ pre_configure_target() {
# Fix missing dispmanx
case ${DEVICE} in
- RK3*|S922X)
+ RK3*|S922X|AMD64)
PKG_MESON_OPTS_TARGET+=" -Dgl-graphene=disabled"
;;
esac
diff --git a/packages/multimedia/gstreamer/gstreamer/package.mk b/packages/multimedia/gstreamer/gstreamer/package.mk
index 622e7be718..2331f5597f 100644
--- a/packages/multimedia/gstreamer/gstreamer/package.mk
+++ b/packages/multimedia/gstreamer/gstreamer/package.mk
@@ -2,7 +2,7 @@
# Copyright (C) 2022-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="gstreamer"
-PKG_VERSION="1.24.6"
+PKG_VERSION="1.24.8"
PKG_LICENSE="GPL-2.1-or-later"
PKG_SITE="https://gstreamer.freedesktop.org"
PKG_URL="https://gstreamer.freedesktop.org/src/gstreamer/${PKG_NAME}-${PKG_VERSION}.tar.xz"
diff --git a/packages/network/connman/package.mk b/packages/network/connman/package.mk
index 247ee7261e..dcddc2b875 100644
--- a/packages/network/connman/package.mk
+++ b/packages/network/connman/package.mk
@@ -4,7 +4,7 @@
# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS)
PKG_NAME="connman"
-PKG_VERSION="1.42" # 1.42
+PKG_VERSION="1.43" # 1.43
PKG_LICENSE="GPL"
PKG_SITE="http://www.connman.net"
PKG_URL="https://git.kernel.org/pub/scm/network/connman/connman.git/snapshot/connman-${PKG_VERSION}.tar.gz"
diff --git a/packages/network/samba/package.mk b/packages/network/samba/package.mk
index e373da24bb..0c0edb6187 100644
--- a/packages/network/samba/package.mk
+++ b/packages/network/samba/package.mk
@@ -22,10 +22,6 @@ configure_package() {
SMB_AVAHI="--disable-avahi"
fi
- if [ "${TARGET_ARCH}" = x86_64 ]; then
- SMB_AESNI="--accel-aes=intelaesni"
- fi
-
PKG_CONFIGURE_OPTS="--prefix=/usr \
--sysconfdir=/etc \
--localstatedir=/var \
diff --git a/packages/network/tailscale/package.mk b/packages/network/tailscale/package.mk
index f3d09df089..248cfb7cf2 100644
--- a/packages/network/tailscale/package.mk
+++ b/packages/network/tailscale/package.mk
@@ -3,7 +3,7 @@
# Copyright (C) 2022-present fewtarius (https://github.com/fewtarius)
PKG_NAME="tailscale"
-PKG_VERSION="1.56.1"
+PKG_VERSION="1.76.6"
PKG_SITE="https://tailscale.com/"
PKG_DEPENDS_TARGET="toolchain wireguard-tools"
PKG_LONGDESC="Zero config VPN. Installs on any device in minutes, manages firewall rules for you, and works from anywhere."
@@ -12,11 +12,11 @@ PKG_TOOLCHAIN="manual"
case ${TARGET_ARCH} in
aarch64)
TS_ARCH="_arm64"
- PKG_SHA256="6fca51f7b7fb5187e3401902f5e888cb86e9d006c5e60ef145031b0ddc299e39"
+ PKG_SHA256="a906659b57590a195370e93719d9633975db64704e90eb1ed9f8cd3d437b4941"
;;
x86_64)
TS_ARCH="_amd64"
- PKG_SHA256="2434ec69d8a7a0372b37a1c9f0ac2f499c0614e483ff096eb4481cfb873445f9"
+ PKG_SHA256="08f2377b78f7b9e411caa28f231a9c4cd0887209c142b49b815bcc7042ff61f7"
;;
esac
diff --git a/packages/python/devel/pygobject/package.mk b/packages/python/devel/pygobject/package.mk
index 22f0a8178b..e0a0f730e5 100644
--- a/packages/python/devel/pygobject/package.mk
+++ b/packages/python/devel/pygobject/package.mk
@@ -7,7 +7,7 @@ PKG_NAME="pygobject"
PKG_VERSION="3.46.0"
PKG_LICENSE="LGPL"
PKG_SITE="http://www.pygtk.org/"
-PKG_URL="http://ftp.gnome.org/pub/GNOME/sources/pygobject/$(get_pkg_version_maj_min)/${PKG_NAME}-${PKG_VERSION}.tar.xz"
+PKG_URL="http://www.mirrorservice.org/sites/ftp.gnome.org//pub/GNOME/sources/pygobject/$(get_pkg_version_maj_min)/${PKG_NAME}-${PKG_VERSION}.tar.xz"
PKG_DEPENDS_TARGET="toolchain Python3 glib libffi gobject-introspection pgi"
PKG_LONGDESC="A convenient wrapper for the GObject+ library for use in Python programs."
diff --git a/packages/rocknix/autostart/006-display b/packages/rocknix/autostart/006-display
index 695644e276..b91886e1d9 100755
--- a/packages/rocknix/autostart/006-display
+++ b/packages/rocknix/autostart/006-display
@@ -11,13 +11,13 @@ tocon "Configuring display..."
BRIGHTNESS=$(get_setting system.brightness)
if [[ -z ${BRIGHTNESS} ]]
then
- BRIGHTNESS="6"
+ BRIGHTNESS="11"
fi
# Ensure user doesn't get "locked out" with super low brightness
if [[ "${BRIGHTNESS}" = "0" ]]
then
- BRIGHTNESS=1
+ BRIGHTNESS=11
fi
brightness set ${BRIGHTNESS}
diff --git a/packages/rocknix/autostart/081-usbgadget b/packages/rocknix/autostart/081-usbgadget
index 068696eabe..7b8b4e9009 100755
--- a/packages/rocknix/autostart/081-usbgadget
+++ b/packages/rocknix/autostart/081-usbgadget
@@ -1,10 +1,13 @@
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS)
+# Copyright (C) 2024 ROCKNIX (https://github.com/ROCKNIX)
+/usr/bin/usbgadget prepare
if [ -r /storage/.cache/usbgadget/usbgadget.conf ] ; then
USB_MODE=$(cat /storage/.cache/usbgadget/usbgadget.conf | cut -d "=" -f2)
if [ "${USB_MODE}" = cdc ] || [ "${USB_MODE}" = mtp ]; then
- /usr/bin/usbgadget start $USB_MODE
+ # Startup on 3326 takes few seconds due to dtb overlay stuff. Don't block on it.
+ /usr/bin/nohup /usr/bin/usbgadget start $USB_MODE &>/dev/null &
fi
fi
diff --git a/packages/rocknix/config/system/configs/system.cfg b/packages/rocknix/config/system/configs/system.cfg
index 454fb2fc52..5e5ca9fc5c 100644
--- a/packages/rocknix/config/system/configs/system.cfg
+++ b/packages/rocknix/config/system/configs/system.cfg
@@ -67,7 +67,6 @@ genh.integerscale=0
genh.ratio=4/3
ggh.integerscale=0
global.analogue=1
-global.audiolatency=32
global.autosave=2
global.incrementalsavestates=0
global.maxincrementalsaves=0
diff --git a/packages/rocknix/profile.d/001-functions b/packages/rocknix/profile.d/001-functions
index b0148bfaf8..915e77eab4 100644
--- a/packages/rocknix/profile.d/001-functions
+++ b/packages/rocknix/profile.d/001-functions
@@ -205,15 +205,14 @@ function get_aspect_ratio() {
echo ${ASPECT}
}
-# Utility function to enable fullscreen on a window for an input app_id
+# sway window manager utility function to enable fullscreen on a window for an input app_id
function sway_fullscreen {
local APPID="${1}"
local QUERY_LIMIT=5
local QUERY_COUNT=0
- if [ -n "$(pgrep sway)" ]; then
- while [ $QUERY_COUNT -lt $QUERY_LIMIT ]
- do
+ if echo "${UI_SERVICE}" | grep "sway"; then
+ while [ $QUERY_COUNT -lt $QUERY_LIMIT ]; do
# loop, attempting to fullscreen window for app_id
((QUERY_COUNT++))
diff --git a/packages/rocknix/profile.d/020-audio_latency.conf b/packages/rocknix/profile.d/020-audio_latency.conf
deleted file mode 100644
index 90f039db0c..0000000000
--- a/packages/rocknix/profile.d/020-audio_latency.conf
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/sh
-# SPDX-License-Identifier: GPL-2.0
-# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS)
-
-AUDIO_LATENCY=$(get_setting audiolatency)
-if [ -n "${AUDIO_LATENCY}" ]
-then
- export PULSE_LATENCY_MSEC=${AUDIO_LATENCY}
-fi
diff --git a/packages/rocknix/sources/post-update b/packages/rocknix/sources/post-update
index b016dd070f..d4de81f540 100644
--- a/packages/rocknix/sources/post-update
+++ b/packages/rocknix/sources/post-update
@@ -117,3 +117,10 @@ if [ "${HW_DEVICE}" = "RK3566" ] && \
sed -i '/FDTOVERLAYS/s/.dtboo/.dtbo/g' /flash/extlinux/extlinux.conf
mount -o remount,ro /flash
fi
+
+if [ "$(uname -m)" = "aarch64" ] && \
+ [ ! -d "/storage/roms/savestates/saturn/yabasanshiro" ]; then
+ mkdir "/storage/roms/savestates/saturn/yabasanshiro"
+ cp /storage/.config/yabasanshiro/*.yss /storage/roms/savestates/saturn/yabasanshiro/
+ cp /storage/.config/yabasanshiro/*.png /storage/roms/savestates/saturn/yabasanshiro/
+fi
diff --git a/packages/rocknix/sources/scripts/brightness b/packages/rocknix/sources/scripts/brightness
index c298f8c840..7396765fee 100755
--- a/packages/rocknix/sources/scripts/brightness
+++ b/packages/rocknix/sources/scripts/brightness
@@ -12,7 +12,7 @@ BRIGHTNESS_PATH="${BRIGHTNESS_DEV%/brightness}"
declare -a BRIGHTNESS_TABLE
BRIGHTNESS_TABLE=($(get_setting brightness_table))
if [ -z ${BRIGHTNESS_TABLE} ]; then
- BRIGHTNESS_TABLE=(0 0.04 0.08 0.13 0.19 0.25 0.33 0.42 0.54 0.71 1)
+ BRIGHTNESS_TABLE=(0 0.02 0.05 0.10 0.15 0.20 0.25 0.30 0.35 0.40 0.45 0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 1)
set_setting brightness_table "${BRIGHTNESS_TABLE[*]}"
fi
NUM_STEPS=${#BRIGHTNESS_TABLE[@]}
diff --git a/packages/rocknix/sources/scripts/rocknix-report-stats b/packages/rocknix/sources/scripts/rocknix-report-stats
index 55fe29243f..b6dbd6763b 100644
--- a/packages/rocknix/sources/scripts/rocknix-report-stats
+++ b/packages/rocknix/sources/scripts/rocknix-report-stats
@@ -4,30 +4,8 @@
. /etc/profile
-case "${HW_DEVICE}" in
- H700) UID_FILE="/sys/firmware/devicetree/base/serial-number";;
- RK3326|RK3588) UID_FILE="/sys/bus/nvmem/devices/rockchip-otp0/nvmem";;
- RK3399|RK3566) UID_FILE="/sys/firmware/devicetree/base/serial-number";;
- S922X) UID_FILE="/sys/bus/platform/devices/secure-monitor/serial";;
- SD865) UID_FILE="/sys/devices/soc0/serial_number";;
-esac
-
-# Fallback if serial is all zero's
-if [ $(cat "${UID_FILE}" | tr -d '\000') = "0000000000000000" ]; then
- # Look for Android boot paritions first
- if [ -e "/dev/mmcblk2boot0" ]; then
- UID_FILE="/sys/class/block/mmcblk2/device/serial"
- elif [ -e "/dev/mmcblk1boot0" ]; then
- UID_FILE="/sys/class/block/mmcblk1/device/serial"
- elif [ -e "/dev/mmcblk0boot0" ]; then
- UID_FILE="/sys/class/block/mmcblk0/device/serial"
- else
- # Fallback to systemd-machine-id
- UID_FILE="/storage/.cache/systemd-machine-id"
- fi
-fi
-
-USERID=($(md5sum "${UID_FILE}"))
+MACHINEIDFILE=/storage/.cache/systemd-machine-id
+USERID=$(cat ${MACHINEIDFILE})
ENDPOINT_URL="https://stats.rocknix.org"
diff --git a/packages/rocknix/sources/scripts/run b/packages/rocknix/sources/scripts/run
index e753a86130..136d1c3eb2 100755
--- a/packages/rocknix/sources/scripts/run
+++ b/packages/rocknix/sources/scripts/run
@@ -21,8 +21,7 @@ then
elif echo "${UI_SERVICE}" | grep "sway"; then
if [ -f "${*}" ]
then
- RUN=$(echo ${*} | sed 's# #\\ #g')
- foot -F ${RUN}
+ foot -F "${*}"
else
foot -F ${*}
fi
diff --git a/packages/rocknix/sources/scripts/usbgadget b/packages/rocknix/sources/scripts/usbgadget
index 0792e2b804..a03e5f2f09 100755
--- a/packages/rocknix/sources/scripts/usbgadget
+++ b/packages/rocknix/sources/scripts/usbgadget
@@ -1,10 +1,19 @@
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS)
+# Copyright (C) 2024 ROCKNIX (https://github.com/ROCKNIX)
+
+# gadget setup functions (prepare_usb_network and cleanup_usb_network) are derived from code from
+# * https://pastebin.com/VtAusEmf (author unknown)
+# * David Lechner https://github.com/ev3dev/ev3-systemd/blob/ev3dev-buster/scripts/ev3-usb.sh
+# * rundekugel @github https://github.com/rundekugel/USBGadgetNetwork/blob/main/create-dual-rndis-and-cdcecm.sh
. /etc/profile
-for mod in usb_f_ecm usb_f_fs; do
+MACHINEIDFILE=/storage/.cache/systemd-machine-id
+SERIAL=$(cat ${MACHINEIDFILE})
+
+for mod in usb_f_ecm usb_f_fs usb_f_rndis; do
modprobe -q ${mod}
done
@@ -14,87 +23,289 @@ if [ ! -f /storage/.cache/usbgadget/ip_address.conf ] ; then
echo "10.1.1.2" > /storage/.cache/usbgadget/ip_address.conf
fi
-if [ ! -f /storage/.cache/usbgadget/udhcpd.conf ] ; then
- echo -e "interface usb0\nstart 10.1.1.1\nend 10.1.1.1\nopt subnet 255.255.255.0\nopt lease 86400\nmax_leases 1\nlease_file /dev/null\nremaining no" >> /storage/.cache/usbgadget/udhcpd.conf
+UDHCPCONF=/storage/.cache/usbgadget/udhcpd.conf
+if [ ! -f $UDHCPCONF ] ; then
+ echo -e "interface usbnet\nstart 10.1.1.1\nend 10.1.1.1\nopt subnet 255.255.255.0\nopt lease 86400\nmax_leases 1\nlease_file /dev/null\nremaining no" >> /storage/.cache/usbgadget/udhcpd.conf
+fi
+# Rename interface in old (pre-bridge) configs
+if ! grep -q usbnet $UDHCPCONF; then
+ sed -i 's|interface.*$|interface usbnet|' $UDHCPCONF
+fi
+
+if [ -r /storage/.cache/usbgadget/usbgadget.conf ] ; then
+ . /storage/.cache/usbgadget/usbgadget.conf
fi
-VENDOR=ROCKNIX
-MACHINE=$(cat /etc/hostname)
UDC_NAME=$(ls -1 /sys/class/udc |head -n1)
+CURRENT_MODE=$(cat /sys/class/udc/${UDC_NAME}/function)
+[ -z ${CURRENT_MODE} ] && CURRENT_MODE=disabled
+
IP=$(cat /storage/.cache/usbgadget/ip_address.conf)
usb_disable() {
- echo "" > /sys/kernel/config/usb_gadget/gadget/UDC
echo "USB_MODE=disabled" > /storage/.cache/usbgadget/usbgadget.conf
+ echo "" > /sys/kernel/config/usb_gadget/${CURRENT_MODE}/UDC
+ CURRENT_MODE=disabled
}
-usb_start() {
- if [ -r /storage/.cache/usbgadget/usbgadget.conf ] ; then
- . /storage/.cache/usbgadget/usbgadget.conf
+# this function enables the UDC gadget when needed.
+# For RK3566 this should be done only when cable is connected, thus bizarre cable checks
+# For other devices, it may be just enabled even without connection
+usb_trigger() {
+ # no-op when mode is already set
+ [[ ${CURRENT_MODE} == ${USB_MODE} ]] && return
+ # only configured modes need processing
+ [[ ! -e /sys/kernel/config/usb_gadget/${USB_MODE}/UDC ]] && return
+
+ if [[ "${HW_DEVICE}" = RK3566 ]]; then
+ PHY_NAME=$(ls -d /sys/devices/platform/${UDC_NAME}/supplier:platform:*usb2phy | sed 's|^.*:platform:||')
+ CABLE0NAME=$(cat /sys/devices/platform/${PHY_NAME}/extcon/extcon0/cable.0/name)
+ [[ ${CABLE0NAME} == USB ]] || return # assert we check the right cable
+ grep -q 1 /sys/devices/platform/${PHY_NAME}/extcon/extcon0/cable.0/state || return
fi
-
- if [ "$1" ] ; then
- USB_MODE=$1
+
+ # Enable selected mode
+ echo "${UDC_NAME}" > /sys/kernel/config/usb_gadget/${USB_MODE}/UDC
+}
+
+
+#############################################
+# code below (prepare_usb_network and cleanup_usb_network) is derived from
+# https://github.com/rundekugel/USBGadgetNetwork
+# and adapted for Rocknix
+#############################################
+g_cdc="/sys/kernel/config/usb_gadget/cdc"
+verbose=0
+devversion=0x$(echo $OS_VERSION | cut -b 3-6) # 0xYYMM; 20241025 -> 0x2410
+
+prepare_usb_network() {
+ set -e
+ usb_ver="0x0200" # USB 2.0
+ dev_class="2" # Communications
+ attr="0xC0" # Self powered
+ pwr="0xfe" #
+ cfg1="CDC"
+ cfg2="RNDIS"
+ ms_vendor_code="0xcd" # Microsoft
+ ms_qw_sign="MSFT100" # also Microsoft (if you couldn't tell)
+ ms_compat_id="RNDIS" # matches Windows RNDIS Drivers
+ ms_subcompat_id="5162001" # matches Windows RNDIS 6.0 Driver
+
+ if [ -d ${g_cdc} ]; then
+ if [ "$(cat ${g_cdc}/UDC)" != "" ]; then
+ if [ "$verbose" -gt "0" ];then echo "Gadget is already up."; fi
+ exit 1
+ fi
+ if [ "$verbose" -gt "0" ];then echo "Cleaning up old directory..."; fi
+ cleanup_usb_network
+ fi
+ if [ "$verbose" -gt "0" ];then echo "Setting up gadget..."; fi
+
+ # Create a new gadget
+
+ mkdir ${g_cdc}
+ echo "${usb_ver}" > ${g_cdc}/bcdUSB
+ echo "${dev_class}" > ${g_cdc}/bDeviceClass
+ echo "0x1d6b" > ${g_cdc}/idVendor
+ echo "0x0104" > ${g_cdc}/idProduct
+ echo "${devversion}" > ${g_cdc}/bcdDevice
+ mkdir ${g_cdc}/strings/0x409
+ echo "${OS_NAME}" > ${g_cdc}/strings/0x409/manufacturer
+ echo "${QUIRK_DEVICE}" > ${g_cdc}/strings/0x409/product
+ echo "${SERIAL}" > ${g_cdc}/strings/0x409/serialnumber
+
+ # Create 2 configurations. The first will be CDC. The second will be RNDIS.
+ # Thanks to os_desc, Windows should use the second configuration.
+
+ # config 1 is for CDC
+
+ mkdir ${g_cdc}/configs/c.1
+ echo "${attr}" > ${g_cdc}/configs/c.1/bmAttributes
+ echo "${pwr}" > ${g_cdc}/configs/c.1/MaxPower
+ mkdir ${g_cdc}/configs/c.1/strings/0x409
+ echo "${cfg1}" > ${g_cdc}/configs/c.1/strings/0x409/configuration
+
+ # Create the CDC function
+
+ mkdir ${g_cdc}/functions/ecm.usb0
+
+ # config 2 is for RNDIS
+
+ mkdir ${g_cdc}/configs/c.2
+ echo "${attr}" > ${g_cdc}/configs/c.2/bmAttributes
+ echo "${pwr}" > ${g_cdc}/configs/c.2/MaxPower
+ mkdir ${g_cdc}/configs/c.2/strings/0x409
+ echo "${cfg2}" > ${g_cdc}/configs/c.2/strings/0x409/configuration
+
+ # On Windows 7 and later, the RNDIS 5.1 driver would be used by default,
+ # but it does not work very well. The RNDIS 6.0 driver works better. In
+ # order to get this driver to load automatically, we have to use a
+ # Microsoft-specific extension of USB.
+
+ echo "1" > ${g_cdc}/os_desc/use
+ echo "${ms_vendor_code}" > ${g_cdc}/os_desc/b_vendor_code
+ echo "${ms_qw_sign}" > ${g_cdc}/os_desc/qw_sign
+
+ # Create the RNDIS function, including the Microsoft-specific bits
+
+ mkdir ${g_cdc}/functions/rndis.usb0
+ echo "${ms_compat_id}" > ${g_cdc}/functions/rndis.usb0/os_desc/interface.rndis/compatible_id
+ echo "${ms_subcompat_id}" > ${g_cdc}/functions/rndis.usb0/os_desc/interface.rndis/sub_compatible_id
+
+ smac=$(echo ${SERIAL} | cut -b 1-12)
+ # Change the first number for each MAC address - the second digit of 2 indicates
+ # that these are "locally assigned (b2=1), unicast (b1=0)" addresses. This is
+ # so that they don't conflict with any existing vendors. Care should be taken
+ # not to change these two bits.
+ dev_mac="02$(echo ${smac} | cut -b 3-)"
+ host_mac="12$(echo ${smac} | cut -b 3-)"
+
+ echo "${dev_mac}" > ${g_cdc}/functions/ecm.usb0/dev_addr
+ echo "${host_mac}" > ${g_cdc}/functions/ecm.usb0/host_addr
+ echo "${dev_mac}" > ${g_cdc}/functions/rndis.usb0/dev_addr
+ echo "${host_mac}" > ${g_cdc}/functions/rndis.usb0/host_addr
+
+ # Link everything up and bind the USB device
+ ln -s ${g_cdc}/functions/ecm.usb0 ${g_cdc}/configs/c.1
+ ln -s ${g_cdc}/functions/rndis.usb0 ${g_cdc}/configs/c.2
+ ln -s ${g_cdc}/configs/c.2 ${g_cdc}/os_desc
+
+ if [ -n "$verbose" ]; then echo "Done."; fi
+}
+
+cleanup_usb_network() {
+ if [ ! -d ${g_cdc} ]; then
+ if [ "$verbose" -gt "0" ];then echo "Gadget is already down."; fi
+ exit 1
+ fi
+ if [ "$verbose" -gt "0" ];then echo "Taking down gadget..."; fi
+
+ # Have to unlink and remove directories in reverse order.
+ # Checks allow to finish takedown after error.
+
+ if [ "$(cat ${g_cdc}/UDC)" != "" ]; then
+ echo "" > ${g_cdc}/UDC
+ fi
+ rm -f ${g_cdc}/os_desc/c.2
+ rm -f ${g_cdc}/configs/c.2/rndis.usb0
+ rm -f ${g_cdc}/configs/c.1/ecm.usb0
+ [ -d ${g_cdc}/functions/ecm.usb0 ] && rmdir ${g_cdc}/functions/ecm.usb0
+ [ -d ${g_cdc}/functions/rndis.usb0 ] && rmdir ${g_cdc}/functions/rndis.usb0
+ [ -d ${g_cdc}/configs/c.2/strings/0x409 ] && rmdir ${g_cdc}/configs/c.2/strings/0x409
+ [ -d ${g_cdc}/configs/c.2 ] && rmdir ${g_cdc}/configs/c.2
+ [ -d ${g_cdc}/configs/c.1/strings/0x409 ] && rmdir ${g_cdc}/configs/c.1/strings/0x409
+ [ -d ${g_cdc}/configs/c.1 ] && rmdir ${g_cdc}/configs/c.1
+ [ -d ${g_cdc}/strings/0x409 ] && rmdir ${g_cdc}/strings/0x409
+ rmdir ${g_cdc}
+
+ if [ -n "$verbose" ]; then echo "Done."; fi
+}
+
+
+
+g_mtp="/sys/kernel/config/usb_gadget/mtp"
+
+prepare_usb_mtp() {
+ usb_ver="0x0200" # USB 2.0
+ dev_class="2" # Communications
+ attr="0xC0" # Self powered
+ pwr="0xfe" #
+
+ mkdir ${g_mtp}
+ echo "${usb_ver}" > ${g_mtp}/bcdUSB
+ echo "${dev_class}" > ${g_mtp}/bDeviceClass
+ echo "0x1d6b" > ${g_mtp}/idVendor
+ echo "0x0104" > ${g_mtp}/idProduct
+ echo "${devversion}" > ${g_mtp}/bcdDevice
+ mkdir ${g_mtp}/strings/0x409
+ echo "${OS_NAME}" > ${g_mtp}/strings/0x409/manufacturer
+ echo "${QUIRK_DEVICE}" > ${g_mtp}/strings/0x409/product
+ echo "${SERIAL}" > ${g_mtp}/strings/0x409/serialnumber
+
+ # config 1 for MTP
+ mkdir ${g_mtp}/configs/c.1
+ echo "${attr}" > ${g_mtp}/configs/c.1/bmAttributes
+ echo "${pwr}" > ${g_mtp}/configs/c.1/MaxPower
+ mkdir ${g_mtp}/configs/c.1/strings/0x409
+ echo mtp > ${g_mtp}/configs/c.1/strings/0x409/configuration
+
+ mkdir ${g_mtp}/functions/ffs.mtp
+ ln -s ${g_mtp}/functions/ffs.mtp ${g_mtp}/configs/c.1
+}
+
+cleanup_usb_mtp() {
+ rm -f \
+ ${g_mtp}/configs/c.1/ffs.mtp
+
+ rmdir \
+ ${g_mtp}/configs/c.1/strings/0x409 \
+ ${g_mtp}/configs/c.1 \
+ ${g_mtp}/functions/ffs.mtp \
+ ${g_mtp}/strings/0x409 \
+ ${g_mtp}
+}
+
+
+usb_start() {
+ [[ -n $1 ]] && USB_MODE=$1
+ # This will reset both UDC and userspace when needed
+ if [ "${CURRENT_MODE}" != "disabled" ] && [ "${MODE}" != "${CURRENT_MODE}" ]; then
+ usb_stop
fi
- cd /sys/kernel/config/usb_gadget
- mkdir gadget \
- gadget/strings/0x409 \
- gadget/configs/c.1 \
- gadget/configs/c.1/strings/0x409 \
- gadget/functions/ffs.mtp \
- gadget/functions/ecm.usb0
-
- echo $VENDOR > gadget/strings/0x409/manufacturer
- echo $MACHINE > gadget/strings/0x409/product
-
-
if [ "${USB_MODE}" = mtp ] ; then
- echo 0x1d6b > gadget/idVendor
- echo 0x0100 > gadget/idProduct
- echo mtp > gadget/configs/c.1/strings/0x409/configuration
- ln -s gadget/functions/ffs.mtp gadget/configs/c.1
+ if [ ! -d "${g_mtp}" ]; then
+ echo "MTP gadget not configured. Run '$0 prepare' first!" >&2
+ exit 3
+ fi
+
mkdir /dev/ffs-umtp
mount mtp -t functionfs /dev/ffs-umtp
/usr/sbin/umtprd &
sleep 1
- echo "${UDC_NAME}" > gadget/UDC
+
+ usb_trigger
elif [ "${USB_MODE}" = cdc ] ; then
- echo cdc > gadget/configs/c.1/strings/0x409/configuration
- echo 0x1d6b > gadget/idVendor
- echo 0x104 > gadget/idProduct
- ln -s gadget/functions/ecm.usb0 gadget/configs/c.1
- echo "${UDC_NAME}" > gadget/UDC
- ifconfig usb0 $IP up
- /usr/sbin/udhcpd -S /storage/.cache/usbgadget/udhcpd.conf
+ if [ ! -d "${g_cdc}" ]; then
+ echo "CDC gadget not configured. Run '$0 prepare' first!" >&2
+ exit 3
+ fi
+
+ # Here we configure just empty bridge
+ brctl addbr usbnet
+ brctl stp usbnet 0
+ brctl setfd usbnet 0
+ ip link set usbnet up
+ ip address add $IP/24 dev usbnet
+
+ # when triggered, usb network interfaces appear, and udev rule adds them to the bridge
+ usb_trigger
+
+ /usr/sbin/udhcpd -S $UDHCPCONF
else
exit 0
fi
- echo "USB_MODE=$(cat gadget/configs/c.1/strings/0x409/configuration)" > /storage/.cache/usbgadget/usbgadget.conf
+ echo "USB_MODE=${USB_MODE}" > /storage/.cache/usbgadget/usbgadget.conf
}
usb_stop() {
(
- cd /sys/kernel/config/usb_gadget
-
usb_disable
- umount /dev/ffs-umtp
- rmdir /dev/ffs-umtp
-
- rm -f gadget/configs/c.1/ffs.mtp \
- gadget/configs/c.1/ecm.usb0 \
-
- rmdir gadget/configs/c.1/strings/0x409 \
- gadget/configs/c.1 \
- gadget/functions/ffs.mtp \
- gadget/functions/ecm.usb0 \
- gadget/strings/0x409 \
- gadget
-
- killall udhcpd
- killall umtprd
+
+ if [ -e /sys/class/net/usbnet ] ; then
+ killall udhcpd
+ ip link set usbnet down
+ brctl delbr usbnet
+ fi
+
+ if [ -d /dev/ffs-umtp ] ; then
+ umount /dev/ffs-umtp
+ rmdir /dev/ffs-umtp
+
+ killall umtprd
+ fi
) >/dev/null 2>&1
}
@@ -134,6 +345,14 @@ rk3326_check_stop() {
}
case "$1" in
+ prepare)
+ prepare_usb_network
+ prepare_usb_mtp
+ ;;
+ cleanup)
+ cleanup_usb_network
+ cleanup_usb_mtp
+ ;;
start)
if [[ "${HW_DEVICE}" = RK3326 ]]; then rk3326_check_start; fi
usb_start $2
@@ -142,11 +361,14 @@ case "$1" in
usb_stop
if [[ "${HW_DEVICE}" = RK3326 ]]; then rk3326_check_stop; fi
;;
+ trigger)
+ usb_trigger
+ ;;
restart)
usb_stop
usb_start $2
;;
*)
- echo "Usage: usbgadget [start|stop|restart]"
+ echo "Usage: usbgadget [prepare|start|trigger|stop|restart|cleanup]"
;;
esac
diff --git a/packages/rocknix/sources/scripts/volume b/packages/rocknix/sources/scripts/volume
index 3021429a16..e9d83cef33 100755
--- a/packages/rocknix/sources/scripts/volume
+++ b/packages/rocknix/sources/scripts/volume
@@ -11,7 +11,7 @@
VOLUME=$(get_setting "audio.volume")
MAX_VOLUME=100
MIN_VOLUME=0
-STEP=10
+STEP=5
case ${1} in
"+"|"up")
@@ -33,7 +33,7 @@ then
VOLUME=${MAX_VOLUME}
elif [ -z "${VOLUME}" ]
then
- VOLUME=60
+ VOLUME=50
fi
pactl -- set-sink-volume @DEFAULT_SINK@ ${VOLUME}%
diff --git a/packages/rocknix/sources/scripts/wifictl b/packages/rocknix/sources/scripts/wifictl
index 2f0cda8863..0b98097985 100755
--- a/packages/rocknix/sources/scripts/wifictl
+++ b/packages/rocknix/sources/scripts/wifictl
@@ -63,22 +63,13 @@ then
set_setting wifi.adhoc.channel ${DEFAULT_CHAN}
fi
-# set device mac address, if none exists
-if [ ${DEVICE_NO_MAC} = "true" ]; then
- MAC_ADDR="$(cat /storage/.config/mac_addr.conf)"
- ip link set wlan0 down
- ip link set wlan0 address "${MAC_ADDR}"
- ip link set wlan0 up
- bluetoothctl mgmt.public-addr "${MAC_ADDR}"
-fi
-
###
### Functions...
###
# lists all wifi services in service=ssid format
list_wifi() {
- connmanctl services | cut -b 5- | awk '/\S+.+\s+wifi/ {a=$0; sub(/\s+wifi_.*$/,"", a); b=$0; sub(a, "", b); sub(/\s+/, "", b); print b "=" a}' | sort | uniq
+ connmanctl services | sed 's/^...[ ]*//' | awk -F '[ ]*[ ]wifi_[[:alnum:]]*_' '{if (NF==2) print $1}' | sort -u
}
# Looksup connman service name based on ssid
@@ -208,7 +199,7 @@ case "${1}" in
/usr/bin/wifictl enable
;;
list)
- list_wifi | awk '{sub(/\S+=/,"",$0);print}'
+ list_wifi
;;
channels)
iw list | awk '/[0-9] MHz \[/ && ! /disabled|radar|no IR/ { gsub(/^.*\[/,""); gsub(/\].*$/,""); print}'
@@ -218,7 +209,7 @@ case "${1}" in
;;
scanlist)
set_wifi scan 2>/dev/null
- list_wifi | awk '{sub(/\S+=/,"",$0);print}'
+ list_wifi
;;
service)
get_wifi_service "${SSID}"
diff --git a/packages/rocknix/udev.d/80-usbgadget.rules b/packages/rocknix/udev.d/80-usbgadget.rules
new file mode 100644
index 0000000000..fa6a3f3ad6
--- /dev/null
+++ b/packages/rocknix/udev.d/80-usbgadget.rules
@@ -0,0 +1,2 @@
+SUBSYSTEMS=="extcon", ACTION=="change", ENV{STATE}=="USB=1", ATTR{cable.0/name}=="USB", ATTR{cable.0/state}=="1", RUN+="/usr/bin/usbgadget trigger"
+SUBSYSTEM=="net", ACTION=="add", ENV{DEVTYPE}=="gadget", RUN+="/usr/sbin/ip link set %k up", RUN+="/usr/sbin/brctl addif usbnet %k"
diff --git a/packages/sysutils/busybox/config/busybox-target.conf b/packages/sysutils/busybox/config/busybox-target.conf
index d481c876ea..a2b3669cdd 100644
--- a/packages/sysutils/busybox/config/busybox-target.conf
+++ b/packages/sysutils/busybox/config/busybox-target.conf
@@ -327,7 +327,7 @@ CONFIG_FEATURE_STAT_FORMAT=y
CONFIG_SYNC=y
CONFIG_FEATURE_SYNC_FANCY=y
# CONFIG_FSYNC is not set
-# CONFIG_TAC is not set
+CONFIG_TAC=y
CONFIG_TAIL=y
CONFIG_FEATURE_FANCY_TAIL=y
CONFIG_TEE=y
@@ -688,7 +688,7 @@ CONFIG_RDATE=y
# CONFIG_RDEV is not set
# CONFIG_READPROFILE is not set
CONFIG_RENICE=y
-# CONFIG_REV is not set
+CONFIG_REV=y
# CONFIG_RTCWAKE is not set
# CONFIG_SCRIPT is not set
# CONFIG_SCRIPTREPLAY is not set
@@ -1070,12 +1070,12 @@ CONFIG_FEATURE_PIDOF_OMIT=y
CONFIG_PMAP=y
# CONFIG_POWERTOP is not set
# CONFIG_FEATURE_POWERTOP_INTERACTIVE is not set
-CONFIG_PS=y
+# CONFIG_PS is not set
# CONFIG_FEATURE_PS_WIDE is not set
# CONFIG_FEATURE_PS_LONG is not set
-CONFIG_FEATURE_PS_TIME=y
+# CONFIG_FEATURE_PS_TIME is not set
# CONFIG_FEATURE_PS_UNUSUAL_SYSTEMS is not set
-CONFIG_FEATURE_PS_ADDITIONAL_COLUMNS=y
+# CONFIG_FEATURE_PS_ADDITIONAL_COLUMNS is not set
CONFIG_PSTREE=y
CONFIG_PWDX=y
CONFIG_SMEMCAP=y
diff --git a/packages/sysutils/htop/package.mk b/packages/sysutils/htop/package.mk
index 06c7e0e0f5..0a03d5875c 100644
--- a/packages/sysutils/htop/package.mk
+++ b/packages/sysutils/htop/package.mk
@@ -2,7 +2,7 @@
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="htop"
-PKG_VERSION="f55b7a6e1d2625be51e95c13da52d68b80071271" # 3.2.2
+PKG_VERSION="4102862d12695cdf003e2d51ef6ce5984b7136d7" # 3.2.2
PKG_LICENSE="GPL"
PKG_SITE="https://github.com/htop-dev/htop"
PKG_URL="${PKG_SITE}.git"
@@ -10,6 +10,7 @@ PKG_DEPENDS_TARGET="toolchain ncurses"
PKG_LONGDESC="An interactive process viewer for Unix."
PKG_TOOLCHAIN="autotools"
-PKG_CONFIGURE_OPTS_TARGET="--disable-unicode \
- HTOP_NCURSES_CONFIG_SCRIPT=ncurses6-config"
-
+pre_configure_target() {
+ export LDFLAGS="${LDFLAGS} -lreadline -lncursesw -ltinfow"
+ PKG_CONFIGURE_OPTS_TARGET="--disable-unicode"
+}
diff --git a/packages/sysutils/systemd/package.mk b/packages/sysutils/systemd/package.mk
index 8ca776dac3..55f9ff5607 100644
--- a/packages/sysutils/systemd/package.mk
+++ b/packages/sysutils/systemd/package.mk
@@ -203,7 +203,7 @@ post_makeinstall_target() {
sed -e "s,^.*RuntimeMaxFileSize=.*$,RuntimeMaxFileSize=128K,g" -i ${INSTALL}/etc/systemd/journald.conf
sed -e "s,^.*SplitMode=.*$,SplitMode=none,g" -i ${INSTALL}/etc/systemd/journald.conf
sed -e "s,^.*SystemMaxUse=.*$,SystemMaxUse=10M,g" -i ${INSTALL}/etc/systemd/journald.conf
- if [ -n "${BUILD_WITH_DEBUG}" ]; then
+ if [ "${BUILD_WITH_DEBUG}" = "yes" ]; then
sed -e "s,^.*ForwardToConsole=.*$,ForwardToConsole=yes,g" -i ${INSTALL}/etc/systemd/journald.conf
sed -e "s,^.*TTYPath=.*$,TTYPath=${DEBUG_TTY},g" -i ${INSTALL}/etc/systemd/journald.conf
fi
diff --git a/packages/sysutils/systemd/scripts/systemd-machine-id-setup b/packages/sysutils/systemd/scripts/systemd-machine-id-setup
index bee033bfc5..8c02f9bca2 100755
--- a/packages/sysutils/systemd/scripts/systemd-machine-id-setup
+++ b/packages/sysutils/systemd/scripts/systemd-machine-id-setup
@@ -1,20 +1,81 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv)
-# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
+# Copyright (C) 2018-2022 Team LibreELEC (https://libreelec.tv)
+# Copyright (C) 2022 JELOS (https://github.com/JustEnoughLinuxOS)
+# Copyright (C) 2024-present ROCKNIX (https://github.com/ROCKNIX)
+
+. /etc/os-release
# remove old machine-id file
[[ -f "/storage/.cache/machine-id" ]] && rm /storage/.cache/machine-id
+MACHINEIDFILE=/storage/.cache/systemd-machine-id
+
+# For first boot detection systemd may have overmounted the file
+# We should prefer the current machine-id over freshy generated UUID
+CURMACHINEID="$(cat ${MACHINEIDFILE} 2>/dev/null)"
+umount ${MACHINEIDFILE} >/dev/null 2>&1
+mkdir -p $(dirname ${MACHINEIDFILE})
+STOREDMACHINEID="$(cat ${MACHINEIDFILE} 2>/dev/null)"
+
+# when possible, generate a consistent systemd-machine-id from unique bytes of hardware
+case "${HW_DEVICE}" in
+ H700) UID_FILE="/sys/bus/nvmem/devices/sunxi-sid0/nvmem";;
+ RK3326|RK3566|RK3588) UID_FILE="/sys/bus/nvmem/devices/rockchip-otp0/nvmem";;
+ RK3399) UID_FILE="/sys/firmware/devicetree/base/serial-number";;
+ S922X) UID_FILE="/sys/bus/platform/devices/secure-monitor/serial";;
+ SD865) UID_FILE="/sys/devices/soc0/serial_number";;
+esac
+
+# Fallback if file does not exist or if serial is all zero's
+if [[ ! -e "${UID_FILE}" || $(cat "${UID_FILE}" | tr -d '\000') = "0000000000000000" ]]; then
+ # Look for Android boot paritions first
+ if [ -e "/dev/mmcblk2boot0" ]; then
+ UID_FILE="/sys/class/block/mmcblk2/device/serial"
+ elif [ -e "/dev/mmcblk1boot0" ]; then
+ UID_FILE="/sys/class/block/mmcblk1/device/serial"
+ elif [ -e "/dev/mmcblk0boot0" ]; then
+ UID_FILE="/sys/class/block/mmcblk0/device/serial"
+ else
+ # Fallback to generated UUID
+ UID_FILE=
+ fi
+fi
+
+# When we have a usable UID_FILE, just use md5 of it as a machine id and finish
+if [ -s "${UID_FILE}" ]; then
+ MACHINEID=($(md5sum "${UID_FILE}"))
+ if [[ $? == 0 ]]; then
+ if [[ "${MACHINEID}" == "${STOREDMACHINEID}" ]]; then
+ # Already stored, no change needed
+ true
+ else
+ # Write the calculated machine id
+ echo ${MACHINEID} > ${MACHINEIDFILE}
+ fi
+ exit 0
+ fi
+fi
+
+# If we are here, an attempt to use hardware unique bytes failed.
+# Fall back to initially generating and then keeping a UUID
+
# test systemd-machine-id exists and is 32 hex chars or generate a new uuid
-MACHINEID="$(cat /storage/.cache/systemd-machine-id 2>/dev/null)"
+MACHINEID="${CURMACHINEID}"
[ "${#MACHINEID}" != "32" ] && MACHINEID=
[[ "${MACHINEID//[a-f0-9]/}" != "" ]] && MACHINEID=
-[ -z "${MACHINEID}" ] && MACHINEID=$(/usr/bin/dbus-uuidgen)
-
-# For first boot detection systemd may have overmounted the file
-umount /storage/.cache/systemd-machine-id >/dev/null 2>&1
-# persist uuid
-mkdir -p /storage/.cache
- echo "$MACHINEID" > /storage/.cache/systemd-machine-id
+# If after all checks MACHINEID is still defined, we have a valid ID
+if [ -n "${MACHINEID}" ]; then
+ if [[ "${CURMACHINEID}" == "${STOREDMACHINEID}" ]]; then
+ # Already stored, no change needed
+ true
+ else
+ # persist temporary machine id from overmounted file
+ echo ${MACHINEID} > ${MACHINEIDFILE}
+ fi
+else
+ # generate and persist uuid
+ /usr/bin/dbus-uuidgen > ${MACHINEIDFILE}
+fi
diff --git a/packages/textproc/bdf2psf/package.mk b/packages/textproc/bdf2psf/package.mk
index 50564e0230..1a4d52914b 100644
--- a/packages/textproc/bdf2psf/package.mk
+++ b/packages/textproc/bdf2psf/package.mk
@@ -2,7 +2,7 @@
# Copyright (C) 2023-present JELOS (https://github.com/JustEnoughLinuxOS)
PKG_NAME="bdf2psf"
-PKG_VERSION="1.230"
+PKG_VERSION="1.232"
PKG_LICENSE="GPLv2"
PKG_SITE="https://packages.debian.org/unstable/${PKG_NAME}"
PKG_URL="https://deb.debian.org/debian/pool/main/c/console-setup/${PKG_NAME}_${PKG_VERSION}_all.deb"
diff --git a/packages/textproc/libcroco/package.mk b/packages/textproc/libcroco/package.mk
index 66704d646c..200858171d 100644
--- a/packages/textproc/libcroco/package.mk
+++ b/packages/textproc/libcroco/package.mk
@@ -5,6 +5,6 @@ PKG_NAME="libcroco"
PKG_VERSION="0.6.13"
PKG_LICENSE="GPL-2.0-or-later"
PKG_SITE="https://www.freedesktop.org/wiki/Software/icon-theme/"
-PKG_URL="http://ftp.gnome.org/pub/gnome/sources/${PKG_NAME}/${PKG_VERSION:0:3}/${PKG_NAME}-${PKG_VERSION}.tar.xz"
+PKG_URL="http://www.mirrorservice.org/sites/ftp.gnome.org//pub/GNOME/sources/${PKG_NAME}/${PKG_VERSION:0:3}/${PKG_NAME}-${PKG_VERSION}.tar.xz"
PKG_DEPENDS_TARGET="toolchain glib libxml2"
PKG_LONGDESC="The libcroco package contains a standalone CSS2 parsing and manipulation library."
diff --git a/packages/tools/at-spi2-atk/package.mk b/packages/tools/at-spi2-atk/package.mk
index f82675e465..3494883710 100644
--- a/packages/tools/at-spi2-atk/package.mk
+++ b/packages/tools/at-spi2-atk/package.mk
@@ -7,6 +7,6 @@ PKG_VERSION="2.38.0"
PKG_SHA256="cfa008a5af822b36ae6287f18182c40c91dd699c55faa38605881ed175ca464f"
PKG_LICENSE="OSS"
PKG_SITE="http://www.gnome.org/"
-PKG_URL="https://ftp.gnome.org/pub/gnome/sources/at-spi2-atk/${PKG_VERSION:0:4}/at-spi2-atk-${PKG_VERSION}.tar.xz"
+PKG_URL="https://www.mirrorservice.org/sites/ftp.gnome.org//pub/GNOME/sources/at-spi2-atk/${PKG_VERSION:0:4}/at-spi2-atk-${PKG_VERSION}.tar.xz"
PKG_DEPENDS_TARGET="toolchain at-spi2-core atk libX11 libxml2"
PKG_LONGDESC="A GTK+ module that bridges ATK to D-Bus at-spi."
diff --git a/packages/tools/atk/package.mk b/packages/tools/atk/package.mk
index c47f79d889..b7d517b98f 100644
--- a/packages/tools/atk/package.mk
+++ b/packages/tools/atk/package.mk
@@ -7,7 +7,7 @@ PKG_VERSION="2.38.0"
PKG_SHA256="ac4de2a4ef4bd5665052952fe169657e65e895c5057dffb3c2a810f6191a0c36"
PKG_LICENSE="GPL"
PKG_SITE="http://library.gnome.org/devel/atk/"
-PKG_URL="https://ftp.gnome.org/pub/gnome/sources/atk/${PKG_VERSION:0:4}/atk-${PKG_VERSION}.tar.xz"
+PKG_URL="https://www.mirrorservice.org/sites/ftp.gnome.org//pub/GNOME/sources/atk/${PKG_VERSION:0:4}/atk-${PKG_VERSION}.tar.xz"
PKG_DEPENDS_TARGET="toolchain glib glib:host"
PKG_LONGDESC="Provides the set of accessibility interfaces that are implemented by other applications."
PKG_BUILD_FLAGS="+pic"
diff --git a/packages/tools/bin2c/package.mk b/packages/tools/bin2c/package.mk
new file mode 100755
index 0000000000..6ec073dcb2
--- /dev/null
+++ b/packages/tools/bin2c/package.mk
@@ -0,0 +1,28 @@
+# SPDX-License-Identifier: GPL-2.0
+# Copyright (C) 2024 ROCKNIX (https://github.com/ROCKNIX)
+
+PKG_NAME="bin2c"
+PKG_VERSION="1.1"
+PKG_SHA256="b2eef0a7ce77bb853b6496103727ce0614bfb69bc0f134813586ef12d6ae90e3"
+PKG_LICENSE="Public Domain"
+PKG_SITE="https://sourceforge.net/projects/bin2c"
+PKG_URL="http://downloads.sourceforge.net/sourceforge/${PKG_NAME}/${PKG_NAME}-${PKG_VERSION}.zip"
+PKG_DEPENDS_HOST="ccache:host gcc:host"
+PKG_LONGDESC="A command line tool to create C files from binary files."
+PKG_TOOLCHAIN="manual"
+
+pre_make_host() {
+ ### Extract will not correctly extract this package.
+ unzip -oq ${SOURCES}/${PKG_NAME}/${PKG_NAME}-${PKG_VERSION}.zip -d ${PKG_BUILD}
+}
+
+make_host() {
+ cd ${PKG_BUILD}/bin2c
+ gcc -o bin2c bin2c.c
+}
+
+makeinstall_host() {
+ cd ${PKG_BUILD}/bin2c
+ mkdir -p ${TOOLCHAIN}/usr/bin
+ mv bin2c ${TOOLCHAIN}/usr/bin
+}
diff --git a/packages/tools/procps-ng/package.mk b/packages/tools/procps-ng/package.mk
index f9b4691767..e13ba54e82 100644
--- a/packages/tools/procps-ng/package.mk
+++ b/packages/tools/procps-ng/package.mk
@@ -18,7 +18,7 @@ PKG_CONFIGURE_OPTS_TARGET="ac_cv_func_malloc_0_nonnull=yes \
--disable-modern-top \
--enable-static"
-PKG_MAKE_OPTS_TARGET="src/free src/top/top library/libproc2.la library/libproc2.pc"
+PKG_MAKE_OPTS_TARGET="src/free src/top/top src/ps/pscommand library/libproc2.la library/libproc2.pc"
PKG_MAKEINSTALL_OPTS_TARGET="install-libLTLIBRARIES install-pkgconfigDATA install-library_libproc2_la_includeHEADERS"
@@ -30,6 +30,7 @@ makeinstall_target() {
mkdir -p ${INSTALL}/usr/bin
cp -P ${PKG_BUILD}/.${TARGET_NAME}/src/free ${INSTALL}/usr/bin
cp -P ${PKG_BUILD}/.${TARGET_NAME}/src/top/top ${INSTALL}/usr/bin
+ cp -P ${PKG_BUILD}/.${TARGET_NAME}/src/ps/pscommand ${INSTALL}/usr/bin/ps
make DESTDIR=${SYSROOT_PREFIX} -j1 ${PKG_MAKEINSTALL_OPTS_TARGET}
diff --git a/packages/tools/vim/vimrc b/packages/tools/vim/vimrc
index f08f5a3dc8..77de853b93 100644
--- a/packages/tools/vim/vimrc
+++ b/packages/tools/vim/vimrc
@@ -17,6 +17,15 @@ if v:progname =~? "evim"
finish
endif
+" Weird part. Vim should source the first usable RC file it finds.
+" In reality, it was sourcing '/usr/share/vim/vimrc',
+" and after that '/usr/share/vim/defaults.vim' as well,
+" making any conflicts resolve to defaults.
+" Having explicit ~/.vimrc fixes that, so create it if there isn't one
+if !filereadable($HOME . "/.vimrc")
+ call system("cp " . $VIMRUNTIME . "/vimrc " . $HOME . "/.vimrc")
+endif
+
" Get the defaults that most users want.
source $VIMRUNTIME/defaults.vim
@@ -76,4 +85,3 @@ endif
" disable mouse interaction
set mouse=
-set ttymouse=
diff --git a/packages/ui/emulationstation/config/common/es_features.cfg b/packages/ui/emulationstation/config/common/es_features.cfg
index e9eef639e4..274b097884 100644
--- a/packages/ui/emulationstation/config/common/es_features.cfg
+++ b/packages/ui/emulationstation/config/common/es_features.cfg
@@ -376,6 +376,14 @@
+
+
+
+
+
+
+
+
@@ -440,11 +448,14 @@
-
-
-
-
-
+
+
+
+
+
+
+
+
@@ -504,11 +515,14 @@
-
-
-
-
-
+
+
+
+
+
+
+
+
@@ -763,8 +777,52 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -840,7 +898,6 @@
-
@@ -856,6 +913,7 @@
+
diff --git a/packages/ui/emulationstation/package.mk b/packages/ui/emulationstation/package.mk
index f910c42968..3a3e4e759b 100644
--- a/packages/ui/emulationstation/package.mk
+++ b/packages/ui/emulationstation/package.mk
@@ -3,7 +3,7 @@
# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS)
PKG_NAME="emulationstation"
-PKG_VERSION="3dcca5951701535aee4a0514b7b54fa5599617e3"
+PKG_VERSION="8af0be8f1d03c7a258ed59769b5c44c719d1b7fb"
PKG_GIT_CLONE_BRANCH="main"
PKG_LICENSE="GPL"
PKG_SITE="https://github.com/ROCKNIX/emulationstation"
@@ -15,6 +15,12 @@ PKG_BUILD_FLAGS="-gold"
GET_HANDLER_SUPPORT="git"
PKG_PATCH_DIRS+="${DEVICE}"
+if [ "${ES_WIP}" ]; then
+ PKG_VERSION="a605d7020470f1d2930665f9e2a615ca947dddc1"
+ PKG_GIT_CLONE_BRANCH="master"
+ PKG_URL="https://github.com/ROCKNIX/emulationstation-next.git"
+fi
+
if [ ! "${OPENGL}" = "no" ]; then
PKG_DEPENDS_TARGET+=" ${OPENGL} glu"
PKG_CMAKE_OPTS_TARGET+=" -DGL=1"
@@ -39,14 +45,8 @@ if [ "${GRAPHIC_DRIVERS}" = "panfrost" ] && [ ! "${DEVICE}" = "RK3588" ]; then
PKG_CMAKE_OPTS_TARGET+=" -DPANFROST=1"
fi
-# Enable Moonlight for everything but S922X Mali Vulkan
-if [ "${DEVICE}" = "S922X" -a "${USE_MALI}" != "no" ]; then
- PKG_CMAKE_OPTS_TARGET+=" -DMOONLIGHT=0"
-else
- PKG_CMAKE_OPTS_TARGET+=" -DMOONLIGHT=1"
-fi
-
-PKG_CMAKE_OPTS_TARGET+=" -DENABLE_EMUELEC=1 \
+PKG_CMAKE_OPTS_TARGET+=" -DMOONLIGHT=1 \
+ -DENABLE_EMUELEC=1 \
-DDISABLE_KODI=1 \
-DENABLE_FILEMANAGER=0 \
-DCEC=0 \
diff --git a/packages/ui/rocknix-emulationstation/config/common/es_features.cfg b/packages/ui/rocknix-emulationstation/config/common/es_features.cfg
deleted file mode 100644
index c4e4f1409b..0000000000
--- a/packages/ui/rocknix-emulationstation/config/common/es_features.cfg
+++ /dev/null
@@ -1,1022 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- "
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/packages/ui/rocknix-emulationstation/config/common/es_input.cfg b/packages/ui/rocknix-emulationstation/config/common/es_input.cfg
deleted file mode 100644
index 73b1030b30..0000000000
--- a/packages/ui/rocknix-emulationstation/config/common/es_input.cfg
+++ /dev/null
@@ -1,1589 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/packages/ui/rocknix-emulationstation/config/common/es_settings.cfg b/packages/ui/rocknix-emulationstation/config/common/es_settings.cfg
deleted file mode 100644
index 7de954dfe5..0000000000
--- a/packages/ui/rocknix-emulationstation/config/common/es_settings.cfg
+++ /dev/null
@@ -1,62 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/packages/ui/rocknix-emulationstation/package.mk b/packages/ui/rocknix-emulationstation/package.mk
deleted file mode 100644
index 5c7111006a..0000000000
--- a/packages/ui/rocknix-emulationstation/package.mk
+++ /dev/null
@@ -1,155 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0-or-later
-# Copyright (C) 2019-present Shanti Gilbert (https://github.com/shantigilbert)
-# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS)
-
-PKG_NAME="rocknix-emulationstation"
-PKG_VERSION="7c43b74063b150016152a9bcd505589b0e4e6e2a"
-PKG_GIT_CLONE_BRANCH="master"
-PKG_LICENSE="GPL"
-PKG_SITE="https://github.com/ROCKNIX/rocknix-emulationstation"
-PKG_URL="${PKG_SITE}.git"
-PKG_DEPENDS_TARGET="boost toolchain SDL2 freetype curl freeimage bash rapidjson SDL2_mixer fping p7zip alsa vlc drm_tool pugixml"
-PKG_NEED_UNPACK="busybox"
-PKG_LONGDESC="Emulationstation emulator frontend"
-PKG_BUILD_FLAGS="-gold"
-GET_HANDLER_SUPPORT="git"
-PKG_PATCH_DIRS+="${DEVICE}"
-
-if [ "${OPENGL_SUPPORT}" = "yes" ] && [ ! "${PREFER_GLES}" = "yes" ]; then
- PKG_DEPENDS_TARGET+=" ${OPENGL} glu"
- PKG_CMAKE_OPTS_TARGET+=" -DGL=1"
-else
- PKG_DEPENDS_TARGET+=" ${OPENGLES}"
- PKG_CMAKE_OPTS_TARGET+=" -DGLES2=1"
-fi
-
-PKG_CMAKE_OPTS_TARGET+=" -DDISABLE_KODI=1 \
- -DENABLE_FILEMANAGER=0 \
- -DCEC=0 \
- -DENABLE_PULSE=1 \
- -DUSE_SYSTEM_PUGIXML=1"
-
-##########################################################################################################
-# The following allows building Emulation station from local copy by using EMULATIONSTATION_SRC.
-# The built makes symlinks to a local repository.
-#
-# One time setup:
-# ---------------
-# cd ~
-# git clone https://github.com/ROCKNIX/emulationstation.git
-# cd emulationstation
-# git submodule update --init
-#
-# Cleanup old files:
-# ------------------
-# DEVICE=RG351V ARCH=aarch64 ./scripts/clean emulationstation
-#
-# Build from local copy:
-# ----------------------
-# EMULATIONSTATION_SRC=~/emulationstation DEVICE=RG351V ARCH=aarch64 ./scripts/build emulationstation
-#
-# Run from the device:
-# --------------------
-# Copy ./emulationstation binary found in build.ROCKNIX-.aarch64/emulationstation-*/.install_pkg/usr/bin/
-# Via ssh, run emulationstation with
-# systemctl stop emustation
-# chmod +x ./emulationstation
-# ./emulationstation
-##########################################################################################################
-if [ -n "${EMULATIONSTATION_SRC}" ]; then
-unpack() {
- echo cp -PRf ${EMULATIONSTATION_SRC} ${PKG_BUILD}
- cp -PRf ${EMULATIONSTATION_SRC} ${PKG_BUILD}
-}
-# add some symbolic links to point to a code in local source folder
-post_unpack() {
- rm -rf "${PKG_BUILD}/es-app"
- ln -sf "${EMULATIONSTATION_SRC}/es-app" "${PKG_BUILD}"
-
- rm -rf "${PKG_BUILD}/es-core"
- ln -sf "${EMULATIONSTATION_SRC}/es-core" "${PKG_BUILD}"
-}
-fi
-
-pre_configure_target() {
- for key in SCREENSCRAPER_DEV_LOGIN \
- GAMESDB_APIKEY \
- CHEEVOS_DEV_LOGIN
- do
- if [ -z "${!key}" ]
- then
- echo "WARNING: ${key} not declared, will not build support."
- else
- echo "USING: ${key} = ${!key}"
- fi
- done
-
- pwd
-
- # Why is this necessary?
- cp -rf ${PKG_BUILD}/resources ${PKG_BUILD}/.${TARGET_NAME}/
-
- export DEVICE=$(echo ${DEVICE^^} | sed "s#-#_##g")
-}
-
-makeinstall_target() {
- mkdir -p ${INSTALL}/usr/config/locale
- cp -rf ${PKG_BUILD}/locale/lang/* ${INSTALL}/usr/config/locale/
-
- mkdir -p ${INSTALL}/usr/bin
- cp -rf ${PKG_BUILD}/emulationstation ${INSTALL}/usr/bin
-
- mkdir -p ${INSTALL}/usr/bin
- cp ${PKG_BUILD}/es_settings ${INSTALL}/usr/bin
- chmod 0755 ${INSTALL}/usr/bin/es_settings
-
- cp ${PKG_BUILD}/start_es.sh ${INSTALL}/usr/bin
- chmod 0755 ${INSTALL}/usr/bin/start_es.sh
-
- mkdir -p ${INSTALL}/etc/emulationstation/
- ln -sf /storage/.config/emulationstation/themes ${INSTALL}/etc/emulationstation/
-
- mkdir -p ${INSTALL}/usr/config/emulationstation
- cp -rf ${PKG_DIR}/config/common/*.cfg ${INSTALL}/usr/config/emulationstation
-
- # If we're not an emulation device, ES may still be installed so we need a default config.
- if [ "${EMULATION_DEVICE}" = "no" ] || \
- [ "${BASE_ONLY}" = "true" ]
- then
- cat <${INSTALL}/etc/emulationstation/es_systems.cfg
-
-
-
- tools
- Tools
- ROCKNIX
- 2024
- system
- /storage/.config/modules
- .sh
- %ROM%
- tools
- tools
-
-
-EOF
- fi
-
- ln -sf /usr/config/emulationstation/es_systems.cfg ${INSTALL}/etc/emulationstation/es_systems.cfg
- if [ -d "${PKG_DIR}/config/device/${DEVICE}" ]; then
- cp -rf ${PKG_DIR}/config/device/${DEVICE}/*.cfg ${INSTALL}/usr/config/emulationstation
- fi
-
- ln -sf /storage/.cache/system_timezone ${INSTALL}/etc/timezone
-}
-
-post_install() {
- mkdir -p ${INSTALL}/usr/share
- ln -sf /storage/.config/locale ${INSTALL}/usr/share/locale
-
- mkdir -p ${INSTALL}/usr/lib
- ln -sf /usr/share/locale ${INSTALL}/usr/lib/locale
-
- ln -sf /usr/share/locale ${INSTALL}/usr/config/emulationstation/locale
-
-}
diff --git a/packages/ui/rocknix-emulationstation/sources/es_settings b/packages/ui/rocknix-emulationstation/sources/es_settings
deleted file mode 100755
index 6dae2d01d6..0000000000
--- a/packages/ui/rocknix-emulationstation/sources/es_settings
+++ /dev/null
@@ -1,52 +0,0 @@
-#!/bin/bash
-# SPDX-License-Identifier: GPL-2.0-or-later
-# Copyright (C) 2019-present Shanti Gilbert (https://github.com/shantigilbert)
-# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS)
-
-# Source predefined functions and variables
-. /etc/profile
-
-export SDL_AUDIODRIVER=pulseaudio
-
-TZ=$(get_setting system.timezone)
-echo -n "TIMEZONE=${TZ}" > /storage/.cache/timezone
-echo -n "${TZ}" >/storage/.cache/system_timezone
-systemctl restart tz-data.service
-
-MYLOCALE=$(get_setting system.language)
-if [[ -n "${MYLOCALE}" ]]
-then
-
- unset I18NPATH LANG LANGUAGE LOCPATH
-
- MYCHARMAP="UTF-8"
- MYLANG="${MYLOCALE}.${MYCHARMAP}"
- MYLOCPATH="/storage/.config/emulationstation"
-
- if [ ! -e "${MYLOCPATH}/locale/${MYLANG}/LC_NAME" ]; then
- performance
- I18NPATH="/usr/share/i18n"
- localedef -i ${MYLOCALE} \
- -c \
- -v \
- -f ${MYCHARMAP} \
- ${MYLOCPATH}/locale/${MYLANG} >/var/log/start_es.log 2>&1
- ${DEVICE_CPU_GOVERNOR}
- fi
-
- export LOCPATH="${MYLOCPATH}/locale"
- export LANG=${MYLANG}
- export LANGUAGE=${MYLANG}
- systemctl import-environment LANG
- systemctl import-environment LOCPATH
- systemctl import-environment I18NPATH
- systemctl import-environment LANGUAGE
-fi
-
-### Import quirk variables.
-for VARIABLE in $(cat /etc/profile.d/999-export | grep _ | sed 's/export//g; s/^\W//g; s/\\//g')
-do
- systemctl import-environment ${VARIABLE}
-done
-
-set_kill set "emulationstation"
diff --git a/packages/ui/rocknix-emulationstation/sources/start_es.sh b/packages/ui/rocknix-emulationstation/sources/start_es.sh
deleted file mode 100755
index 2ddf5f582d..0000000000
--- a/packages/ui/rocknix-emulationstation/sources/start_es.sh
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/bash
-# SPDX-License-Identifier: GPL-2.0-or-later
-# Copyright (C) 2024 ROCKNIX (https://github.com/ROCKNIX)
-
-### setup is the same
-. $(dirname $0)/es_settings
-
-emulationstation --log-path /var/log --no-splash
diff --git a/packages/ui/rocknix-emulationstation/system.d/es.service b/packages/ui/rocknix-emulationstation/system.d/es.service
deleted file mode 100644
index ae5a46b3b8..0000000000
--- a/packages/ui/rocknix-emulationstation/system.d/es.service
+++ /dev/null
@@ -1,14 +0,0 @@
-[Unit]
-Description=EmulationStation-service-for-any-compositor
-PartOf=graphical.target
-
-[Service]
-Environment=HOME=/storage
-Type=simple
-ExecStart=/usr/bin/start_es.sh
-WorkingDirectory=/storage
-Restart=always
-RestartSec=2
-
-[Install]
-WantedBy=rocknix.target
diff --git a/packages/ui/rocknix-emulationstation/system.d/essway.service b/packages/ui/rocknix-emulationstation/system.d/essway.service
deleted file mode 120000
index 4f96fcd038..0000000000
--- a/packages/ui/rocknix-emulationstation/system.d/essway.service
+++ /dev/null
@@ -1 +0,0 @@
-es.service
\ No newline at end of file
diff --git a/packages/ui/themes/es-theme-art-book-next/package.mk b/packages/ui/themes/es-theme-art-book-next/package.mk
index b558852b58..f564df9f39 100644
--- a/packages/ui/themes/es-theme-art-book-next/package.mk
+++ b/packages/ui/themes/es-theme-art-book-next/package.mk
@@ -1,18 +1,24 @@
-# SPDX-License-Identifier: GPL-2.0-or-later
-# Copyright (C) 2020 Shanti Gilbert (https://github.com/shantigilbert)
-# Copyright (C) 2020 351ELEC team (https://github.com/fewtarius/351ELEC)
-# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS)
+# SPDX-License-Identifier: GPL-2.0
+# Copyright (C) 2022-24 JELOS (https://github.com/JustEnoughLinuxOS)
+# Copyright (C) 2024-present ROCKNIX (https://github.com/ROCKNIX)
PKG_NAME="es-theme-art-book-next"
-PKG_VERSION="0acf7955c1b27aaa9f7176f263eb54cd99584d5b"
+PKG_VERSION="b4d4f573ddb790c397d0a78bef8c35cb4e927464"
PKG_LICENSE="CUSTOM"
-PKG_SITE="https://github.com/anthonycaccese/art-book-next-jelos"
-PKG_URL="${PKG_SITE}.git"
-GET_HANDLER_SUPPORT="git"
+PKG_SITE="https://github.com/anthonycaccese/art-book-next-es"
+PKG_URL="${PKG_SITE}/archive/${PKG_VERSION}.tar.gz"
PKG_LONGDESC="Art Book Next"
PKG_TOOLCHAIN="manual"
+if [ "${ES_WIP}" ]; then
+ PKG_VERSION="01f083bd38a34a1b29a514dedac4c35fd285f8bb"
+ PKG_URL="${PKG_SITE}/archive/${PKG_VERSION}.tar.gz"
+else
+ PKG_VERSION="e1561c28b0a97b5b58303c775d16d357b7b9ede5"
+ PKG_URL="https://github.com/anthonycaccese/art-book-next-jelos/archive/${PKG_VERSION}.tar.gz"
+fi
+
makeinstall_target() {
mkdir -p ${INSTALL}/usr/share/themes/${PKG_NAME}
- cp -rf * ${INSTALL}/usr/share/themes/${PKG_NAME}
+ cp -rf * ${INSTALL}/usr/share/themes/${PKG_NAME}
}
diff --git a/packages/virtual/emulators/package.mk b/packages/virtual/emulators/package.mk
index f6918afed8..d46cc7496c 100644
--- a/packages/virtual/emulators/package.mk
+++ b/packages/virtual/emulators/package.mk
@@ -23,7 +23,7 @@ LIBRETRO_CORES="81-lr a5200-lr arduous-lr atari800-lr beetle-gba-lr beetle-lynx-
pcsx_rearmed-lr picodrive-lr pokemini-lr potator-lr prosystem-lr puae-lr puae2021-lr px68k-lr quasi88-lr quicknes-lr \
race-lr same_cdi-lr sameboy-lr sameduck-lr scummvm-lr smsplus-gx-lr snes9x-lr snes9x2002-lr snes9x2005_plus-lr \
snes9x2010-lr stella-lr swanstation-lr tgbdual-lr theodore-lr tic80-lr uzem-lr vba-next-lr vbam-lr vecx-lr vice-lr \
- vircon32-lr virtualjaguar-lr xmil-lr yabasanshiro-lr"
+ vircon32-lr virtualjaguar-lr xmil-lr wasm4-lr yabasanshiro-lr"
### Emulators or cores for specific devices
case "${DEVICE}" in
@@ -31,7 +31,7 @@ case "${DEVICE}" in
[ "${ENABLE_32BIT}" == "true" ] && EMUS_32BIT="wine"
PKG_EMUS+=" cemu-sa dolphin-sa lime3ds-sa mednafen melonds-sa minivmacsa mupen64plus-sa nanoboyadvance-sa pcsx2-sa \
rpcs3-sa scummvmsa vita3k-sa xemu-sa"
- LIBRETRO_CORES+=" beetle-psx-lr beetle-saturn-lr bsnes-lr bsnes-hd-lr desmume-lr dolphin-lr flycast-lr lrps2-lr"
+ LIBRETRO_CORES+=" beetle-psx-lr beetle-saturn-lr bsnes-lr bsnes-hd-lr desmume-lr dolphin-lr flycast-lr lrps2-lr play-lr"
;;
RK3588)
[ "${ENABLE_32BIT}" == "true" ] && EMUS_32BIT="box86 desmume-lr gpsp-lr pcsx_rearmed-lr wine"
@@ -55,12 +55,11 @@ case "${DEVICE}" in
S922X)
[ "${ENABLE_32BIT}" == "true" ] && EMUS_32BIT="box86 pcsx_rearmed-lr wine"
PKG_EMUS+=" aethersx2-sa box64 dolphin-sa drastic-sa portmaster scummvmsa yabasanshiro-sa"
- LIBRETRO_CORES+=" beetle-psx-lr bsnes-lr bsnes-hd-lr dolphin-lr geolith-lr flycast-lr uae4arm"
- [ "${USE_MALI}" != "no" ] && PKG_EMUS+=" lime3ds-sa"
+ LIBRETRO_CORES+=" beetle-psx-lr bsnes-lr bsnes-hd-lr dolphin-lr geolith-lr flycast-lr lime3ds-sa uae4arm"
PKG_RETROARCH+=" retropie-shaders"
;;
RK3326)
- [ "${ENABLE_32BIT}" == "true" ] && EMUS_32BIT="box86 desmume-lr gpsp-lr pcsx_rearmed-lr"
+ [ "${ENABLE_32BIT}" == "true" ] && EMUS_32BIT="box86 desmume-lr gpsp-lr pcsx_rearmed-lr wine"
PKG_DEPENDS_TARGET+=" common-shaders glsl-shaders"
PKG_EMUS+=" box64 drastic-sa mednafen portmaster scummvmsa yabasanshiro-sa"
LIBRETRO_CORES+=" flycast-lr flycast2021-lr geolith-lr uae4arm"
@@ -77,7 +76,7 @@ case "${DEVICE}" in
[ "${ENABLE_32BIT}" == "true" ] && EMUS_32BIT="box86 desmume-lr gpsp-lr pcsx_rearmed-lr wine"
PKG_EMUS+=" aethersx2-sa box64 dolphin-sa drastic-sa lime3ds-sa melonds-sa portmaster scummvmsa supermodel-sa \
yabasanshiro-sa xemu-sa"
- LIBRETRO_CORES+=" beetle-psx-lr beetle-saturn-lr bsnes-lr bsnes-hd-lr dolphin-lr flycast-lr geolith-lr pcsx_rearmed-lr uae4arm"
+ LIBRETRO_CORES+=" beetle-psx-lr beetle-saturn-lr bsnes-lr bsnes-hd-lr dolphin-lr flycast-lr geolith-lr pcsx_rearmed-lr uae4arm kronos-lr"
PKG_RETROARCH+=" retropie-shaders"
;;
esac
@@ -705,7 +704,10 @@ makeinstall_target() {
### Nintendo 64
add_emu_core n64 retroarch mupen64plus_next true
- add_emu_core n64 retroarch mupen64plus false
+ if [ "${PREFER_GLES}" = "yes" ]; then
+ # This core only has gles renderer
+ add_emu_core n64 retroarch mupen64plus false
+ fi
add_emu_core n64 retroarch parallel_n64 false
add_emu_core n64 mupen64plus mupen64plus-sa false
add_es_system n64
@@ -868,10 +870,11 @@ makeinstall_target() {
AMD64)
add_emu_core ps2 pcsx2 pcsx2-sa true
add_emu_core ps2 retroarch pcsx2 false
+ add_emu_core ps2 retroarch play false
add_es_system ps2
install_script "Start PCSX2.sh"
;;
- RK3588*|S922X|RK3399|SD865)
+ RK3588|S922X|RK3399|SD865)
add_emu_core ps2 aethersx2 aethersx2-sa true
add_es_system ps2
install_script "Start AetherSX2.sh"
@@ -978,6 +981,17 @@ makeinstall_target() {
esac
add_es_system megadrive
+ ### Sega MegaDrive Hacks
+ add_emu_core megadriveh retroarch genesis_plus_gx true
+ add_emu_core megadriveh retroarch genesis_plus_gx_wide false
+ add_emu_core megadriveh retroarch picodrive false
+ case ${DEVICE} in
+ RK3399|AMD64|RK3326|RK3588*|RK356*|H700)
+ add_emu_core megadriveh mednafen md false
+ ;;
+ esac
+ add_es_system megadriveh
+
### Welback Holdings Mega Duck
add_emu_core megaduck retroarch sameduck true
add_es_system megaduck
@@ -993,12 +1007,13 @@ makeinstall_target() {
;;
esac
case ${DEVICE} in
- AMD64)
+ AMD64|RK358*)
add_emu_core saturn retroarch beetle_saturn false
add_emu_core saturn mednafen ss false
;;
- RK358*|SD865)
+ SD865)
add_emu_core saturn retroarch beetle_saturn false
+ add_emu_core saturn retroarch kronos false
add_emu_core saturn mednafen ss false
;;
esac
@@ -1147,6 +1162,10 @@ makeinstall_target() {
add_emu_core tic-80 retroarch tic80 true
add_es_system tic-80
+ ### Various WASM-4
+ add_emu_core wasm4 retroarch wasm4 true
+ add_es_system wasm4
+
### NEC TurboGrafx 16
add_emu_core tg16 retroarch beetle_pce_fast true
add_emu_core tg16 retroarch beetle_pce false
diff --git a/packages/virtual/image/package.mk b/packages/virtual/image/package.mk
index 9b1a075dde..40fb8846a1 100644
--- a/packages/virtual/image/package.mk
+++ b/packages/virtual/image/package.mk
@@ -15,12 +15,7 @@ PKG_DEPENDS_TARGET="toolchain squashfs-tools:host dosfstools:host fakeroot:host
bash coreutils modules system-utils autostart quirks powerstate gnupg \
gzip six lynx xmlstarlet vim pyudev dialog dbus-python network rocknix"
-if [ ${ES_WIP} ]; then
- PKG_UI="rocknix-emulationstation "
-else
- PKG_UI="emulationstation "
-fi
-PKG_UI+="es-themes textviewer"
+PKG_UI="emulationstation es-themes textviewer"
PKG_UI_TOOLS="fileman fbgrab"
diff --git a/packages/wayland/compositor/sway/package.mk b/packages/wayland/compositor/sway/package.mk
index 18bfff017e..43ade6eeb1 100644
--- a/packages/wayland/compositor/sway/package.mk
+++ b/packages/wayland/compositor/sway/package.mk
@@ -4,8 +4,7 @@
PKG_NAME="sway"
PKG_LICENSE="MIT"
PKG_SITE="https://swaywm.org/"
-#PKG_URL="https://github.com/swaywm/sway/releases/download/${PKG_VERSION}/sway-${PKG_VERSION}.tar.gz"
-PKG_DEPENDS_TARGET="toolchain wayland wayland-protocols libdrm libxkbcommon libinput cairo pango libjpeg-turbo dbus json-c wlroots gdk-pixbuf swaybg foot bemenu xcb-util-wm xwayland xkbcomp"
+PKG_DEPENDS_TARGET="toolchain wayland wayland-protocols libdrm libxkbcommon libinput cairo pango libjpeg-turbo dbus json-c wlroots gdk-pixbuf swaybg foot bemenu xcb-util-wm xwayland xkbcomp xterm"
PKG_LONGDESC="i3-compatible Wayland compositor"
PKG_TOOLCHAIN="meson"
@@ -15,9 +14,9 @@ case ${DEVICE} in
PKG_URL="https://github.com/swaywm/sway/archive/${PKG_VERSION}.zip"
;;
*)
- PKG_VERSION="1c992d847d66161a28f12bfc7028966433fb249c"
- PKG_SHA256="387d37ede5d56f8474ce5706f78b1ad3311f6e58dcdfa4c495396d2ff0f1544d"
- PKG_URL="https://github.com/swaywm/sway/archive/${PKG_VERSION}.zip" # temporary until 1.10 is released
+ PKG_VERSION="1.10"
+ PKG_SHA256="7472a7f11150212e0bed0bd0af9f591c9caac9f9ea87c35486e475a21f5ce81f"
+ PKG_URL="https://github.com/swaywm/sway/releases/download/${PKG_VERSION}/sway-${PKG_VERSION}.tar.gz"
;;
esac
diff --git a/packages/wayland/lib/fcft/package.mk b/packages/wayland/lib/fcft/package.mk
index 428763d97c..cde98a58e7 100644
--- a/packages/wayland/lib/fcft/package.mk
+++ b/packages/wayland/lib/fcft/package.mk
@@ -2,8 +2,7 @@
# Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="fcft"
-PKG_VERSION="3.1.7"
-PKG_SHA256="0e29ea7edca4cf6f0ac6b4f6427a4606c184b3d809071e7d2f56fcc226574d30"
+PKG_VERSION="3.1.9"
PKG_LICENSE="MIT"
PKG_SITE="https://codeberg.org/dnkl/fcft"
PKG_URL="https://codeberg.org/dnkl/fcft/archive/${PKG_VERSION}.tar.gz"
diff --git a/packages/wayland/lib/seatd/package.mk b/packages/wayland/lib/seatd/package.mk
index 5b9a79003a..b719860036 100644
--- a/packages/wayland/lib/seatd/package.mk
+++ b/packages/wayland/lib/seatd/package.mk
@@ -2,7 +2,7 @@
# Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="seatd"
-PKG_VERSION="0.8.0"
+PKG_VERSION="0.9.0"
PKG_LICENSE="MIT"
PKG_SITE="https://git.sr.ht/~kennylevinsen/seatd"
PKG_URL="https://github.com/kennylevinsen/seatd/archive/refs/tags/${PKG_VERSION}.tar.gz"
diff --git a/packages/wayland/lib/wlroots/package.mk b/packages/wayland/lib/wlroots/package.mk
index 11d75cb763..16e60ff1a2 100644
--- a/packages/wayland/lib/wlroots/package.mk
+++ b/packages/wayland/lib/wlroots/package.mk
@@ -15,8 +15,8 @@ case ${DEVICE} in
PKG_URL="https://github.com/stolen/rockchip-wlroots/archive/refs/tags/${PKG_VERSION}.tar.gz"
;;
*)
- PKG_VERSION="0.18.0-rk"
- PKG_SHA256="15855f05acfe32d4c51a4ad4bed988258fbce5c8f140573229d6889ca8503ed1"
+ PKG_VERSION="0.18.1-rk"
+ PKG_SHA256="93572a16ba48749e1a8cea4e78a1992008e2713dcb72019abfc6f7efd0947ccf"
PKG_URL="https://github.com/stolen/rockchip-wlroots/archive/refs/tags/${PKG_VERSION}.tar.gz"
;;
esac
diff --git a/packages/wayland/util/foot/package.mk b/packages/wayland/util/foot/package.mk
index 85f361035e..45071661d2 100644
--- a/packages/wayland/util/foot/package.mk
+++ b/packages/wayland/util/foot/package.mk
@@ -2,8 +2,7 @@
# Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="foot"
-PKG_VERSION="1.17.1"
-PKG_SHA256="da49d302fb98d61e674dace27d44ab6e6e6446a1ee156a09a430efb738d74b39"
+PKG_VERSION="1.19.0"
PKG_LICENSE="MIT"
PKG_SITE="https://codeberg.org/dnkl/foot/"
PKG_URL="https://codeberg.org/dnkl/foot/archive/${PKG_VERSION}.tar.gz"
diff --git a/packages/x11/xserver/xwayland/package.mk b/packages/x11/xserver/xwayland/package.mk
index bbf71ab932..74d44073f0 100644
--- a/packages/x11/xserver/xwayland/package.mk
+++ b/packages/x11/xserver/xwayland/package.mk
@@ -4,7 +4,7 @@
# Copyright (C) 2023-present JELOS (https://github.com/JustEnoughLinuxOS)
PKG_NAME="xwayland"
-PKG_VERSION="113245b1ab0b219fa569c808f4da45ffe298e33a"
+PKG_VERSION="3bfef8d7c06ca6a380b1e23ca5ec0675a302cc90"
PKG_LICENSE="OSS"
PKG_SITE="https://gitlab.freedesktop.org/xorg/xserver"
PKG_URL="${PKG_SITE}.git"
diff --git a/projects/Allwinner/bootloader/dtb.xml b/projects/Allwinner/bootloader/dtb.xml
index 328877adfc..18b83e5957 100644
--- a/projects/Allwinner/bootloader/dtb.xml
+++ b/projects/Allwinner/bootloader/dtb.xml
@@ -1,10 +1,15 @@
sun50i-h700-anbernic-rg35xx-plus
+ sun50i-h700-anbernic-rg35xx-plus-rev2-panel
sun50i-h700-anbernic-rg35xx-h
+ sun50i-h700-anbernic-rg35xx-h-rev2-panel
sun50i-h700-anbernic-rg35xx-sp
+ sun50i-h700-anbernic-rg35xx-sp-rev2-panel
sun50i-h700-anbernic-rg35xx-2024
- sun50i-h700-anbernic-rg28xx
+ sun50i-h700-anbernic-rg35xx-2024-rev2-panel
sun50i-h700-anbernic-rg40xx-hv
+ sun50i-h700-anbernic-rgcubexx
+ sun50i-h700-anbernic-rg28xx
diff --git a/projects/Allwinner/devices/H700/linux/linux.aarch64.conf b/projects/Allwinner/devices/H700/linux/linux.aarch64.conf
index c5d1158897..c811df1a2a 100644
--- a/projects/Allwinner/devices/H700/linux/linux.aarch64.conf
+++ b/projects/Allwinner/devices/H700/linux/linux.aarch64.conf
@@ -3850,6 +3850,7 @@ CONFIG_REGULATOR_GPIO=y
# CONFIG_REGULATOR_RTQ2208 is not set
# CONFIG_REGULATOR_SLG51000 is not set
CONFIG_REGULATOR_SUN20I=y
+CONFIG_REGULATOR_H616_MMC=y
# CONFIG_REGULATOR_SY8106A is not set
# CONFIG_REGULATOR_SY8824X is not set
# CONFIG_REGULATOR_SY8827N is not set
@@ -4602,7 +4603,7 @@ CONFIG_DUMMY_CONSOLE_ROWS=25
CONFIG_FRAMEBUFFER_CONSOLE=y
# CONFIG_FRAMEBUFFER_CONSOLE_LEGACY_ACCELERATION is not set
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
-# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
# CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER is not set
# end of Console display driver support
diff --git a/projects/Allwinner/devices/H700/options b/projects/Allwinner/devices/H700/options
index 0999100e64..6e54469e9a 100644
--- a/projects/Allwinner/devices/H700/options
+++ b/projects/Allwinner/devices/H700/options
@@ -49,7 +49,7 @@
OPENGLES="mesa"
# For maximum cross compatbility
- PREFER_GLES="no"
+ PREFER_GLES="yes"
# Displayserver to use (wl / no)
DISPLAYSERVER="wl"
diff --git a/projects/Allwinner/packages/u-boot/package.mk b/projects/Allwinner/packages/u-boot/package.mk
index 053744ede6..2654db0121 100644
--- a/projects/Allwinner/packages/u-boot/package.mk
+++ b/projects/Allwinner/packages/u-boot/package.mk
@@ -2,7 +2,7 @@
# Copyright (C) 2024-present ROCKNIX (https://github.com/ROCKNIX)
PKG_NAME="u-boot"
-PKG_VERSION="v2024.10"
+PKG_VERSION="v2025.01-rc1"
PKG_LICENSE="GPL"
PKG_SITE="https://www.denx.de/wiki/U-Boot"
PKG_URL="https://github.com/u-boot/u-boot/archive/${PKG_VERSION}.tar.gz"
diff --git a/projects/Allwinner/packages/u-boot/patches/0001-rg35xx_config.patch b/projects/Allwinner/packages/u-boot/patches/0001-rg35xx_config.patch
new file mode 100644
index 0000000000..ec16f9191a
--- /dev/null
+++ b/projects/Allwinner/packages/u-boot/patches/0001-rg35xx_config.patch
@@ -0,0 +1,9 @@
+574987574987--- u-boot.orig/configs/anbernic_rg35xx_h700_defconfig 2024-10-29 17:03:21.768276666 +0100
++++ u-boot/configs/anbernic_rg35xx_h700_defconfig 2024-10-29 17:17:21.719469834 +0100
+@@ -25,3 +25,5 @@ CONFIG_REGULATOR_AXP=y
+ CONFIG_AXP717_POWER=y
+ CONFIG_AXP_DCDC2_VOLT=940
+ CONFIG_AXP_DCDC3_VOLT=1100
++CONFIG_EFI_LOADER=n
++CONFIG_BOOTDELAY=0
+\ No newline at end of file
\ No newline at end of file
diff --git a/projects/Allwinner/packages/u-boot/patches/0001-v3_20240830_macroalpha82_add_anbernic_rg35xx_2024.patch b/projects/Allwinner/packages/u-boot/patches/0001-v3_20240830_macroalpha82_add_anbernic_rg35xx_2024.patch
deleted file mode 100644
index e1f5a43d0f..0000000000
--- a/projects/Allwinner/packages/u-boot/patches/0001-v3_20240830_macroalpha82_add_anbernic_rg35xx_2024.patch
+++ /dev/null
@@ -1,679 +0,0 @@
-From git@z Thu Jan 1 00:00:00 1970
-Subject: [PATCH v3 1/9] sunxi: H616: dram: LPDDR4: adjust settings
-From: Jernej Skrabec
-Date: Fri, 30 Aug 2024 10:55:06 -0500
-Message-Id: <20240830155514.481410-2-macroalpha82@gmail.com>
-MIME-Version: 1.0
-Content-Type: text/plain; charset="utf-8"
-Content-Transfer-Encoding: 7bit
-
-Adjust H616 LPDDR4 DRAM settings to be in line with vendor driver.
-
-Signed-off-by: Jernej Skrabec
-Tested-by: Chris Morgan
----
- arch/arm/mach-sunxi/dram_sun50i_h616.c | 33 +++++++++++++------
- .../dram_timings/h616_lpddr4_2133.c | 2 +-
- 2 files changed, 24 insertions(+), 11 deletions(-)
-
-diff --git a/arch/arm/mach-sunxi/dram_sun50i_h616.c b/arch/arm/mach-sunxi/dram_sun50i_h616.c
-index 37c139e0ee..5be2887a06 100644
---- a/arch/arm/mach-sunxi/dram_sun50i_h616.c
-+++ b/arch/arm/mach-sunxi/dram_sun50i_h616.c
-@@ -293,14 +293,22 @@ static void mctl_phy_configure_odt(const struct dram_para *para)
- dmb();
- }
-
--static bool mctl_phy_write_leveling(const struct dram_config *config)
-+static bool mctl_phy_write_leveling(const struct dram_para *para,
-+ const struct dram_config *config)
- {
- bool result = true;
- u32 val;
-
- clrsetbits_le32(SUNXI_DRAM_PHY0_BASE + 8, 0xc0, 0x80);
-- writel(4, SUNXI_DRAM_PHY0_BASE + 0xc);
-- writel(0x40, SUNXI_DRAM_PHY0_BASE + 0x10);
-+
-+ if (para->type == SUNXI_DRAM_TYPE_LPDDR4) {
-+ /* MR2 value */
-+ writel(0x1b, SUNXI_DRAM_PHY0_BASE + 0xc);
-+ writel(0, SUNXI_DRAM_PHY0_BASE + 0x10);
-+ } else {
-+ writel(4, SUNXI_DRAM_PHY0_BASE + 0xc);
-+ writel(0x40, SUNXI_DRAM_PHY0_BASE + 0x10);
-+ }
-
- setbits_le32(SUNXI_DRAM_PHY0_BASE + 8, 4);
-
-@@ -859,9 +867,9 @@ static void mctl_phy_ca_bit_delay_compensation(const struct dram_para *para,
- }
- break;
- case SUNXI_DRAM_TYPE_LPDDR4:
-- if (para->tpr2 & 1) {
-- writel(val, SUNXI_DRAM_PHY0_BASE + 0x788);
-- } else {
-+ writel(val, SUNXI_DRAM_PHY0_BASE + 0x788);
-+ if (config->ranks == 2) {
-+ val = (para->tpr10 >> 11) & 0x1e;
- writel(val, SUNXI_DRAM_PHY0_BASE + 0x794);
- };
- break;
-@@ -1080,19 +1088,27 @@ static bool mctl_phy_init(const struct dram_para *para,
- mctl_await_completion(&mctl_ctl->mrctrl0, BIT(31), 0);
-
- writel(0xb04, &mctl_ctl->mrctrl1);
-+ udelay(10);
- writel(0x80000030, &mctl_ctl->mrctrl0);
-+ udelay(10);
- mctl_await_completion(&mctl_ctl->mrctrl0, BIT(31), 0);
-
- writel(0xc72, &mctl_ctl->mrctrl1);
-+ udelay(10);
- writel(0x80000030, &mctl_ctl->mrctrl0);
-+ udelay(10);
- mctl_await_completion(&mctl_ctl->mrctrl0, BIT(31), 0);
-
- writel(0xe09, &mctl_ctl->mrctrl1);
-+ udelay(10);
- writel(0x80000030, &mctl_ctl->mrctrl0);
-+ udelay(10);
- mctl_await_completion(&mctl_ctl->mrctrl0, BIT(31), 0);
-
- writel(0x1624, &mctl_ctl->mrctrl1);
-+ udelay(10);
- writel(0x80000030, &mctl_ctl->mrctrl0);
-+ udelay(10);
- mctl_await_completion(&mctl_ctl->mrctrl0, BIT(31), 0);
- break;
- case SUNXI_DRAM_TYPE_DDR4:
-@@ -1108,7 +1124,7 @@ static bool mctl_phy_init(const struct dram_para *para,
-
- if (para->tpr10 & TPR10_WRITE_LEVELING) {
- for (i = 0; i < 5; i++)
-- if (mctl_phy_write_leveling(config))
-+ if (mctl_phy_write_leveling(para, config))
- break;
- if (i == 5) {
- debug("write leveling failed!\n");
-@@ -1234,9 +1250,6 @@ static bool mctl_ctrl_init(const struct dram_para *para,
- setbits_le32(&mctl_ctl->unk_0x3180, BIT(31) | BIT(30));
- setbits_le32(&mctl_ctl->unk_0x4180, BIT(31) | BIT(30));
-
-- if (para->type == SUNXI_DRAM_TYPE_LPDDR4)
-- setbits_le32(&mctl_ctl->dbictl, 0x1);
--
- setbits_le32(&mctl_ctl->rfshctl3, BIT(0));
- clrbits_le32(&mctl_ctl->dfimisc, BIT(0));
-
-diff --git a/arch/arm/mach-sunxi/dram_timings/h616_lpddr4_2133.c b/arch/arm/mach-sunxi/dram_timings/h616_lpddr4_2133.c
-index e6446b9180..6f5c4acbd6 100644
---- a/arch/arm/mach-sunxi/dram_timings/h616_lpddr4_2133.c
-+++ b/arch/arm/mach-sunxi/dram_timings/h616_lpddr4_2133.c
-@@ -23,7 +23,7 @@ void mctl_set_timing_params(const struct dram_para *para)
- u8 trcd = max(ns_to_t(18), 2);
- u8 trc = ns_to_t(65);
- u8 txp = max(ns_to_t(8), 2);
-- u8 trtp = max(ns_to_t(8), 4);
-+ u8 trtp = 4;
- u8 trp = ns_to_t(21);
- u8 tras = ns_to_t(42);
- u16 trefi = ns_to_t(3904) / 32;
---
-2.34.1
-
-From git@z Thu Jan 1 00:00:00 1970
-Subject: [PATCH v3 2/9] sunxi: H616: DRAM: Add alternative pin mapping
-From: Chris Morgan
-Date: Fri, 30 Aug 2024 10:55:07 -0500
-Message-Id: <20240830155514.481410-3-macroalpha82@gmail.com>
-MIME-Version: 1.0
-Content-Type: text/plain; charset="utf-8"
-Content-Transfer-Encoding: 7bit
-
-It seems that different dies need different PHY pin mapping. Select
-alternatives at compile time.
-
-Signed-off-by: Jernej Skrabec
-[adapted to switch from runtime to compile time config]
-Signed-off-by: Chris Morgan
----
- arch/arm/mach-sunxi/Kconfig | 17 +++++++++++++++++
- arch/arm/mach-sunxi/dram_sun50i_h616.c | 22 +++++++++++++++++++++-
- 2 files changed, 38 insertions(+), 1 deletion(-)
-
-diff --git a/arch/arm/mach-sunxi/Kconfig b/arch/arm/mach-sunxi/Kconfig
-index 17666814c5..078f8c19fa 100644
---- a/arch/arm/mach-sunxi/Kconfig
-+++ b/arch/arm/mach-sunxi/Kconfig
-@@ -108,6 +108,23 @@ config DRAM_SUN50I_H616_TPR12
- default 0x0
- help
- TPR12 value from vendor DRAM settings.
-+
-+choice
-+ prompt "H616 PHY pin mapping selection"
-+ default DRAM_SUN50I_H616_PHY_ADDR_MAP_0
-+
-+config DRAM_SUN50I_H616_PHY_ADDR_MAP_0
-+ bool "H313/H616/H618"
-+ help
-+ The pin mapping selection used by the H313, H616, H618, and
-+ possibly other dies which use the H616 DRAM controller.
-+
-+config DRAM_SUN50I_H616_PHY_ADDR_MAP_1
-+ bool "H700"
-+ help
-+ The pin mapping selection used by the H700 and possibly other
-+ dies which use the H616 DRAM controller.
-+endchoice
- endif
-
- config SUN6I_PRCM
-diff --git a/arch/arm/mach-sunxi/dram_sun50i_h616.c b/arch/arm/mach-sunxi/dram_sun50i_h616.c
-index 5be2887a06..52f7799173 100644
---- a/arch/arm/mach-sunxi/dram_sun50i_h616.c
-+++ b/arch/arm/mach-sunxi/dram_sun50i_h616.c
-@@ -225,6 +225,26 @@ static void mctl_set_addrmap(const struct dram_config *config)
- mctl_ctl->addrmap[8] = 0x3F3F;
- }
-
-+#ifdef CONFIG_DRAM_SUN50I_H616_PHY_ADDR_MAP_1
-+static const u8 phy_init[] = {
-+#ifdef CONFIG_SUNXI_DRAM_H616_DDR3_1333
-+ 0x08, 0x02, 0x12, 0x05, 0x15, 0x17, 0x18, 0x0b,
-+ 0x14, 0x07, 0x04, 0x13, 0x0c, 0x00, 0x16, 0x1a,
-+ 0x0a, 0x11, 0x03, 0x10, 0x0e, 0x01, 0x0d, 0x19,
-+ 0x06, 0x09, 0x0f
-+#elif defined(CONFIG_SUNXI_DRAM_H616_LPDDR3)
-+ 0x18, 0x00, 0x04, 0x09, 0x06, 0x05, 0x02, 0x19,
-+ 0x17, 0x03, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
-+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x07,
-+ 0x08, 0x01, 0x1a
-+#elif defined(CONFIG_SUNXI_DRAM_H616_LPDDR4)
-+ 0x03, 0x00, 0x17, 0x05, 0x02, 0x19, 0x06, 0x07,
-+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
-+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x01,
-+ 0x18, 0x04, 0x1a
-+#endif
-+};
-+#else /* CONFIG_DRAM_SUN50I_H616_PHY_ADDR_MAP_0 */
- static const u8 phy_init[] = {
- #ifdef CONFIG_SUNXI_DRAM_H616_DDR3_1333
- 0x07, 0x0b, 0x02, 0x16, 0x0d, 0x0e, 0x14, 0x19,
-@@ -243,7 +263,7 @@ static const u8 phy_init[] = {
- 0x18, 0x03, 0x1a
- #endif
- };
--
-+#endif /* CONFIG_DRAM_SUN50I_H616_PHY_ADDR_MAP_0 */
- #define MASK_BYTE(reg, nr) (((reg) >> ((nr) * 8)) & 0x1f)
- static void mctl_phy_configure_odt(const struct dram_para *para)
- {
---
-2.34.1
-
-From git@z Thu Jan 1 00:00:00 1970
-Subject: [PATCH v3 3/9] sunxi: H616: DRAM: Adjust configuration procedure
-From: Jernej Skrabec
-Date: Fri, 30 Aug 2024 10:55:08 -0500
-Message-Id: <20240830155514.481410-4-macroalpha82@gmail.com>
-MIME-Version: 1.0
-Content-Type: text/plain; charset="utf-8"
-Content-Transfer-Encoding: 7bit
-
-When comparing configuration procedure to vendor driver, I noticed that
-one command was out of order and that some delays were missing.
-
-Fix that.
-
-Signed-off-by: Jernej Skrabec
-Tested-by: Chris Morgan
----
- arch/arm/mach-sunxi/dram_sun50i_h616.c | 10 +++++++++-
- 1 file changed, 9 insertions(+), 1 deletion(-)
-
-diff --git a/arch/arm/mach-sunxi/dram_sun50i_h616.c b/arch/arm/mach-sunxi/dram_sun50i_h616.c
-index 52f7799173..35405915e9 100644
---- a/arch/arm/mach-sunxi/dram_sun50i_h616.c
-+++ b/arch/arm/mach-sunxi/dram_sun50i_h616.c
-@@ -1014,12 +1014,16 @@ static bool mctl_phy_init(const struct dram_para *para,
- clrsetbits_le32(SUNXI_DRAM_PHY0_BASE + 0x14c, 0xe0, 0x20);
- }
-
-+ clrbits_le32(&mctl_com->unk_0x500, 0x200);
-+ udelay(1);
-+
- clrbits_le32(SUNXI_DRAM_PHY0_BASE + 0x14c, 8);
-
- mctl_await_completion((u32 *)(SUNXI_DRAM_PHY0_BASE + 0x180), 4, 4);
-
-+ udelay(1000);
-+
- writel(0x37, SUNXI_DRAM_PHY0_BASE + 0x58);
-- clrbits_le32(&mctl_com->unk_0x500, 0x200);
-
- writel(0, &mctl_ctl->swctl);
- setbits_le32(&mctl_ctl->dfimisc, 1);
-@@ -1038,6 +1042,8 @@ static bool mctl_phy_init(const struct dram_para *para,
- mctl_await_completion(&mctl_ctl->swstat, 1, 1);
- mctl_await_completion(&mctl_ctl->statr, 3, 1);
-
-+ udelay(200);
-+
- writel(0, &mctl_ctl->swctl);
- clrbits_le32(&mctl_ctl->dfimisc, 1);
-
-@@ -1281,8 +1287,10 @@ static bool mctl_ctrl_init(const struct dram_para *para,
- setbits_le32(&mctl_ctl->clken, BIT(8));
-
- clrsetbits_le32(&mctl_com->unk_0x500, BIT(24), 0x300);
-+ udelay(1);
- /* this write seems to enable PHY MMIO region */
- setbits_le32(&mctl_com->unk_0x500, BIT(24));
-+ udelay(1);
-
- if (!mctl_phy_init(para, config))
- return false;
---
-2.34.1
-
-From git@z Thu Jan 1 00:00:00 1970
-Subject: [PATCH v3 4/9] sunxi: H616: DRAM: Adjust size scan procedure
-From: Jernej Skrabec
-Date: Fri, 30 Aug 2024 10:55:09 -0500
-Message-Id: <20240830155514.481410-5-macroalpha82@gmail.com>
-MIME-Version: 1.0
-Content-Type: text/plain; charset="utf-8"
-Content-Transfer-Encoding: 7bit
-
-It's safer to start scanning for columns first and then rows. Columns
-reside on LSB address pins, which means that second configuration will
-already have all needed row pins active.
-
-This is also preparation for introducing DDR4 support, which need scan
-for banks and bank groups too.
-
-Signed-off-by: Jernej Skrabec
-Tested-by: Chris Morgan
----
- arch/arm/mach-sunxi/dram_sun50i_h616.c | 31 +++++++++++++++-----------
- 1 file changed, 18 insertions(+), 13 deletions(-)
-
-diff --git a/arch/arm/mach-sunxi/dram_sun50i_h616.c b/arch/arm/mach-sunxi/dram_sun50i_h616.c
-index 35405915e9..4782e6fe38 100644
---- a/arch/arm/mach-sunxi/dram_sun50i_h616.c
-+++ b/arch/arm/mach-sunxi/dram_sun50i_h616.c
-@@ -1362,28 +1362,33 @@ static void mctl_auto_detect_rank_width(const struct dram_para *para,
- static void mctl_auto_detect_dram_size(const struct dram_para *para,
- struct dram_config *config)
- {
-- /* detect row address bits */
-- config->cols = 8;
-- config->rows = 18;
-+ unsigned int shift;
-+
-+ /* max. config for columns, but not rows */
-+ config->cols = 11;
-+ config->rows = 13;
- mctl_core_init(para, config);
-
-- for (config->rows = 13; config->rows < 18; config->rows++) {
-- /* 8 banks, 8 bit per byte and 16/32 bit width */
-- if (mctl_mem_matches((1 << (config->rows + config->cols +
-- 4 + config->bus_full_width))))
-+ shift = config->bus_full_width + 1;
-+
-+ /* detect column address bits */
-+ for (config->cols = 8; config->cols < 11; config->cols++) {
-+ if (mctl_mem_matches(1ULL << (config->cols + shift)))
- break;
- }
-+ debug("detected %u columns\n", config->cols);
-
-- /* detect column address bits */
-- config->cols = 11;
-+ /* reconfigure to make sure that all active rows are accessible */
-+ config->rows = 18;
- mctl_core_init(para, config);
-
-- for (config->cols = 8; config->cols < 11; config->cols++) {
-- /* 8 bits per byte and 16/32 bit width */
-- if (mctl_mem_matches(1 << (config->cols + 1 +
-- config->bus_full_width)))
-+ /* detect row address bits */
-+ shift = config->bus_full_width + 4 + config->cols;
-+ for (config->rows = 13; config->rows < 18; config->rows++) {
-+ if (mctl_mem_matches(1ULL << (config->rows + shift)))
- break;
- }
-+ debug("detected %u rows\n", config->rows);
- }
-
- static unsigned long mctl_calc_size(const struct dram_config *config)
---
-2.34.1
-
-From git@z Thu Jan 1 00:00:00 1970
-Subject: [PATCH v3 5/9] sunxi: H616: dram: Update mbus priorities
-From: Jernej Skrabec
-Date: Fri, 30 Aug 2024 10:55:10 -0500
-Message-Id: <20240830155514.481410-6-macroalpha82@gmail.com>
-MIME-Version: 1.0
-Content-Type: text/plain; charset="utf-8"
-Content-Transfer-Encoding: 7bit
-
-CSI1 channel (22) is missing and IOMMU (25) has priority flag set in
-vendor bootloader. Fix that.
-
-While at it, replace bandwidth flag with priority since original flag has
-always value "true".
-
-Signed-off-by: Jernej Skrabec
-Tested-by: Chris Morgan
-Reviewed-by: Andre Przywara
----
- arch/arm/mach-sunxi/dram_sun50i_h616.c | 41 +++++++++++++-------------
- 1 file changed, 21 insertions(+), 20 deletions(-)
-
-diff --git a/arch/arm/mach-sunxi/dram_sun50i_h616.c b/arch/arm/mach-sunxi/dram_sun50i_h616.c
-index 4782e6fe38..863c4f1d7a 100644
---- a/arch/arm/mach-sunxi/dram_sun50i_h616.c
-+++ b/arch/arm/mach-sunxi/dram_sun50i_h616.c
-@@ -55,8 +55,8 @@ static void mbus_configure_port(u8 port,
- writel_relaxed(cfg1, &mctl_com->master[port].cfg1);
- }
-
--#define MBUS_CONF(port, bwlimit, qos, acs, bwl0, bwl1, bwl2) \
-- mbus_configure_port(port, bwlimit, false, \
-+#define MBUS_CONF(port, priority, qos, acs, bwl0, bwl1, bwl2) \
-+ mbus_configure_port(port, true, priority, \
- MBUS_QOS_ ## qos, 0, acs, bwl0, bwl1, bwl2)
-
- static void mctl_set_master_priority(void)
-@@ -68,24 +68,25 @@ static void mctl_set_master_priority(void)
- writel(399, &mctl_com->tmr);
- writel(BIT(16), &mctl_com->bwcr);
-
-- MBUS_CONF( 0, true, HIGHEST, 0, 256, 128, 100);
-- MBUS_CONF( 1, true, HIGH, 0, 1536, 1400, 256);
-- MBUS_CONF( 2, true, HIGHEST, 0, 512, 256, 96);
-- MBUS_CONF( 3, true, HIGH, 0, 256, 100, 80);
-- MBUS_CONF( 4, true, HIGH, 2, 8192, 5500, 5000);
-- MBUS_CONF( 5, true, HIGH, 2, 100, 64, 32);
-- MBUS_CONF( 6, true, HIGH, 2, 100, 64, 32);
-- MBUS_CONF( 8, true, HIGH, 0, 256, 128, 64);
-- MBUS_CONF(11, true, HIGH, 0, 256, 128, 100);
-- MBUS_CONF(14, true, HIGH, 0, 1024, 256, 64);
-- MBUS_CONF(16, true, HIGHEST, 6, 8192, 2800, 2400);
-- MBUS_CONF(21, true, HIGHEST, 6, 2048, 768, 512);
-- MBUS_CONF(25, true, HIGHEST, 0, 100, 64, 32);
-- MBUS_CONF(26, true, HIGH, 2, 8192, 5500, 5000);
-- MBUS_CONF(37, true, HIGH, 0, 256, 128, 64);
-- MBUS_CONF(38, true, HIGH, 2, 100, 64, 32);
-- MBUS_CONF(39, true, HIGH, 2, 8192, 5500, 5000);
-- MBUS_CONF(40, true, HIGH, 2, 100, 64, 32);
-+ MBUS_CONF(0, false, HIGHEST, 0, 256, 128, 100);
-+ MBUS_CONF(1, false, HIGH, 0, 1536, 1400, 256);
-+ MBUS_CONF(2, false, HIGHEST, 0, 512, 256, 96);
-+ MBUS_CONF(3, false, HIGH, 0, 256, 100, 80);
-+ MBUS_CONF(4, false, HIGH, 2, 8192, 5500, 5000);
-+ MBUS_CONF(5, false, HIGH, 2, 100, 64, 32);
-+ MBUS_CONF(6, false, HIGH, 2, 100, 64, 32);
-+ MBUS_CONF(8, false, HIGH, 0, 256, 128, 64);
-+ MBUS_CONF(11, false, HIGH, 0, 256, 128, 100);
-+ MBUS_CONF(14, false, HIGH, 0, 1024, 256, 64);
-+ MBUS_CONF(16, false, HIGHEST, 6, 8192, 2800, 2400);
-+ MBUS_CONF(21, false, HIGHEST, 6, 2048, 768, 512);
-+ MBUS_CONF(22, false, HIGH, 0, 256, 128, 100);
-+ MBUS_CONF(25, true, HIGHEST, 0, 100, 64, 32);
-+ MBUS_CONF(26, false, HIGH, 2, 8192, 5500, 5000);
-+ MBUS_CONF(37, false, HIGH, 0, 256, 128, 64);
-+ MBUS_CONF(38, false, HIGH, 2, 100, 64, 32);
-+ MBUS_CONF(39, false, HIGH, 2, 8192, 5500, 5000);
-+ MBUS_CONF(40, false, HIGH, 2, 100, 64, 32);
-
- dmb();
- }
---
-2.34.1
-
-From git@z Thu Jan 1 00:00:00 1970
-Subject: [PATCH v3 6/9] sunxi: Correct TPR6 parameter for H616 DRAM driver
-From: Chris Morgan
-Date: Fri, 30 Aug 2024 10:55:11 -0500
-Message-Id: <20240830155514.481410-7-macroalpha82@gmail.com>
-MIME-Version: 1.0
-Content-Type: text/plain; charset="utf-8"
-Content-Transfer-Encoding: 7bit
-
-Correct the default TPR6 parameter based on suggestion from Mikhail
-Kalashnikov. [1]
-
-[1] https://lore.kernel.org/u-boot/4c003cab-c8b8-484d-924d-084e71fe666e@gmail.com/
-
-Fixes: 4b02f0120a4b ("sunxi: H616: add LPDDR4 DRAM support")
-Suggested-by: Mikhail Kalashnikov
-Signed-off-by: Chris Morgan
----
- arch/arm/mach-sunxi/Kconfig | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/arch/arm/mach-sunxi/Kconfig b/arch/arm/mach-sunxi/Kconfig
-index 078f8c19fa..5b3571025f 100644
---- a/arch/arm/mach-sunxi/Kconfig
-+++ b/arch/arm/mach-sunxi/Kconfig
-@@ -87,7 +87,7 @@ config DRAM_SUN50I_H616_TPR2
-
- config DRAM_SUN50I_H616_TPR6
- hex "H616 DRAM TPR6 parameter"
-- default 0x3300c080
-+ default 0x33c00080
- help
- TPR6 value from vendor DRAM settings.
-
---
-2.34.1
-
-From git@z Thu Jan 1 00:00:00 1970
-Subject: [PATCH v3 7/9] arm64: dts: allwinner: h616: Add r_i2c pinctrl
- nodes
-From: Chris Morgan
-Date: Fri, 30 Aug 2024 10:55:12 -0500
-Message-Id: <20240830155514.481410-8-macroalpha82@gmail.com>
-MIME-Version: 1.0
-Content-Type: text/plain; charset="utf-8"
-Content-Transfer-Encoding: 7bit
-
-Add pinctrl nodes for the r_i2c node. Without the pinmux defined the
-r_i2c bus may fail to work, possibly if the bootloader uses rsb mode
-for the PMIC.
-
-Link: https://lore.kernel.org/linux-sunxi/172252952262.1669767.7675865282122079154.b4-ty@csie.org/
-
-[ upstream commit: 7c9ea4ab76176f65f4f55aa144f9145a4bccaacb ]
-
-Signed-off-by: Chris Morgan
----
- arch/arm/dts/sun50i-h616.dtsi | 2 ++
- dts/upstream/src/arm64/allwinner/sun50i-h616.dtsi | 2 ++
- 2 files changed, 4 insertions(+)
-
-diff --git a/arch/arm/dts/sun50i-h616.dtsi b/arch/arm/dts/sun50i-h616.dtsi
-index 921d5f61d8..41f2c23e07 100644
---- a/arch/arm/dts/sun50i-h616.dtsi
-+++ b/arch/arm/dts/sun50i-h616.dtsi
-@@ -836,6 +836,8 @@
- clocks = <&r_ccu CLK_R_APB2_I2C>;
- dmas = <&dma 48>, <&dma 48>;
- dma-names = "rx", "tx";
-+ pinctrl-names = "default";
-+ pinctrl-0 = <&r_i2c_pins>;
- resets = <&r_ccu RST_R_APB2_I2C>;
- status = "disabled";
- #address-cells = <1>;
-diff --git a/dts/upstream/src/arm64/allwinner/sun50i-h616.dtsi b/dts/upstream/src/arm64/allwinner/sun50i-h616.dtsi
-index 921d5f61d8..41f2c23e07 100644
---- a/dts/upstream/src/arm64/allwinner/sun50i-h616.dtsi
-+++ b/dts/upstream/src/arm64/allwinner/sun50i-h616.dtsi
-@@ -836,6 +836,8 @@
- clocks = <&r_ccu CLK_R_APB2_I2C>;
- dmas = <&dma 48>, <&dma 48>;
- dma-names = "rx", "tx";
-+ pinctrl-names = "default";
-+ pinctrl-0 = <&r_i2c_pins>;
- resets = <&r_ccu RST_R_APB2_I2C>;
- status = "disabled";
- #address-cells = <1>;
---
-2.34.1
-
-From git@z Thu Jan 1 00:00:00 1970
-Subject: [PATCH v3 8/9] arm64: dts: allwinner: h616: Change RG35XX PMIC to
- r_i2c
-From: Chris Morgan
-Date: Fri, 30 Aug 2024 10:55:13 -0500
-Message-Id: <20240830155514.481410-9-macroalpha82@gmail.com>
-MIME-Version: 1.0
-Content-Type: text/plain; charset="utf-8"
-Content-Transfer-Encoding: 7bit
-
-Change the Anbernic RG35XX series to use the r_i2c bus for the PMIC
-instead of the r_rsb bus. This is to keep the device tree consistent
-as there are at least 3 devices (the RG35XX-SP, RG28XX, and RG40XX-H)
-that have an external RTC on the r_i2c bus.
-
-Link: https://lore.kernel.org/linux-sunxi/172252952262.1669767.7675865282122079154.b4-ty@csie.org/
-
-[ upstream commit: c712e5d0985628b1df13930489b49b740e610a2b ]
-
-Signed-off-by: Chris Morgan
----
- arch/arm/dts/sun50i-h700-anbernic-rg35xx-2024.dts | 6 +++---
- .../arm64/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts | 6 +++---
- 2 files changed, 6 insertions(+), 6 deletions(-)
-
-diff --git a/arch/arm/dts/sun50i-h700-anbernic-rg35xx-2024.dts b/arch/arm/dts/sun50i-h700-anbernic-rg35xx-2024.dts
-index ee30584b6a..e2bbd22bd8 100644
---- a/arch/arm/dts/sun50i-h700-anbernic-rg35xx-2024.dts
-+++ b/arch/arm/dts/sun50i-h700-anbernic-rg35xx-2024.dts
-@@ -201,12 +201,12 @@
- vcc-pi-supply = <®_cldo3>;
- };
-
--&r_rsb {
-+&r_i2c {
- status = "okay";
-
-- axp717: pmic@3a3 {
-+ axp717: pmic@34 {
- compatible = "x-powers,axp717";
-- reg = <0x3a3>;
-+ reg = <0x34>;
- interrupt-controller;
- #interrupt-cells = <1>;
- interrupt-parent = <&nmi_intc>;
-diff --git a/dts/upstream/src/arm64/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts b/dts/upstream/src/arm64/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts
-index ee30584b6a..e2bbd22bd8 100644
---- a/dts/upstream/src/arm64/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts
-+++ b/dts/upstream/src/arm64/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts
-@@ -201,12 +201,12 @@
- vcc-pi-supply = <®_cldo3>;
- };
-
--&r_rsb {
-+&r_i2c {
- status = "okay";
-
-- axp717: pmic@3a3 {
-+ axp717: pmic@34 {
- compatible = "x-powers,axp717";
-- reg = <0x3a3>;
-+ reg = <0x34>;
- interrupt-controller;
- #interrupt-cells = <1>;
- interrupt-parent = <&nmi_intc>;
---
-2.34.1
-
-From git@z Thu Jan 1 00:00:00 1970
-Subject: [PATCH v3 9/9] sunxi: Add support for Anbernic RG35XX-2024
-From: Chris Morgan
-Date: Fri, 30 Aug 2024 10:55:14 -0500
-Message-Id: <20240830155514.481410-10-macroalpha82@gmail.com>
-MIME-Version: 1.0
-Content-Type: text/plain; charset="utf-8"
-Content-Transfer-Encoding: 7bit
-
-The Anbernic RG35XX series of devices are based around an Allwinner
-H700 SoC with 1GB of RAM, 2 SD cards, and multiple input buttons.
-
-This bootloader has been tested on the Anbernic RG35XX-2024 and
-RG35XX-H, but should be suitable for the entire lineup of H700 based
-devices.
-
-A future series of updates will add board selection logic to identify
-and load the correct device tree automatically.
-
-Signed-off-by: Chris Morgan
----
- board/sunxi/MAINTAINERS | 5 +++++
- configs/anbernic_rg35xx_h700_defconfig | 28 ++++++++++++++++++++++++++
- 2 files changed, 33 insertions(+)
- create mode 100644 configs/anbernic_rg35xx_h700_defconfig
-
-diff --git a/board/sunxi/MAINTAINERS b/board/sunxi/MAINTAINERS
-index 4ad77c75f5..84799879e8 100644
---- a/board/sunxi/MAINTAINERS
-+++ b/board/sunxi/MAINTAINERS
-@@ -132,6 +132,11 @@ M: Paul Kocialkowski
- S: Maintained
- F: configs/Ampe_A76_defconfig
-
-+ANBERNIC RG35XX-2024
-+M: Chris Morgan
-+S: Maintained
-+F: configs/anbernic_rg35xx_h700_defconfig
-+
- BANANAPI M1 PLUS
- M: Jagan Teki
- S: Maintained
-diff --git a/configs/anbernic_rg35xx_h700_defconfig b/configs/anbernic_rg35xx_h700_defconfig
-new file mode 100644
-index 0000000000..57112f7d70
---- /dev/null
-+++ b/configs/anbernic_rg35xx_h700_defconfig
-@@ -0,0 +1,30 @@
-+CONFIG_ARM=y
-+CONFIG_ARCH_SUNXI=y
-+CONFIG_BOOTDELAY=0
-+CONFIG_DEFAULT_DEVICE_TREE="sun50i-h700-anbernic-rg35xx-2024"
-+CONFIG_SPL=y
-+CONFIG_DRAM_SUN50I_H616_DX_ODT=0x08080808
-+CONFIG_DRAM_SUN50I_H616_DX_DRI=0x0e0e0e0e
-+CONFIG_DRAM_SUN50I_H616_CA_DRI=0x0e0e
-+CONFIG_DRAM_SUN50I_H616_ODT_EN=0x7887bbbb
-+CONFIG_DRAM_SUN50I_H616_TPR2=0x1
-+CONFIG_DRAM_SUN50I_H616_TPR6=0x33c00080
-+CONFIG_DRAM_SUN50I_H616_TPR10=0x402f6633
-+CONFIG_DRAM_SUN50I_H616_TPR11=0x1b1f1e1c
-+CONFIG_DRAM_SUN50I_H616_TPR12=0x06060606
-+CONFIG_DRAM_SUN50I_H616_PHY_ADDR_MAP_1=y
-+CONFIG_MACH_SUN50I_H616=y
-+CONFIG_SUNXI_DRAM_H616_LPDDR4=y
-+CONFIG_DRAM_CLK=672
-+CONFIG_R_I2C_ENABLE=y
-+CONFIG_DEFAULT_FDT_FILE="sun50i-h700-anbernic-rg35xx-2024.dtb"
-+CONFIG_SPL_I2C=y
-+CONFIG_SPL_SYS_I2C_LEGACY=y
-+CONFIG_SYS_I2C_MVTWSI=y
-+CONFIG_SYS_I2C_SLAVE=0x7f
-+CONFIG_SYS_I2C_SPEED=400000
-+CONFIG_REGULATOR_AXP=y
-+CONFIG_AXP717_POWER=y
-+CONFIG_AXP_DCDC2_VOLT=940
-+CONFIG_AXP_DCDC3_VOLT=1100
-+CONFIG_EFI_LOADER=n
---
-2.34.1
-
diff --git a/projects/Allwinner/packages/u-boot/patches/0002-0c2f127a768fed63376d20ffc72d424ecf358247.patch b/projects/Allwinner/packages/u-boot/patches/0002-0c2f127a768fed63376d20ffc72d424ecf358247.patch
deleted file mode 100644
index 965661e348..0000000000
--- a/projects/Allwinner/packages/u-boot/patches/0002-0c2f127a768fed63376d20ffc72d424ecf358247.patch
+++ /dev/null
@@ -1,125 +0,0 @@
-From 0c2f127a768fed63376d20ffc72d424ecf358247 Mon Sep 17 00:00:00 2001
-From: Ryan Walklin
-Date: Sun, 18 Aug 2024 10:22:02 +1200
-Subject: [PATCH] More display faffing
-
----
- arch/arm/include/asm/arch-sunxi/display2.h | 20 ++++++++++++++++++-
- drivers/video/sunxi/sunxi_de2.c | 23 ++++++++++++++++++----
- 2 files changed, 38 insertions(+), 5 deletions(-)
-
-diff --git a/arch/arm/include/asm/arch-sunxi/display2.h b/arch/arm/include/asm/arch-sunxi/display2.h
-index 7202d2756c..1d1f31e65d 100644
---- a/arch/arm/include/asm/arch-sunxi/display2.h
-+++ b/arch/arm/include/asm/arch-sunxi/display2.h
-@@ -25,8 +25,14 @@ struct de_clk {
- struct de_glb {
- u32 ctl;
- u32 status;
-+#ifdef CONFIG_MACH_SUNXI_H616
-+ u32 size;
-+ u32 clk;
-+ u32 dbuff;
-+#else
- u32 dbuff;
- u32 size;
-+#endif
- };
-
- /* alpha blending */
-@@ -113,9 +119,21 @@ struct de_csc {
- #define SUNXI_DE2_MUX1_BASE (SUNXI_DE2_BASE + 0x200000)
-
- #define SUNXI_DE2_MUX_GLB_REGS 0x00000
-+
-+#ifdef CONFIG_MACH_SUNXI_H616
-+#define SUNXI_DE2_MUX_BLD_REGS 0x00800
-+#else
- #define SUNXI_DE2_MUX_BLD_REGS 0x01000
--#define SUNXI_DE2_MUX_CHAN_REGS 0x02000
-+#endif
-+
-+#ifdef CONFIG_MACH_SUNXI_H616
-+#define SUNXI_DE2_MUX_CHAN_REGS 0x1000
-+#define SUNXI_DE2_MUX_CHAN_SZ 0x0800
-+#else
-+#define SUNXI_DE2_MUX_CHAN_REGS 0x2000
- #define SUNXI_DE2_MUX_CHAN_SZ 0x1000
-+#endif
-+
- #define SUNXI_DE2_MUX_VSU_REGS 0x20000
- #define SUNXI_DE2_MUX_GSU1_REGS 0x30000
- #define SUNXI_DE2_MUX_GSU2_REGS 0x40000
-diff --git a/drivers/video/sunxi/sunxi_de2.c b/drivers/video/sunxi/sunxi_de2.c
-index 154641b9a6..da1ccf182c 100644
---- a/drivers/video/sunxi/sunxi_de2.c
-+++ b/drivers/video/sunxi/sunxi_de2.c
-@@ -54,6 +54,11 @@ static void sunxi_de2_composer_init(void)
- setbits_le32(&ccm->ahb_reset1_cfg, 1 << AHB_RESET_OFFSET_DE);
- setbits_le32(&ccm->ahb_gate1, 1 << AHB_GATE_OFFSET_DE);
-
-+ if (IS_ENABLED(CONFIG_SUN50I_H616)) {
-+ writel(0, &ccm->de_clk_cfg + 0x24);
-+ writel(0x0000a980, &ccm->de_clk_cfg + 0x28);
-+ }
-+
- /* Clock on */
- setbits_le32(&ccm->de_clk_cfg, CCM_DE2_CTRL_GATE);
- }
-@@ -71,10 +76,15 @@ static void sunxi_de2_mode_set(int mux, const struct display_timing *mode,
- struct de_bld * const de_bld_regs =
- (struct de_bld *)(de_mux_base +
- SUNXI_DE2_MUX_BLD_REGS);
-- struct de_ui * const de_ui_regs =
-+#ifdef CONFIG_MACH_SUNXI_H616
-+ struct de_ui * const de_ui_regs =
-+ (struct de_ui *)(de_mux_base + 6 * 0x20000 + DE2_CH_SIZE;
-+#else
-+ struct de_ui * const de_ui_regs =
- (struct de_ui *)(de_mux_base +
- SUNXI_DE2_MUX_CHAN_REGS +
- SUNXI_DE2_MUX_CHAN_SZ * 1);
-+#endif
- struct de_csc * const de_csc_regs =
- (struct de_csc *)(de_mux_base +
- SUNXI_DE2_MUX_DCSC_REGS);
-@@ -95,12 +105,17 @@ static void sunxi_de2_mode_set(int mux, const struct display_timing *mode,
-
- writel(SUNXI_DE2_MUX_GLB_CTL_EN, &de_glb_regs->ctl);
- writel(0, &de_glb_regs->status);
-- writel(1, &de_glb_regs->dbuff);
-+ // writel(1, &de_glb_regs->dbuff);
- writel(size, &de_glb_regs->size);
-
- for (channel = 0; channel < 4; channel++) {
-+#ifdef CONFIG_MACH_SUNXI_H616
-+ unsigned int map[4] = {0, 6, 7, 8};
-+ void *ch = (void *)de_mux_base + map[channel] * 0x20000 + DE2_CH_SIZE;
-+#else
- void *ch = (void *)(de_mux_base + SUNXI_DE2_MUX_CHAN_REGS +
- SUNXI_DE2_MUX_CHAN_SZ * channel);
-+#endif
- memset(ch, 0, (channel == 0) ?
- sizeof(struct de_vi) : sizeof(struct de_ui));
- }
-@@ -256,7 +271,7 @@ static int sunxi_de2_probe(struct udevice *dev)
- DM_DRIVER_GET(sunxi_dw_hdmi), &disp);
- if (!ret) {
- int mux;
-- if (IS_ENABLED(CONFIG_MACH_SUNXI_H3_H5))
-+ if (IS_ENABLED(CONFIG_MACH_SUNXI_H3_H5) || IS_ENABLED(CONFIG_MACH_SUNXI_H616))
- mux = 0;
- else
- mux = 1;
-@@ -316,7 +331,7 @@ int sunxi_simplefb_setup(void *blob)
-
- debug("Setting up simplefb\n");
-
-- if (IS_ENABLED(CONFIG_MACH_SUNXI_H3_H5))
-+ if (IS_ENABLED(CONFIG_MACH_SUNXI_H3_H5) || IS_ENABLED(CONFIG_MACH_SUNXI_H616))
- mux = 0;
- else
- mux = 1;
---
-2.45.2
-
diff --git a/projects/Allwinner/patches/linux/H700/0002-20240929_ryan_drm_panel_nv3052c_correct_spi_device_id_for_rg35xx_panel.patch b/projects/Allwinner/patches/linux/H700/0002-20240929_ryan_drm_panel_nv3052c_correct_spi_device_id_for_rg35xx_panel.patch
deleted file mode 100644
index a4a191eff5..0000000000
--- a/projects/Allwinner/patches/linux/H700/0002-20240929_ryan_drm_panel_nv3052c_correct_spi_device_id_for_rg35xx_panel.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From git@z Thu Jan 1 00:00:00 1970
-Subject: [PATCH] drm: panel: nv3052c: correct spi_device_id for RG35XX
- panel
-From: Ryan Walklin
-Date: Sun, 29 Sep 2024 21:19:38 +1300
-Message-Id: <20240929081940.823995-1-ryan@testtoast.com>
-MIME-Version: 1.0
-Content-Type: text/plain; charset="utf-8"
-Content-Transfer-Encoding: 7bit
-
-The Anbernic RG35XX devices use an SPI LCD panel from an unknown OEM,
-with an NV3052C driver chip.
-
-As discussed previously, the integrating vendor and device name are
-preferred instead of the OEM serial. A previous patch corrected the
-device tree binding and of_device_id in the NV3052C driver, however the
-spi_device_id also needs correction.
-
-Correct the spi_device_id for the RG35XX panel.
-
-Signed-off-by: Ryan Walklin
-Fixes: 76dce2a9 ("drm: panel: nv3052c: Correct WL-355608-A8 panel compatible")
----
- drivers/gpu/drm/panel/panel-newvision-nv3052c.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/gpu/drm/panel/panel-newvision-nv3052c.c b/drivers/gpu/drm/panel/panel-newvision-nv3052c.c
-index d3baccfe6286b..06e16a7c14a75 100644
---- a/drivers/gpu/drm/panel/panel-newvision-nv3052c.c
-+++ b/drivers/gpu/drm/panel/panel-newvision-nv3052c.c
-@@ -917,7 +917,7 @@ static const struct nv3052c_panel_info wl_355608_a8_panel_info = {
- static const struct spi_device_id nv3052c_ids[] = {
- { "ltk035c5444t", },
- { "fs035vg158", },
-- { "wl-355608-a8", },
-+ { "rg35xx-plus-panel", },
- { /* sentinel */ }
- };
- MODULE_DEVICE_TABLE(spi, nv3052c_ids);
---
-2.46.1
-
diff --git a/projects/Allwinner/patches/linux/H700/0010-RG35XX-H-ROCKNIX-joypad-dts.patch b/projects/Allwinner/patches/linux/H700/0010-RG35XX-H-ROCKNIX-joypad-dts.patch
index cfe766dfc4..fdc0b5a2c6 100644
--- a/projects/Allwinner/patches/linux/H700/0010-RG35XX-H-ROCKNIX-joypad-dts.patch
+++ b/projects/Allwinner/patches/linux/H700/0010-RG35XX-H-ROCKNIX-joypad-dts.patch
@@ -64,7 +64,7 @@ index ff453336e..9d5ddbe03 100644
+ hw_info = <0x01>;
+
+ joypad-name = "retrogame_joypad";
-+ joypad-product = <0x1101>;
++ joypad-product = <0x14DF>;
+ joypad-revision = <0x0100>;
+ joypad-vendor = <0x484B>;
+
diff --git a/projects/Allwinner/patches/linux/H700/0011-add-h616-mmc-regulator.patch b/projects/Allwinner/patches/linux/H700/0011-add-h616-mmc-regulator.patch
new file mode 100644
index 0000000000..803764db2f
--- /dev/null
+++ b/projects/Allwinner/patches/linux/H700/0011-add-h616-mmc-regulator.patch
@@ -0,0 +1,178 @@
+From b29cf71e3a2a5c91c240f2fd819fdaca99ec0c22 Mon Sep 17 00:00:00 2001
+From: Philippe Simons
+Date: Sun, 10 Nov 2024 12:13:18 +0100
+Subject: [PATCH 1/2] add h616 mmc regulator
+
+---
+ drivers/regulator/Kconfig | 16 ++++
+ drivers/regulator/Makefile | 1 +
+ drivers/regulator/h616-mmc-regulator.c | 121 +++++++++++++++++++++++++
+ 3 files changed, 138 insertions(+)
+ create mode 100644 drivers/regulator/h616-mmc-regulator.c
+
+diff --git a/drivers/regulator/Kconfig b/drivers/regulator/Kconfig
+index 39297f7d8..e296809a3 100644
+--- a/drivers/regulator/Kconfig
++++ b/drivers/regulator/Kconfig
+@@ -1720,4 +1720,20 @@ config REGULATOR_QCOM_LABIBB
+ boost regulator and IBB can be used as a negative boost regulator
+ for LCD display panel.
+
++config REGULATOR_H616_MMC
++ bool "Allwinner H616 MMC power regulator support"
++ default ARCH_SUNXI
++ help
++ This driver supports the built-in MMC voltage regulator of the
++ Allwinner H616 processor, which allows switching voltage levels
++ on data lines without using any external regulators.
++ The regulator is required to switch the voltage from 3.3V to 1.8V
++ on the data lines to support high-speed SD-UHS modes for MicroSD.
++ Without the regulator, the MicroSD will operate only in "slow" modes.
++
++ Select "Yes" here if you want to use the built-in regulator to
++ support high-speed UHS modes.
++
++ If unsure, say N.
++
+ endif
+diff --git a/drivers/regulator/Makefile b/drivers/regulator/Makefile
+index 3d5a803dc..3309c160d 100644
+--- a/drivers/regulator/Makefile
++++ b/drivers/regulator/Makefile
+@@ -201,5 +201,6 @@ obj-$(CONFIG_REGULATOR_WM831X) += wm831x-ldo.o
+ obj-$(CONFIG_REGULATOR_WM8350) += wm8350-regulator.o
+ obj-$(CONFIG_REGULATOR_WM8400) += wm8400-regulator.o
+ obj-$(CONFIG_REGULATOR_WM8994) += wm8994-regulator.o
++obj-$(CONFIG_REGULATOR_H616_MMC) += h616-mmc-regulator.o
+
+ ccflags-$(CONFIG_REGULATOR_DEBUG) += -DDEBUG
+diff --git a/drivers/regulator/h616-mmc-regulator.c b/drivers/regulator/h616-mmc-regulator.c
+new file mode 100644
+index 000000000..de1fd1c50
+--- /dev/null
++++ b/drivers/regulator/h616-mmc-regulator.c
+@@ -0,0 +1,121 @@
++// SPDX-License-Identifier: GPL-2.0+
++// Copyright (c) 2024 Anton Tarasov
++//
++// Allwinner H616 MMC Regulator Driver
++#include
++#include
++#include
++#include
++#include
++#include
++#include
++#include
++#include
++#include
++#include
++#include
++#include
++
++#define VSEL_REG 0x0350 // Voltage selection register
++#define VSEL_MASK 0x1 // Voltage selection mask (bit 0)
++
++#define MOD_SEL_REG 0x0340 // Withstand voltage selection register
++#define MOD_SEL_MASK 0x20 // Withstand voltage selection mask (bit 5)
++
++static const unsigned int h616_regulator_voltages[] = {
++ 1800000, // 1.8V
++ 3300000, // 3.3V
++};
++
++static int h616_regulator_set_voltage(struct regulator_dev *rdev,
++ int min_uV, int max_uV,
++ unsigned int *selector)
++{
++ struct regmap *regmap = rdev_get_regmap(rdev);
++ int ret;
++
++ *selector = regulator_map_voltage_iterate(rdev, min_uV, max_uV);
++ if (*selector < 0)
++ return -EINVAL;
++
++ // Set the withstand voltage level
++ ret = regmap_update_bits(regmap, MOD_SEL_REG, MOD_SEL_MASK,
++ (*selector == 0) ? MOD_SEL_MASK : 0);
++ if (ret)
++ return ret;
++
++ // Update the main voltage level
++ ret = regmap_update_bits(regmap, VSEL_REG, VSEL_MASK, *selector);
++ return ret;
++
++ return 0;
++}
++
++static const struct regulator_ops h616_regulator_ops = {
++ .list_voltage = regulator_list_voltage_table,
++ .map_voltage = regulator_map_voltage_iterate,
++ .get_voltage_sel = regulator_get_voltage_sel_regmap,
++ .set_voltage = h616_regulator_set_voltage,
++};
++
++static const struct regulator_desc h616_regulator_desc = {
++ .name = "h616-mmc-vqmmc",
++ .of_match = "allwinner,h616-mmc-regulator",
++ .type = REGULATOR_VOLTAGE,
++ .owner = THIS_MODULE,
++ .ops = &h616_regulator_ops,
++ .n_voltages = 2,
++ .volt_table = h616_regulator_voltages,
++ .vsel_reg = VSEL_REG,
++ .vsel_mask = VSEL_MASK,
++};
++
++static int h616_regulator_probe(struct platform_device *pdev)
++{
++
++ struct regulator_config config = {};
++ struct regulator_desc *desc;
++ struct regmap *regmap;
++
++ regmap = syscon_regmap_lookup_by_phandle(pdev->dev.of_node, "syscon");
++ if (IS_ERR(regmap))
++ return PTR_ERR(regmap);
++
++ desc = devm_kmemdup(&pdev->dev, &h616_regulator_desc, sizeof(*desc), GFP_KERNEL);
++ if (!desc)
++ return -ENOMEM;
++
++ config.dev = &pdev->dev;
++ config.of_node = pdev->dev.of_node;
++ config.regmap = regmap;
++
++ config.init_data = of_get_regulator_init_data(&pdev->dev,
++ pdev->dev.of_node, &h616_regulator_desc);
++ if (!config.init_data)
++ return -ENOMEM;
++
++ if (IS_ERR(devm_regulator_register(&pdev->dev, desc, &config)))
++ return PTR_ERR(devm_regulator_register(&pdev->dev, desc, &config));
++
++ return 0;
++}
++
++static const struct of_device_id h616_regulator_of_match[] = {
++ { .compatible = "allwinner,h616-mmc-regulator", },
++ {},
++};
++MODULE_DEVICE_TABLE(of, h616_regulator_of_match);
++
++static struct platform_driver h616_regulator_driver = {
++ .probe = h616_regulator_probe,
++ .driver = {
++ .name = "h616-mmc-regulator",
++ .of_match_table = h616_regulator_of_match,
++ },
++};
++
++module_platform_driver(h616_regulator_driver);
++
++MODULE_AUTHOR("Anton Tarasov ");
++MODULE_DESCRIPTION("H616 MMC Regulator Driver");
++MODULE_LICENSE("GPL");
+--
+2.46.1
+
diff --git a/projects/Allwinner/patches/linux/H700/0023-rg28xx-dts.patch b/projects/Allwinner/patches/linux/H700/0023-rg28xx-dts.patch
index 1ee2912046..b9804ef3ea 100644
--- a/projects/Allwinner/patches/linux/H700/0023-rg28xx-dts.patch
+++ b/projects/Allwinner/patches/linux/H700/0023-rg28xx-dts.patch
@@ -9,10 +9,12 @@ diff -rupN linux.orig/arch/arm64/boot/dts/allwinner/Makefile linux/arch/arm64/bo
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h700-anbernic-rg35xx-plus.dtb
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h700-anbernic-rg35xx-sp.dtb
+dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h700-anbernic-rg28xx.dtb
-diff -rupN linux.orig/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg28xx.dts linux/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg28xx.dts
---- linux.orig/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg28xx.dts 1970-01-01 00:00:00.000000000 +0000
-+++ linux/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg28xx.dts 2024-07-26 23:14:22.651172006 +0000
-@@ -0,0 +1,38 @@
+diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg28xx.dts b/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg28xx.dts
+new file mode 100644
+index 00000000000..3341c25c8c7
+--- /dev/null
++++ b/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg28xx.dts
+@@ -0,0 +1,23 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+/*
+ * Copyright (C) 2024 Ryan Walklin .
@@ -20,34 +22,19 @@ diff -rupN linux.orig/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg28xx.
+ */
+
+#include
-+#include "sun50i-h700-anbernic-rg35xx-2024.dts"
++#include "sun50i-h700-anbernic-rg35xx-plus.dts"
+
+/ {
+ model = "Anbernic RG28XX";
+ compatible = "anbernic,rg28xx", "allwinner,sun50i-h700";
++};
+
-+ /delete-node/ spi_lcd;
-+
-+ spi_lcd: spi {
-+ //compatible = "spi-gpio";
-+ #address-cells = <1>;
-+ #size-cells = <0>;
-+
-+ panel@0 {
-+ compatible = "anbernic,rg28xx-panel", "sitronix,st7701";
-+ reg = <0>;
-+ spi-max-frequency = <3125000>;
-+ VCC-supply = <®_lcd>;
-+ IOVCC-supply = <®_lcd>;
-+ reset-gpios = <&pio 8 14 GPIO_ACTIVE_HIGH>; /* LCD-RST: PI14 */
-+ //backlight = <&backlight>;
-+
-+ port {
-+ panel_in_rgb: endpoint {
-+ remote-endpoint = <&tcon_lcd0_out_lcd>;
-+ };
-+ };
-+ };
-+ };
++&panel {
++ compatible = "anbernic,rg28xx-panel", "sitronix,st7701";
++ rotation = <270>;
++ /delete-property/ power-supply;
+
++ VCC-supply = <®_lcd>;
++ IOVCC-supply = <®_lcd>;
++ reset-gpios = <&pio 8 14 GPIO_ACTIVE_HIGH>; /* LCD-RST: PI14 */
+};
diff --git a/projects/Allwinner/patches/linux/H700/0027-sunxi-mmc-cmd23.patch b/projects/Allwinner/patches/linux/H700/0027-sunxi-mmc-cmd23.patch
new file mode 100644
index 0000000000..f68af1626b
--- /dev/null
+++ b/projects/Allwinner/patches/linux/H700/0027-sunxi-mmc-cmd23.patch
@@ -0,0 +1,158 @@
+From 19a7b20a32c4305a69456000c2ea62163038e0c5 Mon Sep 17 00:00:00 2001
+From: Philippe Simons
+Date: Mon, 18 Nov 2024 10:25:51 +0100
+Subject: [PATCH 2/3] sunxi-mmc cmd23
+
+---
+ drivers/mmc/host/sunxi-mmc.c | 54 ++++++++++++++++++++++++------------
+ 1 file changed, 37 insertions(+), 17 deletions(-)
+
+diff --git a/drivers/mmc/host/sunxi-mmc.c b/drivers/mmc/host/sunxi-mmc.c
+index d3bd0ac99..27fa51362 100644
+--- a/drivers/mmc/host/sunxi-mmc.c
++++ b/drivers/mmc/host/sunxi-mmc.c
+@@ -294,6 +294,8 @@ struct sunxi_mmc_host {
+
+ struct mmc_request *mrq;
+ struct mmc_request *manual_stop_mrq;
++ struct mmc_command *cmd;
++
+ int ferror;
+
+ /* vqmmc */
+@@ -303,6 +305,8 @@ struct sunxi_mmc_host {
+ bool use_new_timings;
+ };
+
++static void sunxi_mmc_start_cmd(struct mmc_host *mmc, struct mmc_request *mrq, struct mmc_command *cmd);
++
+ static int sunxi_mmc_reset_host(struct sunxi_mmc_host *host)
+ {
+ unsigned long expire = jiffies + msecs_to_jiffies(250);
+@@ -511,7 +515,8 @@ static void sunxi_mmc_dump_errinfo(struct sunxi_mmc_host *host)
+ static irqreturn_t sunxi_mmc_finalize_request(struct sunxi_mmc_host *host)
+ {
+ struct mmc_request *mrq = host->mrq;
+- struct mmc_data *data = mrq->data;
++ struct mmc_command *cmd = host->cmd;
++ struct mmc_data *data = cmd->data;
+ u32 rval;
+
+ mmc_writel(host, REG_IMASK, host->sdio_imask);
+@@ -519,7 +524,7 @@ static irqreturn_t sunxi_mmc_finalize_request(struct sunxi_mmc_host *host)
+
+ if (host->int_sum & SDXC_INTERRUPT_ERROR_BIT) {
+ sunxi_mmc_dump_errinfo(host);
+- mrq->cmd->error = -ETIMEDOUT;
++ cmd->error = -ETIMEDOUT;
+
+ if (data) {
+ data->error = -ETIMEDOUT;
+@@ -529,13 +534,13 @@ static irqreturn_t sunxi_mmc_finalize_request(struct sunxi_mmc_host *host)
+ if (mrq->stop)
+ mrq->stop->error = -ETIMEDOUT;
+ } else {
+- if (mrq->cmd->flags & MMC_RSP_136) {
+- mrq->cmd->resp[0] = mmc_readl(host, REG_RESP3);
+- mrq->cmd->resp[1] = mmc_readl(host, REG_RESP2);
+- mrq->cmd->resp[2] = mmc_readl(host, REG_RESP1);
+- mrq->cmd->resp[3] = mmc_readl(host, REG_RESP0);
++ if (cmd->flags & MMC_RSP_136) {
++ cmd->resp[0] = mmc_readl(host, REG_RESP3);
++ cmd->resp[1] = mmc_readl(host, REG_RESP2);
++ cmd->resp[2] = mmc_readl(host, REG_RESP1);
++ cmd->resp[3] = mmc_readl(host, REG_RESP0);
+ } else {
+- mrq->cmd->resp[0] = mmc_readl(host, REG_RESP0);
++ cmd->resp[0] = mmc_readl(host, REG_RESP0);
+ }
+
+ if (data)
+@@ -613,8 +618,16 @@ static irqreturn_t sunxi_mmc_irq(int irq, void *dev_id)
+
+ spin_unlock(&host->lock);
+
+- if (finalize && ret == IRQ_HANDLED)
+- mmc_request_done(host->mmc, mrq);
++ if (finalize && ret == IRQ_HANDLED) {
++ /* note that host->mrq can be cleared by sunxi_mmc_finalize_request at this point */
++
++ if (mrq && host->cmd && (host->cmd == mrq->sbc)) {
++ /* once SET_BLOCK_COUNT is completed, send actual request */
++ sunxi_mmc_start_cmd(host->mmc, mrq, mrq->cmd);
++ } else {
++ mmc_request_done(host->mmc, mrq);
++ }
++ }
+
+ if (sdio_int)
+ mmc_signal_sdio_irq(host->mmc);
+@@ -1006,20 +1019,21 @@ static void sunxi_mmc_hw_reset(struct mmc_host *mmc)
+ udelay(300);
+ }
+
+-static void sunxi_mmc_request(struct mmc_host *mmc, struct mmc_request *mrq)
++static void sunxi_mmc_start_cmd(struct mmc_host *mmc, struct mmc_request *mrq, struct mmc_command *cmd)
+ {
+ struct sunxi_mmc_host *host = mmc_priv(mmc);
+- struct mmc_command *cmd = mrq->cmd;
+- struct mmc_data *data = mrq->data;
++ struct mmc_data *data = cmd->data;
+ unsigned long iflags;
+ u32 imask = SDXC_INTERRUPT_ERROR_BIT;
+ u32 cmd_val = SDXC_START | (cmd->opcode & 0x3f);
+ bool wait_dma = host->wait_dma;
+ int ret;
+
++ host->cmd = cmd;
++
+ /* Check for set_ios errors (should never happen) */
+ if (host->ferror) {
+- mrq->cmd->error = host->ferror;
++ cmd->error = host->ferror;
+ mmc_request_done(mmc, mrq);
+ return;
+ }
+@@ -1050,7 +1064,8 @@ static void sunxi_mmc_request(struct mmc_host *mmc, struct mmc_request *mrq)
+ if ((cmd->flags & MMC_CMD_MASK) == MMC_CMD_ADTC) {
+ cmd_val |= SDXC_DATA_EXPIRE | SDXC_WAIT_PRE_OVER;
+
+- if (cmd->data->stop) {
++ /* Enable Auto CMD12 mode for open-ended transfers only */
++ if (cmd->data->stop && !cmd->mrq->sbc) {
+ imask |= SDXC_AUTO_COMMAND_DONE;
+ cmd_val |= SDXC_SEND_AUTO_STOP;
+ } else {
+@@ -1070,7 +1085,7 @@ static void sunxi_mmc_request(struct mmc_host *mmc, struct mmc_request *mrq)
+
+ dev_dbg(mmc_dev(mmc), "cmd %d(%08x) arg %x ie 0x%08x len %d\n",
+ cmd_val & 0x3f, cmd_val, cmd->arg, imask,
+- mrq->data ? mrq->data->blksz * mrq->data->blocks : 0);
++ cmd->data ? cmd->data->blksz * cmd->data->blocks : 0);
+
+ spin_lock_irqsave(&host->lock, iflags);
+
+@@ -1102,6 +1117,11 @@ static void sunxi_mmc_request(struct mmc_host *mmc, struct mmc_request *mrq)
+ spin_unlock_irqrestore(&host->lock, iflags);
+ }
+
++static void sunxi_mmc_request(struct mmc_host *mmc, struct mmc_request *mrq)
++{
++ sunxi_mmc_start_cmd(mmc, mrq, mrq->sbc ? mrq->sbc : mrq->cmd);
++}
++
+ static int sunxi_mmc_card_busy(struct mmc_host *mmc)
+ {
+ struct sunxi_mmc_host *host = mmc_priv(mmc);
+@@ -1427,7 +1447,7 @@ static int sunxi_mmc_probe(struct platform_device *pdev)
+ mmc->f_min = 400000;
+ mmc->f_max = 52000000;
+ mmc->caps |= MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED |
+- MMC_CAP_SDIO_IRQ;
++ MMC_CAP_SDIO_IRQ |MMC_CAP_CMD23;
+
+ /*
+ * Some H5 devices do not have signal traces precise enough to
+--
+2.46.1
+
diff --git a/projects/Allwinner/patches/linux/H700/0028-enable-mmc0-1.8v.patch b/projects/Allwinner/patches/linux/H700/0028-enable-mmc0-1.8v.patch
new file mode 100644
index 0000000000..f351e3a2f2
--- /dev/null
+++ b/projects/Allwinner/patches/linux/H700/0028-enable-mmc0-1.8v.patch
@@ -0,0 +1,62 @@
+From f04efebe4482a33a2f61f99f55e5240459c7fa9c Mon Sep 17 00:00:00 2001
+From: Philippe Simons
+Date: Mon, 18 Nov 2024 10:22:57 +0100
+Subject: [PATCH 3/3] enable mmc0 1.8v
+
+---
+ .../sun50i-h700-anbernic-rg35xx-2024.dts | 24 +++++++++++++++----
+ 1 file changed, 20 insertions(+), 4 deletions(-)
+
+diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts b/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts
+index ba554c019..86c87e04d 100644
+--- a/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts
++++ b/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts
+@@ -193,6 +193,14 @@ reg_vcc3v3_mmc2: regulator-vcc3v3-mmc2 {
+ regulator-max-microvolt = <3300000>;
+ regulator-name = "vcc3v3-mmc2";
+ };
++
++ h616_vqmmc_regulator: mmc-regulator {
++ compatible = "allwinner,h616-mmc-regulator";
++ syscon = <&pio>;
++ regulator-min-microvolt = <1800000>;
++ regulator-max-microvolt = <3300000>;
++ regulator-boot-on;
++ };
+ };
+
+ &cpu0 {
+@@ -204,11 +212,18 @@ &ehci0 {
+ };
+
+ &mmc0 {
+- bus-width = <4>;
+- cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */
+- disable-wp;
+- no-1-8-v;
+ vmmc-supply = <®_cldo3>;
++ vqmmc-supply = <&h616_vqmmc_regulator>;
++ max-frequency = <120000000>;
++ disable-wp;
++ no-sdio;
++ sd-uhs-sdr104;
++ sd-uhs-sdr50;
++ sd-uhs-sdr25;
++ sd-uhs-sdr12;
++ mmc-ddr-1_8v;
++ cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */
++ bus-width = <4>;
+ status = "okay";
+ };
+
+@@ -227,6 +242,7 @@ &ohci0 {
+ };
+
+ &pio {
++ compatible = "allwinner,sun50i-h616-pinctrl", "syscon";
+ vcc-pa-supply = <®_cldo3>;
+ vcc-pc-supply = <®_cldo3>;
+ vcc-pe-supply = <®_cldo3>;
+--
+2.46.1
+
diff --git a/projects/Allwinner/patches/linux/H700/0028-enable-usb-peripheral.patch b/projects/Allwinner/patches/linux/H700/0029-enable-usb-peripheral.patch
similarity index 100%
rename from projects/Allwinner/patches/linux/H700/0028-enable-usb-peripheral.patch
rename to projects/Allwinner/patches/linux/H700/0029-enable-usb-peripheral.patch
diff --git a/projects/Allwinner/patches/linux/H700/0030-add-anbernic-devices-panels.patch b/projects/Allwinner/patches/linux/H700/0030-add-anbernic-devices-panels.patch
new file mode 100644
index 0000000000..211a4d30ad
--- /dev/null
+++ b/projects/Allwinner/patches/linux/H700/0030-add-anbernic-devices-panels.patch
@@ -0,0 +1,634 @@
+From a504ef6ce66022f9e0a9baebe8974d6ec7f86fd5 Mon Sep 17 00:00:00 2001
+From: Philippe Simons
+Date: Sat, 9 Nov 2024 12:01:54 +0100
+Subject: [PATCH] add anbernic devices panels
+
+---
+ .../gpu/drm/panel/panel-newvision-nv3052c.c | 588 +++++++++++++++++-
+ 1 file changed, 587 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/gpu/drm/panel/panel-newvision-nv3052c.c b/drivers/gpu/drm/panel/panel-newvision-nv3052c.c
+index d3baccfe6..d66aa6eae 100644
+--- a/drivers/gpu/drm/panel/panel-newvision-nv3052c.c
++++ b/drivers/gpu/drm/panel/panel-newvision-nv3052c.c
+@@ -629,6 +629,507 @@ static const struct nv3052c_reg wl_355608_a8_panel_regs[] = {
+ { 0x36, 0x0a }, // bgr = 1, ss = 1, gs = 0
+ };
+
++static const struct nv3052c_reg ylm_lbv0345001h_v2_panel_regs[] = {
++ // EXTC Command set enable, select page 1
++ { 0xff, 0x30 }, { 0xff, 0x52 }, { 0xff, 0x01 },
++ // Mostly unknown registers
++ { 0xe3, 0x00 },
++ { 0x0a, 0x01 },
++ { 0x23, 0xa0 },
++ { 0x24, 0x10 },
++ { 0x25, 0x09 },
++ { 0x28, 0x47 },
++ { 0x29, 0x01 },
++ { 0x2a, 0xdf },
++ { 0x38, 0x9c },
++ { 0x39, 0xa7 },
++ { 0x3a, 0x3f },
++ { 0x91, 0x77 },
++ { 0x92, 0x77 },
++ { 0xa0, 0x55 },
++ { 0xa1, 0x50 },
++ { 0xa4, 0x9c },
++ { 0xa7, 0x02 },
++ { 0xa8, 0x01 },
++ { 0xa9, 0x01 },
++ { 0xaa, 0xfc },
++ { 0xab, 0x28 },
++ { 0xac, 0x06 },
++ { 0xad, 0x06 },
++ { 0xae, 0x06 },
++ { 0xaf, 0x03 },
++ { 0xb0, 0x08 },
++ { 0xb1, 0x26 },
++ { 0xb2, 0x28 },
++ { 0xb3, 0x28 },
++ { 0xb4, 0x03 },
++ { 0xb5, 0x08 },
++ { 0xb6, 0x26 },
++ { 0xb7, 0x08 },
++ { 0xb8, 0x26 },
++ // EXTC Command set enable, select page 2
++ { 0xff, 0x30 }, { 0xff, 0x52 }, { 0xff, 0x02 },
++ // Set gray scale voltage to adjust gamma
++ { 0xb0, 0x02 }, // PGAMVR0
++ { 0xb1, 0x0f }, // PGAMVR1
++ { 0xb2, 0x11 }, // PGAMVR2
++ { 0xb3, 0x32 }, // PGAMVR3
++ { 0xb4, 0x36 }, // PGAMVR4
++ { 0xb5, 0x3c }, // PGAMVR5
++ { 0xb6, 0x20 }, // PGAMPR0
++ { 0xb7, 0x3e }, // PGAMPR1
++ { 0xb8, 0x0e }, // PGAMPK0
++ { 0xb9, 0x05 }, // PGAMPK1
++ { 0xba, 0x11 }, // PGAMPK2
++ { 0xbb, 0x11 }, // PGAMPK3
++ { 0xbc, 0x13 }, // PGAMPK4
++ { 0xbd, 0x14 }, // PGAMPK5
++ { 0xbe, 0x16 }, // PGAMPK6
++ { 0xbf, 0x0e }, // PGAMPK7
++ { 0xc0, 0x17 }, // PGAMPK8
++ { 0xc1, 0x07 }, // PGAMPK9
++ { 0xd0, 0x02 }, // NGAMVR0
++ { 0xd1, 0x10 }, // NGAMVR0
++ { 0xd2, 0x12 }, // NGAMVR1
++ { 0xd3, 0x33 }, // NGAMVR2
++ { 0xd4, 0x36 }, // NGAMVR3
++ { 0xd5, 0x3c }, // NGAMVR4
++ { 0xd6, 0x20 }, // NGAMPR0
++ { 0xd7, 0x3e }, // NGAMPR1
++ { 0xd8, 0x0d }, // NGAMPK0
++ { 0xd9, 0x05 }, // NGAMPK1
++ { 0xda, 0x12 }, // NGAMPK2
++ { 0xdb, 0x11 }, // NGAMPK3
++ { 0xdc, 0x14 }, // NGAMPK4
++ { 0xdd, 0x14 }, // NGAMPK5
++ { 0xde, 0x18 }, // NGAMPK6
++ { 0xdf, 0x0f }, // NGAMPK7
++ { 0xe0, 0x17 }, // NGAMPK8
++ { 0xe1, 0x08 }, // NGAMPK9
++ // EXTC Command set enable, select page 3
++ { 0xff, 0x30 }, { 0xff, 0x52 }, { 0xff, 0x03 },
++ // Mostly unknown registers
++ { 0x07, 0x03 },
++ { 0x08, 0x00 },
++ { 0x09, 0x01 },
++ { 0x30, 0x00 },
++ { 0x31, 0x00 },
++ { 0x32, 0x00 },
++ { 0x33, 0x00 },
++ { 0x34, 0x61 },
++ { 0x35, 0xd4 },
++ { 0x36, 0x24 },
++ { 0x37, 0x03 },
++ { 0x40, 0x02 },
++ { 0x41, 0x03 },
++ { 0x42, 0x04 },
++ { 0x43, 0x05 },
++ { 0x44, 0x11 },
++ { 0x45, 0xe6 },
++ { 0x46, 0xe7 },
++ { 0x47, 0x11 },
++ { 0x48, 0xe8 },
++ { 0x49, 0xe9 },
++ { 0x50, 0x06 },
++ { 0x51, 0x07 },
++ { 0x52, 0x08 },
++ { 0x53, 0x09 },
++ { 0x54, 0x11 },
++ { 0x55, 0xea },
++ { 0x56, 0xeb },
++ { 0x57, 0x11 },
++ { 0x58, 0xec },
++ { 0x59, 0xed },
++ { 0x82, 0x00 },
++ { 0x83, 0x00 },
++ { 0x84, 0x02 },
++ { 0x85, 0x00 },
++ { 0x86, 0x1f },
++ { 0x87, 0x00 },
++ { 0x88, 0x1f },
++ { 0x89, 0x0e },
++ { 0x8a, 0x0e },
++ { 0x8b, 0x10 },
++ { 0x8c, 0x10 },
++ { 0x8d, 0x0a },
++ { 0x8e, 0x0a },
++ { 0x8f, 0x0c },
++ { 0x90, 0x0c },
++ { 0x98, 0x00 },
++ { 0x99, 0x00 },
++ { 0x9a, 0x01 },
++ { 0x9b, 0x00 },
++ { 0x9c, 0x1f },
++ { 0x9d, 0x00 },
++ { 0x9e, 0x1f },
++ { 0x9f, 0x0d },
++ { 0xa0, 0x0d },
++ { 0xa1, 0x0f },
++ { 0xa2, 0x0f },
++ { 0xa3, 0x09 },
++ { 0xa4, 0x09 },
++ { 0xa5, 0x0b },
++ { 0xa6, 0x0b },
++ // EXTC Command set enable, select page 0
++ { 0xff, 0x30 }, { 0xff, 0x52 }, { 0xff, 0x00 },
++ // Interface Pixel Format
++ { 0x3a, 0x77 },
++ // Display Access Control
++ { 0x36, 0x0a }, // bgr = 1, ss = 1, gs = 0
++};
++
++static const struct nv3052c_reg ylm_lbv0400001x_v1_panel_regs[] = {
++ // EXTC Command set enable, select page 1
++ { 0xff, 0x30 }, { 0xff, 0x52 }, { 0xff, 0x01 },
++ // Mostly unknown registers
++ { 0xe3, 0x00 },
++ { 0x0a, 0x01 },
++ { 0x23, 0xa0 },
++ { 0x25, 0x14 },
++ { 0x28, 0x47 },
++ { 0x29, 0x01 },
++ { 0x2a, 0xdf },
++ { 0x38, 0x9c },
++ { 0x39, 0xa7 },
++ { 0x3a, 0x47 },
++ { 0x91, 0x77 },
++ { 0x92, 0x77 },
++ { 0x99, 0x52 },
++ { 0x9b, 0x5b },
++ { 0xa0, 0x55 },
++ { 0xa1, 0x50 },
++ { 0xa4, 0x9c },
++ { 0xa7, 0x02 },
++ { 0xa8, 0x01 },
++ { 0xa9, 0x01 },
++ { 0xaa, 0xfc },
++ { 0xab, 0x28 },
++ { 0xac, 0x06 },
++ { 0xad, 0x06 },
++ { 0xae, 0x06 },
++ { 0xaf, 0x03 },
++ { 0xb0, 0x08 },
++ { 0xb1, 0x26 },
++ { 0xb2, 0x28 },
++ { 0xb3, 0x28 },
++ { 0xb4, 0x03 },
++ { 0xb5, 0x08 },
++ { 0xb6, 0x26 },
++ { 0xb7, 0x08 },
++ { 0xb8, 0x26 },
++ // EXTC Command set enable, select page 2
++ { 0xff, 0x30 }, { 0xff, 0x52 }, { 0xff, 0x02 },
++ // Set gray scale voltage to adjust gamma
++ { 0xb0, 0x05 }, // PGAMVR0
++ { 0xb1, 0x12 }, // PGAMVR1
++ { 0xb2, 0x13 }, // PGAMVR2
++ { 0xb3, 0x2c }, // PGAMVR3
++ { 0xb4, 0x2a }, // PGAMVR4
++ { 0xb5, 0x37 }, // PGAMVR5
++ { 0xb6, 0x27 }, // PGAMPR0
++ { 0xb7, 0x42 }, // PGAMPR1
++ { 0xb8, 0x0f }, // PGAMPK0
++ { 0xb9, 0x06 }, // PGAMPK1
++ { 0xba, 0x12 }, // PGAMPK2
++ { 0xbb, 0x12 }, // PGAMPK3
++ { 0xbc, 0x13 }, // PGAMPK4
++ { 0xbd, 0x15 }, // PGAMPK5
++ { 0xbe, 0x1b }, // PGAMPK6
++ { 0xbf, 0x14 }, // PGAMPK7
++ { 0xc0, 0x1d }, // PGAMPK8
++ { 0xc1, 0x09 }, // PGAMPK9
++ { 0xd0, 0x02 }, // NGAMVR0
++ { 0xd1, 0x1c }, // NGAMVR0
++ { 0xd2, 0x1d }, // NGAMVR1
++ { 0xd3, 0x36 }, // NGAMVR2
++ { 0xd4, 0x34 }, // NGAMVR3
++ { 0xd5, 0x32 }, // NGAMVR4
++ { 0xd6, 0x25 }, // NGAMPR0
++ { 0xd7, 0x40 }, // NGAMPR1
++ { 0xd8, 0x0d }, // NGAMPK0
++ { 0xd9, 0x04 }, // NGAMPK1
++ { 0xda, 0x12 }, // NGAMPK2
++ { 0xdb, 0x12 }, // NGAMPK3
++ { 0xdc, 0x13 }, // NGAMPK4
++ { 0xdd, 0x15 }, // NGAMPK5
++ { 0xde, 0x15 }, // NGAMPK6
++ { 0xdf, 0x0c }, // NGAMPK7
++ { 0xe0, 0x13 }, // NGAMPK8
++ { 0xe1, 0x07 }, // NGAMPK9
++ // EXTC Command set enable, select page 3
++ { 0xff, 0x30 }, { 0xff, 0x52 }, { 0xff, 0x03 },
++ // Mostly unknown registers
++ { 0x08, 0x0a },
++ { 0x09, 0x0b },
++ { 0x30, 0x00 },
++ { 0x31, 0x00 },
++ { 0x32, 0x00 },
++ { 0x33, 0x00 },
++ { 0x34, 0x61 },
++ { 0x35, 0xd4 },
++ { 0x36, 0x24 },
++ { 0x37, 0x03 },
++ { 0x40, 0x0d },
++ { 0x41, 0x0e },
++ { 0x42, 0x0f },
++ { 0x43, 0x10 },
++ { 0x44, 0x11 },
++ { 0x45, 0xf4 },
++ { 0x46, 0xf5 },
++ { 0x47, 0x11 },
++ { 0x48, 0xf6 },
++ { 0x49, 0xf7 },
++ { 0x50, 0x11 },
++ { 0x51, 0x12 },
++ { 0x52, 0x13 },
++ { 0x53, 0x14 },
++ { 0x54, 0x11 },
++ { 0x55, 0xf8 },
++ { 0x56, 0xf9 },
++ { 0x57, 0x11 },
++ { 0x58, 0xfa },
++ { 0x59, 0xfb },
++ { 0x60, 0x05 },
++ { 0x61, 0x05 },
++ { 0x65, 0x0a },
++ { 0x66, 0x0a },
++ { 0x82, 0x1e },
++ { 0x83, 0x1f },
++ { 0x84, 0x11 },
++ { 0x85, 0x02 },
++ { 0x86, 0x1e },
++ { 0x87, 0x1e },
++ { 0x88, 0x1f },
++ { 0x89, 0x0e },
++ { 0x8a, 0x0e },
++ { 0x8b, 0x10 },
++ { 0x8c, 0x10 },
++ { 0x8d, 0x0a },
++ { 0x8e, 0x0a },
++ { 0x8f, 0x0c },
++ { 0x90, 0x0c },
++ { 0x98, 0x1e },
++ { 0x99, 0x1f },
++ { 0x9a, 0x11 },
++ { 0x9b, 0x01 },
++ { 0x9c, 0x1e },
++ { 0x9d, 0x1e },
++ { 0x9e, 0x1f },
++ { 0x9f, 0x0d },
++ { 0xa0, 0x0d },
++ { 0xa1, 0x0f },
++ { 0xa2, 0x0f },
++ { 0xa3, 0x09 },
++ { 0xa4, 0x09 },
++ { 0xa5, 0x0b },
++ { 0xa6, 0x0b },
++ { 0xb2, 0x1f },
++ { 0xb3, 0x1e },
++ { 0xb4, 0x11 },
++ { 0xb5, 0x01 },
++ { 0xb6, 0x1e },
++ { 0xb7, 0x1e },
++ { 0xb8, 0x1f },
++ { 0xb9, 0x0b },
++ { 0xba, 0x0b },
++ { 0xbb, 0x09 },
++ { 0xbc, 0x09 },
++ { 0xbd, 0x0f },
++ { 0xbe, 0x0f },
++ { 0xbf, 0x0d },
++ { 0xc0, 0x0d },
++ { 0xc8, 0x1f },
++ { 0xc9, 0x1e },
++ { 0xca, 0x11 },
++ { 0xcb, 0x02 },
++ { 0xcc, 0x1e },
++ { 0xcd, 0x1e },
++ { 0xce, 0x1f },
++ { 0xcf, 0x0c },
++ { 0xd0, 0x0c },
++ { 0xd1, 0x0a },
++ { 0xd2, 0x0a },
++ { 0xd3, 0x10 },
++ { 0xd4, 0x10 },
++ { 0xd5, 0x0e },
++ { 0xd6, 0x0e },
++ // EXTC Command set enable, select page 0
++ { 0xff, 0x30 }, { 0xff, 0x52 }, { 0xff, 0x00 },
++ // Interface Pixel Format
++ { 0x3a, 0x77 },
++ // Display Access Control
++ { 0x36, 0x0a }, // bgr = 1, ss = 1, gs = 0
++};
++
++static const struct nv3052c_reg ylm_lbn0395004h_v1_panel_regs[] = {
++ // EXTC Command set enable, select page 1
++ { 0xff, 0x30 }, { 0xff, 0x52 }, { 0xff, 0x01 },
++ // Mostly unknown registers
++ { 0xe3, 0x00 },
++ { 0x0a, 0x01 },
++ { 0x23, 0xa2 },
++ { 0x25, 0x14 },
++ { 0x29, 0x02 },
++ { 0x2a, 0xcf },
++ { 0x38, 0x9c },
++ { 0x39, 0xa7 },
++ { 0x3a, 0x5f },
++ { 0x91, 0x77 },
++ { 0x92, 0x77 },
++ { 0x99, 0x52 },
++ { 0x9b, 0x5b },
++ { 0xa0, 0x55 },
++ { 0xa1, 0x50 },
++ { 0xa4, 0x9c },
++ { 0xa7, 0x02 },
++ { 0xa8, 0x01 },
++ { 0xa9, 0x01 },
++ { 0xaa, 0xfc },
++ { 0xab, 0x28 },
++ { 0xac, 0x06 },
++ { 0xad, 0x06 },
++ { 0xae, 0x06 },
++ { 0xaf, 0x03 },
++ { 0xb0, 0x08 },
++ { 0xb1, 0x26 },
++ { 0xb2, 0x28 },
++ { 0xb3, 0x28 },
++ { 0xb4, 0x03 },
++ { 0xb5, 0x08 },
++ { 0xb6, 0x26 },
++ { 0xb7, 0x08 },
++ { 0xb8, 0x26 },
++ // EXTC Command set enable, select page 2
++ { 0xff, 0x30 }, { 0xff, 0x52 }, { 0xff, 0x02 },
++ // Set gray scale voltage to adjust gamma
++ { 0xb0, 0x02 }, // PGAMVR0
++ { 0xb1, 0x11 }, // PGAMVR1
++ { 0xb2, 0x12 }, // PGAMVR2
++ { 0xb3, 0x2e }, // PGAMVR3
++ { 0xb4, 0x30 }, // PGAMVR4
++ { 0xb5, 0x37 }, // PGAMVR5
++ { 0xb6, 0x1c }, // PGAMPR0
++ { 0xb7, 0x39 }, // PGAMPR1
++ { 0xb8, 0x08 }, // PGAMPK0
++ { 0xb9, 0x00 }, // PGAMPK1
++ { 0xba, 0x12 }, // PGAMPK2
++ { 0xbb, 0x12 }, // PGAMPK3
++ { 0xbc, 0x14 }, // PGAMPK4
++ { 0xbd, 0x15 }, // PGAMPK5
++ { 0xbe, 0x16 }, // PGAMPK6
++ { 0xbf, 0x0d }, // PGAMPK7
++ { 0xc0, 0x15 }, // PGAMPK8
++ { 0xc1, 0x04 }, // PGAMPK9
++ { 0xd0, 0x05 }, // NGAMVR0
++ { 0xd1, 0x07 }, // NGAMVR0
++ { 0xd2, 0x08 }, // NGAMVR1
++ { 0xd3, 0x30 }, // NGAMVR2
++ { 0xd4, 0x2e }, // NGAMVR3
++ { 0xd5, 0x32 }, // NGAMVR4
++ { 0xd6, 0x1c }, // NGAMPR0
++ { 0xd7, 0x3b }, // NGAMPR1
++ { 0xd8, 0x10 }, // NGAMPK0
++ { 0xd9, 0x06 }, // NGAMPK1
++ { 0xda, 0x12 }, // NGAMPK2
++ { 0xdb, 0x12 }, // NGAMPK3
++ { 0xdc, 0x14 }, // NGAMPK4
++ { 0xdd, 0x15 }, // NGAMPK5
++ { 0xde, 0x18 }, // NGAMPK6
++ { 0xdf, 0x0f }, // NGAMPK7
++ { 0xe0, 0x17 }, // NGAMPK8
++ { 0xe1, 0x0a }, // NGAMPK9
++ // EXTC Command set enable, select page 3
++ { 0xff, 0x30 }, { 0xff, 0x52 }, { 0xff, 0x03 },
++ // Mostly unknown registers
++ { 0x08, 0x09 },
++ { 0x09, 0x0a },
++ { 0x0a, 0x0b },
++ { 0x0b, 0x0c },
++ { 0x28, 0x22 },
++ { 0x2a, 0xec },
++ { 0x2b, 0xec },
++ { 0x30, 0x00 },
++ { 0x31, 0x00 },
++ { 0x32, 0x00 },
++ { 0x33, 0x00 },
++ { 0x34, 0x61 },
++ { 0x35, 0xd4 },
++ { 0x36, 0x24 },
++ { 0x37, 0x03 },
++ { 0x40, 0x0d },
++ { 0x41, 0x0e },
++ { 0x42, 0x0f },
++ { 0x43, 0x10 },
++ { 0x44, 0x22 },
++ { 0x45, 0xe1 },
++ { 0x46, 0xe2 },
++ { 0x47, 0x22 },
++ { 0x48, 0xe3 },
++ { 0x49, 0xe4 },
++ { 0x50, 0x11 },
++ { 0x51, 0x12 },
++ { 0x52, 0x13 },
++ { 0x53, 0x14 },
++ { 0x54, 0x22 },
++ { 0x55, 0xe5 },
++ { 0x56, 0xe6 },
++ { 0x57, 0x22 },
++ { 0x58, 0xe7 },
++ { 0x59, 0xe8 },
++ { 0x80, 0x05 },
++ { 0x81, 0x1e },
++ { 0x82, 0x02 },
++ { 0x83, 0x04 },
++ { 0x84, 0x1e },
++ { 0x85, 0x1e },
++ { 0x86, 0x1f },
++ { 0x87, 0x1f },
++ { 0x88, 0x0e },
++ { 0x89, 0x10 },
++ { 0x8a, 0x0a },
++ { 0x8b, 0x0c },
++ { 0x96, 0x05 },
++ { 0x97, 0x1e },
++ { 0x98, 0x01 },
++ { 0x99, 0x03 },
++ { 0x9a, 0x1e },
++ { 0x9b, 0x1e },
++ { 0x9c, 0x1f },
++ { 0x9d, 0x1f },
++ { 0x9e, 0x0d },
++ { 0x9f, 0x0f },
++ { 0xa0, 0x09 },
++ { 0xa1, 0x0b },
++ { 0xb0, 0x05 },
++ { 0xb1, 0x1f },
++ { 0xb2, 0x03 },
++ { 0xb3, 0x01 },
++ { 0xb4, 0x1e },
++ { 0xb5, 0x1e },
++ { 0xb6, 0x1f },
++ { 0xb7, 0x1e },
++ { 0xb8, 0x0b },
++ { 0xb9, 0x09 },
++ { 0xba, 0x0f },
++ { 0xbb, 0x0d },
++ { 0xc6, 0x05 },
++ { 0xc7, 0x1f },
++ { 0xc8, 0x04 },
++ { 0xc9, 0x02 },
++ { 0xca, 0x1e },
++ { 0xcb, 0x1e },
++ { 0xcc, 0x1f },
++ { 0xcd, 0x1e },
++ { 0xce, 0x0c },
++ { 0xcf, 0x0a },
++ { 0xd0, 0x10 },
++ { 0xd1, 0x0e },
++ // EXTC Command set enable, select page 0
++ { 0xff, 0x30 }, { 0xff, 0x52 }, { 0xff, 0x00 },
++ // Display Access Control
++ { 0x36, 0x0a }, // bgr = 1, ss = 1, gs = 0
++};
++
+ static inline struct nv3052c *to_nv3052c(struct drm_panel *panel)
+ {
+ return container_of(panel, struct nv3052c, panel);
+@@ -881,6 +1382,51 @@ static const struct drm_display_mode wl_355608_a8_mode[] = {
+ },
+ };
+
++static const struct drm_display_mode ylm_lbv0345001h_v2_mode[] = {
++ {
++ .clock = 24000,
++ .hdisplay = 640,
++ .hsync_start = 640 + 64,
++ .hsync_end = 640 + 64 + 20,
++ .htotal = 640 + 64 + 20 + 46,
++ .vdisplay = 480,
++ .vsync_start = 480 + 21,
++ .vsync_end = 480 + 21 + 4,
++ .vtotal = 480 + 21 + 4 + 15,
++ .flags = DRM_MODE_FLAG_NVSYNC | DRM_MODE_FLAG_NHSYNC,
++ },
++};
++
++static const struct drm_display_mode ylm_lbv0400001x_v1_mode[] = {
++ {
++ .clock = 24000,
++ .hdisplay = 640,
++ .hsync_start = 640 + 64,
++ .hsync_end = 640 + 64 + 20,
++ .htotal = 640 + 64 + 20 + 46,
++ .vdisplay = 480,
++ .vsync_start = 480 + 21,
++ .vsync_end = 480 + 21 + 4,
++ .vtotal = 480 + 21 + 4 + 15,
++ .flags = DRM_MODE_FLAG_NVSYNC | DRM_MODE_FLAG_NHSYNC,
++ },
++};
++
++static const struct drm_display_mode ylm_lbn0395004h_v1_mode[] = {
++ {
++ .clock = 36000,
++ .hdisplay = 720,
++ .hsync_start = 720 + 44,
++ .hsync_end = 720 + 44 + 2,
++ .htotal = 720 + 44 + 2 + 46,
++ .vdisplay = 720,
++ .vsync_start = 720 + 11,
++ .vsync_end = 720 + 11 + 5,
++ .vtotal = 720 + 11 + 5 + 20,
++ .flags = DRM_MODE_FLAG_NVSYNC | DRM_MODE_FLAG_NHSYNC,
++ },
++};
++
+ static const struct nv3052c_panel_info ltk035c5444t_panel_info = {
+ .display_modes = ltk035c5444t_modes,
+ .num_modes = ARRAY_SIZE(ltk035c5444t_modes),
+@@ -914,10 +1461,46 @@ static const struct nv3052c_panel_info wl_355608_a8_panel_info = {
+ .panel_regs_len = ARRAY_SIZE(wl_355608_a8_panel_regs),
+ };
+
++static const struct nv3052c_panel_info ylm_lbv0345001h_v2_panel_info = {
++ .display_modes = ylm_lbv0345001h_v2_mode,
++ .num_modes = ARRAY_SIZE(ylm_lbv0345001h_v2_mode),
++ .width_mm = 70,
++ .height_mm = 53,
++ .bus_format = MEDIA_BUS_FMT_RGB888_1X24,
++ .bus_flags = DRM_BUS_FLAG_DE_HIGH | DRM_BUS_FLAG_PIXDATA_DRIVE_NEGEDGE,
++ .panel_regs = ylm_lbv0345001h_v2_panel_regs,
++ .panel_regs_len = ARRAY_SIZE(ylm_lbv0345001h_v2_panel_regs),
++};
++
++static const struct nv3052c_panel_info ylm_lbv0400001x_v1_panel_info = {
++ .display_modes = ylm_lbv0400001x_v1_mode,
++ .num_modes = ARRAY_SIZE(ylm_lbv0400001x_v1_mode),
++ .width_mm = 81,
++ .height_mm = 61,
++ .bus_format = MEDIA_BUS_FMT_RGB888_1X24,
++ .bus_flags = DRM_BUS_FLAG_DE_HIGH | DRM_BUS_FLAG_PIXDATA_DRIVE_NEGEDGE,
++ .panel_regs = ylm_lbv0400001x_v1_panel_regs,
++ .panel_regs_len = ARRAY_SIZE(ylm_lbv0400001x_v1_panel_regs),
++};
++
++static const struct nv3052c_panel_info ylm_lbn0395004h_v1_panel_info = {
++ .display_modes = ylm_lbn0395004h_v1_mode,
++ .num_modes = ARRAY_SIZE(ylm_lbn0395004h_v1_mode),
++ .width_mm = 71,
++ .height_mm = 71,
++ .bus_format = MEDIA_BUS_FMT_RGB888_1X24,
++ .bus_flags = DRM_BUS_FLAG_DE_HIGH | DRM_BUS_FLAG_PIXDATA_DRIVE_NEGEDGE,
++ .panel_regs = ylm_lbn0395004h_v1_panel_regs,
++ .panel_regs_len = ARRAY_SIZE(ylm_lbn0395004h_v1_panel_regs),
++};
++
+ static const struct spi_device_id nv3052c_ids[] = {
+ { "ltk035c5444t", },
+ { "fs035vg158", },
+- { "wl-355608-a8", },
++ { "rg35xx-plus-panel", },
++ { "rg35xx-plus-rev2-panel", },
++ { "rg40xx-panel", },
++ { "rgcubexx-panel", },
+ { /* sentinel */ }
+ };
+ MODULE_DEVICE_TABLE(spi, nv3052c_ids);
+@@ -926,6 +1509,9 @@ static const struct of_device_id nv3052c_of_match[] = {
+ { .compatible = "leadtek,ltk035c5444t", .data = <k035c5444t_panel_info },
+ { .compatible = "fascontek,fs035vg158", .data = &fs035vg158_panel_info },
+ { .compatible = "anbernic,rg35xx-plus-panel", .data = &wl_355608_a8_panel_info },
++ { .compatible = "anbernic,rg35xx-plus-rev2-panel", .data = &ylm_lbv0345001h_v2_panel_info },
++ { .compatible = "anbernic,rg40xx-panel", .data = &ylm_lbv0400001x_v1_panel_info },
++ { .compatible = "anbernic,rgcubexx-panel", .data = &ylm_lbn0395004h_v1_panel_info },
+ { /* sentinel */ }
+ };
+ MODULE_DEVICE_TABLE(of, nv3052c_of_match);
+--
+2.46.1
+
diff --git a/projects/Allwinner/patches/linux/H700/0030-add-panel-rg40xx-h.patch b/projects/Allwinner/patches/linux/H700/0030-add-panel-rg40xx-h.patch
deleted file mode 100644
index d43e869118..0000000000
--- a/projects/Allwinner/patches/linux/H700/0030-add-panel-rg40xx-h.patch
+++ /dev/null
@@ -1,246 +0,0 @@
-diff --git a/drivers/gpu/drm/panel/panel-newvision-nv3052c.c b/drivers/gpu/drm/panel/panel-newvision-nv3052c.c
-index 06e16a7c14a..7c0a654e74f 100644
---- a/drivers/gpu/drm/panel/panel-newvision-nv3052c.c
-+++ b/drivers/gpu/drm/panel/panel-newvision-nv3052c.c
-@@ -629,6 +629,187 @@ static const struct nv3052c_reg wl_355608_a8_panel_regs[] = {
- { 0x36, 0x0a }, // bgr = 1, ss = 1, gs = 0
- };
-
-+static const struct nv3052c_reg ylm_lbv0400001x_v1_panel_regs[] = {
-+ // EXTC Command set enable, select page 1
-+ { 0xff, 0x30 }, { 0xff, 0x52 }, { 0xff, 0x01 },
-+ // Mostly unknown registers
-+ { 0xe3, 0x00 },
-+ { 0x0a, 0x01 },
-+ { 0x23, 0xa0 },
-+ { 0x25, 0x14 },
-+ { 0x28, 0x47 },
-+ { 0x29, 0x01 },
-+ { 0x2a, 0xdf },
-+ { 0x38, 0x9c },
-+ { 0x39, 0xa7 },
-+ { 0x3a, 0x47 },
-+ { 0x91, 0x77 },
-+ { 0x92, 0x77 },
-+ { 0x99, 0x52 },
-+ { 0x9b, 0x5b },
-+ { 0xa0, 0x55 },
-+ { 0xa1, 0x50 },
-+ { 0xa4, 0x9c },
-+ { 0xa7, 0x02 },
-+ { 0xa8, 0x01 },
-+ { 0xa9, 0x01 },
-+ { 0xaa, 0xfc },
-+ { 0xab, 0x28 },
-+ { 0xac, 0x06 },
-+ { 0xad, 0x06 },
-+ { 0xae, 0x06 },
-+ { 0xaf, 0x03 },
-+ { 0xb0, 0x08 },
-+ { 0xb1, 0x26 },
-+ { 0xb2, 0x28 },
-+ { 0xb3, 0x28 },
-+ { 0xb4, 0x03 },
-+ { 0xb5, 0x08 },
-+ { 0xb6, 0x26 },
-+ { 0xb7, 0x08 },
-+ { 0xb8, 0x26 },
-+ // EXTC Command set enable, select page 2
-+ { 0xff, 0x30 }, { 0xff, 0x52 }, { 0xff, 0x02 },
-+ // Set gray scale voltage to adjust gamma
-+ { 0xb0, 0x05 }, // PGAMVR0
-+ { 0xb1, 0x12 }, // PGAMVR1
-+ { 0xb2, 0x13 }, // PGAMVR2
-+ { 0xb3, 0x2c }, // PGAMVR3
-+ { 0xb4, 0x2a }, // PGAMVR4
-+ { 0xb5, 0x37 }, // PGAMVR5
-+ { 0xb6, 0x27 }, // PGAMPR0
-+ { 0xb7, 0x42 }, // PGAMPR1
-+ { 0xb8, 0x0f }, // PGAMPK0
-+ { 0xb9, 0x06 }, // PGAMPK1
-+ { 0xba, 0x12 }, // PGAMPK2
-+ { 0xbb, 0x12 }, // PGAMPK3
-+ { 0xbc, 0x13 }, // PGAMPK4
-+ { 0xbd, 0x15 }, // PGAMPK5
-+ { 0xbe, 0x1b }, // PGAMPK6
-+ { 0xbf, 0x14 }, // PGAMPK7
-+ { 0xc0, 0x1d }, // PGAMPK8
-+ { 0xc1, 0x09 }, // PGAMPK9
-+ { 0xd0, 0x02 }, // NGAMVR0
-+ { 0xd1, 0x1c }, // NGAMVR0
-+ { 0xd2, 0x1d }, // NGAMVR1
-+ { 0xd3, 0x36 }, // NGAMVR2
-+ { 0xd4, 0x34 }, // NGAMVR3
-+ { 0xd5, 0x32 }, // NGAMVR4
-+ { 0xd6, 0x25 }, // NGAMPR0
-+ { 0xd7, 0x40 }, // NGAMPR1
-+ { 0xd8, 0x0d }, // NGAMPK0
-+ { 0xd9, 0x04 }, // NGAMPK1
-+ { 0xda, 0x12 }, // NGAMPK2
-+ { 0xdb, 0x12 }, // NGAMPK3
-+ { 0xdc, 0x13 }, // NGAMPK4
-+ { 0xdd, 0x15 }, // NGAMPK5
-+ { 0xde, 0x15 }, // NGAMPK6
-+ { 0xdf, 0x0c }, // NGAMPK7
-+ { 0xe0, 0x13 }, // NGAMPK8
-+ { 0xe1, 0x07 }, // NGAMPK9
-+ // EXTC Command set enable, select page 3
-+ { 0xff, 0x30 }, { 0xff, 0x52 }, { 0xff, 0x03 },
-+ // Mostly unknown registers
-+ { 0x08, 0x0a },
-+ { 0x09, 0x0b },
-+ { 0x30, 0x00 },
-+ { 0x31, 0x00 },
-+ { 0x32, 0x00 },
-+ { 0x33, 0x00 },
-+ { 0x34, 0x61 },
-+ { 0x35, 0xd4 },
-+ { 0x36, 0x24 },
-+ { 0x37, 0x03 },
-+ { 0x40, 0x0d },
-+ { 0x41, 0x0e },
-+ { 0x42, 0x0f },
-+ { 0x43, 0x10 },
-+ { 0x44, 0x11 },
-+ { 0x45, 0xf4 },
-+ { 0x46, 0xf5 },
-+ { 0x47, 0x11 },
-+ { 0x48, 0xf6 },
-+ { 0x49, 0xf7 },
-+ { 0x50, 0x11 },
-+ { 0x51, 0x12 },
-+ { 0x52, 0x13 },
-+ { 0x53, 0x14 },
-+ { 0x54, 0x11 },
-+ { 0x55, 0xf8 },
-+ { 0x56, 0xf9 },
-+ { 0x57, 0x11 },
-+ { 0x58, 0xfa },
-+ { 0x59, 0xfb },
-+ { 0x60, 0x05 },
-+ { 0x61, 0x05 },
-+ { 0x65, 0x0a },
-+ { 0x66, 0x0a },
-+ { 0x82, 0x1e },
-+ { 0x83, 0x1f },
-+ { 0x84, 0x11 },
-+ { 0x85, 0x02 },
-+ { 0x86, 0x1e },
-+ { 0x87, 0x1e },
-+ { 0x88, 0x1f },
-+ { 0x89, 0x0e },
-+ { 0x8a, 0x0e },
-+ { 0x8b, 0x10 },
-+ { 0x8c, 0x10 },
-+ { 0x8d, 0x0a },
-+ { 0x8e, 0x0a },
-+ { 0x8f, 0x0c },
-+ { 0x90, 0x0c },
-+ { 0x98, 0x1e },
-+ { 0x99, 0x1f },
-+ { 0x9a, 0x11 },
-+ { 0x9b, 0x01 },
-+ { 0x9c, 0x1e },
-+ { 0x9d, 0x1e },
-+ { 0x9e, 0x1f },
-+ { 0x9f, 0x0d },
-+ { 0xa0, 0x0d },
-+ { 0xa1, 0x0f },
-+ { 0xa2, 0x0f },
-+ { 0xa3, 0x09 },
-+ { 0xa4, 0x09 },
-+ { 0xa5, 0x0b },
-+ { 0xa6, 0x0b },
-+ { 0xb2, 0x1f },
-+ { 0xb3, 0x1e },
-+ { 0xb4, 0x11 },
-+ { 0xb5, 0x01 },
-+ { 0xb6, 0x1e },
-+ { 0xb7, 0x1e },
-+ { 0xb8, 0x1f },
-+ { 0xb9, 0x0b },
-+ { 0xba, 0x0b },
-+ { 0xbb, 0x09 },
-+ { 0xbc, 0x09 },
-+ { 0xbd, 0x0f },
-+ { 0xbe, 0x0f },
-+ { 0xbf, 0x0d },
-+ { 0xc0, 0x0d },
-+ { 0xc8, 0x1f },
-+ { 0xc9, 0x1e },
-+ { 0xca, 0x11 },
-+ { 0xcb, 0x02 },
-+ { 0xcc, 0x1e },
-+ { 0xcd, 0x1e },
-+ { 0xce, 0x1f },
-+ { 0xcf, 0x0c },
-+ { 0xd0, 0x0c },
-+ { 0xd1, 0x0a },
-+ { 0xd2, 0x0a },
-+ { 0xd3, 0x10 },
-+ { 0xd4, 0x10 },
-+ { 0xd5, 0x0e },
-+ { 0xd6, 0x0e },
-+ // EXTC Command set enable, select page 0
-+ { 0xff, 0x30 }, { 0xff, 0x52 }, { 0xff, 0x00 },
-+ // Display Access Control
-+ { 0x36, 0x0a }, // bgr = 1, ss = 1, gs = 0
-+};
-+
- static inline struct nv3052c *to_nv3052c(struct drm_panel *panel)
- {
- return container_of(panel, struct nv3052c, panel);
-@@ -881,6 +1062,21 @@ static const struct drm_display_mode wl_355608_a8_mode[] = {
- },
- };
-
-+static const struct drm_display_mode ylm_lbv0400001x_v1_mode[] = {
-+ {
-+ .clock = 24000,
-+ .hdisplay = 640,
-+ .hsync_start = 640 + 64,
-+ .hsync_end = 640 + 64 + 20,
-+ .htotal = 640 + 64 + 20 + 46,
-+ .vdisplay = 480,
-+ .vsync_start = 480 + 21,
-+ .vsync_end = 480 + 21 + 4,
-+ .vtotal = 480 + 21 + 4 + 15,
-+ .flags = DRM_MODE_FLAG_NVSYNC | DRM_MODE_FLAG_NHSYNC,
-+ },
-+};
-+
- static const struct nv3052c_panel_info ltk035c5444t_panel_info = {
- .display_modes = ltk035c5444t_modes,
- .num_modes = ARRAY_SIZE(ltk035c5444t_modes),
-@@ -914,10 +1110,22 @@ static const struct nv3052c_panel_info wl_355608_a8_panel_info = {
- .panel_regs_len = ARRAY_SIZE(wl_355608_a8_panel_regs),
- };
-
-+static const struct nv3052c_panel_info ylm_lbv0400001x_v1_panel_info = {
-+ .display_modes = ylm_lbv0400001x_v1_mode,
-+ .num_modes = ARRAY_SIZE(ylm_lbv0400001x_v1_mode),
-+ .width_mm = 150,
-+ .height_mm = 94,
-+ .bus_format = MEDIA_BUS_FMT_RGB888_1X24,
-+ .bus_flags = DRM_BUS_FLAG_DE_HIGH | DRM_BUS_FLAG_PIXDATA_DRIVE_NEGEDGE,
-+ .panel_regs = ylm_lbv0400001x_v1_panel_regs,
-+ .panel_regs_len = ARRAY_SIZE(ylm_lbv0400001x_v1_panel_regs),
-+};
-+
- static const struct spi_device_id nv3052c_ids[] = {
- { "ltk035c5444t", },
- { "fs035vg158", },
- { "rg35xx-plus-panel", },
-+ { "rg40xx-h-panel", },
- { /* sentinel */ }
- };
- MODULE_DEVICE_TABLE(spi, nv3052c_ids);
-@@ -926,6 +1134,7 @@ static const struct of_device_id nv3052c_of_match[] = {
- { .compatible = "leadtek,ltk035c5444t", .data = <k035c5444t_panel_info },
- { .compatible = "fascontek,fs035vg158", .data = &fs035vg158_panel_info },
- { .compatible = "anbernic,rg35xx-plus-panel", .data = &wl_355608_a8_panel_info },
-+ { .compatible = "anbernic,rg40xx-h-panel", .data = &ylm_lbv0400001x_v1_panel_info },
- { /* sentinel */ }
- };
- MODULE_DEVICE_TABLE(of, nv3052c_of_match);
-
\ No newline at end of file
diff --git a/projects/Allwinner/patches/linux/H700/0031-add-RG40XX-dts.patch b/projects/Allwinner/patches/linux/H700/0031-add-RG40XX-dts.patch
index e82f045c1b..8b0ae754ea 100644
--- a/projects/Allwinner/patches/linux/H700/0031-add-RG40XX-dts.patch
+++ b/projects/Allwinner/patches/linux/H700/0031-add-RG40XX-dts.patch
@@ -31,7 +31,7 @@ index 000000000..732ba028c
+ hw_info = <0x01>;
+
+ joypad-name = "retrogame_joypad";
-+ joypad-product = <0x1101>;
++ joypad-product = <0x14DF>;
+ joypad-revision = <0x0100>;
+ joypad-vendor = <0x484B>;
+
@@ -200,7 +200,7 @@ index 000000000..732ba028c
+};
+
+&panel {
-+ compatible = "anbernic,rg40xx-h-panel";
++ compatible = "anbernic,rg40xx-panel";
+};
--
2.46.1
diff --git a/projects/Allwinner/patches/linux/H700/0032-add-rgcubexx-dts.patch b/projects/Allwinner/patches/linux/H700/0032-add-rgcubexx-dts.patch
new file mode 100644
index 0000000000..83bc371998
--- /dev/null
+++ b/projects/Allwinner/patches/linux/H700/0032-add-rgcubexx-dts.patch
@@ -0,0 +1,214 @@
+From b0222d757cb275bda98162d2aa6da2e06a7528aa Mon Sep 17 00:00:00 2001
+From: Philippe Simons
+Date: Sat, 9 Nov 2024 12:11:14 +0100
+Subject: [PATCH] add rgcubexx dts
+
+---
+ .../sun50i-h700-anbernic-rgcubexx.dts | 188 ++++++++++++++++++
+ 1 file changed, 188 insertions(+)
+ create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rgcubexx.dts
+
+diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rgcubexx.dts b/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rgcubexx.dts
+new file mode 100644
+index 000000000..3f2cd8eaf
+--- /dev/null
++++ b/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rgcubexx.dts
+@@ -0,0 +1,195 @@
++// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
++/*
++ * Copyright (C) 2024 Ryan Walklin .
++ * Copyright (C) 2024 Chris Morgan .
++ */
++
++#include "sun50i-h700-anbernic-rg35xx-plus.dts"
++
++/ {
++ model = "Anbernic RGCUBEXX";
++ compatible = "anbernic,rgcubexx", "allwinner,sun50i-h700";
++
++ joypad: rocknix-singleadc-joypad {
++ compatible = "rocknix-singleadc-joypad";
++ hw_info = <0x01>;
++
++ joypad-name = "retrogame_joypad";
++ joypad-product = <0x14DF>;
++ joypad-revision = <0x0100>;
++ joypad-vendor = <0x484B>;
++
++ status = "okay";
++
++ /* gpio pincontrol setup */
++ pinctrl-names = "default";
++ pinctrl-0 = <&joy_mux_pin>;
++
++ /* Analog mux define */
++ io-channel-names = "amux_adc";
++ io-channels = <&gpadc 0>;
++
++ /* adc mux channel count */
++ amux-count = <4>;
++ /* ABS_RY ABS_RX ABS_Y ABS_X */
++ amux-channel-mapping = <0 2 1 3>;
++
++ /* adc mux select(a,b) gpio */
++ amux-a-gpios = <&pio 8 1 GPIO_ACTIVE_LOW>;
++ amux-b-gpios = <&pio 8 2 GPIO_ACTIVE_LOW>;
++
++ /* adc calculate scale */
++ button-adc-scale = <2>;
++
++ /* adc deadzone range */
++ button-adc-deadzone = <128>;
++
++ /*
++ specifies fuzz value that is used to filter noise from
++ the event stream.
++ */
++ button-adc-fuzz = <32>;
++ button-adc-flat = <32>;
++
++ /*
++ Analog Stick data tuning value(precent)
++ p = positive direction, n = negative direction
++ report value = (real_adc_data * tuning_value) / 100
++ */
++ abs_x-p-tuning = <180>;
++ abs_x-n-tuning = <180>;
++ invert-absx;
++
++ abs_y-p-tuning = <180>;
++ abs_y-n-tuning = <180>;
++ invert-absy;
++
++ abs_rx-p-tuning = <180>;
++ abs_rx-n-tuning = <180>;
++ invert-absrx;
++
++ abs_ry-p-tuning = <180>;
++ abs_ry-n-tuning = <180>;
++ invert-absry;
++
++ /* poll device interval (ms), adc read interval */
++ poll-interval = <10>;
++
++ /* gpio button auto repeat set value : default disable */
++ /* autorepeat; */
++
++ sw1 {
++ gpios = <&pio 0 6 GPIO_ACTIVE_LOW>; /* PA6 */
++ label = "GPIO DPAD-UP";
++ linux,code = ;
++ };
++ sw2 {
++ gpios = <&pio 4 0 GPIO_ACTIVE_LOW>; /* PE0 */
++ label = "GPIO DPAD-DOWN";
++ linux,code = ;
++ };
++ sw3 {
++ gpios = <&pio 0 8 GPIO_ACTIVE_LOW>; /* PA8 */
++ label = "GPIO DPAD-LEFT";
++ linux,code = ;
++ };
++ sw4 {
++ gpios = <&pio 0 9 GPIO_ACTIVE_LOW>; /* PA9 */
++ label = "GPIO DPAD-RIGHT";
++ linux,code = ;
++ };
++ sw5 {
++ gpios = <&pio 0 0 GPIO_ACTIVE_LOW>; /* PA0 */
++ label = "GPIO BTN-A";
++ linux,code = ;
++ };
++ sw6 {
++ gpios = <&pio 0 1 GPIO_ACTIVE_LOW>; /* PA1 */
++ label = "GPIO BTN-B";
++ linux,code = ;
++ };
++ sw7 {
++ gpios = <&pio 0 2 GPIO_ACTIVE_LOW>; /* PA2 */
++ label = "GPIO BTN-X";
++ linux,code = ;
++ };
++ sw8 {
++ gpios = <&pio 0 3 GPIO_ACTIVE_LOW>; /* PA3 */
++ label = "GPIO BTN-Y";
++ linux,code = ;
++ };
++ sw9 {
++ gpios = <&pio 0 5 GPIO_ACTIVE_LOW>; /* PA5 */
++ label = "BTN_SELECT";
++ linux,code = ;
++ };
++ sw10 {
++ gpios = <&pio 0 4 GPIO_ACTIVE_LOW>; /* PA4 */
++ label = "BTN_START";
++ linux,code = ;
++ };
++ sw11 {
++ gpios = <&pio 4 3 GPIO_ACTIVE_LOW>; /* PE3 */
++ label = "GPIO BTN_F";
++ linux,code = ;
++ };
++ sw12 {
++ gpios = <&pio 4 8 GPIO_ACTIVE_LOW>; /* PE8 */
++ label = "BTN_THUMBL";
++ linux,code = ;
++ };
++ sw13 {
++ gpios = <&pio 4 9 GPIO_ACTIVE_LOW>; /* PE9 */
++ label = "BTN_THUMBR";
++ linux,code = ;
++ };
++ sw14 {
++ gpios = <&pio 0 12 GPIO_ACTIVE_LOW>; /* PA12 */
++ label = "GPIO BTN_TR";
++ linux,code = ;
++ };
++ sw15 {
++ gpios = <&pio 0 7 GPIO_ACTIVE_LOW>; /* PA7 */
++ label = "GPIO BTN_TR2";
++ linux,code = ;
++ };
++ sw16 {
++ gpios = <&pio 0 10 GPIO_ACTIVE_LOW>; /* PA10 */
++ label = "GPIO BTN_TL";
++ linux,code = ;
++ };
++ sw17 {
++ gpios = <&pio 0 11 GPIO_ACTIVE_LOW>; /* PA11 */
++ label = "GPIO BTN_TL2";
++ linux,code = ;
++ };
++ };
++};
++
++&gpadc {
++ #address-cells = <1>;
++ #size-cells = <0>;
++ status = "okay";
++
++ channel@0 {
++ reg = <0>;
++ };
++};
++
++/delete-node/ &gpio_keys_gamepad;
++
++&pio {
++ joy_mux_pin: joy-mux-pin {
++ pins = "PI0";
++ function = "gpio_out";
++ };
++};
++
++®_lcd {
++ regulator-min-microvolt = <2800000>;
++ regulator-max-microvolt = <2800000>;
++};
++
++&panel {
++ compatible = "anbernic,rgcubexx-panel";
++};
+--
+2.46.1
+
diff --git a/projects/Allwinner/patches/linux/H700/0033-add-rg35xx-rev2-panel-variants-dts.patch b/projects/Allwinner/patches/linux/H700/0033-add-rg35xx-rev2-panel-variants-dts.patch
new file mode 100644
index 0000000000..7f5f06009a
--- /dev/null
+++ b/projects/Allwinner/patches/linux/H700/0033-add-rg35xx-rev2-panel-variants-dts.patch
@@ -0,0 +1,87 @@
+From bf2fec19ad2e0b33718520e9420d24284ddb3639 Mon Sep 17 00:00:00 2001
+From: Philippe Simons
+Date: Sat, 9 Nov 2024 12:17:55 +0100
+Subject: [PATCH] add rg35xx rev2 panel variants dts
+
+---
+ .../sun50i-h700-anbernic-rg35xx-2024-rev2-panel.dts | 11 +++++++++++
+ .../sun50i-h700-anbernic-rg35xx-h-rev2-panel.dts | 11 +++++++++++
+ .../sun50i-h700-anbernic-rg35xx-plus-rev2-panel.dts | 11 +++++++++++
+ .../sun50i-h700-anbernic-rg35xx-sp-rev2-panel.dts | 11 +++++++++++
+ 4 files changed, 44 insertions(+)
+ create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024-rev2-panel.dts
+ create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-h-rev2-panel.dts
+ create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-plus-rev2-panel.dts
+ create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-sp-rev2-panel.dts
+
+diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024-rev2-panel.dts b/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024-rev2-panel.dts
+new file mode 100644
+index 000000000..595dcb375
+--- /dev/null
++++ b/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024-rev2-panel.dts
+@@ -0,0 +1,11 @@
++// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
++/*
++ * Copyright (C) 2024 Ryan Walklin .
++ * Copyright (C) 2024 Chris Morgan .
++ */
++
++#include "sun50i-h700-anbernic-rg35xx-2024.dts"
++
++&panel {
++ compatible = "anbernic,rg35xx-plus-rev2-panel";
++};
+diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-h-rev2-panel.dts b/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-h-rev2-panel.dts
+new file mode 100644
+index 000000000..14fc39ca1
+--- /dev/null
++++ b/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-h-rev2-panel.dts
+@@ -0,0 +1,11 @@
++// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
++/*
++ * Copyright (C) 2024 Ryan Walklin .
++ * Copyright (C) 2024 Chris Morgan .
++ */
++
++#include "sun50i-h700-anbernic-rg35xx-h.dts"
++
++&panel {
++ compatible = "anbernic,rg35xx-plus-rev2-panel";
++};
+diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-plus-rev2-panel.dts b/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-plus-rev2-panel.dts
+new file mode 100644
+index 000000000..7479365dc
+--- /dev/null
++++ b/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-plus-rev2-panel.dts
+@@ -0,0 +1,11 @@
++// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
++/*
++ * Copyright (C) 2024 Ryan Walklin .
++ * Copyright (C) 2024 Chris Morgan .
++ */
++
++#include "sun50i-h700-anbernic-rg35xx-plus.dts"
++
++&panel {
++ compatible = "anbernic,rg35xx-plus-rev2-panel";
++};
+diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-sp-rev2-panel.dts b/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-sp-rev2-panel.dts
+new file mode 100644
+index 000000000..c22e48641
+--- /dev/null
++++ b/arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-sp-rev2-panel.dts
+@@ -0,0 +1,11 @@
++// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
++/*
++ * Copyright (C) 2024 Ryan Walklin .
++ * Copyright (C) 2024 Chris Morgan .
++ */
++
++#include "sun50i-h700-anbernic-rg35xx-sp.dts"
++
++&panel {
++ compatible = "anbernic,rg35xx-plus-rev2-panel";
++};
+--
+2.46.1
+
diff --git a/projects/Allwinner/patches/linux/H700/0034-rg28xx-panel-clock.patch b/projects/Allwinner/patches/linux/H700/0034-rg28xx-panel-clock.patch
new file mode 100644
index 0000000000..dadbe75b2b
--- /dev/null
+++ b/projects/Allwinner/patches/linux/H700/0034-rg28xx-panel-clock.patch
@@ -0,0 +1,27 @@
+diff -rupbN linux.orig/drivers/gpu/drm/panel/panel-sitronix-st7701.c linux/drivers/gpu/drm/panel/panel-sitronix-st7701.c
+--- linux.orig/drivers/gpu/drm/panel/panel-sitronix-st7701.c 2024-11-09 15:37:39.898556064 +0000
++++ linux/drivers/gpu/drm/panel/panel-sitronix-st7701.c 2024-11-17 14:42:52.356446105 +0000
+@@ -1036,17 +1036,17 @@ static const struct st7701_panel_desc rg
+ };
+
+ static const struct drm_display_mode rg28xx_mode = {
+- .clock = 22325,
++ .clock = 24000,
+
+ .hdisplay = 480,
+- .hsync_start = 480 + 40,
+- .hsync_end = 480 + 40 + 4,
+- .htotal = 480 + 40 + 4 + 20,
++ .hsync_start = 480 + 50,
++ .hsync_end = 480 + 50 + 6,
++ .htotal = 480 + 50 + 6 + 50,
+
+ .vdisplay = 640,
+ .vsync_start = 640 + 2,
+- .vsync_end = 640 + 2 + 40,
+- .vtotal = 640 + 2 + 40 + 16,
++ .vsync_end = 640 + 24 + 6,
++ .vtotal = 640 + 24 + 6 + 16,
+
+ .width_mm = 44,
+ .height_mm = 58,
diff --git a/projects/Allwinner/patches/linux/H700/20241025_andre_przywara_clk_sunxi_ng_h616_reparent_cpu_clock_during_frequency_changes.patch b/projects/Allwinner/patches/linux/H700/20241025_andre_przywara_clk_sunxi_ng_h616_reparent_cpu_clock_during_frequency_changes.patch
new file mode 100644
index 0000000000..406a0feac6
--- /dev/null
+++ b/projects/Allwinner/patches/linux/H700/20241025_andre_przywara_clk_sunxi_ng_h616_reparent_cpu_clock_during_frequency_changes.patch
@@ -0,0 +1,93 @@
+From git@z Thu Jan 1 00:00:00 1970
+Subject: [PATCH RFC] clk: sunxi-ng: h616: Reparent CPU clock during
+ frequency changes
+From: Andre Przywara
+Date: Fri, 25 Oct 2024 11:56:20 +0100
+Message-Id: <20241025105620.1891596-1-andre.przywara@arm.com>
+MIME-Version: 1.0
+Content-Type: text/plain; charset="utf-8"
+Content-Transfer-Encoding: 7bit
+
+The H616 user manual recommends to re-parent the CPU clock during
+frequency changes of the PLL, and recommends PLL_PERI0(1X), which runs
+at 600 MHz. Also it asks to disable and then re-enable the PLL lock bit,
+after the factor changes have been applied.
+
+Add clock notifiers for the PLL and the CPU mux clock, using the existing
+notifier callbacks, and tell them to use mux 4 (the PLL_PERI0(1X) source),
+and bit 29 (the LOCK_ENABLE) bit. The existing code already follows the
+correct algorithms.
+
+Signed-off-by: Andre Przywara
+Tested-by: Evgeny Boger
+---
+Hi,
+
+the manual states that those changes would be needed to safely change
+the CPU_PLL frequency during DVFS operation. On my H618 boards it works
+fine without them, but Philippe reported problems on his H700 board.
+Posting this for reference at this point, to see if it helps people.
+I am not sure we should change this without it fixing any real issues.
+
+The same algorithm would apply to the A100/A133 (and the upcoming A523)
+as well.
+
+Cheers,
+Andre
+
+ drivers/clk/sunxi-ng/ccu-sun50i-h616.c | 28 ++++++++++++++++++++++++--
+ 1 file changed, 26 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/clk/sunxi-ng/ccu-sun50i-h616.c b/drivers/clk/sunxi-ng/ccu-sun50i-h616.c
+index 84e406ddf9d12..85eea196f25e3 100644
+--- a/drivers/clk/sunxi-ng/ccu-sun50i-h616.c
++++ b/drivers/clk/sunxi-ng/ccu-sun50i-h616.c
+@@ -1095,11 +1095,24 @@ static const u32 usb2_clk_regs[] = {
+ SUN50I_H616_USB3_CLK_REG,
+ };
+
++static struct ccu_mux_nb sun50i_h616_cpu_nb = {
++ .common = &cpux_clk.common,
++ .cm = &cpux_clk.mux,
++ .delay_us = 1, /* manual doesn't really say */
++ .bypass_index = 4, /* PLL_PERI0@600MHz, as recommended by manual */
++};
++
++static struct ccu_pll_nb sun50i_h616_pll_cpu_nb = {
++ .common = &pll_cpux_clk.common,
++ .enable = BIT(29), /* LOCK_ENABLE */
++ .lock = BIT(28),
++};
++
+ static int sun50i_h616_ccu_probe(struct platform_device *pdev)
+ {
+ void __iomem *reg;
+ u32 val;
+- int i;
++ int ret, i;
+
+ reg = devm_platform_ioremap_resource(pdev, 0);
+ if (IS_ERR(reg))
+@@ -1152,7 +1165,18 @@ static int sun50i_h616_ccu_probe(struct platform_device *pdev)
+ val |= BIT(24);
+ writel(val, reg + SUN50I_H616_HDMI_CEC_CLK_REG);
+
+- return devm_sunxi_ccu_probe(&pdev->dev, reg, &sun50i_h616_ccu_desc);
++ ret = devm_sunxi_ccu_probe(&pdev->dev, reg, &sun50i_h616_ccu_desc);
++ if (ret)
++ return ret;
++
++ /* Reparent CPU during CPU PLL rate changes */
++ ccu_mux_notifier_register(pll_cpux_clk.common.hw.clk,
++ &sun50i_h616_cpu_nb);
++
++ /* Re-lock the CPU PLL after any rate changes */
++ ccu_pll_notifier_register(&sun50i_h616_pll_cpu_nb);
++
++ return 0;
+ }
+
+ static const struct of_device_id sun50i_h616_ccu_ids[] = {
+--
+2.25.1
+
diff --git a/projects/Amlogic/bootloader/update.sh b/projects/Amlogic/bootloader/update.sh
index 5947fbd57f..88692a657e 100755
--- a/projects/Amlogic/bootloader/update.sh
+++ b/projects/Amlogic/bootloader/update.sh
@@ -40,6 +40,14 @@ for all_dtb in $BOOT_ROOT/*.dtb; do
fi
done
+if [ -d $SYSTEM_ROOT/usr/share/bootloader/overlays ]; then
+ echo "Updating device tree overlays..."
+ mkdir -p $BOOT_ROOT/overlays
+ for dtb in $SYSTEM_ROOT/usr/share/bootloader/overlays/*.dtbo; do
+ cp -p $dtb $BOOT_ROOT/overlays
+ done
+fi
+
# Only update the bootloader for the Odroid Go Ultra and RGB10MAX3 Pro
if [ $SUBDEVICE = "Odroid_GOU" ]; then
if [ -f $SYSTEM_ROOT/usr/share/bootloader/u-boot.bin ]; then
diff --git a/projects/Amlogic/devices/S922X/linux/linux.aarch64.conf b/projects/Amlogic/devices/S922X/linux/linux.aarch64.conf
index 08b47aadd9..fe84dd392f 100644
--- a/projects/Amlogic/devices/S922X/linux/linux.aarch64.conf
+++ b/projects/Amlogic/devices/S922X/linux/linux.aarch64.conf
@@ -4186,7 +4186,7 @@ CONFIG_DRM_MESON_DW_MIPI_DSI=y
# CONFIG_TINYDRM_ST7735R is not set
# CONFIG_DRM_PL111 is not set
# CONFIG_DRM_LIMA is not set
-# CONFIG_DRM_PANFROST is not set
+CONFIG_DRM_PANFROST=m
# CONFIG_DRM_PANTHOR is not set
# CONFIG_DRM_TIDSS is not set
# CONFIG_DRM_GUD is not set
diff --git a/projects/Amlogic/devices/S922X/options b/projects/Amlogic/devices/S922X/options
index 45f7c148b1..cd149aa2a4 100644
--- a/projects/Amlogic/devices/S922X/options
+++ b/projects/Amlogic/devices/S922X/options
@@ -35,76 +35,46 @@
HW_CPU="Amlogic S922X"
# Mali GPU family
- if [ "${USE_MALI}" != "no" ]; then
- MALI_FAMILY="bifrost-g52"
- else
- MALI_FAMILY="g52"
- fi
-
+ MALI_FAMILY="bifrost-g52"
GRAPHIC_DRIVERS="panfrost"
# OpenGL(X) implementation to use (mesa / no)
- if [ "${USE_MALI}" != "no" ]; then
- OPENGL=""
- else
- OPENGL="mesa"
- fi
+ OPENGL="mesa"
# OpenGL-ES implementation to use (mesa / no)
OPENGLES="mesa"
+ # For maximum cross compatbility
+ PREFER_GLES="yes"
+
# Vulkan implementation to use (vulkan-loader / no)
- if [ "${USE_MALI}" != "no" ]; then
- VULKAN="vulkan-loader"
- else
- VULKAN="no"
- fi
+ VULKAN="vulkan-loader"
# VULKAN_SUPPORT
- if [ "${USE_MALI}" != "no" ]; then
- VULKAN_SUPPORT="yes"
- else
- VULKAN_SUPPORT="no"
- fi
-
+ VULKAN_SUPPORT="yes"
+
# Displayserver to use (wl / x11 / no)
DISPLAYSERVER="wl"
# Windowmanager to use (weston / swaywm-env / no)
- if [ "${USE_MALI}" != "no" ]; then
- WINDOWMANAGER="weston11"
- else
- WINDOWMANAGER="swaywm-env"
- fi
+ WINDOWMANAGER="weston11"
# build and install rocknix joypad driver (yes / no)
ROCKNIX_JOYPAD="yes"
+
+ # build and install rocknix out-of-tree device trees and overlays (yes / no)
+ ROCKNIX_DEVICE_TREE_OVERLAYS="yes"
# additional Firmware to use ( )
# Space separated list is supported,
# e.g. FIRMWARE=""
- if [ "${USE_MALI}" != "no" ]; then
- FIRMWARE="libmali-vulkan"
- else
- FIRMWARE=""
- fi
-
+ FIRMWARE="libmali"
+
# additional drivers to install:
# for a list of additional drivers see packages/linux-drivers
# Space separated list is supported,
# e.g. ADDITIONAL_DRIVERS="DRIVER1 DRIVER2"
- ADDITIONAL_DRIVERS="RTL8812AU RTL8821AU RTL8821CU RTL8851BU"
-
- if [ "${USE_MALI}" != "no" ]; then
- ADDITIONAL_DRIVERS+=" mali-bifrost"
- fi
+ ADDITIONAL_DRIVERS="RTL8812AU RTL8821AU RTL8821CU RTL8851BU mali-bifrost"
# debug tty path
DEBUG_TTY="/dev/ttyAML0"
-
- # Disable 32BIT support
- if [ "${USE_MALI}" != "no" ]; then
- ENABLE_32BIT="false"
- else
- ENABLE_32BIT="true"
- fi
diff --git a/packages/graphics/libmali-vulkan/package.mk b/projects/Amlogic/packages/libmali/package.mk
similarity index 68%
rename from packages/graphics/libmali-vulkan/package.mk
rename to projects/Amlogic/packages/libmali/package.mk
index 3824392414..3aa371bc99 100644
--- a/packages/graphics/libmali-vulkan/package.mk
+++ b/projects/Amlogic/packages/libmali/package.mk
@@ -1,15 +1,15 @@
# SPDX-License-Identifier: GPL-2.0-or-later
-# Copyright (C) 2022-present JELOS (https://github.com/JustEnoughLinuxOS)
+# Copyright (C) 2024-present ROCKNIX (https://github.com/ROCKNIX)
-PKG_NAME="libmali-vulkan"
+PKG_NAME="libmali"
PKG_VERSION="r51p0-00eac0"
PKG_LICENSE="mali_driver"
-PKG_ARCH="arm aarch64"
+PKG_ARCH="aarch64"
PKG_SITE="https://developer.arm.com/downloads/-/mali-drivers/user-space"
PKG_URL="https://developer.arm.com/-/media/Files/downloads/mali-drivers/user-space/odroid-n2plus/BXODROIDN2PL-${PKG_VERSION}.tar"
-PKG_DEPENDS_TARGET="toolchain mesa vulkan-tools"
+PKG_DEPENDS_TARGET="toolchain mesa vulkan-tools gpudriver"
PKG_TOOLCHAIN="manual"
-PKG_LONGDESC="Vulkan Mali drivers for s922x soc"
+PKG_LONGDESC="OpenGL ES and Vulkan Mali drivers for s922x soc"
make_target() {
:
@@ -17,8 +17,11 @@ make_target() {
makeinstall_target() {
mkdir -p ${INSTALL}/usr/{lib,share}
+ mkdir -p ${INSTALL}/usr/lib/mali
tar -xvJf ${PKG_BUILD}/mali.tar.xz -C ${INSTALL}
- mv ${INSTALL}/lib/${TARGET_ARCH}-linux-gnu/* ${INSTALL}/usr/lib
+ mv ${INSTALL}/lib/${TARGET_ARCH}-linux-gnu/* ${INSTALL}/usr/lib/mali/
+ mv ${INSTALL}/usr/lib/mali/libmali.* ${INSTALL}/usr/lib/
+
rm -r ${INSTALL}/lib
tar -xvJf ${PKG_BUILD}/rootfs_additions.tar.xz -C ${INSTALL}/usr/share
mv ${INSTALL}/usr/share/etc/vulkan/* ${INSTALL}/usr/share/vulkan/
diff --git a/projects/Amlogic/patches/linux/S922X-PANFROST/0001-Revert-arm64-meson-g12-common-add-mali-to-dts.patch b/projects/Amlogic/patches/linux/S922X-PANFROST/0001-Revert-arm64-meson-g12-common-add-mali-to-dts.patch
deleted file mode 100644
index 2a0c1decd5..0000000000
--- a/projects/Amlogic/patches/linux/S922X-PANFROST/0001-Revert-arm64-meson-g12-common-add-mali-to-dts.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From 4de8ccca441813e778bec3494f8d3e6831eb6d3c Mon Sep 17 00:00:00 2001
-From: spycat88
-Date: Sat, 6 Apr 2024 13:55:49 +0100
-Subject: [PATCH] Revert "arm64: meson: g12-common: add mali to dts"
-
-This reverts commit f8404960bde38a0f1bdd50a032b1a1bb69ed826c.
----
- .../arm64/boot/dts/amlogic/meson-g12-common.dtsi | 16 +++++-----------
- arch/arm64/boot/dts/amlogic/meson-g12b.dtsi | 3 +--
- 2 files changed, 6 insertions(+), 13 deletions(-)
-
-diff --git a/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi b/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi
-index 2631b19d8cf6..c45ad6d6ddc8 100644
---- a/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi
-+++ b/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi
-@@ -2464,20 +2464,14 @@ dwc3: usb@ff500000 {
- };
-
- mali: gpu@ffe40000 {
-- compatible = "arm,mali-midgard";
-- reg = <0x0 0xffe40000 0x0 0x40000>,
-- <0 0xFFD01000 0 0x01000>,
-- <0 0xFF800000 0 0x01000>,
-- <0 0xFF63c000 0 0x01000>,
-- <0 0xFFD01000 0 0x01000>;
--
-+ compatible = "amlogic,meson-g12a-mali", "arm,mali-bifrost";
-+ reg = <0x0 0xffe40000 0x0 0x40000>;
- interrupt-parent = <&gic>;
-- interrupts = ,
-+ interrupts = ,
- ,
-- ;
-- interrupt-names = "GPU", "MMU", "JOB";
-+ ;
-+ interrupt-names = "job", "mmu", "gpu";
- clocks = <&clkc CLKID_MALI>;
-- clock-names = "clk_mali";
- resets = <&reset RESET_DVALIN_CAPB3>, <&reset RESET_DVALIN>;
- operating-points-v2 = <&gpu_opp_table>;
- #cooling-cells = <2>;
-diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b.dtsi b/arch/arm64/boot/dts/amlogic/meson-g12b.dtsi
-index f22c27a1472c..86e6ceb31d5e 100644
---- a/arch/arm64/boot/dts/amlogic/meson-g12b.dtsi
-+++ b/arch/arm64/boot/dts/amlogic/meson-g12b.dtsi
-@@ -139,8 +139,7 @@ map1 {
- };
-
- &mali {
-- system-coherency = <0>;
-- power_policy = "always_on";
-+ dma-coherent;
- };
-
- &pmu {
---
-2.34.1
-
diff --git a/projects/Amlogic/patches/linux/S922X/0007-arm64-meson-g12-common-add-mali-to-dts.patch b/projects/Amlogic/patches/linux/S922X/0007-arm64-meson-g12-common-add-mali-to-dts.patch
index dcbfb9ef6a..c8ced9acc4 100644
--- a/projects/Amlogic/patches/linux/S922X/0007-arm64-meson-g12-common-add-mali-to-dts.patch
+++ b/projects/Amlogic/patches/linux/S922X/0007-arm64-meson-g12-common-add-mali-to-dts.patch
@@ -1,57 +1,42 @@
-From 80fb3ace918b2b3dbbd7e2f4e1094034d818c1c4 Mon Sep 17 00:00:00 2001
-From: brooksytech <1673861+brooksytech@users.noreply.github.com>
-Date: Wed, 24 Jan 2024 23:56:58 +0000
-Subject: [PATCH 07/38] arm64: meson: g12-common: add mali to dts
-
----
- .../arm64/boot/dts/amlogic/meson-g12-common.dtsi | 16 +++++++++++-----
- arch/arm64/boot/dts/amlogic/meson-g12b.dtsi | 3 ++-
- 2 files changed, 13 insertions(+), 6 deletions(-)
-
-diff --git a/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi b/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi
-index b058ed78faf0..79ba8e95649c 100644
---- a/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi
-+++ b/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi
-@@ -2476,14 +2476,20 @@ dwc3: usb@ff500000 {
+diff -rupN linux.orig/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi linux/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi
+--- linux.orig/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi 2024-09-23 08:43:22.120928646 +1000
++++ linux/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi 2024-09-23 10:52:16.716701961 +1000
+@@ -2405,6 +2405,7 @@
+ };
};
++ // Mali GPU - Panfrost
mali: gpu@ffe40000 {
-- compatible = "amlogic,meson-g12a-mali", "arm,mali-bifrost";
-- reg = <0x0 0xffe40000 0x0 0x40000>;
+ compatible = "amlogic,meson-g12a-mali", "arm,mali-bifrost";
+ reg = <0x0 0xffe40000 0x0 0x40000>;
+@@ -2417,6 +2418,30 @@
+ resets = <&reset RESET_DVALIN_CAPB3>, <&reset RESET_DVALIN>;
+ operating-points-v2 = <&gpu_opp_table>;
+ #cooling-cells = <2>;
++ status = "disabled";
++ };
++
++ // Mali GPU - Vulkan
++ mali_vulkan: gpu_mali_vulkan@ffe40000 {
+ compatible = "arm,mali-midgard";
+ reg = <0x0 0xffe40000 0x0 0x40000>,
+ <0 0xFFD01000 0 0x01000>,
+ <0 0xFF800000 0 0x01000>,
+ <0 0xFF63c000 0 0x01000>,
+ <0 0xFFD01000 0 0x01000>;
-+
- interrupt-parent = <&gic>;
-- interrupts = ,
++ interrupt-parent = <&gic>;
+ interrupts = ,
- ,
-- ;
-- interrupt-names = "job", "mmu", "gpu";
++ ,
+ ;
+ interrupt-names = "GPU", "MMU", "JOB";
- clocks = <&clkc CLKID_MALI>;
++ clocks = <&clkc CLKID_MALI>;
+ clock-names = "clk_mali";
- resets = <&reset RESET_DVALIN_CAPB3>, <&reset RESET_DVALIN>;
- operating-points-v2 = <&gpu_opp_table>;
- #cooling-cells = <2>;
-diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b.dtsi b/arch/arm64/boot/dts/amlogic/meson-g12b.dtsi
-index 86e6ceb31d5e..f22c27a1472c 100644
---- a/arch/arm64/boot/dts/amlogic/meson-g12b.dtsi
-+++ b/arch/arm64/boot/dts/amlogic/meson-g12b.dtsi
-@@ -139,7 +139,8 @@ map1 {
- };
-
- &mali {
-- dma-coherent;
-+ system-coherency = <0>;
-+ power_policy = "always_on";
- };
++ resets = <&reset RESET_DVALIN_CAPB3>, <&reset RESET_DVALIN>;
++ operating-points-v2 = <&gpu_opp_table>;
++ #cooling-cells = <2>;
++ system-coherency = <0>;
++ power_policy = "always_on";
++ status = "okay";
+ };
+ };
- &pmu {
---
-2.34.1
-
diff --git a/packages/kernel/linux/patches/AMD64/001-oxp-add-2s.patch b/projects/PC/patches/linux/AMD64/001-oxp-add-2s.patch
similarity index 100%
rename from packages/kernel/linux/patches/AMD64/001-oxp-add-2s.patch
rename to projects/PC/patches/linux/AMD64/001-oxp-add-2s.patch
diff --git a/packages/kernel/linux/patches/AMD64/002-display-quirks.patch b/projects/PC/patches/linux/AMD64/002-display-quirks.patch
similarity index 79%
rename from packages/kernel/linux/patches/AMD64/002-display-quirks.patch
rename to projects/PC/patches/linux/AMD64/002-display-quirks.patch
index 3490aaa407..26da5bfb44 100755
--- a/packages/kernel/linux/patches/AMD64/002-display-quirks.patch
+++ b/projects/PC/patches/linux/AMD64/002-display-quirks.patch
@@ -1,6 +1,6 @@
-diff -rupN linux.orig/drivers/gpu/drm/drm_panel_orientation_quirks.c linux/drivers/gpu/drm/drm_panel_orientation_quirks.c
---- linux.orig/drivers/gpu/drm/drm_panel_orientation_quirks.c 2024-07-12 04:43:00.348961579 +0000
-+++ linux/drivers/gpu/drm/drm_panel_orientation_quirks.c 2024-07-12 04:51:29.466639476 +0000
+diff -rupbN linux.orig/drivers/gpu/drm/drm_panel_orientation_quirks.c linux/drivers/gpu/drm/drm_panel_orientation_quirks.c
+--- linux.orig/drivers/gpu/drm/drm_panel_orientation_quirks.c 2024-10-30 16:13:32.681691731 +0000
++++ linux/drivers/gpu/drm/drm_panel_orientation_quirks.c 2024-10-30 16:22:11.846346633 +0000
@@ -147,6 +147,12 @@ static const struct drm_dmi_panel_orient
.orientation = DRM_MODE_PANEL_ORIENTATION_RIGHT_UP,
};
@@ -31,10 +31,10 @@ diff -rupN linux.orig/drivers/gpu/drm/drm_panel_orientation_quirks.c linux/drive
.matches = {
DMI_EXACT_MATCH(DMI_SYS_VENDOR, "AYANEO"),
DMI_MATCH(DMI_PRODUCT_NAME, "AIR"),
-@@ -202,6 +208,36 @@ static const struct dmi_system_id orient
- DMI_MATCH(DMI_BOARD_NAME, "NEXT"),
+@@ -220,6 +226,36 @@ static const struct dmi_system_id orient
+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Loki Zero"),
},
- .driver_data = (void *)&lcd800x1280_rightside_up,
+ .driver_data = (void *)&lcd1080x1920_leftside_up,
+ }, { /* AYA NEO GEEK */
+ .matches = {
+ DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "AYANEO"),
@@ -64,11 +64,11 @@ diff -rupN linux.orig/drivers/gpu/drm/drm_panel_orientation_quirks.c linux/drive
+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "ayn"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "Loki"),
+ },
-+ .driver_data = (void *)&lcd1080x1920_leftside_up,
++ .driver_data = (void *)&lcd1080x1920_leftside_up
}, { /* Chuwi HiBook (CWI514) */
.matches = {
DMI_MATCH(DMI_BOARD_VENDOR, "Hampoo"),
-@@ -351,6 +387,7 @@ static const struct dmi_system_id orient
+@@ -369,6 +405,7 @@ static const struct dmi_system_id orient
}, { /* Lenovo Legion Go 8APU1 */
.matches = {
DMI_EXACT_MATCH(DMI_SYS_VENDOR, "LENOVO"),
@@ -76,16 +76,16 @@ diff -rupN linux.orig/drivers/gpu/drm/drm_panel_orientation_quirks.c linux/drive
DMI_EXACT_MATCH(DMI_PRODUCT_VERSION, "Legion Go 8APU1"),
},
.driver_data = (void *)&lcd1600x2560_leftside_up,
-@@ -408,6 +445,12 @@ static const struct dmi_system_id orient
- DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "ONE XPLAYER"),
+@@ -432,6 +469,12 @@ static const struct dmi_system_id orient
+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "NEO-01"),
},
- .driver_data = (void *)&lcd1600x2560_leftside_up,
+ .driver_data = (void *)&lcd1200x1920_rightside_up,
+ }, { /* OneXPlayer2 */
+ .matches = {
+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "ONE-NETBOOK"),
+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "ONEXPLAYER 2 ARP23"),
+ },
-+ .driver_data = (void *)&lcd1600x2560_leftside_up,
++ .driver_data = (void *)&lcd1600x2560_leftside_up
}, { /* Samsung GalaxyBook 10.6 */
.matches = {
DMI_EXACT_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."),
diff --git a/packages/kernel/linux/patches/AMD64/003-steamdeck-acpi.patch b/projects/PC/patches/linux/AMD64/003-steamdeck-acpi.patch
similarity index 100%
rename from packages/kernel/linux/patches/AMD64/003-steamdeck-acpi.patch
rename to projects/PC/patches/linux/AMD64/003-steamdeck-acpi.patch
diff --git a/packages/kernel/linux/patches/AMD64/005-winmax2-gyro.patch b/projects/PC/patches/linux/AMD64/005-winmax2-gyro.patch
similarity index 100%
rename from packages/kernel/linux/patches/AMD64/005-winmax2-gyro.patch
rename to projects/PC/patches/linux/AMD64/005-winmax2-gyro.patch
diff --git a/packages/kernel/linux/patches/AMD64/009-ayaneo-audio.patch b/projects/PC/patches/linux/AMD64/009-ayaneo-audio.patch
similarity index 71%
rename from packages/kernel/linux/patches/AMD64/009-ayaneo-audio.patch
rename to projects/PC/patches/linux/AMD64/009-ayaneo-audio.patch
index d8ce9fe35e..b9bf45dd5a 100644
--- a/packages/kernel/linux/patches/AMD64/009-ayaneo-audio.patch
+++ b/projects/PC/patches/linux/AMD64/009-ayaneo-audio.patch
@@ -1,7 +1,7 @@
-diff -rupN linux-6.7-rc8.orig/sound/pci/hda/patch_realtek.c linux-6.7-rc8.hda/sound/pci/hda/patch_realtek.c
---- linux-6.7-rc8.orig/sound/pci/hda/patch_realtek.c 2024-01-04 23:15:10.710503820 +0000
-+++ linux-6.7-rc8.hda/sound/pci/hda/patch_realtek.c 2024-01-04 23:23:29.598266931 +0000
-@@ -6550,6 +6550,20 @@ static void alc294_gx502_toggle_output(s
+diff -rupbN linux.orig/sound/pci/hda/patch_realtek.c linux/sound/pci/hda/patch_realtek.c
+--- linux.orig/sound/pci/hda/patch_realtek.c 2024-10-30 16:13:38.313873014 +0000
++++ linux/sound/pci/hda/patch_realtek.c 2024-10-30 16:28:17.046023038 +0000
+@@ -6723,6 +6723,20 @@ static void alc294_gx502_toggle_output(s
alc_write_coef_idx(codec, 0x10, 0x0a20);
}
@@ -22,7 +22,7 @@ diff -rupN linux-6.7-rc8.orig/sound/pci/hda/patch_realtek.c linux-6.7-rc8.hda/so
static void alc294_fixup_gx502_hp(struct hda_codec *codec,
const struct hda_fixup *fix, int action)
{
-@@ -7235,6 +7249,7 @@ enum {
+@@ -7515,6 +7529,7 @@ enum {
ALC269_FIXUP_DELL3_MIC_NO_PRESENCE,
ALC269_FIXUP_DELL4_MIC_NO_PRESENCE,
ALC269_FIXUP_DELL4_MIC_NO_PRESENCE_QUIET,
@@ -30,7 +30,7 @@ diff -rupN linux-6.7-rc8.orig/sound/pci/hda/patch_realtek.c linux-6.7-rc8.hda/so
ALC269_FIXUP_HEADSET_MODE,
ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC,
ALC269_FIXUP_ASPIRE_HEADSET_MIC,
-@@ -8391,6 +8406,10 @@ static const struct hda_fixup alc269_fix
+@@ -8764,6 +8779,10 @@ static const struct hda_fixup alc269_fix
.chained = true,
.chain_id = ALC256_FIXUP_ASUS_HEADSET_MODE
},
@@ -41,12 +41,12 @@ diff -rupN linux-6.7-rc8.orig/sound/pci/hda/patch_realtek.c linux-6.7-rc8.hda/so
[ALC256_FIXUP_ASUS_AIO_GPIO2] = {
.type = HDA_FIXUP_FUNC,
/* Set up GPIO2 for the speaker amp */
-@@ -10283,6 +10302,8 @@ static const struct snd_pci_quirk alc269
+@@ -10956,6 +10975,8 @@ static const struct snd_pci_quirk alc269
SND_PCI_QUIRK(0x1d72, 0x1901, "RedmiBook 14", ALC256_FIXUP_ASUS_HEADSET_MIC),
SND_PCI_QUIRK(0x1d72, 0x1945, "Redmi G", ALC256_FIXUP_ASUS_HEADSET_MIC),
SND_PCI_QUIRK(0x1d72, 0x1947, "RedmiBook Air", ALC255_FIXUP_XIAOMI_HEADSET_MIC),
+ SND_PCI_QUIRK(0x1f66, 0x0101, "AYANEO Devices", ALC269_FIXUP_HEADSET_AYANEO_DEVICES),
+ SND_PCI_QUIRK(0x1f66, 0x0103, "AYANEO Air Plus", ALC269_FIXUP_HEADSET_AYANEO_DEVICES),
+ SND_PCI_QUIRK(0x2782, 0x0214, "VAIO VJFE-CL", ALC269_FIXUP_LIMIT_INT_MIC_BOOST),
SND_PCI_QUIRK(0x2782, 0x0232, "CHUWI CoreBook XPro", ALC269VB_FIXUP_CHUWI_COREBOOK_XPRO),
- SND_PCI_QUIRK(0x8086, 0x2074, "Intel NUC 8", ALC233_FIXUP_INTEL_NUC8_DMIC),
- SND_PCI_QUIRK(0x8086, 0x2080, "Intel NUC 8 Rugged", ALC256_FIXUP_INTEL_NUC8_RUGGED),
+ SND_PCI_QUIRK(0x2782, 0x1707, "Vaio VJFE-ADL", ALC298_FIXUP_SPK_VOLUME),
diff --git a/projects/Qualcomm/config/kernel-firmware.dat b/projects/Qualcomm/config/kernel-firmware.dat
index 84fd4b401b..4b99b30a23 100644
--- a/projects/Qualcomm/config/kernel-firmware.dat
+++ b/projects/Qualcomm/config/kernel-firmware.dat
@@ -1,3 +1,21 @@
-qcom*
-ath11k*
-qca*
+# DRM_MSM
+qcom/a650_gmu.bin
+qcom/a650_sqe.fw
+qcom/sm8250/a650_zap.mbn
+
+# QCOM_Q6V5_PAS
+qcom/sm8250/adsp.mbn
+qcom/sm8250/cdsp.mbn
+
+# VIDEO_QCOM_VENUS
+qcom/vpu-1.0/venus.mbn
+
+# ATH11K
+ath11k/QCA6390/hw2.0/*.bin
+
+# BT_HCIUART_QCA
+qca/htbtfw20.tlv
+qca/htnv20.bin
+
+# RTL USB ETHERNET
+rtl_nic/rtl8153a-4.fw
diff --git a/projects/Qualcomm/devices/SD865/bootloader/grub b/projects/Qualcomm/devices/SD865/bootloader/grub
index a383e2fb20..21ebce75f4 100755
--- a/projects/Qualcomm/devices/SD865/bootloader/grub
+++ b/projects/Qualcomm/devices/SD865/bootloader/grub
@@ -6,15 +6,15 @@ source ${PROJECT_DIR}/${PROJECT}/devices/${DEVICE}/options
cat << EOF > "${LE_TMP}/grub.cfg"
set timeout=""
set default=""
+menuentry "Retroid Pocket 5" {
+ search --set -f /KERNEL
+ linux /KERNEL boot=LABEL=${DISTRO_BOOTLABEL} disk=LABEL=${DISTRO_DISKLABEL} grub_portable ${EXTRA_CMDLINE} fbcon=rotate:3
+ devicetree /${DEVICE_DTB[1]}.dtb
+}
menuentry "Retroid Pocket Mini" {
search --set -f /KERNEL
- linux /KERNEL boot=LABEL=${DISTRO_BOOTLABEL} disk=LABEL=${DISTRO_DISKLABEL} grub_portable ${EXTRA_CMDLINE}
+ linux /KERNEL boot=LABEL=${DISTRO_BOOTLABEL} disk=LABEL=${DISTRO_DISKLABEL} grub_portable ${EXTRA_CMDLINE} fbcon=rotate:1
devicetree /${DEVICE_DTB[0]}.dtb
}
-menuentry "Retroid Pocket 5" {
- search --set -f /KERNEL
- linux /KERNEL boot=LABEL=${DISTRO_BOOTLABEL} disk=LABEL=${DISTRO_DISKLABEL} grub_portable ${EXTRA_CMDLINE}
- devicetree /${DEVICE_DTB[1]}.dtb
-}
EOF
diff --git a/projects/Qualcomm/devices/SD865/filesystem/usr/bin/set-mac b/projects/Qualcomm/devices/SD865/filesystem/usr/bin/set-mac
new file mode 100755
index 0000000000..0ba6cac4fc
--- /dev/null
+++ b/projects/Qualcomm/devices/SD865/filesystem/usr/bin/set-mac
@@ -0,0 +1,14 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0
+# Copyright (C) 2024-present ROCKNIX (https://github.com/ROCKNIX)
+
+# Read SoC serial
+MAC="$(cat /sys/devices/soc0/serial_number)"
+# Format into MAC address format
+WLAN_MAC="$(echo 00:03:7F:${MAC:4:2}:${MAC:6:2}:${MAC:8:2})"
+BT_MAC="$(echo 00:03:7F:${MAC:8:2}:${MAC:6:2}:${MAC:4:2})"
+
+ip link set wlan0 down
+ip link set wlan0 address "${WLAN_MAC}"
+ip link set wlan0 up
+bluetoothctl mgmt.public-addr "${BT_MAC}"
diff --git a/projects/Qualcomm/devices/SD865/filesystem/usr/lib/udev/rules.d/10-set-mac.rules b/projects/Qualcomm/devices/SD865/filesystem/usr/lib/udev/rules.d/10-set-mac.rules
new file mode 100644
index 0000000000..e56aa8ce4b
--- /dev/null
+++ b/projects/Qualcomm/devices/SD865/filesystem/usr/lib/udev/rules.d/10-set-mac.rules
@@ -0,0 +1 @@
+ACTION=="add", SUBSYSTEM=="net", ENV{INTERFACE}=="wlan0", RUN+="/usr/bin/set-mac"
diff --git a/projects/Qualcomm/devices/SD865/linux/linux.aarch64.conf b/projects/Qualcomm/devices/SD865/linux/linux.aarch64.conf
index 2590192692..52e9bbc025 100644
--- a/projects/Qualcomm/devices/SD865/linux/linux.aarch64.conf
+++ b/projects/Qualcomm/devices/SD865/linux/linux.aarch64.conf
@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
-# Linux/arm64 6.11.4 Kernel Configuration
+# Linux/arm64 6.11.6 Kernel Configuration
#
CONFIG_CC_VERSION_TEXT="aarch64-rocknix-linux-gnueabi-gcc-14.2.0 (GCC) 14.2.0"
CONFIG_CC_IS_GCC=y
@@ -1482,10 +1482,10 @@ CONFIG_DNS_RESOLVER=y
# CONFIG_HSR is not set
CONFIG_NET_SWITCHDEV=y
# CONFIG_NET_L3_MASTER_DEV is not set
-CONFIG_QRTR=m
-CONFIG_QRTR_SMD=m
+CONFIG_QRTR=y
+CONFIG_QRTR_SMD=y
CONFIG_QRTR_TUN=m
-CONFIG_QRTR_MHI=m
+CONFIG_QRTR_MHI=y
# CONFIG_NET_NCSI is not set
CONFIG_PCPU_DEV_REFCNT=y
CONFIG_MAX_SKB_FRAGS=17
@@ -1508,12 +1508,7 @@ CONFIG_NET_FLOW_LIMIT=y
# end of Networking options
# CONFIG_HAMRADIO is not set
-CONFIG_CAN=m
-CONFIG_CAN_RAW=m
-CONFIG_CAN_BCM=m
-CONFIG_CAN_GW=m
-# CONFIG_CAN_J1939 is not set
-# CONFIG_CAN_ISOTP is not set
+# CONFIG_CAN is not set
CONFIG_BT=m
CONFIG_BT_BREDR=y
# CONFIG_BT_RFCOMM is not set
@@ -1530,17 +1525,8 @@ CONFIG_BT_LEDS=y
#
# Bluetooth device drivers
#
-CONFIG_BT_INTEL=m
-CONFIG_BT_BCM=m
-CONFIG_BT_RTL=m
CONFIG_BT_QCA=m
-CONFIG_BT_MTK=m
-CONFIG_BT_HCIBTUSB=m
-# CONFIG_BT_HCIBTUSB_AUTOSUSPEND is not set
-CONFIG_BT_HCIBTUSB_POLL_SYNC=y
-CONFIG_BT_HCIBTUSB_BCM=y
-CONFIG_BT_HCIBTUSB_MTK=y
-CONFIG_BT_HCIBTUSB_RTL=y
+# CONFIG_BT_HCIBTUSB is not set
# CONFIG_BT_HCIBTSDIO is not set
CONFIG_BT_HCIUART=m
CONFIG_BT_HCIUART_SERDEV=y
@@ -1551,24 +1537,22 @@ CONFIG_BT_HCIUART_H4=y
CONFIG_BT_HCIUART_LL=y
# CONFIG_BT_HCIUART_3WIRE is not set
# CONFIG_BT_HCIUART_INTEL is not set
-CONFIG_BT_HCIUART_BCM=y
+# CONFIG_BT_HCIUART_BCM is not set
# CONFIG_BT_HCIUART_RTL is not set
CONFIG_BT_HCIUART_QCA=y
# CONFIG_BT_HCIUART_AG6XX is not set
-CONFIG_BT_HCIUART_MRVL=y
+# CONFIG_BT_HCIUART_MRVL is not set
# CONFIG_BT_HCIBCM203X is not set
# CONFIG_BT_HCIBCM4377 is not set
# CONFIG_BT_HCIBPA10X is not set
# CONFIG_BT_HCIBFUSB is not set
# CONFIG_BT_HCIVHCI is not set
-CONFIG_BT_MRVL=m
-CONFIG_BT_MRVL_SDIO=m
-# CONFIG_BT_ATH3K is not set
+# CONFIG_BT_MRVL is not set
# CONFIG_BT_MTKSDIO is not set
# CONFIG_BT_MTKUART is not set
-CONFIG_BT_QCOMSMD=m
+# CONFIG_BT_QCOMSMD is not set
# CONFIG_BT_VIRTIO is not set
-CONFIG_BT_NXPUART=m
+# CONFIG_BT_NXPUART is not set
# CONFIG_BT_INTEL_PCIE is not set
# end of Bluetooth device drivers
@@ -1606,36 +1590,13 @@ CONFIG_NET_9P_VIRTIO=y
# CONFIG_NET_9P_DEBUG is not set
# CONFIG_CAIF is not set
# CONFIG_CEPH_LIB is not set
-CONFIG_NFC=m
-# CONFIG_NFC_DIGITAL is not set
-CONFIG_NFC_NCI=m
-# CONFIG_NFC_NCI_SPI is not set
-# CONFIG_NFC_NCI_UART is not set
-# CONFIG_NFC_HCI is not set
-
-#
-# Near Field Communication (NFC) devices
-#
-# CONFIG_NFC_VIRTUAL_NCI is not set
-# CONFIG_NFC_FDP is not set
-# CONFIG_NFC_PN533_USB is not set
-# CONFIG_NFC_PN533_I2C is not set
-# CONFIG_NFC_PN532_UART is not set
-# CONFIG_NFC_MRVL_USB is not set
-# CONFIG_NFC_ST_NCI_I2C is not set
-# CONFIG_NFC_ST_NCI_SPI is not set
-# CONFIG_NFC_NXP_NCI is not set
-CONFIG_NFC_S3FWRN5=m
-CONFIG_NFC_S3FWRN5_I2C=m
-# CONFIG_NFC_S3FWRN82_UART is not set
-# end of Near Field Communication (NFC) devices
-
+# CONFIG_NFC is not set
# CONFIG_PSAMPLE is not set
# CONFIG_NET_IFE is not set
# CONFIG_LWTUNNEL is not set
CONFIG_DST_CACHE=y
CONFIG_GRO_CELLS=y
-CONFIG_NET_SELFTESTS=y
+CONFIG_NET_SELFTESTS=m
CONFIG_NET_SOCK_MSG=y
CONFIG_NET_DEVLINK=y
CONFIG_PAGE_POOL=y
@@ -1804,7 +1765,7 @@ CONFIG_REGMAP_SPI=y
CONFIG_REGMAP_SPMI=y
CONFIG_REGMAP_MMIO=y
CONFIG_REGMAP_IRQ=y
-CONFIG_REGMAP_SOUNDWIRE=m
+CONFIG_REGMAP_SOUNDWIRE=y
CONFIG_DMA_SHARED_BUFFER=y
# CONFIG_DMA_FENCE_TRACE is not set
CONFIG_GENERIC_ARCH_TOPOLOGY=y
@@ -1821,7 +1782,7 @@ CONFIG_ARM_CCI400_COMMON=y
CONFIG_QCOM_EBI2=y
# CONFIG_QCOM_SSC_BLOCK_BUS is not set
CONFIG_VEXPRESS_CONFIG=y
-CONFIG_MHI_BUS=m
+CONFIG_MHI_BUS=y
# CONFIG_MHI_BUS_DEBUG is not set
CONFIG_MHI_BUS_PCI_GENERIC=m
# CONFIG_MHI_BUS_EP is not set
@@ -2146,7 +2107,7 @@ CONFIG_BLK_DEV_NVME=m
# CONFIG_HI6421V600_IRQ is not set
# CONFIG_HP_ILO is not set
CONFIG_QCOM_COINCELL=m
-CONFIG_QCOM_FASTRPC=m
+CONFIG_QCOM_FASTRPC=y
# CONFIG_APDS9802ALS is not set
# CONFIG_ISL29003 is not set
# CONFIG_ISL29020 is not set
@@ -2443,7 +2404,7 @@ CONFIG_DM_ZERO=m
# end of IEEE 1394 (FireWire) support
CONFIG_NETDEVICES=y
-CONFIG_MII=y
+CONFIG_MII=m
CONFIG_NET_CORE=y
# CONFIG_BONDING is not set
# CONFIG_DUMMY is not set
@@ -2490,8 +2451,6 @@ CONFIG_NET_DSA_BCM_SF2=m
# CONFIG_NET_DSA_MV88E6060 is not set
# CONFIG_NET_DSA_MICROCHIP_KSZ_COMMON is not set
# CONFIG_NET_DSA_MV88E6XXX is not set
-# CONFIG_NET_DSA_MSCC_OCELOT_EXT is not set
-# CONFIG_NET_DSA_MSCC_SEVILLE is not set
# CONFIG_NET_DSA_AR9331 is not set
# CONFIG_NET_DSA_QCA8K is not set
# CONFIG_NET_DSA_SJA1105 is not set
@@ -2505,255 +2464,93 @@ CONFIG_NET_DSA_BCM_SF2=m
# end of Distributed Switch Architecture drivers
CONFIG_ETHERNET=y
-CONFIG_MDIO=m
-CONFIG_NET_VENDOR_3COM=y
-# CONFIG_VORTEX is not set
-# CONFIG_TYPHOON is not set
-CONFIG_NET_VENDOR_ADAPTEC=y
-# CONFIG_ADAPTEC_STARFIRE is not set
-CONFIG_NET_VENDOR_AGERE=y
-# CONFIG_ET131X is not set
-CONFIG_NET_VENDOR_ALACRITECH=y
-# CONFIG_SLICOSS is not set
-CONFIG_NET_VENDOR_ALTEON=y
-# CONFIG_ACENIC is not set
+# CONFIG_NET_VENDOR_3COM is not set
+# CONFIG_NET_VENDOR_ADAPTEC is not set
+# CONFIG_NET_VENDOR_AGERE is not set
+# CONFIG_NET_VENDOR_ALACRITECH is not set
+# CONFIG_NET_VENDOR_ALTEON is not set
# CONFIG_ALTERA_TSE is not set
-CONFIG_NET_VENDOR_AMAZON=y
-# CONFIG_ENA_ETHERNET is not set
-CONFIG_NET_VENDOR_AMD=y
-# CONFIG_AMD8111_ETH is not set
-# CONFIG_PCNET32 is not set
-CONFIG_AMD_XGBE=y
-# CONFIG_PDS_CORE is not set
-CONFIG_NET_VENDOR_AQUANTIA=y
-# CONFIG_AQTION is not set
-CONFIG_NET_VENDOR_ARC=y
-CONFIG_NET_VENDOR_ASIX=y
-# CONFIG_SPI_AX88796C is not set
-CONFIG_NET_VENDOR_ATHEROS=y
-# CONFIG_ATL2 is not set
-# CONFIG_ATL1 is not set
-# CONFIG_ATL1E is not set
-CONFIG_ATL1C=m
-# CONFIG_ALX is not set
-CONFIG_NET_VENDOR_BROADCOM=y
-# CONFIG_B44 is not set
-CONFIG_BCMGENET=m
-# CONFIG_BNX2 is not set
-# CONFIG_CNIC is not set
-# CONFIG_TIGON3 is not set
-CONFIG_BNX2X=m
-CONFIG_BNX2X_SRIOV=y
-CONFIG_SYSTEMPORT=m
-# CONFIG_BNXT is not set
-CONFIG_NET_VENDOR_CADENCE=y
-CONFIG_MACB=y
-CONFIG_MACB_USE_HWSTAMP=y
-# CONFIG_MACB_PCI is not set
-CONFIG_NET_VENDOR_CAVIUM=y
-CONFIG_THUNDER_NIC_PF=y
-# CONFIG_THUNDER_NIC_VF is not set
-CONFIG_THUNDER_NIC_BGX=y
-CONFIG_THUNDER_NIC_RGX=y
-# CONFIG_CAVIUM_PTP is not set
-# CONFIG_LIQUIDIO is not set
-# CONFIG_LIQUIDIO_VF is not set
-CONFIG_NET_VENDOR_CHELSIO=y
-# CONFIG_CHELSIO_T1 is not set
-# CONFIG_CHELSIO_T3 is not set
-# CONFIG_CHELSIO_T4 is not set
-# CONFIG_CHELSIO_T4VF is not set
-CONFIG_NET_VENDOR_CISCO=y
-# CONFIG_ENIC is not set
-CONFIG_NET_VENDOR_CORTINA=y
-# CONFIG_GEMINI_ETHERNET is not set
-CONFIG_NET_VENDOR_DAVICOM=y
-# CONFIG_DM9051 is not set
+# CONFIG_NET_VENDOR_AMAZON is not set
+# CONFIG_NET_VENDOR_AMD is not set
+# CONFIG_NET_VENDOR_AQUANTIA is not set
+# CONFIG_NET_VENDOR_ARC is not set
+# CONFIG_NET_VENDOR_ASIX is not set
+# CONFIG_NET_VENDOR_ATHEROS is not set
+# CONFIG_NET_VENDOR_BROADCOM is not set
+# CONFIG_NET_VENDOR_CADENCE is not set
+# CONFIG_NET_VENDOR_CAVIUM is not set
+# CONFIG_NET_VENDOR_CHELSIO is not set
+# CONFIG_NET_VENDOR_CISCO is not set
+# CONFIG_NET_VENDOR_CORTINA is not set
+# CONFIG_NET_VENDOR_DAVICOM is not set
# CONFIG_DNET is not set
-CONFIG_NET_VENDOR_DEC=y
-# CONFIG_NET_TULIP is not set
-CONFIG_NET_VENDOR_DLINK=y
-# CONFIG_DL2K is not set
-# CONFIG_SUNDANCE is not set
-CONFIG_NET_VENDOR_EMULEX=y
-# CONFIG_BE2NET is not set
-CONFIG_NET_VENDOR_ENGLEDER=y
-# CONFIG_TSNEP is not set
-CONFIG_NET_VENDOR_EZCHIP=y
-# CONFIG_EZCHIP_NPS_MANAGEMENT_ENET is not set
-CONFIG_NET_VENDOR_FUNGIBLE=y
-# CONFIG_FUN_ETH is not set
-CONFIG_NET_VENDOR_GOOGLE=y
-# CONFIG_GVE is not set
-CONFIG_NET_VENDOR_HISILICON=y
-CONFIG_HIX5HD2_GMAC=y
-# CONFIG_HISI_FEMAC is not set
-# CONFIG_HIP04_ETH is not set
-CONFIG_HNS_MDIO=y
-CONFIG_HNS=y
-CONFIG_HNS_DSAF=y
-CONFIG_HNS_ENET=y
-CONFIG_HNS3=y
-CONFIG_HNS3_HCLGE=y
-# CONFIG_HNS3_HCLGEVF is not set
-CONFIG_HNS3_ENET=y
-CONFIG_NET_VENDOR_HUAWEI=y
-# CONFIG_HINIC is not set
-CONFIG_NET_VENDOR_I825XX=y
-CONFIG_NET_VENDOR_INTEL=y
-# CONFIG_E100 is not set
-CONFIG_E1000=y
-CONFIG_E1000E=y
-CONFIG_IGB=y
-CONFIG_IGB_HWMON=y
-CONFIG_IGBVF=y
-# CONFIG_IXGBE is not set
-# CONFIG_IXGBEVF is not set
-# CONFIG_I40E is not set
-# CONFIG_I40EVF is not set
-# CONFIG_ICE is not set
-# CONFIG_FM10K is not set
-# CONFIG_IGC is not set
-# CONFIG_IDPF is not set
+# CONFIG_NET_VENDOR_DEC is not set
+# CONFIG_NET_VENDOR_DLINK is not set
+# CONFIG_NET_VENDOR_EMULEX is not set
+# CONFIG_NET_VENDOR_ENGLEDER is not set
+# CONFIG_NET_VENDOR_EZCHIP is not set
+# CONFIG_NET_VENDOR_FUNGIBLE is not set
+# CONFIG_NET_VENDOR_GOOGLE is not set
+# CONFIG_NET_VENDOR_HISILICON is not set
+# CONFIG_NET_VENDOR_HUAWEI is not set
+# CONFIG_NET_VENDOR_INTEL is not set
# CONFIG_JME is not set
-CONFIG_NET_VENDOR_ADI=y
-# CONFIG_ADIN1110 is not set
-CONFIG_NET_VENDOR_LITEX=y
-# CONFIG_LITEX_LITEETH is not set
-CONFIG_NET_VENDOR_MARVELL=y
-CONFIG_MVMDIO=y
-# CONFIG_SKGE is not set
-CONFIG_SKY2=y
-# CONFIG_SKY2_DEBUG is not set
-# CONFIG_OCTEONTX2_AF is not set
-# CONFIG_OCTEONTX2_PF is not set
-# CONFIG_OCTEON_EP is not set
-# CONFIG_OCTEON_EP_VF is not set
-# CONFIG_PRESTERA is not set
+# CONFIG_NET_VENDOR_ADI is not set
+# CONFIG_NET_VENDOR_LITEX is not set
+# CONFIG_NET_VENDOR_MARVELL is not set
# CONFIG_NET_VENDOR_MELLANOX is not set
-CONFIG_NET_VENDOR_META=y
-CONFIG_NET_VENDOR_MICREL=y
-# CONFIG_KS8842 is not set
-# CONFIG_KS8851 is not set
-# CONFIG_KS8851_MLL is not set
-# CONFIG_KSZ884X_PCI is not set
-CONFIG_NET_VENDOR_MICROCHIP=y
-# CONFIG_ENC28J60 is not set
-# CONFIG_ENCX24J600 is not set
-# CONFIG_LAN743X is not set
-# CONFIG_LAN966X_SWITCH is not set
-# CONFIG_VCAP is not set
-CONFIG_NET_VENDOR_MICROSEMI=y
-# CONFIG_MSCC_OCELOT_SWITCH is not set
-CONFIG_NET_VENDOR_MICROSOFT=y
-CONFIG_NET_VENDOR_MYRI=y
-# CONFIG_MYRI10GE is not set
+# CONFIG_NET_VENDOR_META is not set
+# CONFIG_NET_VENDOR_MICREL is not set
+# CONFIG_NET_VENDOR_MICROCHIP is not set
+# CONFIG_NET_VENDOR_MICROSEMI is not set
+# CONFIG_NET_VENDOR_MICROSOFT is not set
+# CONFIG_NET_VENDOR_MYRI is not set
# CONFIG_FEALNX is not set
-CONFIG_NET_VENDOR_NI=y
-# CONFIG_NI_XGE_MANAGEMENT_ENET is not set
-CONFIG_NET_VENDOR_NATSEMI=y
-# CONFIG_NATSEMI is not set
-# CONFIG_NS83820 is not set
-CONFIG_NET_VENDOR_NETERION=y
-# CONFIG_S2IO is not set
-CONFIG_NET_VENDOR_NETRONOME=y
-# CONFIG_NFP is not set
-CONFIG_NET_VENDOR_8390=y
-# CONFIG_NE2K_PCI is not set
-CONFIG_NET_VENDOR_NVIDIA=y
-# CONFIG_FORCEDETH is not set
-CONFIG_NET_VENDOR_OKI=y
+# CONFIG_NET_VENDOR_NI is not set
+# CONFIG_NET_VENDOR_NATSEMI is not set
+# CONFIG_NET_VENDOR_NETERION is not set
+# CONFIG_NET_VENDOR_NETRONOME is not set
+# CONFIG_NET_VENDOR_NVIDIA is not set
+# CONFIG_NET_VENDOR_OKI is not set
# CONFIG_ETHOC is not set
-CONFIG_NET_VENDOR_PACKET_ENGINES=y
-# CONFIG_HAMACHI is not set
-# CONFIG_YELLOWFIN is not set
-CONFIG_NET_VENDOR_PENSANDO=y
-# CONFIG_IONIC is not set
-CONFIG_NET_VENDOR_QLOGIC=y
-# CONFIG_QLA3XXX is not set
-# CONFIG_QLCNIC is not set
-# CONFIG_NETXEN_NIC is not set
-# CONFIG_QED is not set
-CONFIG_NET_VENDOR_BROCADE=y
-# CONFIG_BNA is not set
-CONFIG_NET_VENDOR_QUALCOMM=y
-# CONFIG_QCA7000_SPI is not set
-# CONFIG_QCA7000_UART is not set
-CONFIG_QCOM_EMAC=m
-CONFIG_RMNET=m
-CONFIG_NET_VENDOR_RDC=y
-# CONFIG_R6040 is not set
+# CONFIG_NET_VENDOR_PACKET_ENGINES is not set
+# CONFIG_NET_VENDOR_PENSANDO is not set
+# CONFIG_NET_VENDOR_QLOGIC is not set
+# CONFIG_NET_VENDOR_BROCADE is not set
+# CONFIG_NET_VENDOR_QUALCOMM is not set
+# CONFIG_NET_VENDOR_RDC is not set
CONFIG_NET_VENDOR_REALTEK=y
# CONFIG_8139CP is not set
# CONFIG_8139TOO is not set
CONFIG_R8169=m
-CONFIG_NET_VENDOR_RENESAS=y
-CONFIG_NET_VENDOR_ROCKER=y
-# CONFIG_ROCKER is not set
-CONFIG_NET_VENDOR_SAMSUNG=y
-# CONFIG_SXGBE_ETH is not set
-CONFIG_NET_VENDOR_SEEQ=y
-CONFIG_NET_VENDOR_SILAN=y
-# CONFIG_SC92031 is not set
-CONFIG_NET_VENDOR_SIS=y
-# CONFIG_SIS900 is not set
-# CONFIG_SIS190 is not set
-CONFIG_NET_VENDOR_SOLARFLARE=y
-# CONFIG_SFC is not set
-# CONFIG_SFC_FALCON is not set
-# CONFIG_SFC_SIENA is not set
-CONFIG_NET_VENDOR_SMSC=y
-CONFIG_SMC91X=y
-# CONFIG_EPIC100 is not set
-CONFIG_SMSC911X=y
-# CONFIG_SMSC9420 is not set
-CONFIG_NET_VENDOR_SOCIONEXT=y
-CONFIG_NET_VENDOR_STMICRO=y
-CONFIG_STMMAC_ETH=m
-# CONFIG_STMMAC_SELFTESTS is not set
-CONFIG_STMMAC_PLATFORM=m
-# CONFIG_DWMAC_DWC_QOS_ETH is not set
-CONFIG_DWMAC_GENERIC=m
-CONFIG_DWMAC_IPQ806X=m
-CONFIG_DWMAC_QCOM_ETHQOS=m
-# CONFIG_DWMAC_INTEL_PLAT is not set
-# CONFIG_STMMAC_PCI is not set
-CONFIG_NET_VENDOR_SUN=y
-# CONFIG_HAPPYMEAL is not set
-# CONFIG_SUNGEM is not set
-# CONFIG_CASSINI is not set
-# CONFIG_NIU is not set
-CONFIG_NET_VENDOR_SYNOPSYS=y
-# CONFIG_DWC_XLGMAC is not set
-CONFIG_NET_VENDOR_TEHUTI=y
-# CONFIG_TEHUTI is not set
-# CONFIG_TEHUTI_TN40 is not set
-CONFIG_NET_VENDOR_TI=y
-# CONFIG_TI_CPSW_PHY_SEL is not set
-# CONFIG_TLAN is not set
-CONFIG_NET_VENDOR_VERTEXCOM=y
-# CONFIG_MSE102X is not set
-CONFIG_NET_VENDOR_VIA=y
-# CONFIG_VIA_RHINE is not set
-# CONFIG_VIA_VELOCITY is not set
-CONFIG_NET_VENDOR_WANGXUN=y
-# CONFIG_NGBE is not set
-# CONFIG_TXGBE is not set
-CONFIG_NET_VENDOR_WIZNET=y
-# CONFIG_WIZNET_W5100 is not set
-# CONFIG_WIZNET_W5300 is not set
-CONFIG_NET_VENDOR_XILINX=y
-# CONFIG_XILINX_EMACLITE is not set
-# CONFIG_XILINX_LL_TEMAC is not set
+# CONFIG_NET_VENDOR_RENESAS is not set
+# CONFIG_NET_VENDOR_ROCKER is not set
+# CONFIG_NET_VENDOR_SAMSUNG is not set
+# CONFIG_NET_VENDOR_SEEQ is not set
+# CONFIG_NET_VENDOR_SILAN is not set
+# CONFIG_NET_VENDOR_SIS is not set
+# CONFIG_NET_VENDOR_SOLARFLARE is not set
+# CONFIG_NET_VENDOR_SMSC is not set
+# CONFIG_NET_VENDOR_SOCIONEXT is not set
+# CONFIG_NET_VENDOR_STMICRO is not set
+# CONFIG_NET_VENDOR_SUN is not set
+# CONFIG_NET_VENDOR_SYNOPSYS is not set
+# CONFIG_NET_VENDOR_TEHUTI is not set
+# CONFIG_NET_VENDOR_TI is not set
+# CONFIG_NET_VENDOR_VERTEXCOM is not set
+# CONFIG_NET_VENDOR_VIA is not set
+# CONFIG_NET_VENDOR_WANGXUN is not set
+# CONFIG_NET_VENDOR_WIZNET is not set
+# CONFIG_NET_VENDOR_XILINX is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
-CONFIG_QCOM_IPA=m
-CONFIG_PHYLINK=y
-CONFIG_PHYLIB=y
+# CONFIG_QCOM_IPA is not set
+CONFIG_PHYLINK=m
+CONFIG_PHYLIB=m
CONFIG_SWPHY=y
# CONFIG_LED_TRIGGER_PHY is not set
CONFIG_PHYLIB_LEDS=y
-CONFIG_FIXED_PHY=y
+CONFIG_FIXED_PHY=m
# CONFIG_SFP is not set
#
@@ -2763,10 +2560,10 @@ CONFIG_FIXED_PHY=y
# CONFIG_AMD_PHY is not set
# CONFIG_ADIN_PHY is not set
# CONFIG_ADIN1100_PHY is not set
-CONFIG_AQUANTIA_PHY=y
+# CONFIG_AQUANTIA_PHY is not set
CONFIG_AX88796B_PHY=m
-CONFIG_BROADCOM_PHY=m
-CONFIG_BCM54140_PHY=m
+# CONFIG_BROADCOM_PHY is not set
+# CONFIG_BCM54140_PHY is not set
CONFIG_BCM7XXX_PHY=m
# CONFIG_BCM84881_PHY is not set
# CONFIG_BCM87XX_PHY is not set
@@ -2778,127 +2575,72 @@ CONFIG_BCM_NET_PHYLIB=m
# CONFIG_LXT_PHY is not set
# CONFIG_INTEL_XWAY_PHY is not set
# CONFIG_LSI_ET1011C_PHY is not set
-CONFIG_MARVELL_PHY=m
-CONFIG_MARVELL_10G_PHY=y
-CONFIG_MARVELL_88Q2XXX_PHY=y
+# CONFIG_MARVELL_PHY is not set
+# CONFIG_MARVELL_10G_PHY is not set
+# CONFIG_MARVELL_88Q2XXX_PHY is not set
# CONFIG_MARVELL_88X2222_PHY is not set
# CONFIG_MAXLINEAR_GPHY is not set
# CONFIG_MEDIATEK_GE_PHY is not set
-CONFIG_MICREL_PHY=y
+# CONFIG_MICREL_PHY is not set
# CONFIG_MICROCHIP_T1S_PHY is not set
-CONFIG_MICROCHIP_PHY=m
+# CONFIG_MICROCHIP_PHY is not set
# CONFIG_MICROCHIP_T1_PHY is not set
-CONFIG_MICROSEMI_PHY=y
+# CONFIG_MICROSEMI_PHY is not set
# CONFIG_MOTORCOMM_PHY is not set
# CONFIG_NATIONAL_PHY is not set
# CONFIG_NXP_CBTX_PHY is not set
# CONFIG_NXP_C45_TJA11XX_PHY is not set
# CONFIG_NXP_TJA11XX_PHY is not set
# CONFIG_NCN26000_PHY is not set
-CONFIG_QCOM_NET_PHYLIB=y
-CONFIG_AT803X_PHY=y
+# CONFIG_AT803X_PHY is not set
# CONFIG_QCA83XX_PHY is not set
# CONFIG_QCA808X_PHY is not set
# CONFIG_QCA807X_PHY is not set
# CONFIG_QSEMI_PHY is not set
-CONFIG_REALTEK_PHY=y
+CONFIG_REALTEK_PHY=m
# CONFIG_RENESAS_PHY is not set
-CONFIG_ROCKCHIP_PHY=y
-CONFIG_SMSC_PHY=m
+# CONFIG_ROCKCHIP_PHY is not set
+# CONFIG_SMSC_PHY is not set
# CONFIG_STE10XP is not set
# CONFIG_TERANETICS_PHY is not set
# CONFIG_DP83822_PHY is not set
# CONFIG_DP83TC811_PHY is not set
# CONFIG_DP83848_PHY is not set
-CONFIG_DP83867_PHY=y
-CONFIG_DP83869_PHY=m
-CONFIG_DP83TD510_PHY=y
+# CONFIG_DP83867_PHY is not set
+# CONFIG_DP83869_PHY is not set
+# CONFIG_DP83TD510_PHY is not set
# CONFIG_DP83TG720_PHY is not set
-CONFIG_VITESSE_PHY=y
+# CONFIG_VITESSE_PHY is not set
# CONFIG_XILINX_GMII2RGMII is not set
# CONFIG_MICREL_KS8995MA is not set
# CONFIG_PSE_CONTROLLER is not set
-CONFIG_CAN_DEV=m
-# CONFIG_CAN_VCAN is not set
-# CONFIG_CAN_VXCAN is not set
-CONFIG_CAN_NETLINK=y
-CONFIG_CAN_CALC_BITTIMING=y
-CONFIG_CAN_RX_OFFLOAD=y
-# CONFIG_CAN_CAN327 is not set
-CONFIG_CAN_FLEXCAN=m
-# CONFIG_CAN_GRCAN is not set
-# CONFIG_CAN_KVASER_PCIEFD is not set
-# CONFIG_CAN_SLCAN is not set
-# CONFIG_CAN_XILINXCAN is not set
-# CONFIG_CAN_C_CAN is not set
-# CONFIG_CAN_CC770 is not set
-# CONFIG_CAN_CTUCANFD_PCI is not set
-# CONFIG_CAN_CTUCANFD_PLATFORM is not set
-# CONFIG_CAN_ESD_402_PCI is not set
-# CONFIG_CAN_IFI_CANFD is not set
-CONFIG_CAN_M_CAN=m
-# CONFIG_CAN_M_CAN_PCI is not set
-CONFIG_CAN_M_CAN_PLATFORM=m
-# CONFIG_CAN_M_CAN_TCAN4X5X is not set
-# CONFIG_CAN_PEAK_PCIEFD is not set
-# CONFIG_CAN_SJA1000 is not set
-# CONFIG_CAN_SOFTING is not set
-
-#
-# CAN SPI interfaces
-#
-# CONFIG_CAN_HI311X is not set
-# CONFIG_CAN_MCP251X is not set
-CONFIG_CAN_MCP251XFD=m
-# CONFIG_CAN_MCP251XFD_SANITY is not set
-# end of CAN SPI interfaces
-
-#
-# CAN USB interfaces
-#
-# CONFIG_CAN_8DEV_USB is not set
-# CONFIG_CAN_EMS_USB is not set
-# CONFIG_CAN_ESD_USB is not set
-# CONFIG_CAN_ETAS_ES58X is not set
-# CONFIG_CAN_F81604 is not set
-# CONFIG_CAN_GS_USB is not set
-# CONFIG_CAN_KVASER_USB is not set
-# CONFIG_CAN_MCBA_USB is not set
-# CONFIG_CAN_PEAK_USB is not set
-# CONFIG_CAN_UCAN is not set
-# end of CAN USB interfaces
-
-# CONFIG_CAN_DEBUG_DEVICES is not set
-CONFIG_MDIO_DEVICE=y
-CONFIG_MDIO_BUS=y
-CONFIG_FWNODE_MDIO=y
-CONFIG_OF_MDIO=y
-CONFIG_ACPI_MDIO=y
-CONFIG_MDIO_DEVRES=y
-CONFIG_MDIO_BITBANG=y
-CONFIG_MDIO_BCM_UNIMAC=y
-CONFIG_MDIO_CAVIUM=y
-CONFIG_MDIO_GPIO=y
+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 is not set
+CONFIG_MDIO_BCM_UNIMAC=m
# CONFIG_MDIO_HISI_FEMAC is not set
# CONFIG_MDIO_MVUSB is not set
# CONFIG_MDIO_MSCC_MIIM is not set
# CONFIG_MDIO_OCTEON is not set
# CONFIG_MDIO_IPQ4019 is not set
# CONFIG_MDIO_IPQ8064 is not set
-CONFIG_MDIO_THUNDER=y
+# CONFIG_MDIO_THUNDER is not set
#
# MDIO Multiplexers
#
-CONFIG_MDIO_BUS_MUX=y
# CONFIG_MDIO_BUS_MUX_GPIO is not set
-CONFIG_MDIO_BUS_MUX_MULTIPLEXER=y
-CONFIG_MDIO_BUS_MUX_MMIOREG=y
+# CONFIG_MDIO_BUS_MUX_MULTIPLEXER is not set
+# CONFIG_MDIO_BUS_MUX_MMIOREG is not set
#
# PCS device drivers
#
-CONFIG_PCS_XPCS=m
+# CONFIG_PCS_XPCS is not set
# end of PCS device drivers
# CONFIG_PPP is not set
@@ -2906,37 +2648,30 @@ CONFIG_PCS_XPCS=m
CONFIG_USB_NET_DRIVERS=y
# CONFIG_USB_CATC is not set
# CONFIG_USB_KAWETH is not set
-CONFIG_USB_PEGASUS=m
+# CONFIG_USB_PEGASUS is not set
CONFIG_USB_RTL8150=m
CONFIG_USB_RTL8152=m
-CONFIG_USB_LAN78XX=m
+# CONFIG_USB_LAN78XX is not set
CONFIG_USB_USBNET=m
CONFIG_USB_NET_AX8817X=m
CONFIG_USB_NET_AX88179_178A=m
CONFIG_USB_NET_CDCETHER=m
# CONFIG_USB_NET_CDC_EEM is not set
-CONFIG_USB_NET_CDC_NCM=m
+# CONFIG_USB_NET_CDC_NCM is not set
# CONFIG_USB_NET_HUAWEI_CDC_NCM is not set
# CONFIG_USB_NET_CDC_MBIM is not set
-CONFIG_USB_NET_DM9601=m
+# CONFIG_USB_NET_DM9601 is not set
# CONFIG_USB_NET_SR9700 is not set
-CONFIG_USB_NET_SR9800=m
-CONFIG_USB_NET_SMSC75XX=m
-CONFIG_USB_NET_SMSC95XX=m
+# CONFIG_USB_NET_SR9800 is not set
+# CONFIG_USB_NET_SMSC75XX is not set
+# CONFIG_USB_NET_SMSC95XX is not set
# CONFIG_USB_NET_GL620A is not set
-CONFIG_USB_NET_NET1080=m
-CONFIG_USB_NET_PLUSB=m
-CONFIG_USB_NET_MCS7830=m
+# CONFIG_USB_NET_NET1080 is not set
+# CONFIG_USB_NET_PLUSB is not set
+# CONFIG_USB_NET_MCS7830 is not set
# CONFIG_USB_NET_RNDIS_HOST is not set
-CONFIG_USB_NET_CDC_SUBSET_ENABLE=m
-CONFIG_USB_NET_CDC_SUBSET=m
-# CONFIG_USB_ALI_M5632 is not set
-# CONFIG_USB_AN2720 is not set
-CONFIG_USB_BELKIN=y
-CONFIG_USB_ARMLINUX=y
-# CONFIG_USB_EPSON2888 is not set
-# CONFIG_USB_KC2190 is not set
-CONFIG_USB_NET_ZAURUS=m
+# CONFIG_USB_NET_CDC_SUBSET is not set
+# CONFIG_USB_NET_ZAURUS is not set
# CONFIG_USB_NET_CX82310_ETH is not set
# CONFIG_USB_NET_KALMIA is not set
# CONFIG_USB_NET_QMI_WWAN is not set
@@ -2961,81 +2696,23 @@ CONFIG_WLAN_VENDOR_ATH=y
# CONFIG_ATH6KL is not set
# CONFIG_AR5523 is not set
# CONFIG_WIL6210 is not set
-CONFIG_ATH10K=m
-CONFIG_ATH10K_CE=y
-CONFIG_ATH10K_PCI=m
-# CONFIG_ATH10K_AHB is not set
-CONFIG_ATH10K_SDIO=m
-# CONFIG_ATH10K_USB is not set
-CONFIG_ATH10K_SNOC=m
-# CONFIG_ATH10K_DEBUG is not set
-# CONFIG_ATH10K_DEBUGFS is not set
-CONFIG_ATH10K_LEDS=y
-CONFIG_WCN36XX=m
-# CONFIG_WCN36XX_DEBUGFS is not set
+# CONFIG_ATH10K is not set
+# CONFIG_WCN36XX is not set
CONFIG_ATH11K=m
-CONFIG_ATH11K_AHB=m
+# CONFIG_ATH11K_AHB is not set
CONFIG_ATH11K_PCI=m
# CONFIG_ATH11K_DEBUG is not set
-CONFIG_ATH12K=m
-# CONFIG_ATH12K_DEBUG is not set
+# CONFIG_ATH12K is not set
# CONFIG_WLAN_VENDOR_ATMEL is not set
# CONFIG_WLAN_VENDOR_BROADCOM is not set
# CONFIG_WLAN_VENDOR_INTEL is not set
# CONFIG_WLAN_VENDOR_INTERSIL is not set
# CONFIG_WLAN_VENDOR_MARVELL is not set
-CONFIG_WLAN_VENDOR_MEDIATEK=y
-# CONFIG_MT7601U is not set
-CONFIG_MT76_CORE=m
-CONFIG_MT76_LEDS=y
-CONFIG_MT76_CONNAC_LIB=m
-CONFIG_MT792x_LIB=m
-# CONFIG_MT76x0U is not set
-# CONFIG_MT76x0E is not set
-# CONFIG_MT76x2E is not set
-# CONFIG_MT76x2U is not set
-# CONFIG_MT7603E is not set
-# CONFIG_MT7615E is not set
-# CONFIG_MT7663U is not set
-# CONFIG_MT7663S is not set
-# CONFIG_MT7915E is not set
-CONFIG_MT7921_COMMON=m
-CONFIG_MT7921E=m
-# CONFIG_MT7921S is not set
-# CONFIG_MT7921U is not set
-# CONFIG_MT7996E is not set
-# CONFIG_MT7925E is not set
-# CONFIG_MT7925U is not set
+# CONFIG_WLAN_VENDOR_MEDIATEK is not set
# CONFIG_WLAN_VENDOR_MICROCHIP is not set
# CONFIG_WLAN_VENDOR_PURELIFI is not set
# CONFIG_WLAN_VENDOR_RALINK is not set
-CONFIG_WLAN_VENDOR_REALTEK=y
-CONFIG_RTL8180=m
-CONFIG_RTL8187=m
-CONFIG_RTL8187_LEDS=y
-CONFIG_RTL_CARDS=m
-CONFIG_RTL8192CE=m
-CONFIG_RTL8192SE=m
-CONFIG_RTL8192DE=m
-CONFIG_RTL8723AE=m
-CONFIG_RTL8723BE=m
-CONFIG_RTL8188EE=m
-CONFIG_RTL8192EE=m
-CONFIG_RTL8821AE=m
-CONFIG_RTL8192CU=m
-CONFIG_RTL8192DU=m
-CONFIG_RTLWIFI=m
-CONFIG_RTLWIFI_PCI=m
-CONFIG_RTLWIFI_USB=m
-CONFIG_RTLWIFI_DEBUG=y
-CONFIG_RTL8192C_COMMON=m
-CONFIG_RTL8192D_COMMON=m
-CONFIG_RTL8723_COMMON=m
-CONFIG_RTLBTCOEXIST=m
-CONFIG_RTL8XXXU=m
-# CONFIG_RTL8XXXU_UNTESTED is not set
-# CONFIG_RTW88 is not set
-# CONFIG_RTW89 is not set
+# CONFIG_WLAN_VENDOR_REALTEK is not set
# CONFIG_WLAN_VENDOR_RSI is not set
# CONFIG_WLAN_VENDOR_SILABS is not set
# CONFIG_WLAN_VENDOR_ST is not set
@@ -3165,7 +2842,7 @@ CONFIG_INPUT_JOYSTICK=y
# CONFIG_JOYSTICK_AS5011 is not set
# CONFIG_JOYSTICK_JOYDUMP is not set
# CONFIG_JOYSTICK_XPAD is not set
-CONFIG_JOYSTICK_RETROID=m
+CONFIG_JOYSTICK_RETROID=y
# CONFIG_JOYSTICK_PSXPAD_SPI is not set
# CONFIG_JOYSTICK_PXRC is not set
# CONFIG_JOYSTICK_QWIIC is not set
@@ -3223,7 +2900,7 @@ CONFIG_INPUT_TOUCHSCREEN=y
# CONFIG_TOUCHSCREEN_IMX6UL_TSC is not set
# CONFIG_TOUCHSCREEN_INEXIO is not set
# CONFIG_TOUCHSCREEN_PENMOUNT is not set
-CONFIG_TOUCHSCREEN_EDT_FT5X06=m
+CONFIG_TOUCHSCREEN_EDT_FT5X06=y
# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
# CONFIG_TOUCHSCREEN_PIXCIR is not set
@@ -3478,7 +3155,7 @@ CONFIG_I2C_MUX_PCA954x=y
# end of Multiplexer I2C Chip support
CONFIG_I2C_HELPER_AUTO=y
-CONFIG_I2C_ALGOBIT=y
+CONFIG_I2C_ALGOBIT=m
#
# I2C Hardware Bus support
@@ -3527,7 +3204,7 @@ CONFIG_I2C_GPIO=m
# CONFIG_I2C_OCORES is not set
# CONFIG_I2C_PCA_PLATFORM is not set
CONFIG_I2C_QCOM_CCI=m
-CONFIG_I2C_QCOM_GENI=m
+CONFIG_I2C_QCOM_GENI=y
CONFIG_I2C_QUP=y
CONFIG_I2C_RK3X=y
# CONFIG_I2C_SIMTEC is not set
@@ -3715,11 +3392,11 @@ CONFIG_PINCTRL_SM8650=y
CONFIG_PINCTRL_X1E80100=y
CONFIG_PINCTRL_QCOM_SPMI_PMIC=y
# CONFIG_PINCTRL_QCOM_SSBI_PMIC is not set
-CONFIG_PINCTRL_LPASS_LPI=m
+CONFIG_PINCTRL_LPASS_LPI=y
CONFIG_PINCTRL_SC7280_LPASS_LPI=m
# CONFIG_PINCTRL_SM4250_LPASS_LPI is not set
CONFIG_PINCTRL_SM6115_LPASS_LPI=m
-CONFIG_PINCTRL_SM8250_LPASS_LPI=m
+CONFIG_PINCTRL_SM8250_LPASS_LPI=y
CONFIG_PINCTRL_SM8350_LPASS_LPI=m
CONFIG_PINCTRL_SM8450_LPASS_LPI=m
CONFIG_PINCTRL_SC8280XP_LPASS_LPI=m
@@ -3842,7 +3519,7 @@ CONFIG_POWER_RESET=y
# CONFIG_POWER_RESET_GPIO is not set
# CONFIG_POWER_RESET_GPIO_RESTART is not set
CONFIG_POWER_RESET_MSM=y
-CONFIG_POWER_RESET_QCOM_PON=m
+CONFIG_POWER_RESET_QCOM_PON=y
# CONFIG_POWER_RESET_LTC2952 is not set
# CONFIG_POWER_RESET_MT6323 is not set
# CONFIG_POWER_RESET_REGULATOR is not set
@@ -3854,8 +3531,8 @@ CONFIG_POWER_RESET_SYSCON_POWEROFF=y
CONFIG_REBOOT_MODE=y
CONFIG_SYSCON_REBOOT_MODE=y
CONFIG_NVMEM_REBOOT_MODE=m
-CONFIG_POWER_SEQUENCING=m
-CONFIG_POWER_SEQUENCING_QCOM_WCN=m
+CONFIG_POWER_SEQUENCING=y
+CONFIG_POWER_SEQUENCING_QCOM_WCN=y
CONFIG_POWER_SUPPLY=y
# CONFIG_POWER_SUPPLY_DEBUG is not set
CONFIG_POWER_SUPPLY_HWMON=y
@@ -3915,8 +3592,8 @@ CONFIG_CHARGER_CROS_CONTROL=y
# CONFIG_CHARGER_BD99954 is not set
# CONFIG_BATTERY_UG3105 is not set
# CONFIG_CHARGER_QCOM_SMB2 is not set
-CONFIG_CHARGER_QCOM_SMB5=m
-CONFIG_BATTERY_QCOM_FG=m
+CONFIG_CHARGER_QCOM_SMB5=y
+CONFIG_BATTERY_QCOM_FG=y
# CONFIG_FUEL_GAUGE_MM8013 is not set
CONFIG_HWMON=y
# CONFIG_HWMON_DEBUG_CHIP is not set
@@ -3965,7 +3642,7 @@ CONFIG_SENSORS_CROS_EC=y
# CONFIG_SENSORS_GL520SM is not set
# CONFIG_SENSORS_G760A is not set
# CONFIG_SENSORS_G762 is not set
-CONFIG_SENSORS_GPIO_FAN=m
+# CONFIG_SENSORS_GPIO_FAN is not set
# CONFIG_SENSORS_HIH6130 is not set
# CONFIG_SENSORS_HS3001 is not set
# CONFIG_SENSORS_IBMAEM is not set
@@ -4043,7 +3720,7 @@ CONFIG_SENSORS_LM90=m
# CONFIG_SENSORS_PCF8591 is not set
# CONFIG_PMBUS is not set
# CONFIG_SENSORS_PT5161L is not set
-CONFIG_SENSORS_PWM_FAN=y
+CONFIG_SENSORS_PWM_FAN=m
# CONFIG_SENSORS_SBTSI is not set
# CONFIG_SENSORS_SBRMI is not set
# CONFIG_SENSORS_SHT15 is not set
@@ -4130,8 +3807,8 @@ CONFIG_GENERIC_ADC_THERMAL=m
# Qualcomm thermal drivers
#
CONFIG_QCOM_TSENS=y
-CONFIG_QCOM_SPMI_ADC_TM5=m
-CONFIG_QCOM_SPMI_TEMP_ALARM=m
+CONFIG_QCOM_SPMI_ADC_TM5=y
+CONFIG_QCOM_SPMI_TEMP_ALARM=y
CONFIG_QCOM_LMH=m
# end of Qualcomm thermal drivers
@@ -4165,7 +3842,7 @@ CONFIG_ARM_SBSA_WATCHDOG=y
CONFIG_DW_WATCHDOG=y
# CONFIG_MAX63XX_WATCHDOG is not set
# CONFIG_MAX77620_WATCHDOG is not set
-CONFIG_QCOM_WDT=m
+CONFIG_QCOM_WDT=y
CONFIG_ARM_SMC_WATCHDOG=y
CONFIG_PM8916_WATCHDOG=m
# CONFIG_ALIM7101_WDT is not set
@@ -4399,7 +4076,7 @@ CONFIG_REGULATOR_PWM=y
CONFIG_REGULATOR_QCOM_RPMH=y
CONFIG_REGULATOR_QCOM_SMD_RPM=y
CONFIG_REGULATOR_QCOM_SPMI=y
-CONFIG_REGULATOR_QCOM_USB_VBUS=m
+CONFIG_REGULATOR_QCOM_USB_VBUS=y
CONFIG_REGULATOR_RAA215300=y
# CONFIG_REGULATOR_RASPBERRYPI_TOUCHSCREEN_ATTINY is not set
# CONFIG_REGULATOR_RK808 is not set
@@ -4438,41 +4115,7 @@ CONFIG_REGULATOR_VCTRL=m
# CONFIG_REGULATOR_VQMMC_IPQ4019 is not set
# CONFIG_REGULATOR_WM8994 is not set
# CONFIG_REGULATOR_QCOM_LABIBB is not set
-CONFIG_RC_CORE=m
-# CONFIG_LIRC is not set
-CONFIG_RC_MAP=m
-CONFIG_RC_DECODERS=y
-# CONFIG_IR_IMON_DECODER is not set
-# CONFIG_IR_JVC_DECODER is not set
-# CONFIG_IR_MCE_KBD_DECODER is not set
-# CONFIG_IR_NEC_DECODER is not set
-# CONFIG_IR_RC5_DECODER is not set
-# CONFIG_IR_RC6_DECODER is not set
-# CONFIG_IR_RCMM_DECODER is not set
-# CONFIG_IR_SANYO_DECODER is not set
-# CONFIG_IR_SHARP_DECODER is not set
-# CONFIG_IR_SONY_DECODER is not set
-# CONFIG_IR_XMP_DECODER is not set
-CONFIG_RC_DEVICES=y
-# CONFIG_IR_ENE is not set
-# CONFIG_IR_FINTEK is not set
-CONFIG_IR_GPIO_CIR=m
-# CONFIG_IR_HIX5HD2 is not set
-# CONFIG_IR_IGORPLUGUSB is not set
-# CONFIG_IR_IGUANA is not set
-# CONFIG_IR_IMON is not set
-# CONFIG_IR_IMON_RAW is not set
-# CONFIG_IR_ITE_CIR is not set
-# CONFIG_IR_MCEUSB is not set
-# CONFIG_IR_NUVOTON is not set
-# CONFIG_IR_REDRAT3 is not set
-# CONFIG_IR_SERIAL is not set
-# CONFIG_IR_STREAMZAP is not set
-# CONFIG_IR_TOY is not set
-# CONFIG_IR_TTUSBIR is not set
-# CONFIG_RC_ATI_REMOTE is not set
-# CONFIG_RC_LOOPBACK is not set
-# CONFIG_RC_XBOX_DVD is not set
+# CONFIG_RC_CORE is not set
#
# CEC support
@@ -4480,25 +4123,24 @@ CONFIG_IR_GPIO_CIR=m
# CONFIG_MEDIA_CEC_SUPPORT is not set
# end of CEC support
-CONFIG_MEDIA_SUPPORT=m
+CONFIG_MEDIA_SUPPORT=y
CONFIG_MEDIA_SUPPORT_FILTER=y
CONFIG_MEDIA_SUBDRV_AUTOSELECT=y
#
# Media device types
#
-CONFIG_MEDIA_CAMERA_SUPPORT=y
-CONFIG_MEDIA_ANALOG_TV_SUPPORT=y
-CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y
+# CONFIG_MEDIA_CAMERA_SUPPORT is not set
+# CONFIG_MEDIA_ANALOG_TV_SUPPORT is not set
+# CONFIG_MEDIA_DIGITAL_TV_SUPPORT is not set
# CONFIG_MEDIA_RADIO_SUPPORT is not set
-CONFIG_MEDIA_SDR_SUPPORT=y
+# CONFIG_MEDIA_SDR_SUPPORT is not set
CONFIG_MEDIA_PLATFORM_SUPPORT=y
# CONFIG_MEDIA_TEST_SUPPORT is not set
# end of Media device types
-CONFIG_VIDEO_DEV=m
+CONFIG_VIDEO_DEV=y
CONFIG_MEDIA_CONTROLLER=y
-CONFIG_DVB_CORE=m
#
# Video4Linux options
@@ -4510,27 +4152,13 @@ CONFIG_VIDEO_V4L2_SUBDEV_API=y
CONFIG_V4L2_MEM2MEM_DEV=m
CONFIG_V4L2_FWNODE=m
CONFIG_V4L2_ASYNC=m
-CONFIG_V4L2_CCI=m
-CONFIG_V4L2_CCI_I2C=m
# end of Video4Linux options
#
# Media controller options
#
-# CONFIG_MEDIA_CONTROLLER_DVB is not set
# end of Media controller options
-#
-# Digital TV options
-#
-# CONFIG_DVB_MMAP is not set
-# CONFIG_DVB_NET is not set
-CONFIG_DVB_MAX_ADAPTERS=16
-CONFIG_DVB_DYNAMIC_MINORS=y
-# CONFIG_DVB_DEMUX_SECTION_LOSS_LOG is not set
-# CONFIG_DVB_ULE_DEBUG is not set
-# end of Digital TV options
-
#
# Media drivers
#
@@ -4543,58 +4171,9 @@ CONFIG_DVB_DYNAMIC_MINORS=y
# Media drivers
#
CONFIG_MEDIA_USB_SUPPORT=y
-
-#
-# Webcam devices
-#
-# CONFIG_USB_GSPCA is not set
-# CONFIG_USB_PWC is not set
-# CONFIG_USB_S2255 is not set
-# CONFIG_VIDEO_USBTV is not set
-CONFIG_USB_VIDEO_CLASS=m
-CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
-
-#
-# Analog TV USB devices
-#
-# CONFIG_VIDEO_GO7007 is not set
-# CONFIG_VIDEO_HDPVR is not set
-# CONFIG_VIDEO_PVRUSB2 is not set
-# CONFIG_VIDEO_STK1160 is not set
-
-#
-# Analog/digital TV USB devices
-#
-# CONFIG_VIDEO_AU0828 is not set
-# CONFIG_VIDEO_CX231XX is not set
-
-#
-# Digital TV USB devices
-#
-# CONFIG_DVB_AS102 is not set
-# CONFIG_DVB_B2C2_FLEXCOP_USB is not set
-# CONFIG_DVB_USB_V2 is not set
-# CONFIG_DVB_USB is not set
-# CONFIG_SMS_USB_DRV is not set
-# CONFIG_DVB_TTUSB_BUDGET is not set
-# CONFIG_DVB_TTUSB_DEC is not set
-
-#
-# Webcam, TV (analog/digital) USB devices
-#
-# CONFIG_VIDEO_EM28XX is not set
-
-#
-# Software defined radio USB devices
-#
-# CONFIG_USB_AIRSPY is not set
-# CONFIG_USB_HACKRF is not set
-# CONFIG_USB_MSI2500 is not set
# CONFIG_MEDIA_PCI_SUPPORT is not set
CONFIG_MEDIA_PLATFORM_DRIVERS=y
CONFIG_V4L_PLATFORM_DRIVERS=y
-CONFIG_SDR_PLATFORM_DRIVERS=y
-# CONFIG_DVB_PLATFORM_DRIVERS is not set
CONFIG_V4L_MEM2MEM_DRIVERS=y
# CONFIG_VIDEO_MEM2MEM_DEINTERLACE is not set
# CONFIG_VIDEO_MUX is not set
@@ -4704,17 +4283,10 @@ CONFIG_VIDEO_QCOM_VENUS=m
# Xilinx media platform drivers
#
# CONFIG_VIDEO_XILINX is not set
-
-#
-# MMC/SDIO DVB adapters
-#
-# CONFIG_SMS_SDIO_DRV is not set
-CONFIG_UVC_COMMON=m
CONFIG_VIDEOBUF2_CORE=m
CONFIG_VIDEOBUF2_V4L2=m
CONFIG_VIDEOBUF2_MEMOPS=m
CONFIG_VIDEOBUF2_DMA_CONTIG=m
-CONFIG_VIDEOBUF2_VMALLOC=m
CONFIG_VIDEOBUF2_DMA_SG=m
# end of Media drivers
@@ -4723,113 +4295,6 @@ CONFIG_MEDIA_HIDE_ANCILLARY_SUBDRV=y
#
# Media ancillary drivers
#
-CONFIG_MEDIA_ATTACH=y
-
-#
-# IR I2C driver auto-selected by 'Autoselect ancillary drivers'
-#
-CONFIG_VIDEO_IR_I2C=m
-CONFIG_VIDEO_CAMERA_SENSOR=y
-# CONFIG_VIDEO_ALVIUM_CSI2 is not set
-# CONFIG_VIDEO_AR0521 is not set
-# CONFIG_VIDEO_GC0308 is not set
-# CONFIG_VIDEO_GC05A2 is not set
-# CONFIG_VIDEO_GC08A3 is not set
-# CONFIG_VIDEO_GC2145 is not set
-# CONFIG_VIDEO_HI556 is not set
-# CONFIG_VIDEO_HI846 is not set
-# CONFIG_VIDEO_HI847 is not set
-# CONFIG_VIDEO_IMX208 is not set
-# CONFIG_VIDEO_IMX214 is not set
-CONFIG_VIDEO_IMX219=m
-# CONFIG_VIDEO_IMX258 is not set
-# CONFIG_VIDEO_IMX274 is not set
-# CONFIG_VIDEO_IMX283 is not set
-# CONFIG_VIDEO_IMX290 is not set
-# CONFIG_VIDEO_IMX296 is not set
-# CONFIG_VIDEO_IMX319 is not set
-# CONFIG_VIDEO_IMX334 is not set
-# CONFIG_VIDEO_IMX335 is not set
-# CONFIG_VIDEO_IMX355 is not set
-CONFIG_VIDEO_IMX412=m
-# CONFIG_VIDEO_IMX415 is not set
-# CONFIG_VIDEO_MT9M001 is not set
-# CONFIG_VIDEO_MT9M111 is not set
-# CONFIG_VIDEO_MT9M114 is not set
-# CONFIG_VIDEO_MT9P031 is not set
-# CONFIG_VIDEO_MT9T112 is not set
-# CONFIG_VIDEO_MT9V011 is not set
-# CONFIG_VIDEO_MT9V032 is not set
-# CONFIG_VIDEO_MT9V111 is not set
-# CONFIG_VIDEO_OG01A1B is not set
-# CONFIG_VIDEO_OV01A10 is not set
-# CONFIG_VIDEO_OV02A10 is not set
-# CONFIG_VIDEO_OV08D10 is not set
-# CONFIG_VIDEO_OV08X40 is not set
-# CONFIG_VIDEO_OV13858 is not set
-# CONFIG_VIDEO_OV13B10 is not set
-# CONFIG_VIDEO_OV2640 is not set
-# CONFIG_VIDEO_OV2659 is not set
-# CONFIG_VIDEO_OV2680 is not set
-# CONFIG_VIDEO_OV2685 is not set
-# CONFIG_VIDEO_OV2740 is not set
-# CONFIG_VIDEO_OV4689 is not set
-CONFIG_VIDEO_OV5640=m
-CONFIG_VIDEO_OV5645=m
-# CONFIG_VIDEO_OV5647 is not set
-# CONFIG_VIDEO_OV5648 is not set
-# CONFIG_VIDEO_OV5670 is not set
-# CONFIG_VIDEO_OV5675 is not set
-# CONFIG_VIDEO_OV5693 is not set
-# CONFIG_VIDEO_OV5695 is not set
-# CONFIG_VIDEO_OV64A40 is not set
-# CONFIG_VIDEO_OV6650 is not set
-# CONFIG_VIDEO_OV7251 is not set
-# CONFIG_VIDEO_OV7640 is not set
-# CONFIG_VIDEO_OV7670 is not set
-# CONFIG_VIDEO_OV772X is not set
-# CONFIG_VIDEO_OV7740 is not set
-# CONFIG_VIDEO_OV8856 is not set
-# CONFIG_VIDEO_OV8858 is not set
-# CONFIG_VIDEO_OV8865 is not set
-# CONFIG_VIDEO_OV9282 is not set
-# CONFIG_VIDEO_OV9640 is not set
-# CONFIG_VIDEO_OV9650 is not set
-# CONFIG_VIDEO_OV9734 is not set
-# CONFIG_VIDEO_RDACM20 is not set
-# CONFIG_VIDEO_RDACM21 is not set
-# CONFIG_VIDEO_RJ54N1 is not set
-# CONFIG_VIDEO_S5C73M3 is not set
-# CONFIG_VIDEO_S5K5BAF is not set
-# CONFIG_VIDEO_S5K6A3 is not set
-# CONFIG_VIDEO_VGXY61 is not set
-# CONFIG_VIDEO_CCS is not set
-# CONFIG_VIDEO_ET8EK8 is not set
-
-#
-# Camera ISPs
-#
-# CONFIG_VIDEO_THP7312 is not set
-# end of Camera ISPs
-
-#
-# Lens drivers
-#
-# CONFIG_VIDEO_AD5820 is not set
-# CONFIG_VIDEO_AK7375 is not set
-# CONFIG_VIDEO_DW9714 is not set
-# CONFIG_VIDEO_DW9719 is not set
-# CONFIG_VIDEO_DW9768 is not set
-# CONFIG_VIDEO_DW9807_VCM is not set
-# end of Lens drivers
-
-#
-# Flash devices
-#
-# CONFIG_VIDEO_ADP1653 is not set
-# CONFIG_VIDEO_LM3560 is not set
-# CONFIG_VIDEO_LM3646 is not set
-# end of Flash devices
#
# audio, video and radio I2C drivers auto-selected by 'Autoselect ancillary drivers'
@@ -4856,73 +4321,8 @@ CONFIG_VIDEO_OV5645=m
#
# Media SPI Adapters
#
-# CONFIG_CXD2880_SPI_DRV is not set
# CONFIG_VIDEO_GS1662 is not set
# end of Media SPI Adapters
-
-CONFIG_MEDIA_TUNER=m
-
-#
-# Tuner drivers auto-selected by 'Autoselect ancillary drivers'
-#
-CONFIG_MEDIA_TUNER_MC44S803=m
-CONFIG_MEDIA_TUNER_MT20XX=m
-CONFIG_MEDIA_TUNER_SIMPLE=m
-CONFIG_MEDIA_TUNER_TDA18271=m
-CONFIG_MEDIA_TUNER_TDA827X=m
-CONFIG_MEDIA_TUNER_TDA8290=m
-CONFIG_MEDIA_TUNER_TDA9887=m
-CONFIG_MEDIA_TUNER_XC2028=m
-CONFIG_MEDIA_TUNER_XC4000=m
-CONFIG_MEDIA_TUNER_XC5000=m
-
-#
-# DVB Frontend drivers auto-selected by 'Autoselect ancillary drivers'
-#
-
-#
-# Multistandard (satellite) frontends
-#
-
-#
-# Multistandard (cable + terrestrial) frontends
-#
-
-#
-# DVB-S (satellite) frontends
-#
-
-#
-# DVB-T (terrestrial) frontends
-#
-
-#
-# DVB-C (cable) frontends
-#
-
-#
-# ATSC (North American/Korean Terrestrial/Cable DTV) frontends
-#
-
-#
-# ISDB-T (terrestrial) frontends
-#
-
-#
-# ISDB-S (satellite) & ISDB-T (terrestrial) frontends
-#
-
-#
-# Digital terrestrial only tuners/PLL
-#
-
-#
-# SEC control devices for DVB-S
-#
-
-#
-# Common Interface (EN50221) controller drivers
-#
# end of Media ancillary drivers
#
@@ -4932,23 +4332,23 @@ CONFIG_APERTURE_HELPERS=y
CONFIG_SCREEN_INFO=y
CONFIG_VIDEO=y
# CONFIG_AUXDISPLAY is not set
-CONFIG_DRM=m
+CONFIG_DRM=y
CONFIG_DRM_MIPI_DSI=y
# CONFIG_DRM_DEBUG_MM is not set
-CONFIG_DRM_KMS_HELPER=m
+CONFIG_DRM_KMS_HELPER=y
CONFIG_DRM_FBDEV_EMULATION=y
CONFIG_DRM_FBDEV_OVERALLOC=100
# CONFIG_DRM_LOAD_EDID_FIRMWARE is not set
-CONFIG_DRM_DISPLAY_DP_AUX_BUS=m
-CONFIG_DRM_DISPLAY_HELPER=m
+CONFIG_DRM_DISPLAY_DP_AUX_BUS=y
+CONFIG_DRM_DISPLAY_HELPER=y
CONFIG_DRM_BRIDGE_CONNECTOR=y
# CONFIG_DRM_DISPLAY_DP_AUX_CEC is not set
# CONFIG_DRM_DISPLAY_DP_AUX_CHARDEV is not set
CONFIG_DRM_DISPLAY_DP_HELPER=y
CONFIG_DRM_DISPLAY_HDMI_HELPER=y
CONFIG_DRM_DISPLAY_HDMI_STATE_HELPER=y
-CONFIG_DRM_EXEC=m
-CONFIG_DRM_SCHED=m
+CONFIG_DRM_EXEC=y
+CONFIG_DRM_SCHED=y
#
# I2C encoder or helper chips
@@ -4979,7 +4379,7 @@ CONFIG_DRM_I2C_NXP_TDA998X=m
# CONFIG_DRM_MGAG200 is not set
# CONFIG_DRM_QXL is not set
# CONFIG_DRM_VIRTIO_GPU is not set
-CONFIG_DRM_MSM=m
+CONFIG_DRM_MSM=y
CONFIG_DRM_MSM_GPU_STATE=y
CONFIG_DRM_MSM_MDSS=y
CONFIG_DRM_MSM_MDP4=y
@@ -5008,7 +4408,7 @@ CONFIG_DRM_PANEL=y
# CONFIG_DRM_PANEL_BOE_HIMAX8279D is not set
# CONFIG_DRM_PANEL_BOE_TH101MB31UIG002_28A is not set
# CONFIG_DRM_PANEL_BOE_TV101WUM_NL6 is not set
-CONFIG_DRM_PANEL_DDIC_CH13726A=m
+CONFIG_DRM_PANEL_DDIC_CH13726A=y
# CONFIG_DRM_PANEL_EBBG_FT8719 is not set
# CONFIG_DRM_PANEL_ELIDA_KD35T133 is not set
# CONFIG_DRM_PANEL_FEIXIN_K101_IM2BA02 is not set
@@ -5103,8 +4503,8 @@ CONFIG_DRM_PANEL_SIMPLE=m
CONFIG_DRM_BRIDGE=y
CONFIG_DRM_PANEL_BRIDGE=y
-CONFIG_DRM_AUX_BRIDGE=m
-CONFIG_DRM_AUX_HPD_BRIDGE=m
+CONFIG_DRM_AUX_BRIDGE=y
+CONFIG_DRM_AUX_HPD_BRIDGE=y
#
# Display Interface Bridges
@@ -5245,7 +4645,7 @@ CONFIG_FB_MODE_HELPERS=y
# Backlight & LCD device support
#
# CONFIG_LCD_CLASS_DEVICE is not set
-CONFIG_BACKLIGHT_CLASS_DEVICE=m
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
# CONFIG_BACKLIGHT_KTD253 is not set
# CONFIG_BACKLIGHT_KTD2801 is not set
# CONFIG_BACKLIGHT_KTZ8866 is not set
@@ -5391,18 +4791,8 @@ CONFIG_SND_PCI=y
# end of HD-Audio
CONFIG_SND_HDA_PREALLOC_SIZE=64
-CONFIG_SND_SPI=y
-CONFIG_SND_USB=y
-# CONFIG_SND_USB_AUDIO is not set
-# CONFIG_SND_USB_UA101 is not set
-# CONFIG_SND_USB_CAIAQ is not set
-# CONFIG_SND_USB_6FIRE is not set
-# CONFIG_SND_USB_HIFACE is not set
-# CONFIG_SND_BCD2000 is not set
-# CONFIG_SND_USB_POD is not set
-# CONFIG_SND_USB_PODHD is not set
-# CONFIG_SND_USB_TONEPORT is not set
-# CONFIG_SND_USB_VARIAX is not set
+# CONFIG_SND_SPI is not set
+# CONFIG_SND_USB is not set
CONFIG_SND_SOC=y
CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y
CONFIG_SND_SOC_COMPRESS=y
@@ -5440,7 +4830,7 @@ CONFIG_SND_SOC_IMX_AUDMUX=m
# CONFIG_SND_I2S_HI6210_I2S is not set
# CONFIG_SND_SOC_IMG is not set
# CONFIG_SND_SOC_MTK_BTCVSD is not set
-CONFIG_SND_SOC_QCOM=m
+CONFIG_SND_SOC_QCOM=y
CONFIG_SND_SOC_LPASS_CPU=m
CONFIG_SND_SOC_LPASS_HDMI=m
CONFIG_SND_SOC_LPASS_PLATFORM=m
@@ -5450,26 +4840,26 @@ CONFIG_SND_SOC_LPASS_SC7180=m
CONFIG_SND_SOC_LPASS_SC7280=m
# CONFIG_SND_SOC_STORM is not set
CONFIG_SND_SOC_APQ8016_SBC=m
-CONFIG_SND_SOC_QCOM_COMMON=m
-CONFIG_SND_SOC_QCOM_SDW=m
-CONFIG_SND_SOC_QDSP6_COMMON=m
-CONFIG_SND_SOC_QDSP6_CORE=m
-CONFIG_SND_SOC_QDSP6_AFE=m
-CONFIG_SND_SOC_QDSP6_AFE_DAI=m
-CONFIG_SND_SOC_QDSP6_AFE_CLOCKS=m
-CONFIG_SND_SOC_QDSP6_ADM=m
-CONFIG_SND_SOC_QDSP6_ROUTING=m
-CONFIG_SND_SOC_QDSP6_ASM=m
-CONFIG_SND_SOC_QDSP6_ASM_DAI=m
-CONFIG_SND_SOC_QDSP6_APM_DAI=m
-CONFIG_SND_SOC_QDSP6_APM_LPASS_DAI=m
-CONFIG_SND_SOC_QDSP6_APM=m
-CONFIG_SND_SOC_QDSP6_PRM_LPASS_CLOCKS=m
-CONFIG_SND_SOC_QDSP6_PRM=m
-CONFIG_SND_SOC_QDSP6=m
+CONFIG_SND_SOC_QCOM_COMMON=y
+CONFIG_SND_SOC_QCOM_SDW=y
+CONFIG_SND_SOC_QDSP6_COMMON=y
+CONFIG_SND_SOC_QDSP6_CORE=y
+CONFIG_SND_SOC_QDSP6_AFE=y
+CONFIG_SND_SOC_QDSP6_AFE_DAI=y
+CONFIG_SND_SOC_QDSP6_AFE_CLOCKS=y
+CONFIG_SND_SOC_QDSP6_ADM=y
+CONFIG_SND_SOC_QDSP6_ROUTING=y
+CONFIG_SND_SOC_QDSP6_ASM=y
+CONFIG_SND_SOC_QDSP6_ASM_DAI=y
+CONFIG_SND_SOC_QDSP6_APM_DAI=y
+CONFIG_SND_SOC_QDSP6_APM_LPASS_DAI=y
+CONFIG_SND_SOC_QDSP6_APM=y
+CONFIG_SND_SOC_QDSP6_PRM_LPASS_CLOCKS=y
+CONFIG_SND_SOC_QDSP6_PRM=y
+CONFIG_SND_SOC_QDSP6=y
CONFIG_SND_SOC_MSM8996=m
CONFIG_SND_SOC_SDM845=m
-CONFIG_SND_SOC_SM8250=m
+CONFIG_SND_SOC_SM8250=y
CONFIG_SND_SOC_SC8280XP=m
CONFIG_SND_SOC_SC7180=m
CONFIG_SND_SOC_SC7280=m
@@ -5558,7 +4948,7 @@ CONFIG_SND_SOC_CROS_EC_CODEC=m
# CONFIG_SND_SOC_CX2072X is not set
CONFIG_SND_SOC_DA7213=m
CONFIG_SND_SOC_DMIC=m
-CONFIG_SND_SOC_HDMI_CODEC=m
+CONFIG_SND_SOC_HDMI_CODEC=y
# CONFIG_SND_SOC_ES7134 is not set
# CONFIG_SND_SOC_ES7241 is not set
# CONFIG_SND_SOC_ES8311 is not set
@@ -5669,13 +5059,13 @@ CONFIG_SND_SOC_SPDIF=m
# CONFIG_SND_SOC_TSCS42XX is not set
# CONFIG_SND_SOC_TSCS454 is not set
# CONFIG_SND_SOC_UDA1334 is not set
-CONFIG_SND_SOC_WCD_CLASSH=m
+CONFIG_SND_SOC_WCD_CLASSH=y
# CONFIG_SND_SOC_WCD9335 is not set
-CONFIG_SND_SOC_WCD_MBHC=m
+CONFIG_SND_SOC_WCD_MBHC=y
# CONFIG_SND_SOC_WCD934X is not set
# CONFIG_SND_SOC_WCD937X_SDW is not set
-CONFIG_SND_SOC_WCD938X=m
-CONFIG_SND_SOC_WCD938X_SDW=m
+CONFIG_SND_SOC_WCD938X=y
+CONFIG_SND_SOC_WCD938X_SDW=y
# CONFIG_SND_SOC_WCD939X_SDW is not set
# CONFIG_SND_SOC_WM8510 is not set
# CONFIG_SND_SOC_WM8523 is not set
@@ -5703,7 +5093,7 @@ CONFIG_SND_SOC_WCD938X_SDW=m
# CONFIG_SND_SOC_WM8974 is not set
# CONFIG_SND_SOC_WM8978 is not set
# CONFIG_SND_SOC_WM8985 is not set
-CONFIG_SND_SOC_WSA881X=m
+CONFIG_SND_SOC_WSA881X=y
# CONFIG_SND_SOC_WSA883X is not set
# CONFIG_SND_SOC_WSA884X is not set
# CONFIG_SND_SOC_ZL38060 is not set
@@ -5718,11 +5108,11 @@ CONFIG_SND_SOC_WSA881X=m
# CONFIG_SND_SOC_NAU8822 is not set
# CONFIG_SND_SOC_NAU8824 is not set
# CONFIG_SND_SOC_TPA6130A2 is not set
-CONFIG_SND_SOC_LPASS_MACRO_COMMON=m
-CONFIG_SND_SOC_LPASS_WSA_MACRO=m
-CONFIG_SND_SOC_LPASS_VA_MACRO=m
-CONFIG_SND_SOC_LPASS_RX_MACRO=m
-CONFIG_SND_SOC_LPASS_TX_MACRO=m
+CONFIG_SND_SOC_LPASS_MACRO_COMMON=y
+CONFIG_SND_SOC_LPASS_WSA_MACRO=y
+CONFIG_SND_SOC_LPASS_VA_MACRO=y
+CONFIG_SND_SOC_LPASS_RX_MACRO=y
+CONFIG_SND_SOC_LPASS_TX_MACRO=y
# end of CODEC drivers
CONFIG_SND_SIMPLE_CARD_UTILS=m
@@ -6033,60 +5423,7 @@ CONFIG_USB_ISP1760_DUAL_ROLE=y
#
# USB port drivers
#
-CONFIG_USB_SERIAL=m
-# CONFIG_USB_SERIAL_GENERIC is not set
-# CONFIG_USB_SERIAL_SIMPLE is not set
-# CONFIG_USB_SERIAL_AIRCABLE is not set
-# CONFIG_USB_SERIAL_ARK3116 is not set
-# CONFIG_USB_SERIAL_BELKIN is not set
-# CONFIG_USB_SERIAL_CH341 is not set
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
-CONFIG_USB_SERIAL_CP210X=m
-# CONFIG_USB_SERIAL_CYPRESS_M8 is not set
-# CONFIG_USB_SERIAL_EMPEG is not set
-CONFIG_USB_SERIAL_FTDI_SIO=m
-# CONFIG_USB_SERIAL_VISOR is not set
-# CONFIG_USB_SERIAL_IPAQ is not set
-# CONFIG_USB_SERIAL_IR is not set
-# CONFIG_USB_SERIAL_EDGEPORT is not set
-# CONFIG_USB_SERIAL_EDGEPORT_TI is not set
-# CONFIG_USB_SERIAL_F81232 is not set
-# CONFIG_USB_SERIAL_F8153X is not set
-# CONFIG_USB_SERIAL_GARMIN is not set
-# CONFIG_USB_SERIAL_IPW is not set
-# CONFIG_USB_SERIAL_IUU is not set
-# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
-# CONFIG_USB_SERIAL_KEYSPAN is not set
-# CONFIG_USB_SERIAL_KLSI is not set
-# CONFIG_USB_SERIAL_KOBIL_SCT is not set
-# CONFIG_USB_SERIAL_MCT_U232 is not set
-# CONFIG_USB_SERIAL_METRO is not set
-# CONFIG_USB_SERIAL_MOS7720 is not set
-# CONFIG_USB_SERIAL_MOS7840 is not set
-# CONFIG_USB_SERIAL_MXUPORT is not set
-# CONFIG_USB_SERIAL_NAVMAN is not set
-# CONFIG_USB_SERIAL_PL2303 is not set
-# CONFIG_USB_SERIAL_OTI6858 is not set
-# CONFIG_USB_SERIAL_QCAUX is not set
-# CONFIG_USB_SERIAL_QUALCOMM is not set
-# CONFIG_USB_SERIAL_SPCP8X5 is not set
-# CONFIG_USB_SERIAL_SAFE is not set
-# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
-# CONFIG_USB_SERIAL_SYMBOL is not set
-# CONFIG_USB_SERIAL_TI is not set
-# CONFIG_USB_SERIAL_CYBERJACK is not set
-CONFIG_USB_SERIAL_WWAN=m
-CONFIG_USB_SERIAL_OPTION=m
-# CONFIG_USB_SERIAL_OMNINET is not set
-# CONFIG_USB_SERIAL_OPTICON is not set
-# CONFIG_USB_SERIAL_XSENS_MT is not set
-# CONFIG_USB_SERIAL_WISHBONE is not set
-# CONFIG_USB_SERIAL_SSU100 is not set
-# CONFIG_USB_SERIAL_QT2 is not set
-# CONFIG_USB_SERIAL_UPD78F0730 is not set
-# CONFIG_USB_SERIAL_XR is not set
-# CONFIG_USB_SERIAL_DEBUG is not set
+# CONFIG_USB_SERIAL is not set
#
# USB Miscellaneous drivers
@@ -6217,14 +5554,14 @@ CONFIG_USB_MASS_STORAGE=m
# CONFIG_USB_RAW_GADGET is not set
# end of USB Gadget precomposed configurations
-CONFIG_TYPEC=m
-CONFIG_TYPEC_TCPM=m
+CONFIG_TYPEC=y
+CONFIG_TYPEC_TCPM=y
CONFIG_TYPEC_TCPCI=m
# CONFIG_TYPEC_RT1711H is not set
# CONFIG_TYPEC_MT6360 is not set
# CONFIG_TYPEC_TCPCI_MAXIM is not set
CONFIG_TYPEC_FUSB302=m
-CONFIG_TYPEC_QCOM_PMIC=m
+CONFIG_TYPEC_QCOM_PMIC=y
CONFIG_TYPEC_UCSI=m
CONFIG_UCSI_CCG=m
# CONFIG_UCSI_ACPI is not set
@@ -6244,7 +5581,7 @@ CONFIG_TYPEC_MUX_FSA4480=m
CONFIG_TYPEC_MUX_GPIO_SBU=m
# CONFIG_TYPEC_MUX_PI3USB30532 is not set
# CONFIG_TYPEC_MUX_IT5205 is not set
-CONFIG_TYPEC_MUX_NB7VPQ904M=m
+CONFIG_TYPEC_MUX_NB7VPQ904M=y
# CONFIG_TYPEC_MUX_PTN36502 is not set
CONFIG_TYPEC_MUX_WCD939X_USBSS=m
# end of USB Type-C Multiplexer/DeMultiplexer Switch support
@@ -6259,7 +5596,6 @@ CONFIG_TYPEC_DP_ALTMODE=m
CONFIG_USB_ROLE_SWITCH=y
CONFIG_MMC=y
CONFIG_PWRSEQ_EMMC=y
-# CONFIG_PWRSEQ_SD8787 is not set
CONFIG_PWRSEQ_SIMPLE=y
CONFIG_MMC_BLOCK=y
CONFIG_MMC_BLOCK_MINORS=32
@@ -6317,7 +5653,7 @@ CONFIG_SCSI_UFS_QCOM=y
CONFIG_NEW_LEDS=y
CONFIG_LEDS_CLASS=y
# CONFIG_LEDS_CLASS_FLASH is not set
-CONFIG_LEDS_CLASS_MULTICOLOR=m
+CONFIG_LEDS_CLASS_MULTICOLOR=y
# CONFIG_LEDS_BRIGHTNESS_HW_CHANGED is not set
#
@@ -6380,7 +5716,7 @@ CONFIG_LEDS_SYSCON=y
# CONFIG_LEDS_KTD202X is not set
# CONFIG_LEDS_NCP5623 is not set
# CONFIG_LEDS_PWM_MULTICOLOR is not set
-CONFIG_LEDS_QCOM_LPG=m
+CONFIG_LEDS_QCOM_LPG=y
#
# LED Triggers
@@ -6446,41 +5782,39 @@ CONFIG_RTC_INTF_DEV=y
# CONFIG_RTC_DRV_ABB5ZES3 is not set
# CONFIG_RTC_DRV_ABEOZ9 is not set
# CONFIG_RTC_DRV_ABX80X is not set
-CONFIG_RTC_DRV_DS1307=m
-# CONFIG_RTC_DRV_DS1307_CENTURY is not set
+# CONFIG_RTC_DRV_DS1307 is not set
# CONFIG_RTC_DRV_DS1374 is not set
# CONFIG_RTC_DRV_DS1672 is not set
-CONFIG_RTC_DRV_HYM8563=m
+# CONFIG_RTC_DRV_HYM8563 is not set
# CONFIG_RTC_DRV_MAX6900 is not set
# CONFIG_RTC_DRV_MAX31335 is not set
-CONFIG_RTC_DRV_MAX77686=y
+# CONFIG_RTC_DRV_MAX77686 is not set
# CONFIG_RTC_DRV_NCT3018Y is not set
-CONFIG_RTC_DRV_RK808=m
+# CONFIG_RTC_DRV_RK808 is not set
# CONFIG_RTC_DRV_RS5C372 is not set
-CONFIG_RTC_DRV_ISL1208=m
+# CONFIG_RTC_DRV_ISL1208 is not set
# CONFIG_RTC_DRV_ISL12022 is not set
# CONFIG_RTC_DRV_ISL12026 is not set
# CONFIG_RTC_DRV_X1205 is not set
# CONFIG_RTC_DRV_PCF8523 is not set
-CONFIG_RTC_DRV_PCF85063=m
-CONFIG_RTC_DRV_PCF85363=m
-CONFIG_RTC_DRV_PCF8563=m
+# CONFIG_RTC_DRV_PCF85063 is not set
+# CONFIG_RTC_DRV_PCF85363 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
# CONFIG_RTC_DRV_PCF8583 is not set
-CONFIG_RTC_DRV_M41T80=m
-# CONFIG_RTC_DRV_M41T80_WDT is not set
-CONFIG_RTC_DRV_BQ32K=m
+# CONFIG_RTC_DRV_M41T80 is not set
+# CONFIG_RTC_DRV_BQ32K is not set
CONFIG_RTC_DRV_TPS6594=m
# CONFIG_RTC_DRV_S35390A is not set
# CONFIG_RTC_DRV_FM3130 is not set
# CONFIG_RTC_DRV_RX8010 is not set
# CONFIG_RTC_DRV_RX8111 is not set
-CONFIG_RTC_DRV_RX8581=m
+# CONFIG_RTC_DRV_RX8581 is not set
# CONFIG_RTC_DRV_RX8025 is not set
# CONFIG_RTC_DRV_EM3027 is not set
-CONFIG_RTC_DRV_RV3028=m
+# CONFIG_RTC_DRV_RV3028 is not set
# CONFIG_RTC_DRV_RV3032 is not set
-CONFIG_RTC_DRV_RV8803=m
-CONFIG_RTC_DRV_S5M=y
+# CONFIG_RTC_DRV_RV8803 is not set
+# CONFIG_RTC_DRV_S5M is not set
# CONFIG_RTC_DRV_SD3078 is not set
#
@@ -6505,9 +5839,8 @@ CONFIG_RTC_I2C_AND_SPI=y
#
# SPI and I2C RTC drivers
#
-CONFIG_RTC_DRV_DS3232=y
-CONFIG_RTC_DRV_DS3232_HWMON=y
-CONFIG_RTC_DRV_PCF2127=m
+# CONFIG_RTC_DRV_DS3232 is not set
+# CONFIG_RTC_DRV_PCF2127 is not set
# CONFIG_RTC_DRV_RV3029C2 is not set
# CONFIG_RTC_DRV_RX6110 is not set
@@ -6520,8 +5853,8 @@ CONFIG_RTC_DRV_PCF2127=m
# CONFIG_RTC_DRV_DS1685_FAMILY is not set
# CONFIG_RTC_DRV_DS1742 is not set
# CONFIG_RTC_DRV_DS2404 is not set
-CONFIG_RTC_DRV_DA9063=m
-CONFIG_RTC_DRV_EFI=y
+# CONFIG_RTC_DRV_DA9063 is not set
+# CONFIG_RTC_DRV_EFI is not set
# CONFIG_RTC_DRV_STK17TA8 is not set
# CONFIG_RTC_DRV_M48T86 is not set
# CONFIG_RTC_DRV_M48T35 is not set
@@ -6530,17 +5863,17 @@ CONFIG_RTC_DRV_EFI=y
# CONFIG_RTC_DRV_RP5C01 is not set
# CONFIG_RTC_DRV_OPTEE is not set
# CONFIG_RTC_DRV_ZYNQMP is not set
-CONFIG_RTC_DRV_CROS_EC=y
+# CONFIG_RTC_DRV_CROS_EC is not set
#
# on-CPU RTC drivers
#
# CONFIG_RTC_DRV_PL030 is not set
-CONFIG_RTC_DRV_PL031=y
+# CONFIG_RTC_DRV_PL031 is not set
# CONFIG_RTC_DRV_CADENCE is not set
# CONFIG_RTC_DRV_FTRTC010 is not set
-CONFIG_RTC_DRV_PM8XXX=m
-CONFIG_RTC_DRV_MT6397=m
+CONFIG_RTC_DRV_PM8XXX=y
+# CONFIG_RTC_DRV_MT6397 is not set
# CONFIG_RTC_DRV_R7301 is not set
#
@@ -6730,7 +6063,6 @@ CONFIG_STAGING=y
# CONFIG_FB_SM750 is not set
CONFIG_STAGING_MEDIA=y
-# CONFIG_DVB_AV7110 is not set
CONFIG_VIDEO_MAX96712=m
#
@@ -6999,14 +6331,14 @@ CONFIG_QCOM_IOMMU=y
#
CONFIG_REMOTEPROC=y
# CONFIG_REMOTEPROC_CDEV is not set
-CONFIG_QCOM_PIL_INFO=m
-CONFIG_QCOM_RPROC_COMMON=m
-CONFIG_QCOM_Q6V5_COMMON=m
+CONFIG_QCOM_PIL_INFO=y
+CONFIG_QCOM_RPROC_COMMON=y
+CONFIG_QCOM_Q6V5_COMMON=y
CONFIG_QCOM_Q6V5_ADSP=m
CONFIG_QCOM_Q6V5_MSS=m
-CONFIG_QCOM_Q6V5_PAS=m
+CONFIG_QCOM_Q6V5_PAS=y
# CONFIG_QCOM_Q6V5_WCSS is not set
-CONFIG_QCOM_SYSMON=m
+CONFIG_QCOM_SYSMON=y
CONFIG_QCOM_WCNSS_PIL=m
# end of Remoteproc drivers
@@ -7014,24 +6346,24 @@ CONFIG_QCOM_WCNSS_PIL=m
# Rpmsg drivers
#
CONFIG_RPMSG=y
-CONFIG_RPMSG_CHAR=m
-CONFIG_RPMSG_CTRL=m
+CONFIG_RPMSG_CHAR=y
+CONFIG_RPMSG_CTRL=y
CONFIG_RPMSG_NS=y
CONFIG_RPMSG_QCOM_GLINK=y
CONFIG_RPMSG_QCOM_GLINK_RPM=y
-CONFIG_RPMSG_QCOM_GLINK_SMEM=m
+CONFIG_RPMSG_QCOM_GLINK_SMEM=y
CONFIG_RPMSG_QCOM_SMD=y
CONFIG_RPMSG_VIRTIO=y
# end of Rpmsg drivers
-CONFIG_SOUNDWIRE=m
+CONFIG_SOUNDWIRE=y
#
# SoundWire Devices
#
# CONFIG_SOUNDWIRE_AMD is not set
# CONFIG_SOUNDWIRE_INTEL is not set
-CONFIG_SOUNDWIRE_QCOM=m
+CONFIG_SOUNDWIRE_QCOM=y
#
# SOC (System On Chip) specific Drivers
@@ -7080,15 +6412,15 @@ CONFIG_QCOM_AOSS_QMP=y
CONFIG_QCOM_COMMAND_DB=y
CONFIG_QCOM_GENI_SE=y
# CONFIG_QCOM_GSBI is not set
-CONFIG_QCOM_LLCC=m
+CONFIG_QCOM_LLCC=y
CONFIG_QCOM_KRYO_L2_ACCESSORS=y
-CONFIG_QCOM_MDT_LOADER=m
-CONFIG_QCOM_OCMEM=m
-CONFIG_QCOM_PD_MAPPER=m
-CONFIG_QCOM_PDR_HELPERS=m
-CONFIG_QCOM_PDR_MSG=m
+CONFIG_QCOM_MDT_LOADER=y
+CONFIG_QCOM_OCMEM=y
+CONFIG_QCOM_PD_MAPPER=y
+CONFIG_QCOM_PDR_HELPERS=y
+CONFIG_QCOM_PDR_MSG=y
CONFIG_QCOM_PMIC_GLINK=m
-CONFIG_QCOM_QMI_HELPERS=m
+CONFIG_QCOM_QMI_HELPERS=y
# CONFIG_QCOM_RAMP_CTRL is not set
CONFIG_QCOM_RMTFS_MEM=m
# CONFIG_QCOM_RPM_MASTER_STATS is not set
@@ -7098,13 +6430,13 @@ CONFIG_QCOM_SMD_RPM=y
CONFIG_QCOM_SMEM_STATE=y
CONFIG_QCOM_SMP2P=y
CONFIG_QCOM_SMSM=y
-CONFIG_QCOM_SOCINFO=m
+CONFIG_QCOM_SOCINFO=y
CONFIG_QCOM_SPM=m
-CONFIG_QCOM_STATS=m
+CONFIG_QCOM_STATS=y
CONFIG_QCOM_WCNSS_CTRL=m
-CONFIG_QCOM_APR=m
-CONFIG_QCOM_ICC_BWMON=m
-CONFIG_QCOM_PBS=m
+CONFIG_QCOM_APR=y
+CONFIG_QCOM_ICC_BWMON=y
+CONFIG_QCOM_PBS=y
# end of Qualcomm SoC drivers
CONFIG_SOC_TI=y
@@ -7302,11 +6634,11 @@ CONFIG_MAX9611=m
# CONFIG_MEDIATEK_MT6360_ADC is not set
# CONFIG_NAU7802 is not set
# CONFIG_PAC1934 is not set
-CONFIG_QCOM_VADC_COMMON=m
+CONFIG_QCOM_VADC_COMMON=y
# CONFIG_QCOM_SPMI_RRADC is not set
# CONFIG_QCOM_SPMI_IADC is not set
CONFIG_QCOM_SPMI_VADC=m
-CONFIG_QCOM_SPMI_ADC5=m
+CONFIG_QCOM_SPMI_ADC5=y
# CONFIG_RICHTEK_RTQ6056 is not set
# CONFIG_SD_ADC_MODULATOR is not set
# CONFIG_TI_ADC081C is not set
@@ -7775,7 +7107,7 @@ CONFIG_PWM_CROS_EC=m
# CONFIG_PWM_DWC is not set
# CONFIG_PWM_FSL_FTM is not set
# CONFIG_PWM_GPIO is not set
-CONFIG_PWM_HTR3212=m
+CONFIG_PWM_HTR3212=y
# CONFIG_PWM_PCA9685 is not set
# CONFIG_PWM_XILINX is not set
@@ -7838,8 +7170,8 @@ CONFIG_PHY_QCOM_EDP=m
# CONFIG_PHY_QCOM_IPQ806X_SATA is not set
CONFIG_PHY_QCOM_PCIE2=m
CONFIG_PHY_QCOM_QMP=y
-CONFIG_PHY_QCOM_QMP_COMBO=m
-CONFIG_PHY_QCOM_QMP_PCIE=m
+CONFIG_PHY_QCOM_QMP_COMBO=y
+CONFIG_PHY_QCOM_QMP_PCIE=y
CONFIG_PHY_QCOM_QMP_PCIE_8996=m
CONFIG_PHY_QCOM_QMP_UFS=y
CONFIG_PHY_QCOM_QMP_USB=m
@@ -7849,7 +7181,7 @@ CONFIG_PHY_QCOM_SNPS_EUSB2=m
CONFIG_PHY_QCOM_EUSB2_REPEATER=m
CONFIG_PHY_QCOM_M31_USB=m
CONFIG_PHY_QCOM_USB_HS=m
-CONFIG_PHY_QCOM_USB_SNPS_FEMTO_V2=m
+CONFIG_PHY_QCOM_USB_SNPS_FEMTO_V2=y
# CONFIG_PHY_QCOM_USB_HSIC is not set
CONFIG_PHY_QCOM_USB_HS_28NM=m
CONFIG_PHY_QCOM_USB_SS=m
@@ -7921,7 +7253,7 @@ CONFIG_NVMEM_SPMI_SDAM=m
#
# HW tracing support
#
-CONFIG_STM=m
+CONFIG_STM=y
# CONFIG_STM_PROTO_BASIC is not set
# CONFIG_STM_PROTO_SYS_T is not set
# CONFIG_STM_DUMMY is not set
@@ -7951,7 +7283,7 @@ CONFIG_OF_FPGA_REGION=m
CONFIG_TEE=y
CONFIG_OPTEE=y
# CONFIG_OPTEE_INSECURE_LOAD_IMAGE is not set
-CONFIG_MULTIPLEXER=y
+CONFIG_MULTIPLEXER=m
#
# Multiplexer drivers
@@ -7959,12 +7291,12 @@ CONFIG_MULTIPLEXER=y
# CONFIG_MUX_ADG792A is not set
# CONFIG_MUX_ADGS1408 is not set
CONFIG_MUX_GPIO=m
-CONFIG_MUX_MMIO=y
+CONFIG_MUX_MMIO=m
# end of Multiplexer drivers
CONFIG_PM_OPP=y
# CONFIG_SIOX is not set
-CONFIG_SLIMBUS=m
+CONFIG_SLIMBUS=y
CONFIG_SLIM_QCOM_CTRL=m
CONFIG_SLIM_QCOM_NGD_CTRL=m
CONFIG_INTERCONNECT=y
@@ -7976,7 +7308,7 @@ CONFIG_INTERCONNECT_QCOM_MSM8916=m
# CONFIG_INTERCONNECT_QCOM_MSM8953 is not set
# CONFIG_INTERCONNECT_QCOM_MSM8974 is not set
CONFIG_INTERCONNECT_QCOM_MSM8996=y
-CONFIG_INTERCONNECT_QCOM_OSM_L3=m
+CONFIG_INTERCONNECT_QCOM_OSM_L3=y
CONFIG_INTERCONNECT_QCOM_QCM2290=y
CONFIG_INTERCONNECT_QCOM_QCS404=m
CONFIG_INTERCONNECT_QCOM_QDU1000=y
@@ -8192,6 +7524,14 @@ CONFIG_PSTORE_RAM=m
# CONFIG_EROFS_FS is not set
CONFIG_NETWORK_FILESYSTEMS=y
CONFIG_NFS_FS=y
+# CONFIG_NFS_V2 is not set
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+# CONFIG_NFS_V4 is not set
+# CONFIG_NFS_SWAP is not set
+# CONFIG_ROOT_NFS is not set
+# CONFIG_NFS_FSCACHE is not set
+CONFIG_NFS_DISABLE_UDP_SUPPORT=y
CONFIG_NFSD=y
# CONFIG_NFSD_V2 is not set
# CONFIG_NFSD_V3_ACL is not set
@@ -8359,7 +7699,7 @@ CONFIG_CRYPTO_RNG_DEFAULT=y
CONFIG_CRYPTO_AKCIPHER2=y
CONFIG_CRYPTO_AKCIPHER=y
CONFIG_CRYPTO_KPP2=y
-CONFIG_CRYPTO_KPP=m
+CONFIG_CRYPTO_KPP=y
CONFIG_CRYPTO_ACOMP2=y
CONFIG_CRYPTO_MANAGER=y
CONFIG_CRYPTO_MANAGER2=y
@@ -8369,7 +7709,7 @@ CONFIG_CRYPTO_NULL=y
CONFIG_CRYPTO_NULL2=y
# CONFIG_CRYPTO_PCRYPT is not set
# CONFIG_CRYPTO_CRYPTD is not set
-CONFIG_CRYPTO_AUTHENC=m
+CONFIG_CRYPTO_AUTHENC=y
CONFIG_CRYPTO_TEST=m
CONFIG_CRYPTO_ENGINE=m
# end of Crypto core or helper
@@ -8380,8 +7720,8 @@ CONFIG_CRYPTO_ENGINE=m
CONFIG_CRYPTO_RSA=y
CONFIG_CRYPTO_DH=m
# CONFIG_CRYPTO_DH_RFC7919_GROUPS is not set
-CONFIG_CRYPTO_ECC=m
-CONFIG_CRYPTO_ECDH=m
+CONFIG_CRYPTO_ECC=y
+CONFIG_CRYPTO_ECDH=y
# CONFIG_CRYPTO_ECDSA is not set
# CONFIG_CRYPTO_ECRDSA is not set
CONFIG_CRYPTO_CURVE25519=m
@@ -8415,15 +7755,15 @@ CONFIG_CRYPTO_SM4_GENERIC=m
# CONFIG_CRYPTO_ADIANTUM is not set
# CONFIG_CRYPTO_ARC4 is not set
# CONFIG_CRYPTO_CHACHA20 is not set
-CONFIG_CRYPTO_CBC=m
-CONFIG_CRYPTO_CTR=m
+CONFIG_CRYPTO_CBC=y
+CONFIG_CRYPTO_CTR=y
# CONFIG_CRYPTO_CTS is not set
CONFIG_CRYPTO_ECB=y
# CONFIG_CRYPTO_HCTR2 is not set
# CONFIG_CRYPTO_KEYWRAP is not set
# CONFIG_CRYPTO_LRW is not set
# CONFIG_CRYPTO_PCBC is not set
-CONFIG_CRYPTO_XTS=m
+CONFIG_CRYPTO_XTS=y
# end of Length-preserving ciphers and modes
#
@@ -8431,8 +7771,8 @@ CONFIG_CRYPTO_XTS=m
#
# CONFIG_CRYPTO_AEGIS128 is not set
# CONFIG_CRYPTO_CHACHA20POLY1305 is not set
-CONFIG_CRYPTO_CCM=m
-CONFIG_CRYPTO_GCM=m
+CONFIG_CRYPTO_CCM=y
+CONFIG_CRYPTO_GCM=y
CONFIG_CRYPTO_GENIV=y
# CONFIG_CRYPTO_SEQIV is not set
CONFIG_CRYPTO_ECHAINIV=y
@@ -8443,12 +7783,12 @@ CONFIG_CRYPTO_ECHAINIV=y
# Hashes, digests, and MACs
#
CONFIG_CRYPTO_BLAKE2B=y
-CONFIG_CRYPTO_CMAC=m
-CONFIG_CRYPTO_GHASH=m
+CONFIG_CRYPTO_CMAC=y
+CONFIG_CRYPTO_GHASH=y
CONFIG_CRYPTO_HMAC=y
# CONFIG_CRYPTO_MD4 is not set
CONFIG_CRYPTO_MD5=m
-CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_MICHAEL_MIC=y
# CONFIG_CRYPTO_POLY1305 is not set
# CONFIG_CRYPTO_RMD160 is not set
CONFIG_CRYPTO_SHA1=y
@@ -8540,7 +7880,7 @@ CONFIG_CRYPTO_AES_ARM64_BS=m
CONFIG_CRYPTO_AES_ARM64_CE_CCM=y
# CONFIG_CRYPTO_SM4_ARM64_CE_CCM is not set
# CONFIG_CRYPTO_SM4_ARM64_CE_GCM is not set
-CONFIG_CRYPTO_CRCT10DIF_ARM64_CE=m
+CONFIG_CRYPTO_CRCT10DIF_ARM64_CE=y
# end of Accelerated Cryptographic Algorithms for CPU (arm64)
CONFIG_CRYPTO_HW=y
@@ -8557,7 +7897,7 @@ CONFIG_CRYPTO_HW=y
# CONFIG_CRYPTO_DEV_QAT_C3XXXVF is not set
# CONFIG_CRYPTO_DEV_QAT_C62XVF is not set
# CONFIG_CRYPTO_DEV_CAVIUM_ZIP is not set
-CONFIG_CRYPTO_DEV_QCE=m
+CONFIG_CRYPTO_DEV_QCE=y
CONFIG_CRYPTO_DEV_QCE_SKCIPHER=y
CONFIG_CRYPTO_DEV_QCE_SHA=y
CONFIG_CRYPTO_DEV_QCE_AEAD=y
@@ -8566,7 +7906,7 @@ CONFIG_CRYPTO_DEV_QCE_ENABLE_ALL=y
# CONFIG_CRYPTO_DEV_QCE_ENABLE_SHA is not set
# CONFIG_CRYPTO_DEV_QCE_ENABLE_AEAD is not set
CONFIG_CRYPTO_DEV_QCE_SW_MAX_LEN=512
-CONFIG_CRYPTO_DEV_QCOM_RNG=m
+CONFIG_CRYPTO_DEV_QCOM_RNG=y
# CONFIG_CRYPTO_DEV_VIRTIO is not set
# CONFIG_CRYPTO_DEV_SAFEXCEL is not set
CONFIG_CRYPTO_DEV_CCREE=m
@@ -8632,7 +7972,7 @@ CONFIG_CRYPTO_LIB_CHACHA_GENERIC=m
# CONFIG_CRYPTO_LIB_CHACHA is not set
CONFIG_CRYPTO_LIB_CURVE25519_GENERIC=m
# CONFIG_CRYPTO_LIB_CURVE25519 is not set
-CONFIG_CRYPTO_LIB_DES=m
+CONFIG_CRYPTO_LIB_DES=y
CONFIG_CRYPTO_LIB_POLY1305_RSIZE=9
# CONFIG_CRYPTO_LIB_POLY1305 is not set
# CONFIG_CRYPTO_LIB_CHACHA20POLY1305 is not set
@@ -8982,22 +8322,7 @@ CONFIG_STRICT_DEVMEM=y
# CONFIG_PID_IN_CONTEXTIDR is not set
# CONFIG_DEBUG_EFI is not set
# CONFIG_ARM64_RELOC_TEST is not set
-CONFIG_CORESIGHT=m
-CONFIG_CORESIGHT_LINKS_AND_SINKS=m
-CONFIG_CORESIGHT_LINK_AND_SINK_TMC=m
-CONFIG_CORESIGHT_CATU=m
-CONFIG_CORESIGHT_SINK_TPIU=m
-CONFIG_CORESIGHT_SINK_ETBV10=m
-# CONFIG_CORESIGHT_SOURCE_ETM4X is not set
-CONFIG_CORESIGHT_STM=m
-CONFIG_CORESIGHT_CPU_DEBUG=m
-# CONFIG_CORESIGHT_CPU_DEBUG_DEFAULT_ON is not set
-CONFIG_CORESIGHT_CTI=m
-# CONFIG_CORESIGHT_CTI_INTEGRATION_REGS is not set
-# CONFIG_ULTRASOC_SMB is not set
-# CONFIG_CORESIGHT_TPDM is not set
-# CONFIG_CORESIGHT_TPDA is not set
-# CONFIG_CORESIGHT_DUMMY is not set
+# CONFIG_CORESIGHT is not set
# end of arm64 Debugging
#
diff --git a/projects/Qualcomm/devices/SD865/options b/projects/Qualcomm/devices/SD865/options
index 9248e4fc9c..d11bb8c077 100644
--- a/projects/Qualcomm/devices/SD865/options
+++ b/projects/Qualcomm/devices/SD865/options
@@ -66,7 +66,7 @@
WINDOWMANAGER="swaywm-env"
# kernel serial console
- EXTRA_CMDLINE="quiet rootwait console=tty0 clk_ignore_unused pd_ignore_unused fbcon=rotate:1"
+ EXTRA_CMDLINE="quiet rootwait console=tty0 clk_ignore_unused pd_ignore_unused"
# build and install rocknix joypad driver (yes / no)
ROCKNIX_JOYPAD="no"
diff --git a/projects/Qualcomm/patches/linux/SD865/0006_Input--driver-for-Retroid-Pocket-Gamepad.patch b/projects/Qualcomm/patches/linux/SD865/0006_Input--driver-for-Retroid-Pocket-Gamepad.patch
index a5058d5da4..373380a2f1 100644
--- a/projects/Qualcomm/patches/linux/SD865/0006_Input--driver-for-Retroid-Pocket-Gamepad.patch
+++ b/projects/Qualcomm/patches/linux/SD865/0006_Input--driver-for-Retroid-Pocket-Gamepad.patch
@@ -45,7 +45,7 @@ index 000000000000..1350fc1a291b
@@ -0,0 +1,259 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
-+ * Driver for Ayn Odin 2 Gamepad
++ * Driver for Retroid Pocket Gamepad
+ *
+ * Copyright (C) 2024 Molly Sophia
+ * Copyright (C) 2024 BigfootACA
@@ -197,7 +197,7 @@ index 000000000000..1350fc1a291b
+
+ checksum = gamepad_data_checksum(data, count);
+ if (checksum != *(data + count - 1)) {
-+ dev_warn_ratelimited(dev, "packet checksum failed");
++ //dev_warn_ratelimited(dev, "packet checksum failed");
+ return count;
+ }
+
@@ -255,8 +255,8 @@ index 000000000000..1350fc1a291b
+ if (!gamepad_dev->dev_input)
+ return dev_err_probe(dev, -ENOMEM, "Not enough memory for input device\n");
+
-+ gamepad_dev->dev_input->name = "Ayn Odin2 Gamepad";
-+ gamepad_dev->dev_input->phys = "odin2-gamepad/input0";
++ gamepad_dev->dev_input->name = "Retroid Pocket Gamepad";
++ gamepad_dev->dev_input->phys = "retroid-pocket-gamepad/input0";
+ __set_bit(EV_ABS, gamepad_dev->dev_input->evbit);
+
+ for (int i = 0; i < ARRAY_SIZE(keymap); i++)
@@ -283,14 +283,14 @@ index 000000000000..1350fc1a291b
+}
+
+static const struct of_device_id gamepad_mcu_uart_of_match[] = {
-+ { .compatible = "ayn,odin2-gamepad" },
++ { .compatible = "retroid,retroid-pocket-gamepad" },
+ {}
+};
+MODULE_DEVICE_TABLE(of, gamepad_mcu_uart_of_match);
+
+static struct serdev_device_driver gamepad_mcu_uart_driver = {
+ .driver = {
-+ .name = "odin2-gamepad",
++ .name = "retroid-pocket-gamepad",
+ .of_match_table = gamepad_mcu_uart_of_match,
+ },
+ .probe = gamepad_mcu_uart_probe,
@@ -299,7 +299,7 @@ index 000000000000..1350fc1a291b
+module_serdev_device_driver(gamepad_mcu_uart_driver);
+
+MODULE_LICENSE("GPL");
-+MODULE_DESCRIPTION("Gamepad driver for Ayn Odin2");
++MODULE_DESCRIPTION("Gamepad driver for Retroid Pocket");
+MODULE_AUTHOR("Molly Sophia ");
+MODULE_AUTHOR("BigfootACA ");
--
diff --git a/projects/Qualcomm/patches/linux/SD865/0013_arm64--dts--qcom--commonized-SM8250-Retroid-Pocket.patch b/projects/Qualcomm/patches/linux/SD865/0013_arm64--dts--qcom--commonized-SM8250-Retroid-Pocket.patch
index cce0b4e88e..252fd9a2d9 100755
--- a/projects/Qualcomm/patches/linux/SD865/0013_arm64--dts--qcom--commonized-SM8250-Retroid-Pocket.patch
+++ b/projects/Qualcomm/patches/linux/SD865/0013_arm64--dts--qcom--commonized-SM8250-Retroid-Pocket.patch
@@ -1253,7 +1253,7 @@ diff -rupbN linux.org/arch/arm64/boot/dts/qcom/sm8250-retroidpocket-common.dtsi
+ status = "okay";
+
+ gamepad {
-+ compatible = "ayn,odin2-gamepad";
++ compatible = "retroid,retroid-pocket-gamepad";
+ vdd-supply = <&vreg_mcu_3v3>;
+ enable-gpios = <&tlmm 111 GPIO_ACTIVE_HIGH>;
+ pinctrl-0 = <&mcu_en_default>;
diff --git a/projects/Qualcomm/patches/linux/SD865/0016_Input--Odin2-Gamepad-ability-to-set-input-id-value.patch b/projects/Qualcomm/patches/linux/SD865/0016_Input--Odin2-Gamepad-ability-to-set-input-id-value.patch
index aa9723458d..f5e12b71e8 100644
--- a/projects/Qualcomm/patches/linux/SD865/0016_Input--Odin2-Gamepad-ability-to-set-input-id-value.patch
+++ b/projects/Qualcomm/patches/linux/SD865/0016_Input--Odin2-Gamepad-ability-to-set-input-id-value.patch
@@ -1,11 +1,11 @@
From f2be2c240c0dddc6d3548543cbefc311a26cb4f7 Mon Sep 17 00:00:00 2001
From: Teguh Sobirin
Date: Mon, 14 Oct 2024 18:00:57 +0800
-Subject: [PATCH] Input: Odin2 Gamepad ability to set input id values from
+Subject: [PATCH] Input: Retroid Pocket Gamepad ability to set input id values from
devicetree
---
- drivers/input/joystick/odin2.c | 43 +++++++++++++++++++++++++---------
+ drivers/input/joystick/retroid.c | 43 +++++++++++++++++++++++++---------
1 file changed, 32 insertions(+), 11 deletions(-)
diff --git a/drivers/input/joystick/retroid.c b/drivers/input/joystick/retroid.c
@@ -24,7 +24,7 @@ index 1350fc1a291b..1daf0f121b2c 100644
#include
#include
-+#define DRIVER_NAME "odin2-gamepad"
++#define DRIVER_NAME "retroid-pocket-gamepad"
#define MAX_DATA_LEN 64
-#define gamepad_serdev_write_seq(serdev, seq...) \
@@ -60,14 +60,14 @@ index 1350fc1a291b..1daf0f121b2c 100644
if (!gamepad_dev->dev_input)
return dev_err_probe(dev, -ENOMEM, "Not enough memory for input device\n");
-- gamepad_dev->dev_input->name = "Ayn Odin2 Gamepad";
-- gamepad_dev->dev_input->phys = "odin2-gamepad/input0";
+- gamepad_dev->dev_input->name = "Retroid Pocket Gamepad";
+- gamepad_dev->dev_input->phys = "retroid-pocket-gamepad/input0";
- __set_bit(EV_ABS, gamepad_dev->dev_input->evbit);
+ gamepad_dev->dev_input->phys = DRIVER_NAME"/input0";
+
+ ret = device_property_read_string(dev, "gamepad-name", &gamepad_dev->dev_input->name);
+ if (ret) {
-+ gamepad_dev->dev_input->name = "Ayn Odin2 Gamepad";
++ gamepad_dev->dev_input->name = "Retroid Pocket Gamepad";
+ }
+
+ device_property_read_u32(dev, "gamepad-bus", &gamepad_bus);
@@ -94,13 +94,13 @@ index 1350fc1a291b..1daf0f121b2c 100644
static struct serdev_device_driver gamepad_mcu_uart_driver = {
.driver = {
-- .name = "odin2-gamepad",
+- .name = "retroid-pocket-gamepad",
+ .name = DRIVER_NAME,
.of_match_table = gamepad_mcu_uart_of_match,
},
.probe = gamepad_mcu_uart_probe,
@@ -257,3 +276,5 @@ MODULE_LICENSE("GPL");
- MODULE_DESCRIPTION("Gamepad driver for Ayn Odin2");
+ MODULE_DESCRIPTION("Gamepad driver for Retroid Pocket");
MODULE_AUTHOR("Molly Sophia ");
MODULE_AUTHOR("BigfootACA ");
+MODULE_AUTHOR("Teguh Sobirin ");
diff --git a/projects/Qualcomm/patches/linux/SD865/0017_arm64--dts--qcom--Set-Gamepad-ID-for-Retroid-Pocke.patch b/projects/Qualcomm/patches/linux/SD865/0017_arm64--dts--qcom--Set-Gamepad-ID-for-Retroid-Pocke.patch
index 4c913734a1..7de10a0fe3 100644
--- a/projects/Qualcomm/patches/linux/SD865/0017_arm64--dts--qcom--Set-Gamepad-ID-for-Retroid-Pocke.patch
+++ b/projects/Qualcomm/patches/linux/SD865/0017_arm64--dts--qcom--Set-Gamepad-ID-for-Retroid-Pocke.patch
@@ -14,7 +14,7 @@ index e16b61d4c11a..e0f49e8e75cd 100644
@@ -1233,6 +1233,13 @@ &uart16 {
gamepad {
- compatible = "ayn,odin2-gamepad";
+ compatible = "retroid,retroid-pocket-gamepad";
+
+ gamepad-name = "Retroid Pocket Gamepad";
+ gamepad-bus = <0x0003>;
diff --git a/projects/Qualcomm/patches/linux/SD865/9997-set-boot-fanspeed.patch b/projects/Qualcomm/patches/linux/SD865/9997-set-boot-fanspeed.patch
new file mode 100644
index 0000000000..38c7e9399e
--- /dev/null
+++ b/projects/Qualcomm/patches/linux/SD865/9997-set-boot-fanspeed.patch
@@ -0,0 +1,12 @@
+diff -rupbN linux.orig/drivers/hwmon/pwm-fan.c linux/drivers/hwmon/pwm-fan.c
+--- linux.orig/drivers/hwmon/pwm-fan.c 2024-10-19 13:35:29.516991617 +0000
++++ linux/drivers/hwmon/pwm-fan.c 2024-11-18 15:41:47.343729846 +0000
+@@ -530,7 +530,7 @@ static int pwm_fan_probe(struct platform
+ * Set duty cycle to maximum allowed and enable PWM output as well as
+ * the regulator. In case of error nothing is changed
+ */
+- ret = set_pwm(ctx, MAX_PWM);
++ ret = set_pwm(ctx, 70);
+ if (ret) {
+ dev_err(dev, "Failed to configure PWM: %d\n", ret);
+ return ret;
diff --git a/projects/Qualcomm/patches/linux/SD865/9998-gpu-opp-table.patch b/projects/Qualcomm/patches/linux/SD865/9998-gpu-opp-table.patch
new file mode 100644
index 0000000000..d088642fbf
--- /dev/null
+++ b/projects/Qualcomm/patches/linux/SD865/9998-gpu-opp-table.patch
@@ -0,0 +1,17 @@
+diff -rupbN linux.orig/arch/arm64/boot/dts/qcom/sm8250.dtsi linux/arch/arm64/boot/dts/qcom/sm8250.dtsi
+--- linux.orig/arch/arm64/boot/dts/qcom/sm8250.dtsi 2024-10-19 13:35:28.332965210 +0000
++++ linux/arch/arm64/boot/dts/qcom/sm8250.dtsi 2024-10-26 01:57:44.836755804 +0000
+@@ -2967,10 +2967,10 @@
+ gpu_opp_table: opp-table {
+ compatible = "operating-points-v2";
+
+- opp-670000000 {
+- opp-hz = /bits/ 64 <670000000>;
++ opp-650000000 {
++ opp-hz = /bits/ 64 <650000000>;
+ opp-level = ;
+- opp-supported-hw = <0xa>;
++ opp-supported-hw = <0xb>;
+ };
+
+ opp-587000000 {
diff --git a/projects/Qualcomm/patches/linux/SD865/9999-remove-log-spam.patch b/projects/Qualcomm/patches/linux/SD865/9999-remove-log-spam.patch
index 958a863d57..1573706f4e 100644
--- a/projects/Qualcomm/patches/linux/SD865/9999-remove-log-spam.patch
+++ b/projects/Qualcomm/patches/linux/SD865/9999-remove-log-spam.patch
@@ -1,6 +1,18 @@
+diff -rupbN linux.orig/arch/arm64/boot/dts/qcom/sm8250.dtsi linux/arch/arm64/boot/dts/qcom/sm8250.dtsi
+--- linux.orig/arch/arm64/boot/dts/qcom/sm8250.dtsi 2024-10-19 13:35:28.332965210 +0000
++++ linux/arch/arm64/boot/dts/qcom/sm8250.dtsi 2024-11-04 05:36:23.933316182 +0000
+@@ -3166,6 +3166,8 @@
+ clocks = <&aoss_qmp>;
+ clock-names = "apb_pclk";
+
++ status = "disabled";
++
+ out-ports {
+ port {
+ stm_out: endpoint {
diff -rupbN linux.orig/drivers/bluetooth/hci_qca.c linux/drivers/bluetooth/hci_qca.c
--- linux.orig/drivers/bluetooth/hci_qca.c 2024-10-19 13:35:28.740974311 +0000
-+++ linux/drivers/bluetooth/hci_qca.c 2024-10-20 13:11:02.833204047 +0000
++++ linux/drivers/bluetooth/hci_qca.c 2024-11-04 05:13:19.069066931 +0000
@@ -844,8 +844,8 @@ static void device_woke_up(struct hci_ua
switch (qca->tx_ibs_state) {
case HCI_IBS_TX_AWAKE:
@@ -23,9 +35,18 @@ diff -rupbN linux.orig/drivers/bluetooth/hci_qca.c linux/drivers/bluetooth/hci_q
break;
}
+@@ -1267,7 +1267,7 @@ static int qca_recv(struct hci_uart *hu,
+ qca_recv_pkts, ARRAY_SIZE(qca_recv_pkts));
+ if (IS_ERR(qca->rx_skb)) {
+ int err = PTR_ERR(qca->rx_skb);
+- bt_dev_err(hu->hdev, "Frame reassembly failed (%d)", err);
++ //bt_dev_err(hu->hdev, "Frame reassembly failed (%d)", err);
+ qca->rx_skb = NULL;
+ return err;
+ }
diff -rupbN linux.orig/drivers/clk/qcom/clk-alpha-pll.c linux/drivers/clk/qcom/clk-alpha-pll.c
--- linux.orig/drivers/clk/qcom/clk-alpha-pll.c 2024-10-19 13:35:28.772975024 +0000
-+++ linux/drivers/clk/qcom/clk-alpha-pll.c 2024-10-19 16:26:48.617154041 +0000
++++ linux/drivers/clk/qcom/clk-alpha-pll.c 2024-11-04 05:06:06.991809741 +0000
@@ -1725,7 +1725,7 @@ static int __alpha_pll_trion_set_rate(st
udelay(1);
regmap_read(pll->clkr.regmap, PLL_MODE(pll), &val);
@@ -35,9 +56,25 @@ diff -rupbN linux.orig/drivers/clk/qcom/clk-alpha-pll.c linux/drivers/clk/qcom/c
return -EINVAL;
}
+diff -rupbN linux.orig/drivers/firmware/psci/psci.c linux/drivers/firmware/psci/psci.c
+--- linux.orig/drivers/firmware/psci/psci.c 2024-10-19 13:35:28.860976987 +0000
++++ linux/drivers/firmware/psci/psci.c 2024-11-04 05:11:35.226952701 +0000
+@@ -166,9 +166,9 @@ int psci_set_osi_mode(bool enable)
+ PSCI_1_0_SUSPEND_MODE_PC;
+
+ err = invoke_psci_fn(PSCI_1_0_FN_SET_SUSPEND_MODE, suspend_mode, 0, 0);
+- if (err < 0)
+- pr_info(FW_BUG "failed to set %s mode: %d\n",
+- enable ? "OSI" : "PC", err);
++ //if (err < 0)
++ // pr_info(FW_BUG "failed to set %s mode: %d\n",
++ // enable ? "OSI" : "PC", err);
+ return psci_to_linux_errno(err);
+ }
+
diff -rupbN linux.orig/drivers/remoteproc/qcom_q6v5_pas.c linux/drivers/remoteproc/qcom_q6v5_pas.c
--- linux.orig/drivers/remoteproc/qcom_q6v5_pas.c 2024-10-19 13:35:30.157005891 +0000
-+++ linux/drivers/remoteproc/qcom_q6v5_pas.c 2024-10-19 17:33:34.080642933 +0000
++++ linux/drivers/remoteproc/qcom_q6v5_pas.c 2024-11-04 05:06:06.991809741 +0000
@@ -316,8 +316,8 @@ static int adsp_start(struct rproc *rpro
ret = qcom_scm_pas_auth_and_reset(adsp->pas_id);
@@ -51,7 +88,7 @@ diff -rupbN linux.orig/drivers/remoteproc/qcom_q6v5_pas.c linux/drivers/remotepr
diff -rupbN linux.orig/drivers/remoteproc/remoteproc_core.c linux/drivers/remoteproc/remoteproc_core.c
--- linux.orig/drivers/remoteproc/remoteproc_core.c 2024-10-19 13:35:30.157005891 +0000
-+++ linux/drivers/remoteproc/remoteproc_core.c 2024-10-19 17:14:13.894431961 +0000
++++ linux/drivers/remoteproc/remoteproc_core.c 2024-11-04 05:06:06.991809741 +0000
@@ -1301,7 +1301,7 @@ static int rproc_start(struct rproc *rpr
/* power up the remote processor */
ret = rproc->ops->start(rproc);
@@ -61,9 +98,21 @@ diff -rupbN linux.orig/drivers/remoteproc/remoteproc_core.c linux/drivers/remote
goto unprepare_subdevices;
}
+diff -rupbN linux.orig/drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_pdphy.c linux/drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_pdphy.c
+--- linux.orig/drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_pdphy.c 2024-10-19 13:35:30.349010172 +0000
++++ linux/drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_pdphy.c 2024-11-04 05:06:50.560754765 +0000
+@@ -379,7 +379,7 @@ static irqreturn_t qcom_pmic_typec_pdphy
+
+ switch (irq_data->virq) {
+ case PMIC_PDPHY_SIG_TX_IRQ:
+- dev_err(dev, "isr: tx_sig\n");
++ //dev_err(dev, "isr: tx_sig\n");
+ break;
+ case PMIC_PDPHY_SIG_RX_IRQ:
+ schedule_work(&pmic_typec_pdphy->reset_work);
diff -rupbN linux.orig/sound/soc/codecs/lpass-va-macro.c linux/sound/soc/codecs/lpass-va-macro.c
--- linux.orig/sound/soc/codecs/lpass-va-macro.c 2024-10-19 13:35:30.909022660 +0000
-+++ linux/sound/soc/codecs/lpass-va-macro.c 2024-10-19 16:10:08.002104745 +0000
++++ linux/sound/soc/codecs/lpass-va-macro.c 2024-11-04 05:06:06.991809741 +0000
@@ -1530,7 +1530,7 @@ static int va_macro_probe(struct platfor
ret = of_property_read_u32(dev->of_node, "qcom,dmic-sample-rate",
&sample_rate);
@@ -75,7 +124,7 @@ diff -rupbN linux.orig/sound/soc/codecs/lpass-va-macro.c linux/sound/soc/codecs/
ret = va_macro_validate_dmic_sample_rate(sample_rate, va);
diff -rupbN linux.orig/sound/soc/qcom/qdsp6/q6asm.c linux/sound/soc/qcom/qdsp6/q6asm.c
--- linux.orig/sound/soc/qcom/qdsp6/q6asm.c 2024-10-19 13:35:30.949023554 +0000
-+++ linux/sound/soc/qcom/qdsp6/q6asm.c 2024-10-19 13:37:08.787203507 +0000
++++ linux/sound/soc/qcom/qdsp6/q6asm.c 2024-11-04 05:06:06.991809741 +0000
@@ -655,8 +655,8 @@ static int32_t q6asm_stream_callback(str
}
break;
@@ -100,7 +149,7 @@ diff -rupbN linux.orig/sound/soc/qcom/qdsp6/q6asm.c linux/sound/soc/qcom/qdsp6/q
goto done;
diff -rupbN linux.orig/sound/soc/soc-pcm.c linux/sound/soc/soc-pcm.c
--- linux.orig/sound/soc/soc-pcm.c 2024-10-19 13:35:30.953023643 +0000
-+++ linux/sound/soc/soc-pcm.c 2024-10-19 13:40:11.291260901 +0000
++++ linux/sound/soc/soc-pcm.c 2024-11-04 05:06:06.991809741 +0000
@@ -2497,8 +2497,8 @@ static int dpcm_fe_dai_prepare(struct sn
/* there is no point preparing this FE if there are no BEs */
if (list_empty(&fe->dpcm[stream].be_clients)) {
diff --git a/projects/Rockchip/bootloader/dtb.xml b/projects/Rockchip/bootloader/dtb.xml
index d8eaffe60f..9762faffbc 100644
--- a/projects/Rockchip/bootloader/dtb.xml
+++ b/projects/Rockchip/bootloader/dtb.xml
@@ -38,6 +38,7 @@
rk3566-powkiddy-x55
+ rk3566-powkiddy-x35s
diff --git a/projects/Rockchip/devices/RK3326/linux/linux.aarch64.conf b/projects/Rockchip/devices/RK3326/linux/linux.aarch64.conf
index a0727bb679..1fff39face 100644
--- a/projects/Rockchip/devices/RK3326/linux/linux.aarch64.conf
+++ b/projects/Rockchip/devices/RK3326/linux/linux.aarch64.conf
@@ -1765,7 +1765,7 @@ CONFIG_MII=m
CONFIG_NET_CORE=y
# CONFIG_BONDING is not set
# CONFIG_DUMMY is not set
-# CONFIG_WIREGUARD is not set
+CONFIG_WIREGUARD=m
# CONFIG_EQUALIZER is not set
# CONFIG_NET_TEAM is not set
# CONFIG_MACVLAN is not set
@@ -4446,7 +4446,7 @@ CONFIG_USB_CONFIGFS=m
# CONFIG_USB_CONFIGFS_NCM is not set
CONFIG_USB_CONFIGFS_ECM=y
# CONFIG_USB_CONFIGFS_ECM_SUBSET is not set
-# CONFIG_USB_CONFIGFS_RNDIS is not set
+CONFIG_USB_CONFIGFS_RNDIS=y
# CONFIG_USB_CONFIGFS_EEM is not set
# CONFIG_USB_CONFIGFS_MASS_STORAGE is not set
# CONFIG_USB_CONFIGFS_F_LB_SS is not set
diff --git a/projects/Rockchip/devices/RK3399/linux/linux.aarch64.conf b/projects/Rockchip/devices/RK3399/linux/linux.aarch64.conf
index 77f497068c..201db2cff1 100644
--- a/projects/Rockchip/devices/RK3399/linux/linux.aarch64.conf
+++ b/projects/Rockchip/devices/RK3399/linux/linux.aarch64.conf
@@ -854,7 +854,7 @@ CONFIG_ARCH_USE_GNU_PROPERTY=y
CONFIG_ELFCORE=y
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
CONFIG_BINFMT_SCRIPT=y
-# CONFIG_BINFMT_MISC is not set
+CONFIG_BINFMT_MISC=y
CONFIG_COREDUMP=y
# end of Executable file formats
@@ -5468,7 +5468,7 @@ CONFIG_NVMEM_LAYOUTS=y
CONFIG_NVMEM_RMEM=m
CONFIG_NVMEM_ROCKCHIP_EFUSE=y
-CONFIG_NVMEM_ROCKCHIP_OTP=m
+CONFIG_NVMEM_ROCKCHIP_OTP=y
#
# HW tracing support
@@ -5554,7 +5554,7 @@ CONFIG_FSNOTIFY=y
CONFIG_INOTIFY_USER=y
# CONFIG_FANOTIFY is not set
# CONFIG_QUOTA is not set
-# CONFIG_AUTOFS_FS is not set
+CONFIG_AUTOFS_FS=y
CONFIG_FUSE_FS=y
# CONFIG_CUSE is not set
# CONFIG_VIRTIO_FS is not set
diff --git a/projects/Rockchip/devices/RK3399/options b/projects/Rockchip/devices/RK3399/options
index fbdfeb55ea..e143b763dd 100644
--- a/projects/Rockchip/devices/RK3399/options
+++ b/projects/Rockchip/devices/RK3399/options
@@ -46,6 +46,9 @@
# OpenGL-ES implementation to use (mesa / no)
OPENGLES="mesa"
+ # Several libretro cores doesn't work with GL, so prefer GLES for this reason
+ PREFER_GLES="yes"
+
# Displayserver to use (wl / no)
DISPLAYSERVER="wl"
diff --git a/projects/Rockchip/devices/RK3566/linux/linux.aarch64.conf b/projects/Rockchip/devices/RK3566/linux/linux.aarch64.conf
index 7df3ee6b88..248d69a2ec 100644
--- a/projects/Rockchip/devices/RK3566/linux/linux.aarch64.conf
+++ b/projects/Rockchip/devices/RK3566/linux/linux.aarch64.conf
@@ -5976,14 +5976,14 @@ CONFIG_USB_F_ECM=m
CONFIG_USB_F_MASS_STORAGE=m
CONFIG_USB_F_FS=m
CONFIG_USB_F_UVC=m
-CONFIG_USB_CONFIGFS=m
+CONFIG_USB_CONFIGFS=y
# CONFIG_USB_CONFIGFS_SERIAL is not set
CONFIG_USB_CONFIGFS_ACM=y
# CONFIG_USB_CONFIGFS_OBEX is not set
# CONFIG_USB_CONFIGFS_NCM is not set
CONFIG_USB_CONFIGFS_ECM=y
# CONFIG_USB_CONFIGFS_ECM_SUBSET is not set
-# CONFIG_USB_CONFIGFS_RNDIS is not set
+CONFIG_USB_CONFIGFS_RNDIS=y
# CONFIG_USB_CONFIGFS_EEM is not set
CONFIG_USB_CONFIGFS_MASS_STORAGE=y
# CONFIG_USB_CONFIGFS_F_LB_SS is not set
@@ -6007,7 +6007,7 @@ CONFIG_USB_CONFIGFS_F_UVC=y
CONFIG_USB_GADGETFS=m
CONFIG_USB_FUNCTIONFS=m
# CONFIG_USB_FUNCTIONFS_ETH is not set
-# CONFIG_USB_FUNCTIONFS_RNDIS is not set
+CONFIG_USB_FUNCTIONFS_RNDIS=y
CONFIG_USB_FUNCTIONFS_GENERIC=y
CONFIG_USB_MASS_STORAGE=m
CONFIG_USB_G_SERIAL=m
@@ -7378,7 +7378,7 @@ CONFIG_NVMEM_LAYOUTS=y
# CONFIG_NVMEM_RMEM is not set
# CONFIG_NVMEM_ROCKCHIP_EFUSE is not set
-# CONFIG_NVMEM_ROCKCHIP_OTP is not set
+CONFIG_NVMEM_ROCKCHIP_OTP=y
# CONFIG_NVMEM_U_BOOT_ENV is not set
#
diff --git a/projects/Rockchip/devices/RK3566/packages/linux/modprobe.d/rtw88.conf b/projects/Rockchip/devices/RK3566/packages/linux/modprobe.d/rtw88.conf
new file mode 100644
index 0000000000..ae55d86d78
--- /dev/null
+++ b/projects/Rockchip/devices/RK3566/packages/linux/modprobe.d/rtw88.conf
@@ -0,0 +1,6 @@
+# macromorgan's comment on rgxx3 power management improvements:
+# > note that this assumes you DO enable wifi power save
+# (the default, as long as you don't override it).
+# Note also that you need to set the module parameter of
+# disable_lps_deep=y on rtw88_core or else you'll get a crash.
+options rtw88_core disable_lps_deep=y
diff --git a/projects/Rockchip/devices/RK3588/linux/linux.aarch64.conf b/projects/Rockchip/devices/RK3588/linux/linux.aarch64.conf
index 6b757ac469..cbfb12751c 100644
--- a/projects/Rockchip/devices/RK3588/linux/linux.aarch64.conf
+++ b/projects/Rockchip/devices/RK3588/linux/linux.aarch64.conf
@@ -3130,9 +3130,9 @@ CONFIG_TOUCHSCREEN_GOODIX=m
# CONFIG_TOUCHSCREEN_GT1X is not set
# CONFIG_TOUCHSCREEN_GT9XX is not set
CONFIG_TOUCHSCREEN_GOODIX_GTX8=y
-CONFIG_TOUCHSCREEN_GOODIX_GTX8_UPDATE=y
+# CONFIG_TOUCHSCREEN_GOODIX_GTX8_UPDATE is not set
# CONFIG_TOUCHSCREEN_GOODIX_GTX8_GESTURE is not set
-CONFIG_TOUCHSCREEN_GOODIX_GTX8_TOOLS=y
+# CONFIG_TOUCHSCREEN_GOODIX_GTX8_TOOLS is not set
# CONFIG_TOUCHSCREEN_HIDEEP is not set
# CONFIG_TOUCHSCREEN_HYCON_HY46XX is not set
# CONFIG_TOUCHSCREEN_ILI210X is not set
diff --git a/projects/Rockchip/devices/RK3588/packages/libmali-vulkan/sources/g610-vulkan-mali.tar.gz b/projects/Rockchip/devices/RK3588/packages/libmali-vulkan/sources/g610-vulkan-mali.tar.gz
deleted file mode 100755
index 5617da9f5d..0000000000
Binary files a/projects/Rockchip/devices/RK3588/packages/libmali-vulkan/sources/g610-vulkan-mali.tar.gz and /dev/null differ
diff --git a/projects/Rockchip/devices/RK3588/packages/libmali-vulkan/package.mk b/projects/Rockchip/packages/libmali-vulkan/package.mk
similarity index 69%
rename from projects/Rockchip/devices/RK3588/packages/libmali-vulkan/package.mk
rename to projects/Rockchip/packages/libmali-vulkan/package.mk
index 0dffc12573..18907f2487 100644
--- a/projects/Rockchip/devices/RK3588/packages/libmali-vulkan/package.mk
+++ b/projects/Rockchip/packages/libmali-vulkan/package.mk
@@ -2,14 +2,21 @@
# Copyright (C) 2024-present ROCKNIX (https://github.com/ROCKNIX)
PKG_NAME="libmali-vulkan"
-PKG_VERSION="4632b6e0bc0abda69655f40c8d42ec03972f4183"
+PKG_VERSION="11759f18e195e89300bcfeb5ada0d977a7851151"
PKG_LICENSE="mali_driver"
PKG_ARCH="arm aarch64"
-PKG_URL="https://github.com/r3claimer/packages/raw/refs/heads/g610_vulkan/g610-vulkan-mali.tar.gz"
+PKG_URL="https://github.com/r3claimer/packages/raw/${PKG_VERSION}/g610-vulkan-mali.tar.gz"
+PKG_SOURCE_NAME="g610-vulkan-mali.tar.gz"
PKG_DEPENDS_TARGET="toolchain mesa vulkan-tools vulkan-headers libmali vulkan-wsi-layer"
PKG_TOOLCHAIN="manual"
PKG_LONGDESC="Vulkan Mali drivers for RK3588 soc"
+# Need a custom unpack() as --strip-components=1 in extract script strips everything
+unpack() {
+ mkdir -p ${PKG_BUILD}
+ tar -xf ${SOURCES}/${PKG_NAME}/${PKG_SOURCE_NAME} -C ${PKG_BUILD}
+}
+
make_target() {
:
}
@@ -19,7 +26,6 @@ makeinstall_target() {
mkdir -p ${INSTALL}/usr/share/vulkan/implicit_layer.d
mkdir -p ${INSTALL}/usr/share/vulkan/icd.d
- tar -xf ${PKG_BUILD}/g610-vulkan-mali.tar.gz
cp -r ${PKG_BUILD}/libmali-valhall-g610-g6p0-wayland-gbm-vulkan.so ${INSTALL}/usr/lib/
cp -r ${PKG_BUILD}/mali.json ${INSTALL}/usr/share/vulkan/icd.d
diff --git a/projects/Rockchip/devices/RK3588/packages/libmali-vulkan/sources/VkLayer_window_system_integration.json b/projects/Rockchip/packages/libmali-vulkan/sources/VkLayer_window_system_integration.json
similarity index 100%
rename from projects/Rockchip/devices/RK3588/packages/libmali-vulkan/sources/VkLayer_window_system_integration.json
rename to projects/Rockchip/packages/libmali-vulkan/sources/VkLayer_window_system_integration.json
diff --git a/projects/Rockchip/devices/RK3588/packages/libmali-vulkan/sources/mali.json b/projects/Rockchip/packages/libmali-vulkan/sources/mali.json
similarity index 100%
rename from projects/Rockchip/devices/RK3588/packages/libmali-vulkan/sources/mali.json
rename to projects/Rockchip/packages/libmali-vulkan/sources/mali.json
diff --git a/projects/Rockchip/devices/RK3588/packages/libmali-vulkan/udev.d/98-ion-allocator.rules b/projects/Rockchip/packages/libmali-vulkan/udev.d/98-ion-allocator.rules
similarity index 100%
rename from projects/Rockchip/devices/RK3588/packages/libmali-vulkan/udev.d/98-ion-allocator.rules
rename to projects/Rockchip/packages/libmali-vulkan/udev.d/98-ion-allocator.rules
diff --git a/packages/graphics/libmali/package.mk b/projects/Rockchip/packages/libmali/package.mk
similarity index 64%
rename from packages/graphics/libmali/package.mk
rename to projects/Rockchip/packages/libmali/package.mk
index 7337592212..5eaaafe6ff 100644
--- a/packages/graphics/libmali/package.mk
+++ b/projects/Rockchip/packages/libmali/package.mk
@@ -4,12 +4,13 @@
# Copyright (C) 2024 ROCKNIX (https://github.com/ROCKNIX)
PKG_NAME="libmali"
-PKG_VERSION="v1.9-1-b9619b9"
+PKG_VERSION="fa005557b3a0d43c6368272568d1ec0240e976dd"
PKG_LICENSE="nonfree"
PKG_SITE="https://github.com/tsukumijima/libmali-rockchip"
# zip format makes extract very fast (<1s). tgz takes 20 seconds to scan the whole file
-PKG_URL="${PKG_SITE}/archive/refs/tags/${PKG_VERSION}.zip"
-PKG_DEPENDS_TARGET="toolchain libdrm patchelf:host"
+#PKG_URL="${PKG_SITE}/archive/refs/tags/${PKG_VERSION}.zip"
+PKG_URL="${PKG_SITE}/archive/${PKG_VERSION}.zip"
+PKG_DEPENDS_TARGET="toolchain libdrm patchelf:host gpudriver"
PKG_LONGDESC="OpenGL ES user-space binary for the ARM Mali GPU family"
PKG_TOOLCHAIN="meson"
PKG_PATCH_DIRS+=" ${DEVICE}"
@@ -46,47 +47,18 @@ unpack() {
ln -s lib optimize_3
}
-pre_make_target() {
- patchelf --rename-dynamic-symbols "${PKG_BUILD}/rename.syms" libmali-prebuilt.so
-}
-
post_makeinstall_target() {
rm -rf "${SYSROOT_PREFIX}/usr/include" # all needed headers are installed by glvnd, mesa and wayland
rm -rf "${INSTALL}/etc/ld.so.conf.d" "${SYSROOT_PREFIX}/etc/ld.so.conf.d" # upstream installs ld.so config and we don't need it
- for lib in "${INSTALL}/usr/lib*/mali/*.so"; do
- echo ${lib}
- patchelf --add-needed libmali-hook.so.1 ${lib}
+ # IDK how libs in ubuntu package get these dependencies. Need to specify them manually here.
+ for lib in "${INSTALL}"/usr/lib*/mali/lib*.so.*; do
+ patchelf --add-needed libmali-hook.so.1 "${lib}"
done
-
- mkdir -p "${INSTALL}/usr/bin/"
- cp -v "${PKG_BUILD}/bin/gpudriver" "${INSTALL}/usr/bin/"
+ patchelf --add-needed libmali.so.1 "${INSTALL}"/usr/lib*/libmali-hook.so.1
# x11 lib needed for some applications on the RK3588
if [ ${DEVICE} = "RK3588" ] && [ ${TARGET_ARCH} = "arch64" ]; then
curl -Lo ${INSTALL}/usr/lib/libmali-valhall-g610-g13p0-x11-gbm.so ${PKG_SITE}/raw/master/lib/aarch64-linux-gnu/libmali-valhall-g610-g13p0-x11-gbm.so
fi
-
- # set the correct mesa pan kernel driver module based on device
- case ${DEVICE} in
- RK3588)
- PAN="panthor"
- DTB_OVERLAY_LOAD="\/usr\/bin\/dtb_overlay set driver-gpu driver-gpu-panthor.dtbo"
- DTB_OVERLAY_UNLOAD="\/usr\/bin\/dtb_overlay set driver-gpu None"
- ;;
- *)
- PAN="panfrost"
- DTB_OVERLAY=""
- DTB_OVERLAY_UNLOAD=""
- ;;
- esac
-
- sed -e "s/@PAN@/${PAN}/g" \
- -i ${INSTALL}/usr/bin/gpudriver
-
- sed -e "s/@DTB_OVERLAY_LOAD@/${DTB_OVERLAY_LOAD}/g" \
- -i ${INSTALL}/usr/bin/gpudriver
-
- sed -e "s/@DTB_OVERLAY_UNLOAD@/${DTB_OVERLAY_UNLOAD}/g" \
- -i ${INSTALL}/usr/bin/gpudriver
}
diff --git a/packages/graphics/libmali/patches/RK3588/000-dont-install-firmware.patch b/projects/Rockchip/packages/libmali/patches/RK3588/000-dont-install-firmware.patch
similarity index 100%
rename from packages/graphics/libmali/patches/RK3588/000-dont-install-firmware.patch
rename to projects/Rockchip/packages/libmali/patches/RK3588/000-dont-install-firmware.patch
diff --git a/projects/Rockchip/patches/linux/RK3399/007-enable-cpu-nvmem.patch b/projects/Rockchip/patches/linux/RK3399/007-enable-cpu-nvmem.patch
new file mode 100644
index 0000000000..e3d9cb3d57
--- /dev/null
+++ b/projects/Rockchip/patches/linux/RK3399/007-enable-cpu-nvmem.patch
@@ -0,0 +1,27 @@
+From f63140be2575c8ae35fdc29a23a9f4a819ec3cd5 Mon Sep 17 00:00:00 2001
+From: "Huang, Tao"
+Date: Thu, 6 Apr 2017 20:30:11 +0800
+Subject: [PATCH] arm64: dts: rockchip: add cpuinfo support for rk3399-android
+
+Change-Id: I0eba0017a88added1a84f9c3add1705d8079cd00
+Signed-off-by: Huang, Tao
+---
+ arch/arm64/boot/dts/rockchip/rk3399-android.dtsi | 6 ++++++
+ arch/arm64/boot/dts/rockchip/rk3399.dtsi | 3 +++
+ 2 files changed, 9 insertions(+)
+
+--- a/arch/arm64/boot/dts/rockchip/rk3399.dtsi
++++ b/arch/arm64/boot/dts/rockchip/rk3399.dtsi
+@@ -173,6 +173,12 @@
+ };
+ };
+
++ cpuinfo {
++ compatible = "rockchip,cpuinfo";
++ nvmem-cells = <&cpu_id>;
++ nvmem-cell-names = "id";
++ };
++
+ display-subsystem {
+ compatible = "rockchip,display-subsystem";
+ ports = <&vopl_out>, <&vopb_out>;
diff --git a/projects/Rockchip/patches/linux/RK3399/998-set-boot-fanspeed.patch b/projects/Rockchip/patches/linux/RK3399/998-set-boot-fanspeed.patch
new file mode 100644
index 0000000000..38c7e9399e
--- /dev/null
+++ b/projects/Rockchip/patches/linux/RK3399/998-set-boot-fanspeed.patch
@@ -0,0 +1,12 @@
+diff -rupbN linux.orig/drivers/hwmon/pwm-fan.c linux/drivers/hwmon/pwm-fan.c
+--- linux.orig/drivers/hwmon/pwm-fan.c 2024-10-19 13:35:29.516991617 +0000
++++ linux/drivers/hwmon/pwm-fan.c 2024-11-18 15:41:47.343729846 +0000
+@@ -530,7 +530,7 @@ static int pwm_fan_probe(struct platform
+ * Set duty cycle to maximum allowed and enable PWM output as well as
+ * the regulator. In case of error nothing is changed
+ */
+- ret = set_pwm(ctx, MAX_PWM);
++ ret = set_pwm(ctx, 70);
+ if (ret) {
+ dev_err(dev, "Failed to configure PWM: %d\n", ret);
+ return ret;
diff --git a/projects/Rockchip/patches/linux/RK3566/036-x35s.patch b/projects/Rockchip/patches/linux/RK3566/036-x35s.patch
new file mode 100644
index 0000000000..7b44ef162f
--- /dev/null
+++ b/projects/Rockchip/patches/linux/RK3566/036-x35s.patch
@@ -0,0 +1,43 @@
+diff --git a/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-x35s.dts b/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-x35s.dts
+new file mode 100644
+index 000000000000..bca48d258af8
+--- /dev/null
++++ b/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-x35s.dts
+@@ -0,0 +1,37 @@
++#include "rk3566-powkiddy-x55.dts"
++
++/ {
++ model = "Powkiddy x35s";
++ compatible = "powkiddy,x35s", "rockchip,rk3566";
++};
++
++&battery {
++ charge-full-design-microamp-hours = <3000000>;
++};
++
++&joypad {
++ invert-absx;
++ invert-absy;
++ sw5 {
++ label = "GPIO BTN-B";
++ linux,code = ;
++ };
++ sw6 {
++ label = "GPIO BTN-A";
++ linux,code = ;
++ };
++ sw7 {
++ label = "GPIO BTN-X";
++ linux,code = ;
++ };
++ sw8 {
++ label = "GPIO BTN-Y";
++ linux,code = ;
++ };
++};
++
++&panel {
++ compatible = "rocknix,generic-dsi";
++ panel_description = "G size=70,52 delays=60,60,60,120,20 format=rgb888 lanes=4 flags=0xe03", "M clock=30000 horizontal=640,150,50,150 vertical=480,20,6,12 default=1 # fps=58.500059 (target=58.500059)", "M clock=30000 horizontal=640,150,61,150 vertical=480,20,88,12 # fps=49.950050 (target=49.950050)", "M clock=30000 horizontal=640,150,60,150 vertical=480,20,88,12 # fps=50.000000 (target=50.000000)", "M clock=30010 horizontal=640,150,72,150 vertical=480,20,81,12 # fps=50.006999 (target=50.007000)", "M clock=30130 horizontal=640,150,60,150 vertical=480,20,12,12 # fps=57.500000 (target=57.500000)", "M clock=35920 horizontal=640,150,59,150 vertical=480,20,90,12 # (CAN FAIL) fps=59.727502 (target=59.727500)", "M clock=31440 horizontal=640,150,61,150 vertical=480,20,12,12 # (CAN FAIL) fps=59.940060 (target=59.940060)", "M clock=31080 horizontal=640,150,60,150 vertical=480,20,6,12 # (CAN FAIL) fps=60.000000 (target=60.000000)", "M clock=32750 horizontal=640,150,96,150 vertical=480,20,14,12 # (CAN FAIL) fps=60.098801 (target=60.098800)", "M clock=45250 horizontal=640,150,66,150 vertical=480,20,84,12 # (CAN FAIL) fps=75.469999 (target=75.470000)", "M clock=46620 horizontal=640,150,60,150 vertical=480,20,6,12 # (CAN FAIL) fps=90.000000 (target=90.000000)", "M clock=62160 horizontal=640,150,60,150 vertical=480,20,6,12 # (CAN FAIL) fps=120.000000 (target=120.000000)", "I seq=b9f11283", "I seq=b1000000da80", "I seq=b2000370", "I seq=b31010fcfc03ff00000000", "I seq=b480", "I seq=b50606", "I seq=b6a9a9", "I seq=b825622003", "I seq=ba338105f90e0e2000000000000000442500900a0000014f01000037", "I seq=bc47", "I seq=bf021100", "I seq=c0737350500000127000", "I seq=c125c0323277e4ffffcccc7777", "I seq=c68200bfff00ff", "I seq=c7b8000a000000", "I seq=c810401e02", "I seq=cc0b", "I seq=e0000a0f293c3f4138080c0f121412131219000a0f293c3f4138080c0f121412131219", "I seq=e307070b0b0b0b00000000ff00c010", "I seq=e9c8100a0000f0811231234f86f0814708000010000000000010000000888808f8f4466002288888888818f8f557711338888800000001000000000000000000", "I seq=ea001a0000000000000000000088f818f88331177558888888f808f88220066448888823000002fe00000000000000000000000000000000000000000000", "I seq=efffff01", "I seq=11 wait=250", "I seq=29 wait=50";
++ rotation = <0>;
++};
diff --git a/projects/Rockchip/patches/linux/RK3566/041-system-power-controller.patch b/projects/Rockchip/patches/linux/RK3566/041-system-power-controller.patch
index b0af19ae34..1ae316c697 100644
--- a/projects/Rockchip/patches/linux/RK3566/041-system-power-controller.patch
+++ b/projects/Rockchip/patches/linux/RK3566/041-system-power-controller.patch
@@ -1,11 +1,12 @@
diff --git a/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rgxx3.dtsi b/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rgxx3.dtsi
-index 379fdb187207..7b7f2224a96e 100644
+index 582befc90cef..db25fb03b5c0 100644
--- a/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rgxx3.dtsi
+++ b/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rgxx3.dtsi
-@@ -213,6 +213,7 @@ rk817: pmic@20 {
+@@ -269,7 +269,7 @@ rk817: pmic@20 {
+ #sound-dai-cells = <0>;
pinctrl-names = "default";
pinctrl-0 = <&i2s1m0_mclk>, <&pmic_int_l>;
- wakeup-source;
+- wakeup-source;
+ system-power-controller;
vcc1-supply = <&vcc_sys>;
@@ -14,10 +15,10 @@ diff --git a/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rk2023.dtsi b/arch/arm
index d5e2a9a4974b..824680d6b885 100644
--- a/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rk2023.dtsi
+++ b/arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rk2023.dtsi
-@@ -419,6 +419,7 @@ rk817: pmic@20 {
+@@ -419,7 +419,7 @@ rk817: pmic@20 {
pinctrl-names = "default";
pinctrl-0 = <&i2s1m0_mclk>, <&pmic_int_l>;
- wakeup-source;
+- wakeup-source;
+ system-power-controller;
vcc1-supply = <&vcc_sys>;
diff --git a/projects/Rockchip/patches/linux/RK3566/044-mm-idle-states.patch b/projects/Rockchip/patches/linux/RK3566/044-mm-idle-states.patch
new file mode 100644
index 0000000000..2a3730694a
--- /dev/null
+++ b/projects/Rockchip/patches/linux/RK3566/044-mm-idle-states.patch
@@ -0,0 +1,72 @@
+From 44a2ac347f2505b7c4b0695f3dae44aa255aa73d Mon Sep 17 00:00:00 2001
+From: Chris Morgan
+Date: Wed, 30 Oct 2024 17:40:28 -0500
+Subject: [PATCH 01/10] arm64: dts: rockchip: Add idle-states for rk356x
+
+Add the idle-states for the rk356x from the BSP kernel. I observed idle
+power draw drop around 0.2w with this change in place on my Anbernic
+RG353P device based around the rk3566 SoC.
+
+Signed-off-by: Chris Morgan
+---
+ arch/arm64/boot/dts/rockchip/rk356x.dtsi | 16 ++++++++++++++++
+ 1 file changed, 16 insertions(+)
+
+diff --git a/arch/arm64/boot/dts/rockchip/rk356x.dtsi b/arch/arm64/boot/dts/rockchip/rk356x.dtsi
+index 0ee0ada6f0ab..7cdfe293bf0c 100644
+--- a/arch/arm64/boot/dts/rockchip/rk356x.dtsi
++++ b/arch/arm64/boot/dts/rockchip/rk356x.dtsi
+@@ -55,6 +55,7 @@ cpu0: cpu@0 {
+ reg = <0x0 0x0>;
+ clocks = <&scmi_clk 0>;
+ #cooling-cells = <2>;
++ cpu-idle-states = <&CPU_SLEEP>;
+ enable-method = "psci";
+ operating-points-v2 = <&cpu0_opp_table>;
+ i-cache-size = <0x8000>;
+@@ -71,6 +72,7 @@ cpu1: cpu@100 {
+ compatible = "arm,cortex-a55";
+ reg = <0x0 0x100>;
+ #cooling-cells = <2>;
++ cpu-idle-states = <&CPU_SLEEP>;
+ enable-method = "psci";
+ operating-points-v2 = <&cpu0_opp_table>;
+ i-cache-size = <0x8000>;
+@@ -87,6 +89,7 @@ cpu2: cpu@200 {
+ compatible = "arm,cortex-a55";
+ reg = <0x0 0x200>;
+ #cooling-cells = <2>;
++ cpu-idle-states = <&CPU_SLEEP>;
+ enable-method = "psci";
+ operating-points-v2 = <&cpu0_opp_table>;
+ i-cache-size = <0x8000>;
+@@ -103,6 +106,7 @@ cpu3: cpu@300 {
+ compatible = "arm,cortex-a55";
+ reg = <0x0 0x300>;
+ #cooling-cells = <2>;
++ cpu-idle-states = <&CPU_SLEEP>;
+ enable-method = "psci";
+ operating-points-v2 = <&cpu0_opp_table>;
+ i-cache-size = <0x8000>;
+@@ -113,6 +117,18 @@ cpu3: cpu@300 {
+ d-cache-sets = <128>;
+ next-level-cache = <&l3_cache>;
+ };
++
++ idle-states {
++ entry-method = "psci";
++ CPU_SLEEP: cpu-sleep {
++ compatible = "arm,idle-state";
++ local-timer-stop;
++ arm,psci-suspend-param = <0x0010000>;
++ entry-latency-us = <100>;
++ exit-latency-us = <120>;
++ min-residency-us = <1000>;
++ };
++ };
+ };
+
+ /*
+--
+2.43.0
+
diff --git a/projects/Rockchip/patches/linux/RK3566/045-mm-rgxx3-spk-amp-reg.patch b/projects/Rockchip/patches/linux/RK3566/045-mm-rgxx3-spk-amp-reg.patch
new file mode 100644
index 0000000000..afc86458e8
--- /dev/null
+++ b/projects/Rockchip/patches/linux/RK3566/045-mm-rgxx3-spk-amp-reg.patch
@@ -0,0 +1,71 @@
+From e2dc16cb2004a87994641eed461ca87f620d782e Mon Sep 17 00:00:00 2001
+From: Chris Morgan
+Date: Wed, 30 Oct 2024 17:47:39 -0500
+Subject: [PATCH 02/10] arm64: dts: rockchip: Add spk_amp regulator for
+ Anbernic RGxx3 Devices
+
+Define the VCC supply for the speaker amp on the Anbernic RGxx3 series
+devices which use an external amplifier circuit (all do except the V
+and VS series). This supply value was discovered by slightly raising
+and lowering the voltages of various regulators from within the
+bootloader and measuring for corresponding changes with a multimeter.
+
+Signed-off-by: Chris Morgan
+---
+ arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg-arc.dtsi | 1 +
+ arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg353p.dts | 1 +
+ arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg353ps.dts | 1 +
+ arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg503.dts | 1 +
+ 4 files changed, 4 insertions(+)
+
+diff --git a/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg-arc.dtsi b/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg-arc.dtsi
+index a4a60e4a53d4..012490092420 100644
+--- a/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg-arc.dtsi
++++ b/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg-arc.dtsi
+@@ -72,6 +72,7 @@ spk_amp: audio-amplifier {
+ pinctrl-0 = <&spk_amp_enable_h>;
+ pinctrl-names = "default";
+ sound-name-prefix = "Speaker Amp";
++ VCC-supply = <&vcc_3v3>;
+ };
+ };
+
+diff --git a/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg353p.dts b/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg353p.dts
+index a73cf30801ec..ec6b42f8383d 100644
+--- a/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg353p.dts
++++ b/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg353p.dts
+@@ -74,6 +74,7 @@ spk_amp: audio-amplifier {
+ pinctrl-0 = <&spk_amp_enable_h>;
+ pinctrl-names = "default";
+ sound-name-prefix = "Speaker Amp";
++ VCC-supply = <&vcc_3v3>;
+ };
+ };
+
+diff --git a/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg353ps.dts b/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg353ps.dts
+index ca5284e4807d..a59eff0c78d6 100644
+--- a/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg353ps.dts
++++ b/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg353ps.dts
+@@ -73,6 +73,7 @@ spk_amp: audio-amplifier {
+ pinctrl-0 = <&spk_amp_enable_h>;
+ pinctrl-names = "default";
+ sound-name-prefix = "Speaker Amp";
++ VCC-supply = <&vcc_3v3>;
+ };
+ };
+
+diff --git a/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg503.dts b/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg503.dts
+index 74cf313e0635..59e0448cb858 100644
+--- a/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg503.dts
++++ b/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg503.dts
+@@ -163,6 +163,7 @@ spk_amp: audio-amplifier {
+ pinctrl-0 = <&spk_amp_enable_h>;
+ pinctrl-names = "default";
+ sound-name-prefix = "Speaker Amp";
++ VCC-supply = <&vcc_3v3>;
+ };
+ };
+
+--
+2.43.0
+
diff --git a/projects/Rockchip/patches/linux/RK3566/046-mm-rgxx3-vibrator-vcc.patch b/projects/Rockchip/patches/linux/RK3566/046-mm-rgxx3-vibrator-vcc.patch
new file mode 100644
index 0000000000..2c7788c96c
--- /dev/null
+++ b/projects/Rockchip/patches/linux/RK3566/046-mm-rgxx3-vibrator-vcc.patch
@@ -0,0 +1,32 @@
+From 9087d76cb76018b315306f6046b930b89d48fdb0 Mon Sep 17 00:00:00 2001
+From: Chris Morgan
+Date: Wed, 30 Oct 2024 17:54:04 -0500
+Subject: [PATCH 03/10] arm64: dts: rockchip: Add vcc for vibrator node on
+ RGxx3
+
+Define the vcc supply for the vibrator on the Anbernic RGxx3 series
+devices. This supply value was discovered by enabling the pwm channel
+to full duty and then slightly raising and lowering the voltages of
+various regulators from within the bootloader and listening for
+harmonic changes from the vibrator.
+
+Signed-off-by: Chris Morgan
+---
+ arch/arm64/boot/dts/rockchip/rk3566-anbernic-rgxx3.dtsi | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rgxx3.dtsi b/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rgxx3.dtsi
+index 233eade30f21..f4c753f5d335 100644
+--- a/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rgxx3.dtsi
++++ b/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rgxx3.dtsi
+@@ -198,6 +198,7 @@ vibrator: pwm-vibrator {
+ compatible = "pwm-vibrator";
+ pwm-names = "enable";
+ pwms = <&pwm5 0 1000000000 0>;
++ vcc-supply = <&vcc_3v3>;
+ };
+ };
+
+--
+2.43.0
+
diff --git a/projects/Rockchip/patches/linux/RK3566/047-mm-rgxx3-hdmi-avdd.patch b/projects/Rockchip/patches/linux/RK3566/047-mm-rgxx3-hdmi-avdd.patch
new file mode 100644
index 0000000000..30d79adfaf
--- /dev/null
+++ b/projects/Rockchip/patches/linux/RK3566/047-mm-rgxx3-hdmi-avdd.patch
@@ -0,0 +1,31 @@
+From 9a04ac451f738b82ada28544c44058c86191b43e Mon Sep 17 00:00:00 2001
+From: Chris Morgan
+Date: Wed, 30 Oct 2024 20:40:53 -0500
+Subject: [PATCH 04/10] arm64: dts: rockchip: Add avdd_0v9 and avdd_1v8 for
+ RGxx3 HDMI
+
+Define the correct 0.9v and 1.8v regulators for the RGxx3 HDMI port.
+The regulators used here appear to power most of the 0.9v and 1.8v
+power groups listed on table 3-1 of the rk3566 datasheet.
+
+Signed-off-by: Chris Morgan
+---
+ arch/arm64/boot/dts/rockchip/rk3566-anbernic-rgxx3.dtsi | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rgxx3.dtsi b/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rgxx3.dtsi
+index f4c753f5d335..b5d7096ffbcc 100644
+--- a/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rgxx3.dtsi
++++ b/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rgxx3.dtsi
+@@ -231,6 +231,8 @@ &hdmi {
+ ddc-i2c-bus = <&i2c5>;
+ pinctrl-0 = <&hdmitxm0_cec>;
+ pinctrl-names = "default";
++ avdd-0v9-supply = <&vdda0v9_pmu>;
++ avdd-1v8-supply = <&vcca1v8_pmu>;
+ status = "okay";
+ };
+
+--
+2.43.0
+
diff --git a/projects/Rockchip/patches/linux/RK3566/048-mm-rgxx3-pmu_io_domain-reg.patch b/projects/Rockchip/patches/linux/RK3566/048-mm-rgxx3-pmu_io_domain-reg.patch
new file mode 100644
index 0000000000..2e29c466d8
--- /dev/null
+++ b/projects/Rockchip/patches/linux/RK3566/048-mm-rgxx3-pmu_io_domain-reg.patch
@@ -0,0 +1,39 @@
+From 09b4d1aea3e0d5bc12d255da680f2c7a9f6c4bd3 Mon Sep 17 00:00:00 2001
+From: Chris Morgan
+Date: Wed, 30 Oct 2024 20:46:46 -0500
+Subject: [PATCH 05/10] arm64: dts: rockchip: Correct pmu_io_domain regulators
+ for RGxx3
+
+Correct the pmu_io_domain regulators for the Anbernic RGxx3 series.
+These domains were indivually tested by identifying a test point on the
+board that corresponded to a pin within the power domain as stated in
+section 2.7 of the rk3566 datasheet. The pin was then set to a GPIO
+output of 1, and the voltage of the regulator was slightly adjusted up
+or down until the changes matched what was observed on the pin.
+
+Signed-off-by: Chris Morgan
+---
+ arch/arm64/boot/dts/rockchip/rk3566-anbernic-rgxx3.dtsi | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rgxx3.dtsi b/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rgxx3.dtsi
+index b5d7096ffbcc..51d42421dad0 100644
+--- a/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rgxx3.dtsi
++++ b/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rgxx3.dtsi
+@@ -566,10 +566,11 @@ &pmu_io_domains {
+ pmuio1-supply = <&vcc3v3_pmu>;
+ pmuio2-supply = <&vcc3v3_pmu>;
+ vccio1-supply = <&vccio_acodec>;
++ vccio2-supply = <&vcc_1v8>;
+ vccio3-supply = <&vccio_sd>;
+- vccio4-supply = <&vcc_1v8>;
++ vccio4-supply = <&vcc1v8_dvp>;
+ vccio5-supply = <&vcc_3v3>;
+- vccio6-supply = <&vcc1v8_dvp>;
++ vccio6-supply = <&vcc_1v8>;
+ vccio7-supply = <&vcc_3v3>;
+ };
+
+--
+2.43.0
+
diff --git a/projects/Rockchip/patches/linux/RK3566/049-mm-rgxx3-regs-match-pmic-otp.patch b/projects/Rockchip/patches/linux/RK3566/049-mm-rgxx3-regs-match-pmic-otp.patch
new file mode 100644
index 0000000000..a90959d30b
--- /dev/null
+++ b/projects/Rockchip/patches/linux/RK3566/049-mm-rgxx3-regs-match-pmic-otp.patch
@@ -0,0 +1,62 @@
+From c407f79c07802cf1a07e472c5907565286be2728 Mon Sep 17 00:00:00 2001
+From: Chris Morgan
+Date: Wed, 30 Oct 2024 20:52:32 -0500
+Subject: [PATCH 06/10] arm64: dts: rockchip: Correct boot enabled regulators
+ for RGxx3
+
+Correct the RGxx3 series so that only regulators that are enabled at
+boot (programmed by the OTP of the PMIC) are set with
+regulator-boot-on.
+
+Signed-off-by: Chris Morgan
+---
+ arch/arm64/boot/dts/rockchip/rk3566-anbernic-rgxx3.dtsi | 5 -----
+ 1 file changed, 5 deletions(-)
+
+diff --git a/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rgxx3.dtsi b/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rgxx3.dtsi
+index 51d42421dad0..1c2008efc5b8 100644
+--- a/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rgxx3.dtsi
++++ b/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rgxx3.dtsi
+@@ -162,7 +162,6 @@ vcc3v3_lcd0_n: regulator-vcc3v3-lcd0 {
+ enable-active-high;
+ pinctrl-0 = <&vcc_lcd_h>;
+ pinctrl-names = "default";
+- regulator-boot-on;
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-name = "vcc3v3_lcd0_n";
+@@ -188,7 +187,6 @@ vcc_wifi: regulator-vcc-wifi {
+ pinctrl-0 = <&vcc_wifi_h>;
+ pinctrl-names = "default";
+ regulator-always-on;
+- regulator-boot-on;
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-name = "vcc_wifi";
+@@ -369,7 +367,6 @@ regulator-state-mem {
+
+ vccio_acodec: LDO_REG4 {
+ regulator-always-on;
+- regulator-boot-on;
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-name = "vccio_acodec";
+@@ -414,7 +411,6 @@ regulator-state-mem {
+
+ vcc1v8_dvp: LDO_REG8 {
+ regulator-always-on;
+- regulator-boot-on;
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-name = "vcc1v8_dvp";
+@@ -436,7 +432,6 @@ regulator-state-mem {
+
+ dcdc_boost: BOOST {
+ regulator-always-on;
+- regulator-boot-on;
+ regulator-min-microvolt = <4700000>;
+ regulator-max-microvolt = <5400000>;
+ regulator-name = "boost";
+--
+2.43.0
+
diff --git a/projects/Rockchip/patches/linux/RK3566/050-mm-rgxx3-fix-regs-off-in-suspend.patch b/projects/Rockchip/patches/linux/RK3566/050-mm-rgxx3-fix-regs-off-in-suspend.patch
new file mode 100644
index 0000000000..31f974a05d
--- /dev/null
+++ b/projects/Rockchip/patches/linux/RK3566/050-mm-rgxx3-fix-regs-off-in-suspend.patch
@@ -0,0 +1,114 @@
+From ccc5b4ceb9fd590b5b245ab93da41415339d49e8 Mon Sep 17 00:00:00 2001
+From: Chris Morgan
+Date: Wed, 30 Oct 2024 20:59:43 -0500
+Subject: [PATCH 07/10] arm64: dts: rockchip: Correctly identify always-on
+ regulators for RGxx3
+
+Identify which regulators can be shut off in suspend, and which
+regulators aren't used at all. This was discovered through trial and
+error as no schematics were available for any of the devices in
+question.
+
+ - regulator_vcc_wifi: I believe this can be disabled. Setting it to
+ off in suspend has shown no ill effects.
+ - vdd_logic: This is a critical regulator and cannot be shut off, even
+ in suspend. Marking "regulator-on-in-suspend".
+ - vdd_gpu: This regulator can be shut off in suspend with no observed
+ ill effects.
+ - LDO_REG2: I believe this regulator is unused.
+ - LDO_REG9: I believe this regulator is unused.
+ - BOOST: I am not yet sure if this regulator is used for the USB OTG
+ port, but for now since we run the OTG port as a peripheral it is
+ not used.
+ - vdd_cpu: This regulator can be shut off in suspend with no observed
+ ill effects.
+
+Signed-off-by: Chris Morgan
+---
+ .../dts/rockchip/rk3566-anbernic-rgxx3.dtsi | 31 +++++--------------
+ 1 file changed, 8 insertions(+), 23 deletions(-)
+
+diff --git a/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rgxx3.dtsi b/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rgxx3.dtsi
+index 1c2008efc5b8..494f4d38477a 100644
+--- a/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rgxx3.dtsi
++++ b/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rgxx3.dtsi
+@@ -186,10 +186,12 @@ vcc_wifi: regulator-vcc-wifi {
+ gpio = <&gpio0 RK_PA0 GPIO_ACTIVE_HIGH>;
+ pinctrl-0 = <&vcc_wifi_h>;
+ pinctrl-names = "default";
+- regulator-always-on;
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-name = "vcc_wifi";
++ regulator-state-mem {
++ regulator-off-in-suspend;
++ };
+ };
+
+ vibrator: pwm-vibrator {
+@@ -289,13 +291,12 @@ vdd_logic: DCDC_REG1 {
+ regulator-initial-mode = <0x2>;
+ regulator-name = "vdd_logic";
+ regulator-state-mem {
+- regulator-off-in-suspend;
++ regulator-on-in-suspend;
+ regulator-suspend-microvolt = <900000>;
+ };
+ };
+
+ vdd_gpu: DCDC_REG2 {
+- regulator-always-on;
+ regulator-boot-on;
+ regulator-min-microvolt = <500000>;
+ regulator-max-microvolt = <1350000>;
+@@ -342,15 +343,8 @@ regulator-state-mem {
+ };
+ };
+
+- vdda_0v9: LDO_REG2 {
+- regulator-always-on;
+- regulator-boot-on;
+- regulator-min-microvolt = <900000>;
+- regulator-max-microvolt = <900000>;
+- regulator-name = "vdda_0v9";
+- regulator-state-mem {
+- regulator-off-in-suspend;
+- };
++ LDO_REG2 {
++ /* unused */
+ };
+
+ vdda0v9_pmu: LDO_REG3 {
+@@ -419,19 +413,11 @@ regulator-state-mem {
+ };
+ };
+
+- vcc2v8_dvp: LDO_REG9 {
+- regulator-always-on;
+- regulator-boot-on;
+- regulator-min-microvolt = <2800000>;
+- regulator-max-microvolt = <2800000>;
+- regulator-name = "vcc2v8_dvp";
+- regulator-state-mem {
+- regulator-off-in-suspend;
+- };
++ LDO_REG9 {
++ /* Unused */
+ };
+
+ dcdc_boost: BOOST {
+- regulator-always-on;
+ regulator-min-microvolt = <4700000>;
+ regulator-max-microvolt = <5400000>;
+ regulator-name = "boost";
+@@ -453,7 +439,6 @@ vdd_cpu: regulator@40 {
+ compatible = "fcs,fan53555";
+ reg = <0x40>;
+ fcs,suspend-voltage-selector = <1>;
+- regulator-always-on;
+ regulator-boot-on;
+ regulator-min-microvolt = <712500>;
+ regulator-max-microvolt = <1390000>;
+--
+2.43.0
+
diff --git a/projects/Rockchip/patches/linux/RK3566/051-mm-rgxx3-uart-dma.patch b/projects/Rockchip/patches/linux/RK3566/051-mm-rgxx3-uart-dma.patch
new file mode 100644
index 0000000000..e6e13f6b02
--- /dev/null
+++ b/projects/Rockchip/patches/linux/RK3566/051-mm-rgxx3-uart-dma.patch
@@ -0,0 +1,28 @@
+From 969b7d31b998dbe402623474796079b42446a25c Mon Sep 17 00:00:00 2001
+From: Chris Morgan
+Date: Wed, 30 Oct 2024 21:06:34 -0500
+Subject: [PATCH 08/10] arm64: dts: rockchip: Enable DMA for uart1 on RGxx3
+
+Enable DMA by adding the proper dma-names for uart1 on the RGxx3.
+This allows the UART controller to then use DMA.
+
+Signed-off-by: Chris Morgan
+---
+ arch/arm64/boot/dts/rockchip/rk3566-anbernic-rgxx3.dtsi | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rgxx3.dtsi b/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rgxx3.dtsi
+index 494f4d38477a..be18b17ccfb7 100644
+--- a/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rgxx3.dtsi
++++ b/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rgxx3.dtsi
+@@ -627,6 +627,7 @@ &tsadc {
+ };
+
+ &uart1 {
++ dma-names = "tx", "rx";
+ pinctrl-0 = <&uart1m1_xfer &uart1m1_ctsn &uart1m1_rtsn>;
+ pinctrl-names = "default";
+ uart-has-rtscts;
+--
+2.43.0
+
diff --git a/projects/Rockchip/patches/linux/RK3566/052-mm-rgxx3-wifi-wake-interrupts.patch b/projects/Rockchip/patches/linux/RK3566/052-mm-rgxx3-wifi-wake-interrupts.patch
new file mode 100644
index 0000000000..4b7206c17d
--- /dev/null
+++ b/projects/Rockchip/patches/linux/RK3566/052-mm-rgxx3-wifi-wake-interrupts.patch
@@ -0,0 +1,60 @@
+From 92cbc696ad8385eb4780300e77d2d518bb8fe9da Mon Sep 17 00:00:00 2001
+From: Chris Morgan
+Date: Wed, 30 Oct 2024 21:09:36 -0500
+Subject: [PATCH 09/10] arm64: dts: rockchip: Map wifi host-wake interrupt for
+ RGxx3
+
+Define the interrupt connected to the rtl8821cs wifi host wake
+functionality.
+
+Signed-off-by: Chris Morgan
+---
+ .../dts/rockchip/rk3566-anbernic-rgxx3.dtsi | 18 ++++++++++++++++++
+ 1 file changed, 18 insertions(+)
+
+diff --git a/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rgxx3.dtsi b/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rgxx3.dtsi
+index be18b17ccfb7..582befc90cef 100644
+--- a/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rgxx3.dtsi
++++ b/arch/arm64/boot/dts/rockchip/rk3566-anbernic-rgxx3.dtsi
+@@ -533,6 +533,13 @@ vcc_lcd_h: vcc-lcd-h {
+ };
+ };
+
++ wifi {
++ wifi_host_wake_l: wifi-host-wake-l {
++ rockchip,pins =
++ <4 RK_PA1 RK_FUNC_GPIO &pcfg_pull_down>;
++ };
++ };
++
+ vcc-wifi {
+ vcc_wifi_h: vcc-wifi-h {
+ rockchip,pins =
+@@ -604,6 +611,8 @@ &sdmmc1 {
+ };
+
+ &sdmmc2 {
++ #address-cells = <1>;
++ #size-cells = <0>;
+ bus-width = <4>;
+ cap-sd-highspeed;
+ cap-sdio-irq;
+@@ -618,6 +627,15 @@ &sdmmc2 {
+ vmmc-supply = <&vcc_wifi>;
+ vqmmc-supply = <&vcca1v8_pmu>;
+ status = "okay";
++
++ wifi@1 {
++ reg = <1>;
++ interrupt-names = "host-wake";
++ interrupt-parent = <&gpio4>;
++ interrupts = ;
++ pinctrl-0 = <&wifi_host_wake_l>;
++ pinctrl-names = "default";
++ };
+ };
+
+ &tsadc {
+--
+2.43.0
+
diff --git a/projects/Rockchip/patches/linux/RK3566/053-nvmem-rockchip-otp-Add-support-for-rk3568-otp.patch b/projects/Rockchip/patches/linux/RK3566/053-nvmem-rockchip-otp-Add-support-for-rk3568-otp.patch
new file mode 100644
index 0000000000..1d9ae07b33
--- /dev/null
+++ b/projects/Rockchip/patches/linux/RK3566/053-nvmem-rockchip-otp-Add-support-for-rk3568-otp.patch
@@ -0,0 +1,134 @@
+From 154292ae52bf21c77aa1b81035bd85343b416001 Mon Sep 17 00:00:00 2001
+From: Finley Xiao
+Date: Thu, 12 Nov 2020 16:24:14 +0800
+Subject: [PATCH] nvmem: rockchip-otp: Add support for rk3568-otp
+
+This adds the necessary data for handling efuse on the rk3568.
+
+Signed-off-by: Finley Xiao
+Change-Id: Ia74d77b68a6303223eaccdc08e882851a917f50f
+---
+ drivers/nvmem/rockchip-otp.c | 90 ++++++++++++++++++++++++++++++++++++
+ 1 file changed, 90 insertions(+)
+
+--- a/drivers/nvmem/rockchip-otp.c
++++ b/drivers/nvmem/rockchip-otp.c
+@@ -27,6 +27,7 @@
+ #define OTPC_USER_CTRL 0x0100
+ #define OTPC_USER_ADDR 0x0104
+ #define OTPC_USER_ENABLE 0x0108
++#define OTPC_USER_QP 0x0120
+ #define OTPC_USER_Q 0x0124
+ #define OTPC_INT_STATUS 0x0304
+ #define OTPC_SBPI_CMD0_OFFSET 0x1000
+@@ -53,6 +54,7 @@
+ #define SBPI_ENABLE_MASK GENMASK(16, 16)
+
+ #define OTPC_TIMEOUT 10000
++#define RK3568_NBYTES 2
+
+ /* RK3588 Register */
+ #define RK3588_OTPC_AUTO_CTRL 0x04
+@@ -184,6 +186,73 @@ read_end:
+ return ret;
+ }
+
++static int rk3568_otp_read(void *context, unsigned int offset, void *val,
++ size_t bytes)
++{
++ struct rockchip_otp *otp = context;
++ unsigned int addr_start, addr_end, addr_offset, addr_len;
++ unsigned int otp_qp;
++ u32 data;
++ u8 *buf;
++ int ret, i = 0;
++
++ addr_start = rounddown(offset, RK3568_NBYTES) / RK3568_NBYTES;
++ addr_end = roundup(offset + bytes, RK3568_NBYTES) / RK3568_NBYTES;
++ addr_offset = offset % RK3568_NBYTES;
++ addr_len = addr_end - addr_start;
++
++ buf = kzalloc(array3_size(addr_len, RK3568_NBYTES, sizeof(*buf)),
++ GFP_KERNEL);
++ if (!buf)
++ return -ENOMEM;
++
++ ret = rockchip_otp_reset(otp);
++ if (ret) {
++ dev_err(otp->dev, "failed to reset otp phy\n");
++ return ret;
++ }
++
++ ret = rockchip_otp_ecc_enable(otp, true);
++ if (ret < 0) {
++ dev_err(otp->dev, "rockchip_otp_ecc_enable err\n");
++ return ret;
++ }
++
++ writel(OTPC_USE_USER | OTPC_USE_USER_MASK, otp->base + OTPC_USER_CTRL);
++ udelay(5);
++ while (addr_len--) {
++ writel(addr_start++ | OTPC_USER_ADDR_MASK,
++ otp->base + OTPC_USER_ADDR);
++ writel(OTPC_USER_FSM_ENABLE | OTPC_USER_FSM_ENABLE_MASK,
++ otp->base + OTPC_USER_ENABLE);
++
++ ret = rockchip_otp_wait_status(otp, OTPC_INT_STATUS, OTPC_USER_DONE);
++ if (ret < 0) {
++ dev_err(otp->dev, "timeout during read setup\n");
++ goto read_end;
++ }
++
++ otp_qp = readl(otp->base + OTPC_USER_QP);
++ if (((otp_qp & 0xc0) == 0xc0) || (otp_qp & 0x20)) {
++ ret = -EIO;
++ dev_err(otp->dev, "ecc check error during read setup\n");
++ goto read_end;
++ }
++
++ data = readl(otp->base + OTPC_USER_Q);
++ memcpy(&buf[i], &data, RK3568_NBYTES);
++
++ i += RK3568_NBYTES;
++ }
++
++ memcpy(val, buf + addr_offset, bytes);
++
++read_end:
++ writel(0x0 | OTPC_USE_USER_MASK, otp->base + OTPC_USER_CTRL);
++
++ return ret;
++}
++
+ static int rk3588_otp_read(void *context, unsigned int offset,
+ void *val, size_t bytes)
+ {
+@@ -274,6 +343,17 @@ static const struct rockchip_data px30_d
+ .reg_read = px30_otp_read,
+ };
+
++static const char * const rk3568_otp_clocks[] = {
++ "usr", "sbpi", "apb", "phy",
++};
++
++static const struct rockchip_data rk3568_data = {
++ .size = 0x80,
++ .clks = rk3568_otp_clocks,
++ .num_clks = ARRAY_SIZE(rk3568_otp_clocks),
++ .reg_read = rk3568_otp_read,
++};
++
+ static const char * const rk3588_otp_clocks[] = {
+ "otp", "apb_pclk", "phy", "arb",
+ };
+@@ -295,6 +375,10 @@ static const struct of_device_id rockchi
+ .data = &px30_data,
+ },
+ {
++ .compatible = "rockchip,rk3568-otp",
++ .data = &rk3568_data,
++ },
++ {
+ .compatible = "rockchip,rk3588-otp",
+ .data = &rk3588_data,
+ },
diff --git a/projects/Rockchip/patches/linux/RK3566/054-arm64-dts-rockchip-rk3568-Add-otp-device-node.patch b/projects/Rockchip/patches/linux/RK3566/054-arm64-dts-rockchip-rk3568-Add-otp-device-node.patch
new file mode 100644
index 0000000000..43f69ad8b7
--- /dev/null
+++ b/projects/Rockchip/patches/linux/RK3566/054-arm64-dts-rockchip-rk3568-Add-otp-device-node.patch
@@ -0,0 +1,61 @@
+From e8c0448b695911c5a0cc37cadaacaf71d16b04d2 Mon Sep 17 00:00:00 2001
+From: Finley Xiao
+Date: Thu, 12 Nov 2020 15:43:28 +0800
+Subject: [PATCH] arm64: dts: rockchip: rk3568: Add otp device node
+
+Signed-off-by: Finley Xiao
+Change-Id: I4ec51ba8d4e1381f787c0137cb475a21e546789d
+---
+ arch/arm64/boot/dts/rockchip/rk3568.dtsi | 29 ++++++++++++++++++++++++
+ 1 file changed, 29 insertions(+)
+
+--- a/arch/arm64/boot/dts/rockchip/rk356x.dtsi
++++ b/arch/arm64/boot/dts/rockchip/rk356x.dtsi
+@@ -882,6 +882,47 @@
+ };
+ };
+
++ otp: otp@fe38c000 {
++ compatible = "rockchip,rk3568-otp";
++ reg = <0x0 0xfe38c000 0x0 0x4000>;
++ clocks = <&cru CLK_OTPC_NS_USR>, <&cru CLK_OTPC_NS_SBPI>,
++ <&cru PCLK_OTPC_NS>, <&cru PCLK_OTPPHY>;
++ clock-names = "usr", "sbpi", "apb", "phy";
++ resets = <&cru SRST_OTPPHY>;
++ reset-names = "otp_phy";
++ #address-cells = <1>;
++ #size-cells = <1>;
++
++ cpu_code: cpu-code@2 {
++ reg = <0x02 0x2>;
++ };
++
++ otp_cpu_version: cpu-version@8 {
++ reg = <0x08 0x1>;
++ bits = <3 3>;
++ };
++
++ otp_id: id@a {
++ reg = <0x0a 0x10>;
++ };
++
++ cpu_leakage: cpu-leakage@1a {
++ reg = <0x1a 0x1>;
++ };
++
++ log_leakage: log-leakage@1b {
++ reg = <0x1b 0x1>;
++ };
++
++ npu_leakage: npu-leakage@1c {
++ reg = <0x1c 0x1>;
++ };
++
++ gpu_leakage: gpu-leakage@1d {
++ reg = <0x1d 0x1>;
++ };
++ };
++
+ qos_gpu: qos@fe128000 {
+ compatible = "rockchip,rk3568-qos", "syscon";
+ reg = <0x0 0xfe128000 0x0 0x20>;
diff --git a/projects/Rockchip/patches/linux/RK3566/9997-Revert-usb-dwc3-core-Fix-system-suspend-on-TI-AM62-p.patch b/projects/Rockchip/patches/linux/RK3566/9997-Revert-usb-dwc3-core-Fix-system-suspend-on-TI-AM62-p.patch
new file mode 100644
index 0000000000..9636f79c9b
--- /dev/null
+++ b/projects/Rockchip/patches/linux/RK3566/9997-Revert-usb-dwc3-core-Fix-system-suspend-on-TI-AM62-p.patch
@@ -0,0 +1,72 @@
+From 53fb35dfaac387f484ad587962933fa5372a79d9 Mon Sep 17 00:00:00 2001
+From: sydarn
+Date: Sat, 26 Oct 2024 11:01:51 +0200
+Subject: [PATCH] Revert "usb: dwc3: core: Fix system suspend on TI AM62
+ platforms"
+
+This reverts commit a690a9e38e6ba819789074388de7cff06425ef5b.
+---
+ drivers/usb/dwc3/core.c | 19 -------------------
+ drivers/usb/dwc3/core.h | 3 ---
+ 2 files changed, 22 deletions(-)
+
+diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
+index 427e5660f87c..21740e2b8f07 100644
+--- a/drivers/usb/dwc3/core.c
++++ b/drivers/usb/dwc3/core.c
+@@ -2342,19 +2342,6 @@
+ u32 reg;
+ int i;
+
+- if (!pm_runtime_suspended(dwc->dev) && !PMSG_IS_AUTO(msg)) {
+- dwc->susphy_state = (dwc3_readl(dwc->regs, DWC3_GUSB2PHYCFG(0)) &
+- DWC3_GUSB2PHYCFG_SUSPHY) ||
+- (dwc3_readl(dwc->regs, DWC3_GUSB3PIPECTL(0)) &
+- DWC3_GUSB3PIPECTL_SUSPHY);
+- /*
+- * TI AM62 platform requires SUSPHY to be
+- * enabled for system suspend to work.
+- */
+- if (!dwc->susphy_state)
+- dwc3_enable_susphy(dwc, true);
+- }
+-
+ switch (dwc->current_dr_role) {
+ case DWC3_GCTL_PRTCAP_DEVICE:
+ if (pm_runtime_suspended(dwc->dev))
+@@ -2473,11 +2460,6 @@
+ break;
+ }
+
+- if (!PMSG_IS_AUTO(msg)) {
+- /* restore SUSPHY state to that before system suspend. */
+- dwc3_enable_susphy(dwc, dwc->susphy_state);
+- }
+-
+ return 0;
+ }
+
+diff --git a/drivers/usb/dwc3/core.h b/drivers/usb/dwc3/core.h
+index eab81dfdcc35..9c508e0c5cdf 100644
+--- a/drivers/usb/dwc3/core.h
++++ b/drivers/usb/dwc3/core.h
+@@ -1150,8 +1150,6 @@ struct dwc3_scratchpad_array {
+ * @sys_wakeup: set if the device may do system wakeup.
+ * @wakeup_configured: set if the device is configured for remote wakeup.
+ * @suspended: set to track suspend event due to U3/L2.
+- * @susphy_state: state of DWC3_GUSB2PHYCFG_SUSPHY + DWC3_GUSB3PIPECTL_SUSPHY
+- * before PM suspend.
+ * @imod_interval: set the interrupt moderation interval in 250ns
+ * increments or 0 to disable.
+ * @max_cfg_eps: current max number of IN eps used across all USB configs.
+@@ -1384,7 +1382,6 @@ struct dwc3 {
+ unsigned sys_wakeup:1;
+ unsigned wakeup_configured:1;
+ unsigned suspended:1;
+- unsigned susphy_state:1;
+
+ u16 imod_interval;
+
+--
+2.43.0
+
diff --git a/projects/Rockchip/patches/linux/RK3566/9998-Revert-usb-dwc3-core-Prevent-phy-suspend-during-init.patch b/projects/Rockchip/patches/linux/RK3566/9998-Revert-usb-dwc3-core-Prevent-phy-suspend-during-init.patch
new file mode 100644
index 0000000000..fd33818be8
--- /dev/null
+++ b/projects/Rockchip/patches/linux/RK3566/9998-Revert-usb-dwc3-core-Prevent-phy-suspend-during-init.patch
@@ -0,0 +1,268 @@
+From d979b244e845f20b4d98b568f69b0b9c095f7fbe Mon Sep 17 00:00:00 2001
+From: sydarn
+Date: Sat, 26 Oct 2024 10:29:10 +0200
+Subject: [PATCH] Revert "usb: dwc3: core: Prevent phy suspend during init"
+
+This reverts commit 6d735722063a945de56472bdc6bfcb170fd43b86.
+---
+ drivers/usb/dwc3/core.c | 98 ++++++++++++++++++++++-----------------
+ drivers/usb/dwc3/core.h | 1 -
+ drivers/usb/dwc3/gadget.c | 2 -
+ drivers/usb/dwc3/host.c | 27 -----------
+ 4 files changed, 55 insertions(+), 73 deletions(-)
+
+diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
+index 9eb085f359ce..05f53abb14ad 100644
+--- a/drivers/usb/dwc3/core.c
++++ b/drivers/usb/dwc3/core.c
+@@ -105,32 +105,6 @@ static int dwc3_get_dr_mode(struct dwc3 *dwc)
+ return 0;
+ }
+
+-void dwc3_enable_susphy(struct dwc3 *dwc, bool enable)
+-{
+- u32 reg;
+- int i;
+-
+- for (i = 0; i < dwc->num_usb3_ports; i++) {
+- reg = dwc3_readl(dwc->regs, DWC3_GUSB3PIPECTL(i));
+- if (enable && !dwc->dis_u3_susphy_quirk)
+- reg |= DWC3_GUSB3PIPECTL_SUSPHY;
+- else
+- reg &= ~DWC3_GUSB3PIPECTL_SUSPHY;
+-
+- dwc3_writel(dwc->regs, DWC3_GUSB3PIPECTL(i), reg);
+- }
+-
+- for (i = 0; i < dwc->num_usb2_ports; i++) {
+- reg = dwc3_readl(dwc->regs, DWC3_GUSB2PHYCFG(i));
+- if (enable && !dwc->dis_u2_susphy_quirk)
+- reg |= DWC3_GUSB2PHYCFG_SUSPHY;
+- else
+- reg &= ~DWC3_GUSB2PHYCFG_SUSPHY;
+-
+- dwc3_writel(dwc->regs, DWC3_GUSB2PHYCFG(i), reg);
+- }
+-}
+-
+ void dwc3_set_prtcap(struct dwc3 *dwc, u32 mode)
+ {
+ u32 reg;
+@@ -642,8 +616,11 @@ static int dwc3_core_ulpi_init(struct dwc3 *dwc)
+
+ static int dwc3_ss_phy_setup(struct dwc3 *dwc, int index)
+ {
++ unsigned int hw_mode;
+ u32 reg;
+
++ hw_mode = DWC3_GHWPARAMS0_MODE(dwc->hwparams.hwparams0);
++
+ reg = dwc3_readl(dwc->regs, DWC3_GUSB3PIPECTL(index));
+
+ /*
+@@ -653,16 +630,21 @@ static int dwc3_ss_phy_setup(struct dwc3 *dwc, int index)
+ reg &= ~DWC3_GUSB3PIPECTL_UX_EXIT_PX;
+
+ /*
+- * Above DWC_usb3.0 1.94a, it is recommended to set
+- * DWC3_GUSB3PIPECTL_SUSPHY to '0' during coreConsultant configuration.
+- * So default value will be '0' when the core is reset. Application
+- * needs to set it to '1' after the core initialization is completed.
+- *
+- * Similarly for DRD controllers, GUSB3PIPECTL.SUSPENDENABLE must be
+- * cleared after power-on reset, and it can be set after core
+- * initialization.
++ * Above 1.94a, it is recommended to set DWC3_GUSB3PIPECTL_SUSPHY
++ * to '0' during coreConsultant configuration. So default value
++ * will be '0' when the core is reset. Application needs to set it
++ * to '1' after the core initialization is completed.
+ */
+- reg &= ~DWC3_GUSB3PIPECTL_SUSPHY;
++ if (!DWC3_VER_IS_WITHIN(DWC3, ANY, 194A))
++ reg |= DWC3_GUSB3PIPECTL_SUSPHY;
++
++ /*
++ * For DRD controllers, GUSB3PIPECTL.SUSPENDENABLE must be cleared after
++ * power-on reset, and it can be set after core initialization, which is
++ * after device soft-reset during initialization.
++ */
++ if (hw_mode == DWC3_GHWPARAMS0_MODE_DRD)
++ reg &= ~DWC3_GUSB3PIPECTL_SUSPHY;
+
+ if (dwc->u2ss_inp3_quirk)
+ reg |= DWC3_GUSB3PIPECTL_U2SSINP3OK;
+@@ -688,6 +670,9 @@ static int dwc3_ss_phy_setup(struct dwc3 *dwc, int index)
+ if (dwc->tx_de_emphasis_quirk)
+ reg |= DWC3_GUSB3PIPECTL_TX_DEEPH(dwc->tx_de_emphasis);
+
++ if (dwc->dis_u3_susphy_quirk)
++ reg &= ~DWC3_GUSB3PIPECTL_SUSPHY;
++
+ if (dwc->dis_del_phy_power_chg_quirk)
+ reg &= ~DWC3_GUSB3PIPECTL_DEPOCHANGE;
+
+@@ -698,8 +683,11 @@ static int dwc3_ss_phy_setup(struct dwc3 *dwc, int index)
+
+ static int dwc3_hs_phy_setup(struct dwc3 *dwc, int index)
+ {
++ unsigned int hw_mode;
+ u32 reg;
+
++ hw_mode = DWC3_GHWPARAMS0_MODE(dwc->hwparams.hwparams0);
++
+ reg = dwc3_readl(dwc->regs, DWC3_GUSB2PHYCFG(index));
+
+ /* Select the HS PHY interface */
+@@ -742,15 +730,24 @@ static int dwc3_hs_phy_setup(struct dwc3 *dwc, int index)
+ }
+
+ /*
+- * Above DWC_usb3.0 1.94a, it is recommended to set
+- * DWC3_GUSB2PHYCFG_SUSPHY to '0' during coreConsultant configuration.
+- * So default value will be '0' when the core is reset. Application
+- * needs to set it to '1' after the core initialization is completed.
+- *
+- * Similarly for DRD controllers, GUSB2PHYCFG.SUSPHY must be cleared
+- * after power-on reset, and it can be set after core initialization.
++ * Above 1.94a, it is recommended to set DWC3_GUSB2PHYCFG_SUSPHY to
++ * '0' during coreConsultant configuration. So default value will
++ * be '0' when the core is reset. Application needs to set it to
++ * '1' after the core initialization is completed.
++ */
++ if (!DWC3_VER_IS_WITHIN(DWC3, ANY, 194A))
++ reg |= DWC3_GUSB2PHYCFG_SUSPHY;
++
++ /*
++ * For DRD controllers, GUSB2PHYCFG.SUSPHY must be cleared after
++ * power-on reset, and it can be set after core initialization, which is
++ * after device soft-reset during initialization.
+ */
+- reg &= ~DWC3_GUSB2PHYCFG_SUSPHY;
++ if (hw_mode == DWC3_GHWPARAMS0_MODE_DRD)
++ reg &= ~DWC3_GUSB2PHYCFG_SUSPHY;
++
++ if (dwc->dis_u2_susphy_quirk)
++ reg &= ~DWC3_GUSB2PHYCFG_SUSPHY;
+
+ if (dwc->dis_enblslpm_quirk)
+ reg &= ~DWC3_GUSB2PHYCFG_ENBLSLPM;
+@@ -1349,6 +1346,21 @@ static int dwc3_core_init(struct dwc3 *dwc)
+ if (ret)
+ goto err_exit_phy;
+
++ if (hw_mode == DWC3_GHWPARAMS0_MODE_DRD &&
++ !DWC3_VER_IS_WITHIN(DWC3, ANY, 194A)) {
++ if (!dwc->dis_u3_susphy_quirk) {
++ reg = dwc3_readl(dwc->regs, DWC3_GUSB3PIPECTL(0));
++ reg |= DWC3_GUSB3PIPECTL_SUSPHY;
++ dwc3_writel(dwc->regs, DWC3_GUSB3PIPECTL(0), reg);
++ }
++
++ if (!dwc->dis_u2_susphy_quirk) {
++ reg = dwc3_readl(dwc->regs, DWC3_GUSB2PHYCFG(0));
++ reg |= DWC3_GUSB2PHYCFG_SUSPHY;
++ dwc3_writel(dwc->regs, DWC3_GUSB2PHYCFG(0), reg);
++ }
++ }
++
+ dwc3_core_setup_global_control(dwc);
+ dwc3_core_num_eps(dwc);
+
+diff --git a/drivers/usb/dwc3/core.h b/drivers/usb/dwc3/core.h
+index c71240e8f7c7..45d6e86a06b7 100644
+--- a/drivers/usb/dwc3/core.h
++++ b/drivers/usb/dwc3/core.h
+@@ -1602,7 +1602,6 @@ int dwc3_event_buffers_setup(struct dwc3 *dwc);
+ void dwc3_event_buffers_cleanup(struct dwc3 *dwc);
+
+ int dwc3_core_soft_reset(struct dwc3 *dwc);
+-void dwc3_enable_susphy(struct dwc3 *dwc, bool enable);
+
+ #if IS_ENABLED(CONFIG_USB_DWC3_HOST) || IS_ENABLED(CONFIG_USB_DWC3_DUAL_ROLE)
+ int dwc3_host_init(struct dwc3 *dwc);
+diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
+index 291bc549935b..31d5eafd76ac 100644
+--- a/drivers/usb/dwc3/gadget.c
++++ b/drivers/usb/dwc3/gadget.c
+@@ -2915,7 +2915,6 @@ static int __dwc3_gadget_start(struct dwc3 *dwc)
+ dwc3_ep0_out_start(dwc);
+
+ dwc3_gadget_enable_irq(dwc);
+- dwc3_enable_susphy(dwc, true);
+
+ return 0;
+
+@@ -4682,7 +4681,6 @@ void dwc3_gadget_exit(struct dwc3 *dwc)
+ if (!dwc->gadget)
+ return;
+
+- dwc3_enable_susphy(dwc, false);
+ usb_del_gadget(dwc->gadget);
+ dwc3_gadget_free_endpoints(dwc);
+ usb_put_gadget(dwc->gadget);
+diff --git a/drivers/usb/dwc3/host.c b/drivers/usb/dwc3/host.c
+index e0533cee6870..21cf3f0c9570 100644
+--- a/drivers/usb/dwc3/host.c
++++ b/drivers/usb/dwc3/host.c
+@@ -10,13 +10,10 @@
+ #include
+ #include
+ #include
+-#include
+-#include
+
+ #include "../host/xhci-port.h"
+ #include "../host/xhci-ext-caps.h"
+ #include "../host/xhci-caps.h"
+-#include "../host/xhci-plat.h"
+ #include "core.h"
+
+ #define XHCI_HCSPARAMS1 0x4
+@@ -60,24 +57,6 @@ static void dwc3_power_off_all_roothub_ports(struct dwc3 *dwc)
+ }
+ }
+
+-static void dwc3_xhci_plat_start(struct usb_hcd *hcd)
+-{
+- struct platform_device *pdev;
+- struct dwc3 *dwc;
+-
+- if (!usb_hcd_is_primary_hcd(hcd))
+- return;
+-
+- pdev = to_platform_device(hcd->self.controller);
+- dwc = dev_get_drvdata(pdev->dev.parent);
+-
+- dwc3_enable_susphy(dwc, true);
+-}
+-
+-static const struct xhci_plat_priv dwc3_xhci_plat_quirk = {
+- .plat_start = dwc3_xhci_plat_start,
+-};
+-
+ static void dwc3_host_fill_xhci_irq_res(struct dwc3 *dwc,
+ int irq, char *name)
+ {
+@@ -190,11 +169,6 @@ int dwc3_host_init(struct dwc3 *dwc)
+ }
+ }
+
+- ret = platform_device_add_data(xhci, &dwc3_xhci_plat_quirk,
+- sizeof(struct xhci_plat_priv));
+- if (ret)
+- goto err;
+-
+ ret = platform_device_add(xhci);
+ if (ret) {
+ dev_err(dwc->dev, "failed to register xHCI device\n");
+@@ -220,7 +194,6 @@ void dwc3_host_exit(struct dwc3 *dwc)
+ if (dwc->sys_wakeup)
+ device_init_wakeup(&dwc->xhci->dev, false);
+
+- dwc3_enable_susphy(dwc, false);
+ platform_device_unregister(dwc->xhci);
+ dwc->xhci = NULL;
+ }
+--
+2.43.0
+
diff --git a/scripts/build_distro b/scripts/build_distro
index a2e73d34fe..deb5821eeb 100755
--- a/scripts/build_distro
+++ b/scripts/build_distro
@@ -29,8 +29,9 @@ then
PKG_CLEAN+=" ${CLEAN_WESTON}"
fi
-# When USE_MALI specified for S922X platform, clean packages that vary based on VULKAN_SUPPORT
-[ "${DEVICE}" = "S922X" -a -n "${USE_MALI}" ] && PKG_CLEAN+=" ${CLEAN_S922X}"
+if [ "${ES_WIP}" ]; then
+ PKG_CLEAN+=" emulationstation es-theme-art-book-next"
+fi
# If DEVICE_ROOT is defined and not the device being built, make sure that the
# build folder is a link to root rather than a folder.
diff --git a/scripts/checkdeps b/scripts/checkdeps
index d225106785..1eda6ae75f 100755
--- a/scripts/checkdeps
+++ b/scripts/checkdeps
@@ -173,9 +173,10 @@ case "${DISTRO}" in
[XML::Parser]=XML-Parser
)
;;
- arch|endeavouros)
+ arch|endeavouros|steamos)
dep_map+=(
[g++]=g++
+ [go]=go
[mkfontscale]=xorg-mkfontscale
[mkfontdir]=xorg-mkfontdir
[bdftopcf]=xorg-bdftopcf
@@ -184,6 +185,9 @@ case "${DISTRO}" in
[python3]=python3
[rpcgen]=rpcsvc-proto
)
+ file_map+=(
+ [/usr/lib/libgirepository-1.0.so]=libgirepository
+ )
perl_map+=(
[JSON]=perl-json
[XML::Parser]=perl-xml-parser
@@ -278,7 +282,7 @@ if [ "${#need_map[@]}" -gt 0 ]; then
mageia)
get_yes_no && sudo urpmi "${need_map[@]}"
;;
- arch|endeavouros)
+ arch|endeavouros|steamos)
get_yes_no && sudo pacman -Sy "${need_map[@]}"
;;
opensuse)
diff --git a/scripts/mkimage b/scripts/mkimage
index 85b13d6c33..f986c22d3c 100755
--- a/scripts/mkimage
+++ b/scripts/mkimage
@@ -91,7 +91,7 @@ dd if="${DISK}" of="${LE_TMP}/part2.ext4" bs=512 count=0 seek="${STORAGE_PART_CO
# create filesystem on part2
echo "image: creating filesystem on part2..."
-mke2fs -F -q -t ext4 -m 0 -O ^orphan_file "${LE_TMP}/part2.ext4"
+mke2fs -F -q -t ext4 -T ext4 -O ^orphan_file -m 0 "${LE_TMP}/part2.ext4"
tune2fs -L "${DISTRO_DISKLABEL}" -U ${UUID_STORAGE} "${LE_TMP}/part2.ext4" >"${SAVE_ERROR}" 2>&1 || show_error
e2fsck -n "${LE_TMP}/part2.ext4" >"${SAVE_ERROR}" 2>&1 || show_error
sync