From c7017775b102269a89bbb5d57cd30d5bf32ae70b Mon Sep 17 00:00:00 2001 From: Douglas Teles Date: Thu, 2 Apr 2026 12:23:19 -0300 Subject: [PATCH] Update RK3326 Game Console Device Tree and related configurations - Modify joypad compatibility to include "archr-joypad" in the device tree source. - Adjust internal display settings to use the same reset GPIO and add enable GPIO. - Remove SDIO card detect GPIO and mark it as non-removable. - Update the joypad driver in the MIPI generator to use "archr-joypad". - Fix Vulkan custom dispatchers to restrict header version checks. - Add system manager timeout overrides for improved shutdown performance. - Update kernel configuration to version 6.12.79 and enable BFQ I/O scheduler. - Clean up GPU governor settings in post-update scripts. - Update PPSSPP emulator to version 1.20.2 and apply necessary patches. - Adjust SDL2 and Mesa package dependencies and versions. - Update Vulkan headers and loader to version 1.4.347. - Add udev rules for BFQ scheduler and systemd configuration for shutdown timeout. - Implement input sense adjustments for better button mapping. - Add clock speed settings to EmulationStation configuration. - Disable rumble motor on boot to prevent unwanted vibrations. --- .../archr-dts/rk3326-gameconsole-soysauce.dts | 14 +++--- config/mipi-generator/archr-dtbo.py | 2 +- .../vkmark-0002-fix-custom-dispatchers.patch | 4 +- packages/linux/udev.d/10-bfq-sched.rules | 1 + .../system.conf.d/10-shutdown-timeout.conf | 7 +++ packages/sysutils/systemd/package.mk | 4 ++ .../rockchip/rk3326-gameconsole-soysauce.dts | 14 +++--- .../devices/RK3326/linux/linux.aarch64.conf | 5 ++- .../archr/profile.d/099-freqfunctions | 13 +++--- .../ArchR/packages/archr/sources/post-update | 5 +++ .../emulators/libretro/ppsspp-lr/package.mk | 2 +- .../ppsspp-lr/patches/002-psp-path.patch | 11 +++-- .../ppsspp-lr/patches/004-build-flags.patch | 4 +- .../patches/005-fix-atomics-arm64.patch | 4 +- .../patches/007-fix-vulkan-on-libmali.patch | 45 +++++++++++++++++++ .../scripts/start_duckstation.sh | 7 ++- .../emulators/standalone/ppsspp-sa/package.mk | 2 +- .../patches/002-fullscreen-drm.patch | 16 +++---- .../ppsspp-sa/scripts/start_ppsspp.sh | 10 +++++ .../ArchR/packages/graphics/SDL2/package.mk | 2 +- .../ArchR/packages/graphics/mesa/package.mk | 2 +- .../graphics/vulkan/vulkan-headers/package.mk | 2 +- .../graphics/vulkan/vulkan-loader/package.mk | 2 +- .../graphics/vulkan/vulkan-tools/package.mk | 2 +- .../quirks/platforms/RK3326/060-game_settings | 17 ------- .../linux-drivers/mali-bifrost/package.mk | 2 +- projects/ArchR/packages/linux/package.mk | 2 +- .../packages/network/iwd/system.d/iwd.service | 1 + .../sysutils/autostart/sources/autostart | 7 +++ .../system-utils/sources/scripts/input_sense | 12 ++++- .../systemd-resolved.service.d/override.conf | 1 + .../config/common/es_features.cfg | 5 +++ .../packages/wayland/lib/wlroots/package.mk | 19 ++++---- 33 files changed, 164 insertions(+), 82 deletions(-) create mode 100644 packages/linux/udev.d/10-bfq-sched.rules create mode 100644 packages/sysutils/systemd/config/system.conf.d/10-shutdown-timeout.conf create mode 100644 projects/ArchR/packages/emulators/libretro/ppsspp-lr/patches/007-fix-vulkan-on-libmali.patch diff --git a/config/archr-dts/rk3326-gameconsole-soysauce.dts b/config/archr-dts/rk3326-gameconsole-soysauce.dts index 2f2eb4381f..18c9b3accf 100644 --- a/config/archr-dts/rk3326-gameconsole-soysauce.dts +++ b/config/archr-dts/rk3326-gameconsole-soysauce.dts @@ -42,7 +42,7 @@ }; joypad: odroidgo3-joypad { - compatible = "odroidgo3-joypad"; + compatible = "archr-joypad", "odroidgo3-joypad"; pwms = <&pwm0 0 200000000 0>; pwm-names = "enable"; rumble-boost-weak = <0x0000>; @@ -176,13 +176,18 @@ }; }; -/* Soysauce panel: different reset GPIO + additional enable GPIO */ +/* Soysauce panel: same reset GPIO as base (GPIO3_PC0), add enable GPIO */ &internal_display { compatible = "archr,generic-dsi", "rocknix,generic-dsi"; - reset-gpios = <&gpio3 RK_PB0 GPIO_ACTIVE_LOW>; enable-gpios = <&gpio1 RK_PC2 GPIO_ACTIVE_HIGH>; }; +/* Soysauce uses GPIO3_PB6 for BTN-A, not sdio card detect */ +&sdio { + /delete-property/ cd-gpios; + non-removable; +}; + &rk817_codec { spk-ctl-gpios = <&gpio3 RK_PC4 GPIO_ACTIVE_HIGH>; }; @@ -215,9 +220,6 @@ }; panel { - panel_reset: panel-reset { - rockchip,pins = <3 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>; - }; panel_enable: panel-enable { rockchip,pins = <1 RK_PC2 RK_FUNC_GPIO &pcfg_pull_none>; }; diff --git a/config/mipi-generator/archr-dtbo.py b/config/mipi-generator/archr-dtbo.py index 0863e8d6dc..ec6d62c273 100644 --- a/config/mipi-generator/archr-dtbo.py +++ b/config/mipi-generator/archr-dtbo.py @@ -281,7 +281,7 @@ def add_gpio_vol_keys(dt, overlay, gpio_keys_ovl): def switch_joypad_to_mymini(overlay, jp_ovl): # My mini has separate ADC channels for axis, so we need another driver - jp_ovl.set_property('compatible', "rocknix-joypad") + jp_ovl.set_property('compatible', "archr-joypad") jp_ovl.set_property('io-channel-names', ["key-RY", "key-RX", "key-LY", "key-LX"]) jp_ovl.set_property('io-channels', [0xffffffff, 3, 0xffffffff, 3, 0xffffffff, 2, 0xffffffff, 1]) add_fixup(overlay, 'saradc', jp_ovl.path+'/__overlay__:io-channels:0') diff --git a/packages/graphics/vulkan/vkmark/patches/vkmark-0002-fix-custom-dispatchers.patch b/packages/graphics/vulkan/vkmark/patches/vkmark-0002-fix-custom-dispatchers.patch index e62cc78bcc..8be16cfcdd 100644 --- a/packages/graphics/vulkan/vkmark/patches/vkmark-0002-fix-custom-dispatchers.patch +++ b/packages/graphics/vulkan/vkmark/patches/vkmark-0002-fix-custom-dispatchers.patch @@ -17,7 +17,7 @@ index a36b299..8470951 100644 } -+#if VK_HEADER_VERSION >= 333 ++#if VK_HEADER_VERSION >= 333 && VK_HEADER_VERSION <= 337 +namespace vk::detail { + +template <> @@ -54,7 +54,7 @@ index 4bf7838..1bc0458 100644 +} + -+#if VK_HEADER_VERSION >= 333 ++#if VK_HEADER_VERSION >= 333 && VK_HEADER_VERSION <= 337 +namespace vk::detail { + +template <> diff --git a/packages/linux/udev.d/10-bfq-sched.rules b/packages/linux/udev.d/10-bfq-sched.rules new file mode 100644 index 0000000000..a206dadb78 --- /dev/null +++ b/packages/linux/udev.d/10-bfq-sched.rules @@ -0,0 +1 @@ +ACTION=="add|change", KERNEL=="mmcbl*", ATTR{queue/scheduler}="bfq" diff --git a/packages/sysutils/systemd/config/system.conf.d/10-shutdown-timeout.conf b/packages/sysutils/systemd/config/system.conf.d/10-shutdown-timeout.conf new file mode 100644 index 0000000000..c2005c986f --- /dev/null +++ b/packages/sysutils/systemd/config/system.conf.d/10-shutdown-timeout.conf @@ -0,0 +1,7 @@ +[Manager] +# Reduce default service stop timeout from 90s to 5s. +# ArchR uses ext4 root with persistent storage at /storage/. +# Network services don't need graceful shutdown — only filesystem sync matters, +# which is handled by systemd's built-in shutdown ordering. +DefaultTimeoutStopSec=5s +DefaultTimeoutAbortSec=5s diff --git a/packages/sysutils/systemd/package.mk b/packages/sysutils/systemd/package.mk index 74747556f5..c2a8824dcc 100644 --- a/packages/sysutils/systemd/package.mk +++ b/packages/sysutils/systemd/package.mk @@ -274,6 +274,10 @@ post_makeinstall_target() { safe_remove ${INSTALL}/etc/udev/rules.d ln -sf /storage/.config/udev.rules.d ${INSTALL}/etc/udev/rules.d + # system manager timeout overrides + mkdir -p ${INSTALL}/etc/systemd/system.conf.d + cp -PR ${PKG_DIR}/config/system.conf.d/* ${INSTALL}/etc/systemd/system.conf.d/ + # journald ln -sf /storage/.cache/journald.conf.d ${INSTALL}/usr/lib/systemd/journald.conf.d } diff --git a/projects/ArchR/devices/RK3326/linux/dts/rockchip/rk3326-gameconsole-soysauce.dts b/projects/ArchR/devices/RK3326/linux/dts/rockchip/rk3326-gameconsole-soysauce.dts index 2f2eb4381f..18c9b3accf 100644 --- a/projects/ArchR/devices/RK3326/linux/dts/rockchip/rk3326-gameconsole-soysauce.dts +++ b/projects/ArchR/devices/RK3326/linux/dts/rockchip/rk3326-gameconsole-soysauce.dts @@ -42,7 +42,7 @@ }; joypad: odroidgo3-joypad { - compatible = "odroidgo3-joypad"; + compatible = "archr-joypad", "odroidgo3-joypad"; pwms = <&pwm0 0 200000000 0>; pwm-names = "enable"; rumble-boost-weak = <0x0000>; @@ -176,13 +176,18 @@ }; }; -/* Soysauce panel: different reset GPIO + additional enable GPIO */ +/* Soysauce panel: same reset GPIO as base (GPIO3_PC0), add enable GPIO */ &internal_display { compatible = "archr,generic-dsi", "rocknix,generic-dsi"; - reset-gpios = <&gpio3 RK_PB0 GPIO_ACTIVE_LOW>; enable-gpios = <&gpio1 RK_PC2 GPIO_ACTIVE_HIGH>; }; +/* Soysauce uses GPIO3_PB6 for BTN-A, not sdio card detect */ +&sdio { + /delete-property/ cd-gpios; + non-removable; +}; + &rk817_codec { spk-ctl-gpios = <&gpio3 RK_PC4 GPIO_ACTIVE_HIGH>; }; @@ -215,9 +220,6 @@ }; panel { - panel_reset: panel-reset { - rockchip,pins = <3 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>; - }; panel_enable: panel-enable { rockchip,pins = <1 RK_PC2 RK_FUNC_GPIO &pcfg_pull_none>; }; diff --git a/projects/ArchR/devices/RK3326/linux/linux.aarch64.conf b/projects/ArchR/devices/RK3326/linux/linux.aarch64.conf index aafb0992af..68c9784a40 100644 --- a/projects/ArchR/devices/RK3326/linux/linux.aarch64.conf +++ b/projects/ArchR/devices/RK3326/linux/linux.aarch64.conf @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/arm64 6.12.61 Kernel Configuration +# Linux/arm64 6.12.79 Kernel Configuration # CONFIG_CC_VERSION_TEXT="aarch64-archr-linux-gnu-gcc-14.2.0 (GCC) 14.2.0" CONFIG_CC_IS_GCC=y @@ -818,7 +818,8 @@ CONFIG_BLK_PM=y # CONFIG_MQ_IOSCHED_DEADLINE=y CONFIG_MQ_IOSCHED_KYBER=y -# CONFIG_IOSCHED_BFQ is not set +CONFIG_IOSCHED_BFQ=y +CONFIG_BFQ_GROUP_IOSCHED=y # end of IO Schedulers CONFIG_PADATA=y diff --git a/projects/ArchR/packages/archr/profile.d/099-freqfunctions b/projects/ArchR/packages/archr/profile.d/099-freqfunctions index 0a7f3e43bb..ee08534594 100644 --- a/projects/ArchR/packages/archr/profile.d/099-freqfunctions +++ b/projects/ArchR/packages/archr/profile.d/099-freqfunctions @@ -105,14 +105,15 @@ get_gpu_performance_level() { gpu_performance_level() { case ${1} in - profile_peak) - set_gpu_gov performance - ;; - auto|profile_standard) + auto|default) set_gpu_gov ondemand ;; - low) - set_gpu_gov powersave + *) + set_gpu_gov ${1} ;; esac } + +get_available_gpu_governors() { + echo "default"; tr " " "\n" < $GPU_FREQ/available_governors | grep \[a-z\] +} diff --git a/projects/ArchR/packages/archr/sources/post-update b/projects/ArchR/packages/archr/sources/post-update index 3f841811c7..1f68ac51b5 100644 --- a/projects/ArchR/packages/archr/sources/post-update +++ b/projects/ArchR/packages/archr/sources/post-update @@ -293,3 +293,8 @@ if [ -e "/storage/.config/duckstation/settings.ini" ]; then # no confirmation popup sed -i 's/ConfirmPowerOff = true/ConfirmPowerOff = false/' /storage/.config/duckstation/settings.ini fi + +# Clean old GPU 'governor' values +sed -i '/gpuperf=low/d' /storage/.config/system/configs/system.cfg +sed -i '/gpuperf=profile_standard/d' /storage/.config/system/configs/system.cfg +sed -i '/gpuperf=profile_peak/d' /storage/.config/system/configs/system.cfg diff --git a/projects/ArchR/packages/emulators/libretro/ppsspp-lr/package.mk b/projects/ArchR/packages/emulators/libretro/ppsspp-lr/package.mk index 3727578367..20a84452d1 100644 --- a/projects/ArchR/packages/emulators/libretro/ppsspp-lr/package.mk +++ b/projects/ArchR/packages/emulators/libretro/ppsspp-lr/package.mk @@ -20,7 +20,7 @@ ################################################################################ PKG_NAME="ppsspp-lr" -PKG_VERSION="e49c0bd8836a8a8f678565357773386f1174d3f5" +PKG_VERSION="afbc66a318b86432642b532c575241f3716642ef" # v1.20.2 PKG_LICENSE="GPLv2" PKG_SITE="https://github.com/hrydgard/ppsspp" PKG_URL="https://github.com/hrydgard/ppsspp.git" diff --git a/projects/ArchR/packages/emulators/libretro/ppsspp-lr/patches/002-psp-path.patch b/projects/ArchR/packages/emulators/libretro/ppsspp-lr/patches/002-psp-path.patch index f9ce20c81c..e874b35d84 100644 --- a/projects/ArchR/packages/emulators/libretro/ppsspp-lr/patches/002-psp-path.patch +++ b/projects/ArchR/packages/emulators/libretro/ppsspp-lr/patches/002-psp-path.patch @@ -1,8 +1,7 @@ -diff --git a/Core/System.cpp b/Core/System.cpp -index cb6fc34fa..829a5795a 100644 ---- a/Core/System.cpp -+++ b/Core/System.cpp -@@ -619,12 +619,7 @@ std::string PSP_GetLoading() { +diff --git a/Core/Util/PathUtil.cpp b/Core/Util/PathUtil.cpp +--- a/Core/Util/PathUtil.cpp ++++ b/Core/Util/PathUtil.cpp +@@ -45,12 +45,7 @@ Path GetSysDirectory(PSPDirectories directoryType) { const Path &memStickDirectory = g_Config.memStickDirectory; Path pspDirectory; @@ -13,6 +12,6 @@ index cb6fc34fa..829a5795a 100644 - pspDirectory = memStickDirectory / "PSP"; - } + pspDirectory = memStickDirectory / "PSP"; - + switch (directoryType) { case DIRECTORY_PSP: diff --git a/projects/ArchR/packages/emulators/libretro/ppsspp-lr/patches/004-build-flags.patch b/projects/ArchR/packages/emulators/libretro/ppsspp-lr/patches/004-build-flags.patch index 2daa6ced77..5d404f39dc 100644 --- a/projects/ArchR/packages/emulators/libretro/ppsspp-lr/patches/004-build-flags.patch +++ b/projects/ArchR/packages/emulators/libretro/ppsspp-lr/patches/004-build-flags.patch @@ -1,10 +1,10 @@ --- a/CMakeLists.txt +++ b/CMakeLists.txt -@@ -395,6 +395,7 @@ +@@ -413,6 +413,7 @@ # NEON optimizations in libpng17 seem to cause PNG load errors, see #14485. add_compile_definitions(PNG_ARM_NEON_OPT=0) + add_compile_options(-Ofast -fno-tree-slp-vectorize) - add_compile_options(-Wall -Werror=return-type -Wno-unused-function -Wno-sign-compare -Wno-unused-but-set-variable "$<$:-Wno-reorder>" -Wno-unknown-pragmas -Wno-unused-value -Wno-unused-variable) + add_compile_options(-Wall -Werror=return-type -Wno-unused-function -Wno-sign-compare -Wno-unused-but-set-variable "$<$:-Wno-reorder>" -Wno-unknown-pragmas -Wno-unused-value -Wno-unused-variable -Wno-error=incompatible-pointer-types) if(NOT CLANG) # This one is very useful but has many false positives. diff --git a/projects/ArchR/packages/emulators/libretro/ppsspp-lr/patches/005-fix-atomics-arm64.patch b/projects/ArchR/packages/emulators/libretro/ppsspp-lr/patches/005-fix-atomics-arm64.patch index 397f36496b..47aa78410c 100644 --- a/projects/ArchR/packages/emulators/libretro/ppsspp-lr/patches/005-fix-atomics-arm64.patch +++ b/projects/ArchR/packages/emulators/libretro/ppsspp-lr/patches/005-fix-atomics-arm64.patch @@ -1,10 +1,10 @@ --- a/CMakeLists.txt +++ b/CMakeLists.txt -@@ -396,6 +396,7 @@ +@@ -414,6 +414,7 @@ add_compile_definitions(PNG_ARM_NEON_OPT=0) add_compile_options(-Ofast -fno-tree-slp-vectorize) + add_compile_options(-mno-outline-atomics) - add_compile_options(-Wall -Werror=return-type -Wno-unused-function -Wno-sign-compare -Wno-unused-but-set-variable "$<$:-Wno-reorder>" -Wno-unknown-pragmas -Wno-unused-value -Wno-unused-variable) + add_compile_options(-Wall -Werror=return-type -Wno-unused-function -Wno-sign-compare -Wno-unused-but-set-variable "$<$:-Wno-reorder>" -Wno-unknown-pragmas -Wno-unused-value -Wno-unused-variable -Wno-error=incompatible-pointer-types) if(NOT CLANG) # This one is very useful but has many false positives. diff --git a/projects/ArchR/packages/emulators/libretro/ppsspp-lr/patches/007-fix-vulkan-on-libmali.patch b/projects/ArchR/packages/emulators/libretro/ppsspp-lr/patches/007-fix-vulkan-on-libmali.patch new file mode 100644 index 0000000000..9f5ab2b0c0 --- /dev/null +++ b/projects/ArchR/packages/emulators/libretro/ppsspp-lr/patches/007-fix-vulkan-on-libmali.patch @@ -0,0 +1,45 @@ +--- a/libretro/libretro_vulkan.cpp ++++ b/libretro/libretro_vulkan.cpp +@@ -109,27 +109,34 @@ static VKAPI_ATTR VkResult VKAPI_CALL vkCreateDevice_libretro(VkPhysicalDevice p + newInfo.enabledExtensionCount = (uint32_t)enabledExtensionNames.size(); + newInfo.ppEnabledExtensionNames = newInfo.enabledExtensionCount ? enabledExtensionNames.data() : nullptr; + +- // Then check for VkPhysicalDeviceFeatures2 chaining or pEnabledFeatures to enable required features. Note that when both +- // structs are present Features2 takes precedence. vkCreateDevice parameters don't give us a simple way to detect +- // VK_KHR_get_physical_device_properties2 usage so we'll always try both paths. ++ // Check for VkPhysicalDeviceFeatures2 in pNext chain. Per Vulkan spec, pEnabledFeatures ++ // must be NULL when VkPhysicalDeviceFeatures2 is present in pNext. + std::unordered_map originalFeaturePointers; + VkPhysicalDeviceFeatures placeholderEnabledFeatures{}; ++ bool hasFeatures2InChain = false; + + for (const VkBaseOutStructure *next = (const VkBaseOutStructure *)pCreateInfo->pNext; next != nullptr;) { + if (next->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2) { + VkPhysicalDeviceFeatures *enabledFeatures = &((VkPhysicalDeviceFeatures2 *)next)->features; + originalFeaturePointers.try_emplace(enabledFeatures, *enabledFeatures); ++ hasFeatures2InChain = true; + } + + next = (const VkBaseOutStructure *)next->pNext; + } + +- if (newInfo.pEnabledFeatures) { +- placeholderEnabledFeatures = *newInfo.pEnabledFeatures; +- } ++ if (!hasFeatures2InChain) { ++ // Only use pEnabledFeatures when VkPhysicalDeviceFeatures2 is NOT in pNext chain. ++ if (newInfo.pEnabledFeatures) { ++ placeholderEnabledFeatures = *newInfo.pEnabledFeatures; ++ } + +- newInfo.pEnabledFeatures = &placeholderEnabledFeatures; +- originalFeaturePointers.try_emplace((VkPhysicalDeviceFeatures *)newInfo.pEnabledFeatures, *newInfo.pEnabledFeatures); ++ newInfo.pEnabledFeatures = &placeholderEnabledFeatures; ++ originalFeaturePointers.try_emplace((VkPhysicalDeviceFeatures *)newInfo.pEnabledFeatures, *newInfo.pEnabledFeatures); ++ } else { ++ // Ensure pEnabledFeatures is NULL when features2 is used (Vulkan spec requirement). ++ newInfo.pEnabledFeatures = nullptr; ++ } + + for (const auto& pair : originalFeaturePointers) { + for (uint32_t i = 0; i < sizeof(VkPhysicalDeviceFeatures) / sizeof(VkBool32); i++) { diff --git a/projects/ArchR/packages/emulators/standalone/duckstation-sa/scripts/start_duckstation.sh b/projects/ArchR/packages/emulators/standalone/duckstation-sa/scripts/start_duckstation.sh index db64c6f82d..722554cb5f 100644 --- a/projects/ArchR/packages/emulators/standalone/duckstation-sa/scripts/start_duckstation.sh +++ b/projects/ArchR/packages/emulators/standalone/duckstation-sa/scripts/start_duckstation.sh @@ -4,7 +4,7 @@ # Copyright (C) 2022-present JELOS (https://github.com/JustEnoughLinuxOS) . /etc/profile -set_kill set "-9 duckstation-mini" +set_kill set "-9 AppRun.wrapped" # Filesystem vars IMMUTABLE_CONF_DIR="/usr/config/duckstation" @@ -120,7 +120,10 @@ fi fi #Retroachievements -/usr/bin/cheevos_duckstation.sh +# Disabled, not working. Seems like Duckstation changed the token encruption... +# /usr/bin/cheevos_duckstation.sh +sed -i '/\[Cheevos\]/,/^\s*$/s/Enabled =.*/Enabled = false/' ${CONF_FILE} + #Run Duckstation ${EMUPERF} duckstation-sa -fullscreen -bigpicture -nogui -- "${1}" > /dev/null 2>&1 diff --git a/projects/ArchR/packages/emulators/standalone/ppsspp-sa/package.mk b/projects/ArchR/packages/emulators/standalone/ppsspp-sa/package.mk index f62b81a0e1..5148feb391 100644 --- a/projects/ArchR/packages/emulators/standalone/ppsspp-sa/package.mk +++ b/projects/ArchR/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="eb859735feddf88dbe651763f366a7705612113a" # v1.20.1 +PKG_VERSION="afbc66a318b86432642b532c575241f3716642ef" # v1.20.2 CHEAT_DB_VERSION="7c9fe1ae71155626cea767aed53f968de9f4051f" # Update cheat.db (17/01/2026) PKG_LICENSE="GPLv2" PKG_DEPENDS_TARGET="toolchain libzip SDL2 zlib zip" diff --git a/projects/ArchR/packages/emulators/standalone/ppsspp-sa/patches/002-fullscreen-drm.patch b/projects/ArchR/packages/emulators/standalone/ppsspp-sa/patches/002-fullscreen-drm.patch index e4be2a1120..d194f6bc36 100644 --- a/projects/ArchR/packages/emulators/standalone/ppsspp-sa/patches/002-fullscreen-drm.patch +++ b/projects/ArchR/packages/emulators/standalone/ppsspp-sa/patches/002-fullscreen-drm.patch @@ -74,26 +74,22 @@ index 04c16ca7a0..cecc4b7f0f 100644 g_display.pixel_yres = g_DesktopHeight; } diff --git a/UI/MainScreen.cpp b/UI/MainScreen.cpp -index d7a97347b1..531997fba0 100644 --- a/UI/MainScreen.cpp +++ b/UI/MainScreen.cpp -@@ -1454,19 +1454,6 @@ void MainScreen::CreateViews() { +@@ -1459,18 +1459,6 @@ LinearLayout *rightColumnItems = new LinearLayout(ORIENT_VERTICAL, new LinearLayoutParams(FILL_PARENT, WRAP_CONTENT)); rightColumnItems->SetSpacing(0.0f); ViewGroup *logo = new LogoView(false, new LinearLayoutParams(FILL_PARENT, 80.0f)); -#if !defined(MOBILE_DEVICE) - auto gr = GetI18NCategory(I18NCat::GRAPHICS); -- ImageID icon(g_Config.bFullScreen ? "I_RESTORE" : "I_FULLSCREEN"); -- UI::Button *fullscreenButton = logo->Add(new Button("", icon, new AnchorLayoutParams(48, 48, NONE, 0, 0, NONE, Centering::None))); +- Button *fullscreenButton = logo->Add(new Button("", ImageID(), new AnchorLayoutParams(48, 48, NONE, 0, 0, NONE, Centering::None))); - fullscreenButton->SetIgnoreText(true); -- fullscreenButton->OnClick.Add([fullscreenButton](UI::EventParams &e) { -- if (fullscreenButton) { -- fullscreenButton->SetImageID(ImageID(!g_Config.bFullScreen ? "I_RESTORE" : "I_FULLSCREEN")); -- } +- fullscreenButton->OnClick.Add([](UI::EventParams &e) { - g_Config.bFullScreen = !g_Config.bFullScreen; - System_ApplyFullscreenState(); - }); +- fullscreenButton->SetImageIDFunc([]() { +- return g_Config.bFullScreen ? ImageID("I_RESTORE") : ImageID("I_FULLSCREEN"); +- }); -#endif rightColumnItems->Add(logo); - - LinearLayout *rightColumnChoices = rightColumnItems; diff --git a/projects/ArchR/packages/emulators/standalone/ppsspp-sa/scripts/start_ppsspp.sh b/projects/ArchR/packages/emulators/standalone/ppsspp-sa/scripts/start_ppsspp.sh index 45df57b934..218da314db 100755 --- a/projects/ArchR/packages/emulators/standalone/ppsspp-sa/scripts/start_ppsspp.sh +++ b/projects/ArchR/packages/emulators/standalone/ppsspp-sa/scripts/start_ppsspp.sh @@ -29,6 +29,7 @@ IRES=$(get_setting internal_resolution "${PLATFORM}" "${GAME}") GRENDERER=$(get_setting graphics_backend "${PLATFORM}" "${GAME}") SKIPB=$(get_setting skip_buffer_effects "${PLATFORM}" "${GAME}") VSYNC=$(get_setting vsync "${PLATFORM}" "${GAME}") +CLOCK_SPEED=$(get_setting clock_speed "${PLATFORM}" "${GAME}") #Set the cores to use CORES=$(get_setting "cores" "${PLATFORM}" "${GAME}") @@ -89,6 +90,15 @@ fi sed -i '/^VSyncInterval =/c\VSyncInterval = False' ${CONF_DIR}/${PPSSPP_INI} fi + #Clock Speed + if [ "${CLOCK_SPEED}" = "222" ]; then + sed -i '/^CPUSpeed =/c\CPUSpeed = 222' ${CONF_DIR}/${PPSSPP_INI} + elif [ "${CLOCK_SPEED}" = "333" ]; then + sed -i '/^CPUSpeed =/c\CPUSpeed = 333' ${CONF_DIR}/${PPSSPP_INI} + else + sed -i '/^CPUSpeed =/c\CPUSpeed = 0' ${CONF_DIR}/${PPSSPP_INI} + fi + #Retroachievements /usr/bin/cheevos_ppsspp.sh diff --git a/projects/ArchR/packages/graphics/SDL2/package.mk b/projects/ArchR/packages/graphics/SDL2/package.mk index 83471537d1..bbc76487fc 100644 --- a/projects/ArchR/packages/graphics/SDL2/package.mk +++ b/projects/ArchR/packages/graphics/SDL2/package.mk @@ -10,7 +10,7 @@ PKG_URL="https://www.libsdl.org/release/SDL2-${PKG_VERSION}.tar.gz" PKG_DEPENDS_TARGET="toolchain alsa-lib systemd dbus pulseaudio libdrm SDL2:host" PKG_LONGDESC="Simple DirectMedia Layer is a cross-platform development library designed to provide low level access to audio, keyboard, mouse, joystick, and graphics hardware." PKG_BUILD_FLAGS="+speed" -PKG_DEPENDS_HOST="toolchain:host distutilscross:host" +PKG_DEPENDS_HOST="toolchain:host distutilscross:host libX11:host" if [ ! "${OPENGL_SUPPORT}" = "no" ]; then PKG_DEPENDS_TARGET+=" ${OPENGL} glu" diff --git a/projects/ArchR/packages/graphics/mesa/package.mk b/projects/ArchR/packages/graphics/mesa/package.mk index f4a4940f36..2818eb36a8 100644 --- a/projects/ArchR/packages/graphics/mesa/package.mk +++ b/projects/ArchR/packages/graphics/mesa/package.mk @@ -12,7 +12,7 @@ PKG_DEPENDS_TARGET="toolchain expat libdrm Mako:host pyyaml:host" PKG_LONGDESC="Mesa is a 3-D graphics library with an API." PKG_TOOLCHAIN="meson" PKG_PATCH_DIRS+=" ${DEVICE}" -PKG_VERSION="26.0.2" +PKG_VERSION="26.0.4" PKG_URL="https://gitlab.freedesktop.org/mesa/mesa/-/archive/mesa-${PKG_VERSION}/mesa-mesa-${PKG_VERSION}.tar.gz" if listcontains "${GRAPHIC_DRIVERS}" "panfrost"; then diff --git a/projects/ArchR/packages/graphics/vulkan/vulkan-headers/package.mk b/projects/ArchR/packages/graphics/vulkan/vulkan-headers/package.mk index 8892284e74..91ea2f6d8e 100755 --- a/projects/ArchR/packages/graphics/vulkan/vulkan-headers/package.mk +++ b/projects/ArchR/packages/graphics/vulkan/vulkan-headers/package.mk @@ -3,7 +3,7 @@ # Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv) PKG_NAME="vulkan-headers" -PKG_VERSION="1.4.332" +PKG_VERSION="1.4.347" PKG_LICENSE="Apache-2.0" PKG_SITE="https://github.com/KhronosGroup/Vulkan-Headers" PKG_URL="https://github.com/KhronosGroup/Vulkan-Headers/archive/v${PKG_VERSION}.tar.gz" diff --git a/projects/ArchR/packages/graphics/vulkan/vulkan-loader/package.mk b/projects/ArchR/packages/graphics/vulkan/vulkan-loader/package.mk index 21200af0a9..8c64770b4e 100755 --- a/projects/ArchR/packages/graphics/vulkan/vulkan-loader/package.mk +++ b/projects/ArchR/packages/graphics/vulkan/vulkan-loader/package.mk @@ -3,7 +3,7 @@ # Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv) PKG_NAME="vulkan-loader" -PKG_VERSION="1.4.332" +PKG_VERSION="1.4.347" PKG_LICENSE="Apache-2.0" PKG_SITE="https://github.com/KhronosGroup/Vulkan-Loader" PKG_URL="https://github.com/KhronosGroup/Vulkan-Loader/archive/v${PKG_VERSION}.tar.gz" diff --git a/projects/ArchR/packages/graphics/vulkan/vulkan-tools/package.mk b/projects/ArchR/packages/graphics/vulkan/vulkan-tools/package.mk index 805d00c19c..83bf58e517 100755 --- a/projects/ArchR/packages/graphics/vulkan/vulkan-tools/package.mk +++ b/projects/ArchR/packages/graphics/vulkan/vulkan-tools/package.mk @@ -3,7 +3,7 @@ # Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv) PKG_NAME="vulkan-tools" -PKG_VERSION="1.4.332" +PKG_VERSION="1.4.347" PKG_LICENSE="Apache-2.0" PKG_SITE="https://github.com/KhronosGroup/Vulkan-Tools" PKG_URL="https://github.com/KhronosGroup/Vulkan-tools/archive/v${PKG_VERSION}.tar.gz" diff --git a/projects/ArchR/packages/hardware/quirks/platforms/RK3326/060-game_settings b/projects/ArchR/packages/hardware/quirks/platforms/RK3326/060-game_settings index 0a4c09c431..e7bac6bc58 100755 --- a/projects/ArchR/packages/hardware/quirks/platforms/RK3326/060-game_settings +++ b/projects/ArchR/packages/hardware/quirks/platforms/RK3326/060-game_settings @@ -2,22 +2,5 @@ # SPDX-License-Identifier: GPL-2.0 # Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) -. /etc/profile.d/001-functions - -### Set the default performance scaling mode for a few systems. -for SYSTEM in dreamcast n64 ports psp psx saturn gba pcfx cdi -do - CPU_SETTING=$(get_setting ${SYSTEM}.cpugovernor) - if [ -z "${CPU_SETTING}" ] - then - set_setting ${SYSTEM}.cpugovernor performance - fi - GPU_SETTING=$(get_setting ${SYSTEM}.gpuperf) - if [ -z "${GPU_SETTING}" ] - then - set_setting ${SYSTEM}.gpuperf profile_peak - fi -done - # Need to set RA video driver to GL for libmali driver. sed -i '/video_driver =/c\video_driver = "gl"' /storage/.config/retroarch/retroarch.cfg diff --git a/projects/ArchR/packages/linux-drivers/mali-bifrost/package.mk b/projects/ArchR/packages/linux-drivers/mali-bifrost/package.mk index 5955c2da38..9201b3306b 100644 --- a/projects/ArchR/packages/linux-drivers/mali-bifrost/package.mk +++ b/projects/ArchR/packages/linux-drivers/mali-bifrost/package.mk @@ -15,7 +15,7 @@ case ${DEVICE} in PKG_PATCH_DIRS+=" 6.12-LTS" ;; *) - PKG_VERSION="b1405e8f82d26381ce94d79e47586531ea7a54db" + PKG_VERSION="422e192b7e3aa3140f34de34765b798817c1f749" PKG_URL="http://github.com/archr/mali_kbase/archive/${PKG_VERSION}.tar.gz" ;; esac diff --git a/projects/ArchR/packages/linux/package.mk b/projects/ArchR/packages/linux/package.mk index 02cd61ea1a..df4935e809 100644 --- a/projects/ArchR/packages/linux/package.mk +++ b/projects/ArchR/packages/linux/package.mk @@ -41,7 +41,7 @@ case ${DEVICE} in PKG_URL="https://www.kernel.org/pub/linux/kernel/v${PKG_VERSION/.*/}.x/${PKG_NAME}-${PKG_VERSION}.tar.xz" ;; *) - PKG_VERSION="6.12.61" + PKG_VERSION="6.12.79" PKG_PATCH_DIRS+=" 6.12-LTS" PKG_URL="https://www.kernel.org/pub/linux/kernel/v${PKG_VERSION/.*/}.x/${PKG_NAME}-${PKG_VERSION}.tar.xz" ;; diff --git a/projects/ArchR/packages/network/iwd/system.d/iwd.service b/projects/ArchR/packages/network/iwd/system.d/iwd.service index 79db61ca35..88f260db40 100644 --- a/projects/ArchR/packages/network/iwd/system.d/iwd.service +++ b/projects/ArchR/packages/network/iwd/system.d/iwd.service @@ -14,6 +14,7 @@ ExecStart=/usr/lib/iwd NotifyAccess=main LimitNPROC=1 Restart=on-failure +TimeoutStopSec=1s CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_RAW CAP_NET_BIND_SERVICE #PrivateTmp=true #NoNewPrivileges=true diff --git a/projects/ArchR/packages/sysutils/autostart/sources/autostart b/projects/ArchR/packages/sysutils/autostart/sources/autostart index 1c34fc7068..9c5045eb19 100755 --- a/projects/ArchR/packages/sysutils/autostart/sources/autostart +++ b/projects/ArchR/packages/sysutils/autostart/sources/autostart @@ -16,6 +16,13 @@ performance 2>/dev/null chmod 0666 /sys/class/backlight/*/brightness 2>/dev/null chmod 0666 /sys/devices/system/cpu/cpufreq/boost 2>/dev/null +### Disable rumble motor on boot (prevents vibration on boards where PWM0 defaults high) +if [ -d /sys/class/pwm/pwmchip0 ]; then + echo 0 > /sys/class/pwm/pwmchip0/export 2>/dev/null + echo 0 > /sys/class/pwm/pwmchip0/pwm0/duty_cycle 2>/dev/null + echo 0 > /sys/class/pwm/pwmchip0/pwm0/enable 2>/dev/null +fi + ### Load platform specific quirks if [ -d "/usr/lib/autostart/quirks/platforms/${HW_DEVICE}" ] then diff --git a/projects/ArchR/packages/sysutils/system-utils/sources/scripts/input_sense b/projects/ArchR/packages/sysutils/system-utils/sources/scripts/input_sense index ac126dcf95..5752d8d27a 100755 --- a/projects/ArchR/packages/sysutils/system-utils/sources/scripts/input_sense +++ b/projects/ArchR/packages/sysutils/system-utils/sources/scripts/input_sense @@ -67,10 +67,18 @@ FUNCTION_HOTKEY_A_EVENT='*('${BTN_HOTKEY_A_MODIFIER}'), value *' FUNCTION_HOTKEY_B_EVENT='*('${BTN_HOTKEY_B_MODIFIER}'), value *' FUNCTION_HOTKEY_C_EVENT='*('${BTN_HOTKEY_C_MODIFIER}'), value *' -FUNCTION_HOTKEY_BTN_NORTH_EVENT="*(BTN_NORTH), value 1*" +INPUT_PLUMBER_CHECK=$(grep -l "InputPlumber Keyboard" /sys/class/input/event*/device/name | sed -E 's#.*/(event[0-9]+).*#/dev/input/\1#') +if [[ -n "${INPUT_PLUMBER_CHECK}" ]]; then + ${DEBUG} && log $0 "InputPlumber detected, fixing face buttons." + FUNCTION_HOTKEY_BTN_NORTH_EVENT="*(BTN_WEST), value 1*" + FUNCTION_HOTKEY_BTN_WEST_EVENT="*(BTN_NORTH), value 1*" +else + FUNCTION_HOTKEY_BTN_NORTH_EVENT="*(BTN_NORTH), value 1*" + FUNCTION_HOTKEY_BTN_WEST_EVENT="*(BTN_WEST), value 1*" +fi FUNCTION_HOTKEY_BTN_SOUTH_EVENT="*(BTN_SOUTH), value 1*" -FUNCTION_HOTKEY_BTN_WEST_EVENT="*(BTN_WEST), value 1*" FUNCTION_HOTKEY_BTN_EAST_EVENT="*(BTN_EAST), value 1*" + FUNCTION_HOTKEY_BTN_BACK_EVENT="*(BTN_BACK), value 1*" FUNCTION_HOTKEY_KEY_RECORD_EVENT="*(KEY_RECORD), value 1*" diff --git a/projects/ArchR/packages/sysutils/systemd/system.d/systemd-resolved.service.d/override.conf b/projects/ArchR/packages/sysutils/systemd/system.d/systemd-resolved.service.d/override.conf index 2a48b7b304..68719b53e8 100644 --- a/projects/ArchR/packages/sysutils/systemd/system.d/systemd-resolved.service.d/override.conf +++ b/projects/ArchR/packages/sysutils/systemd/system.d/systemd-resolved.service.d/override.conf @@ -3,3 +3,4 @@ # Fixes error: NAMESPACE "Failed to set up mount namespacing" which can occur based on overlayfs setup speed PrivateTmp=no ProtectSystem=full +TimeoutStopSec=1s diff --git a/projects/ArchR/packages/ui/emulationstation/config/common/es_features.cfg b/projects/ArchR/packages/ui/emulationstation/config/common/es_features.cfg index e4ac388b74..7592975b2d 100644 --- a/projects/ArchR/packages/ui/emulationstation/config/common/es_features.cfg +++ b/projects/ArchR/packages/ui/emulationstation/config/common/es_features.cfg @@ -375,6 +375,11 @@ + + + + + diff --git a/projects/ArchR/packages/wayland/lib/wlroots/package.mk b/projects/ArchR/packages/wayland/lib/wlroots/package.mk index ce663598af..74982e08be 100644 --- a/projects/ArchR/packages/wayland/lib/wlroots/package.mk +++ b/projects/ArchR/packages/wayland/lib/wlroots/package.mk @@ -9,21 +9,22 @@ PKG_LONGDESC="A modular Wayland compositor library" PKG_TOOLCHAIN="meson" case ${DEVICE} in - SM8250|SM8550|RK3399|H700) - PKG_VERSION="0.19.2" - PKG_SHA256="f0530ecaa8739d15f97bd1e1edddb77e281d57e42d4263fccb67157f71730d17" - PKG_URL="${PKG_SITE}/-/archive/${PKG_VERSION}/wlroots-${PKG_VERSION}.tar.gz" + RK3326|RK3566|S922X) + # despite the '-rk' indication this is a wlroots version with libmali hacks + PKG_VERSION="0.19.3-rk" + PKG_SHA256="5385dc105f2c4c5fe3157e0b0299d6508765086d605fe4efe3ae437d4f18a5d9" + PKG_PATCH_DIRS+=" libmali" + PKG_URL="https://github.com/rocknix/rockchip-wlroots/archive/refs/tags/${PKG_VERSION}.tar.gz" ;; RK3588|SDM845) PKG_VERSION="0.17.4-rk" PKG_SHA256="e9e1e14966c6272ca595307fa817fd0fefae96b13fe36c8084b3a7a55fed20d1" - PKG_URL="https://github.com/stolen/rockchip-wlroots/archive/refs/tags/${PKG_VERSION}.tar.gz" + PKG_URL="https://github.com/rocknix/rockchip-wlroots/archive/refs/tags/${PKG_VERSION}.tar.gz" ;; *) - PKG_VERSION="0.19.0-rk" - PKG_PATCH_DIRS+=" libmali" - PKG_SHA256="cf247be7ec6b7be834a2469c6738aa4515e1cb085c6668cdf071bb5a0dc0f524" - PKG_URL="https://github.com/stolen/rockchip-wlroots/archive/refs/tags/${PKG_VERSION}.tar.gz" + PKG_VERSION="0.19.3" + PKG_SHA256="a6ff89b64ea15e424d1b0db4a22145fccf5ec2ff2e7b8af0fa35e2ac8975986f" + PKG_URL="${PKG_SITE}/-/archive/${PKG_VERSION}/wlroots-${PKG_VERSION}.tar.gz" ;; esac