Merge pull request #2733 from fewtarius/mainline-3566
Dev to mainline 3566 merge
This commit is contained in:
commit
e8ebb54232
43 changed files with 419 additions and 648 deletions
|
@ -2,7 +2,7 @@
|
|||
# Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="pipewire"
|
||||
PKG_VERSION="0.3.84"
|
||||
PKG_VERSION="1.0.1"
|
||||
PKG_LICENSE="LGPL"
|
||||
PKG_SITE="https://pipewire.org"
|
||||
PKG_URL="https://github.com/PipeWire/pipewire/archive/${PKG_VERSION}.tar.gz"
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
diff -rupN pipewire-0.3.84.orig/src/daemon/pipewire-pulse.conf.in pipewire-0.3.84/src/daemon/pipewire-pulse.conf.in
|
||||
--- pipewire-0.3.84.orig/src/daemon/pipewire-pulse.conf.in 2023-11-13 16:35:56.502690919 +0000
|
||||
+++ pipewire-0.3.84/src/daemon/pipewire-pulse.conf.in 2023-11-13 16:36:28.096495134 +0000
|
||||
@@ -90,11 +90,11 @@ pulse.properties = {
|
||||
diff -rupN pipewire-1.0.0.orig/src/daemon/pipewire-pulse.conf.in pipewire-1.0.0/src/daemon/pipewire-pulse.conf.in
|
||||
--- pipewire-1.0.0.orig/src/daemon/pipewire-pulse.conf.in 2023-12-29 13:41:35.329947857 +0000
|
||||
+++ pipewire-1.0.0/src/daemon/pipewire-pulse.conf.in 2023-12-29 13:41:46.850669838 +0000
|
||||
@@ -92,11 +92,11 @@ pulse.properties = {
|
||||
#"tcp:[::]:9999" # IPv6 on all addresses
|
||||
#"tcp:127.0.0.1:8888" # IPv4 on a single address
|
||||
#
|
||||
|
@ -18,23 +18,17 @@ diff -rupN pipewire-0.3.84.orig/src/daemon/pipewire-pulse.conf.in pipewire-0.3.8
|
|||
]
|
||||
#server.dbus-name = "org.pulseaudio.Server"
|
||||
#pulse.min.req = 128/48000 # 2.7ms
|
||||
diff -rupN pipewire-0.3.84.orig/src/daemon/systemd/system/pipewire.service.in pipewire-0.3.84/src/daemon/systemd/system/pipewire.service.in
|
||||
--- pipewire-0.3.84.orig/src/daemon/systemd/system/pipewire.service.in 2023-11-13 16:35:56.502690919 +0000
|
||||
+++ pipewire-0.3.84/src/daemon/systemd/system/pipewire.service.in 2023-11-13 16:36:28.096495134 +0000
|
||||
@@ -15,21 +15,24 @@ Description=PipeWire Multimedia Service
|
||||
Requires=pipewire.socket
|
||||
|
||||
[Service]
|
||||
-LockPersonality=yes
|
||||
-MemoryDenyWriteExecute=yes
|
||||
-NoNewPrivileges=yes
|
||||
-RestrictNamespaces=yes
|
||||
-SystemCallArchitectures=native
|
||||
-SystemCallFilter=@system-service
|
||||
diff -rupN pipewire-1.0.0.orig/src/daemon/systemd/system/pipewire.service.in pipewire-1.0.0/src/daemon/systemd/system/pipewire.service.in
|
||||
--- pipewire-1.0.0.orig/src/daemon/systemd/system/pipewire.service.in 2023-12-29 13:41:35.329947857 +0000
|
||||
+++ pipewire-1.0.0/src/daemon/systemd/system/pipewire.service.in 2023-12-29 13:43:32.217227049 +0000
|
||||
@@ -21,15 +21,25 @@ NoNewPrivileges=yes
|
||||
RestrictNamespaces=yes
|
||||
SystemCallArchitectures=native
|
||||
SystemCallFilter=@system-service
|
||||
+Environment=DBUS_SESSION_BUS_ADDRESS=unix:path=/run/dbus/system_bus_socket
|
||||
+User=root
|
||||
Type=simple
|
||||
-AmbientCapabilities=CAP_SYS_NICE
|
||||
AmbientCapabilities=CAP_SYS_NICE
|
||||
-ExecStart=@PW_BINARY@
|
||||
+ExecStart=/usr/bin/pipewire
|
||||
Restart=on-failure
|
||||
|
@ -53,16 +47,16 @@ diff -rupN pipewire-0.3.84.orig/src/daemon/systemd/system/pipewire.service.in pi
|
|||
+Environment=HOME=/storage
|
||||
|
||||
[Install]
|
||||
-Also=pipewire.socket
|
||||
+Also=pipewire-pulse.socket
|
||||
-Also=pipewire.socket pipewire-manager.socket
|
||||
+Also=pipewire.socket pipewire-pulse.socket pipewire-manager.socket
|
||||
WantedBy=default.target
|
||||
diff -rupN pipewire-0.3.84.orig/src/daemon/systemd/system/pipewire.socket pipewire-0.3.84/src/daemon/systemd/system/pipewire.socket
|
||||
--- pipewire-0.3.84.orig/src/daemon/systemd/system/pipewire.socket 2023-11-13 16:35:56.502690919 +0000
|
||||
+++ pipewire-0.3.84/src/daemon/systemd/system/pipewire.socket 2023-11-13 16:36:58.434228383 +0000
|
||||
@@ -5,8 +5,8 @@ Description=PipeWire Multimedia System S
|
||||
diff -rupN pipewire-1.0.0.orig/src/daemon/systemd/system/pipewire.socket pipewire-1.0.0/src/daemon/systemd/system/pipewire.socket
|
||||
--- pipewire-1.0.0.orig/src/daemon/systemd/system/pipewire.socket 2023-12-29 13:41:35.329947857 +0000
|
||||
+++ pipewire-1.0.0/src/daemon/systemd/system/pipewire.socket 2023-12-29 13:44:04.291208172 +0000
|
||||
@@ -4,8 +4,8 @@ Description=PipeWire Multimedia System S
|
||||
[Socket]
|
||||
Priority=6
|
||||
ListenStream=%t/pipewire/pipewire-0
|
||||
ListenStream=%t/pipewire/pipewire-0-manager
|
||||
-SocketUser=pipewire
|
||||
-SocketGroup=pipewire
|
||||
+SocketUser=root
|
||||
|
|
106
packages/audio/pipewire/patches/002-revert-pollfd.patch
Normal file
106
packages/audio/pipewire/patches/002-revert-pollfd.patch
Normal file
|
@ -0,0 +1,106 @@
|
|||
diff -rupN pipewire-1.0.1.orig/pipewire-alsa/alsa-plugins/pcm_pipewire.c pipewire-1.0.1/pipewire-alsa/alsa-plugins/pcm_pipewire.c
|
||||
--- pipewire-1.0.1.orig/pipewire-alsa/alsa-plugins/pcm_pipewire.c 2024-01-23 20:57:27.818081461 +0000
|
||||
+++ pipewire-1.0.1/pipewire-alsa/alsa-plugins/pcm_pipewire.c 2024-01-23 20:57:56.203633317 +0000
|
||||
@@ -89,7 +89,7 @@ typedef struct {
|
||||
|
||||
static int snd_pcm_pipewire_stop(snd_pcm_ioplug_t *io);
|
||||
|
||||
-static int update_active(snd_pcm_ioplug_t *io)
|
||||
+static int check_active(snd_pcm_ioplug_t *io)
|
||||
{
|
||||
snd_pcm_pipewire_t *pw = io->private_data;
|
||||
snd_pcm_sframes_t avail;
|
||||
@@ -97,10 +97,7 @@ static int update_active(snd_pcm_ioplug_
|
||||
|
||||
avail = snd_pcm_ioplug_avail(io, pw->hw_ptr, io->appl_ptr);
|
||||
|
||||
- if (pw->error > 0) {
|
||||
- active = true;
|
||||
- }
|
||||
- else if (io->state == SND_PCM_STATE_DRAINING) {
|
||||
+ if (io->state == SND_PCM_STATE_DRAINING) {
|
||||
active = pw->drained;
|
||||
}
|
||||
else if (avail >= 0 && avail < (snd_pcm_sframes_t)pw->min_avail) {
|
||||
@@ -108,27 +105,33 @@ static int update_active(snd_pcm_ioplug_
|
||||
}
|
||||
else if (avail >= (snd_pcm_sframes_t)pw->min_avail) {
|
||||
active = true;
|
||||
- }
|
||||
- else {
|
||||
+ } else {
|
||||
active = false;
|
||||
}
|
||||
if (pw->active != active) {
|
||||
- uint64_t val;
|
||||
-
|
||||
pw_log_trace("%p: avail:%lu min-avail:%lu state:%s hw:%lu appl:%lu active:%d->%d state:%s",
|
||||
pw, avail, pw->min_avail, snd_pcm_state_name(io->state),
|
||||
pw->hw_ptr, io->appl_ptr, pw->active, active,
|
||||
snd_pcm_state_name(io->state));
|
||||
-
|
||||
- pw->active = active;
|
||||
- if (active)
|
||||
- spa_system_eventfd_write(pw->system, io->poll_fd, 1);
|
||||
- else
|
||||
- spa_system_eventfd_read(pw->system, io->poll_fd, &val);
|
||||
}
|
||||
return active;
|
||||
}
|
||||
|
||||
+
|
||||
+static int update_active(snd_pcm_ioplug_t *io)
|
||||
+{
|
||||
+ snd_pcm_pipewire_t *pw = io->private_data;
|
||||
+ pw->active = check_active(io);
|
||||
+ uint64_t val;
|
||||
+
|
||||
+ if (pw->active || pw->error < 0)
|
||||
+ spa_system_eventfd_write(pw->system, io->poll_fd, 1);
|
||||
+ else
|
||||
+ spa_system_eventfd_read(pw->system, io->poll_fd, &val);
|
||||
+
|
||||
+ return pw->active;
|
||||
+}
|
||||
+
|
||||
static void snd_pcm_pipewire_free(snd_pcm_pipewire_t *pw)
|
||||
{
|
||||
if (pw == NULL)
|
||||
@@ -159,6 +162,15 @@ static int snd_pcm_pipewire_close(snd_pc
|
||||
return 0;
|
||||
}
|
||||
|
||||
+static int snd_pcm_pipewire_poll_descriptors(snd_pcm_ioplug_t *io, struct pollfd *pfds, unsigned int space)
|
||||
+{
|
||||
+ snd_pcm_pipewire_t *pw = io->private_data;
|
||||
+ update_active(io);
|
||||
+ pfds->fd = pw->fd;
|
||||
+ pfds->events = POLLIN | POLLERR | POLLNVAL;
|
||||
+ return 1;
|
||||
+}
|
||||
+
|
||||
static int snd_pcm_pipewire_poll_revents(snd_pcm_ioplug_t *io,
|
||||
struct pollfd *pfds, unsigned int nfds,
|
||||
unsigned short *revents)
|
||||
@@ -171,10 +183,10 @@ static int snd_pcm_pipewire_poll_revents
|
||||
return pw->error;
|
||||
|
||||
*revents = pfds[0].revents & ~(POLLIN | POLLOUT);
|
||||
- if (pfds[0].revents & POLLIN && update_active(io))
|
||||
+ if (pfds[0].revents & POLLIN && check_active(io)) {
|
||||
*revents |= (io->stream == SND_PCM_STREAM_PLAYBACK) ? POLLOUT : POLLIN;
|
||||
-
|
||||
- pw_log_trace_fp("poll %d", *revents);
|
||||
+ update_active(io);
|
||||
+ }
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -899,6 +911,7 @@ static snd_pcm_ioplug_callback_t pipewir
|
||||
.delay = snd_pcm_pipewire_delay,
|
||||
.drain = snd_pcm_pipewire_drain,
|
||||
.prepare = snd_pcm_pipewire_prepare,
|
||||
+ .poll_descriptors = snd_pcm_pipewire_poll_descriptors,
|
||||
.poll_revents = snd_pcm_pipewire_poll_revents,
|
||||
.hw_params = snd_pcm_pipewire_hw_params,
|
||||
.sw_params = snd_pcm_pipewire_sw_params,
|
|
@ -3,7 +3,7 @@
|
|||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="pulseaudio"
|
||||
PKG_VERSION="16.1"
|
||||
PKG_VERSION="17.0"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://pulseaudio.org/"
|
||||
PKG_URL="http://www.freedesktop.org/software/pulseaudio/releases/${PKG_NAME}-${PKG_VERSION}.tar.xz"
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
# Copyright (C) 2022-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="wireplumber"
|
||||
PKG_VERSION="0.4.15"
|
||||
PKG_VERSION="0.4.17"
|
||||
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"
|
||||
|
@ -21,6 +21,7 @@ PKG_MESON_OPTS_TARGET="-Dintrospection=disabled \
|
|||
|
||||
post_makeinstall_target() {
|
||||
|
||||
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
|
||||
|
|
|
@ -1,30 +0,0 @@
|
|||
diff --git a/input/drivers/udev_input.c b/input/drivers/udev_input.c
|
||||
index bcdacb60a6..d2f00114bd 100644
|
||||
--- a/input/drivers/udev_input.c
|
||||
+++ b/input/drivers/udev_input.c
|
||||
@@ -76,14 +76,14 @@
|
||||
#include "../../retroarch.h"
|
||||
#include "../../verbosity.h"
|
||||
|
||||
-#if defined(HAVE_XKBCOMMON) && defined(HAVE_KMS)
|
||||
+#if defined(HAVE_XKBCOMMON)
|
||||
#define UDEV_XKB_HANDLING
|
||||
#endif
|
||||
|
||||
/* Force UDEV_XKB_HANDLING for Lakka */
|
||||
#ifdef HAVE_LAKKA
|
||||
#ifndef UDEV_XKB_HANDLING
|
||||
-#define UDEV_XKB_HANDLING
|
||||
+#undef UDEV_XKB_HANDLING
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -1402,7 +1402,7 @@
|
||||
/* Force xkb_handling on Lakka */
|
||||
udev->xkb_handling = true;
|
||||
#else
|
||||
- udev->xkb_handling = string_is_equal(ctx_ident.ident, "kms");
|
||||
+ udev->xkb_handling = true; //string_is_equal(ctx_ident.ident, "kms");
|
||||
#endif /* HAVE_LAKKA */
|
||||
#endif
|
||||
|
16
packages/hardware/quirks/autostart/095-turbo-mode
Normal file
16
packages/hardware/quirks/autostart/095-turbo-mode
Normal file
|
@ -0,0 +1,16 @@
|
|||
#!/bin/sh
|
||||
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
# Copyright (C) 2024-present JELOS (https://github.com/JustEnoughLinuxOS)
|
||||
|
||||
. /etc/profile.d/001-functions
|
||||
|
||||
# Get Turbo Mode state.
|
||||
TURBO_MODE_STATE=$(get_setting "enable.turbo-mode")
|
||||
if [ ! -n "${TURBO_MODE_STATE}" ]; then
|
||||
TURBO_MODE_STATE=0
|
||||
set_setting "enable.turbo-mode" "0"
|
||||
fi
|
||||
|
||||
# Set turbo-mode at boot
|
||||
echo ${TURBO_MODE_STATE} > /sys/devices/system/cpu/cpufreq/boost
|
|
@ -0,0 +1,8 @@
|
|||
#!/bin/sh
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS)
|
||||
|
||||
### Set the default device configuration
|
||||
cat <<EOF >>/storage/.config/profile.d/001-device_config
|
||||
DEVICE_SLEEP_DPMS="false"
|
||||
EOF
|
|
@ -303,6 +303,9 @@ case ${LEDBRIGHTNESS} in
|
|||
esac
|
||||
|
||||
case ${1} in
|
||||
poweroff)
|
||||
led_state 0x31
|
||||
;;
|
||||
off)
|
||||
led_state 0x31
|
||||
set_setting led.color off
|
||||
|
|
8
packages/hardware/quirks/devices/AYANEO AIR/010-dpms
Normal file
8
packages/hardware/quirks/devices/AYANEO AIR/010-dpms
Normal file
|
@ -0,0 +1,8 @@
|
|||
#!/bin/sh
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS)
|
||||
|
||||
### Set the default device configuration
|
||||
cat <<EOF >>/storage/.config/profile.d/001-device_config
|
||||
DEVICE_SLEEP_DPMS="false"
|
||||
EOF
|
|
@ -157,6 +157,9 @@ case $1 in
|
|||
color 1 ${LEDBRIGHTNESS}
|
||||
set_setting led.color purple
|
||||
;;
|
||||
poweroff)
|
||||
off
|
||||
;;
|
||||
off)
|
||||
off
|
||||
set_setting led.color off
|
||||
|
|
|
@ -157,6 +157,9 @@ case $1 in
|
|||
color 1 ${LEDBRIGHTNESS}
|
||||
set_setting led.color purple
|
||||
;;
|
||||
poweroff)
|
||||
off
|
||||
;;
|
||||
off)
|
||||
off
|
||||
set_setting led.color off
|
||||
|
|
7
packages/hardware/quirks/devices/ayn Loki Max/010-dpms
Executable file
7
packages/hardware/quirks/devices/ayn Loki Max/010-dpms
Executable file
|
@ -0,0 +1,7 @@
|
|||
#!/bin/sh
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS)
|
||||
|
||||
cat <<EOF >/storage/.config/profile.d/010-dpms
|
||||
DEVICE_SLEEP_DPMS="false"
|
||||
EOF
|
|
@ -151,6 +151,9 @@ case $1 in
|
|||
ec_save
|
||||
set_setting led.color white
|
||||
;;
|
||||
poweroff)
|
||||
off
|
||||
;;
|
||||
off)
|
||||
off
|
||||
set_setting led.color off
|
||||
|
|
3
packages/hardware/quirks/devices/ayn Loki Zero/001-device_config
Normal file → Executable file
3
packages/hardware/quirks/devices/ayn Loki Zero/001-device_config
Normal file → Executable file
|
@ -7,9 +7,6 @@
|
|||
### Set the default device configuration
|
||||
cat <<EOF >/storage/.config/profile.d/001-device_config
|
||||
DEVICE_BASE_TDP="6w"
|
||||
DEVICE_LED_CONTROL="false"
|
||||
DEVICE_LED_BRIGHTNESS="false"
|
||||
DEVICE_HAS_FAN="false"
|
||||
DEVICE_VOLUMECTL="true"
|
||||
DEVICE_BRIGHTNESS="hardware"
|
||||
EOF
|
||||
|
|
7
packages/hardware/quirks/devices/ayn Loki Zero/010-dpms
Executable file
7
packages/hardware/quirks/devices/ayn Loki Zero/010-dpms
Executable file
|
@ -0,0 +1,7 @@
|
|||
#!/bin/sh
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS)
|
||||
|
||||
cat <<EOF >/storage/.config/profile.d/010-dpms
|
||||
DEVICE_SLEEP_DPMS="false"
|
||||
EOF
|
0
packages/hardware/quirks/devices/ayn Loki Zero/020-audio_latency
Normal file → Executable file
0
packages/hardware/quirks/devices/ayn Loki Zero/020-audio_latency
Normal file → Executable file
|
@ -151,6 +151,9 @@ case $1 in
|
|||
ec_save
|
||||
set_setting led.color white
|
||||
;;
|
||||
poweroff)
|
||||
off
|
||||
;;
|
||||
off)
|
||||
off
|
||||
set_setting led.color off
|
||||
|
|
|
@ -22,3 +22,7 @@ makeinstall_target() {
|
|||
fi
|
||||
chmod -R 0755 ${INSTALL}/usr/lib/autostart/quirks
|
||||
}
|
||||
|
||||
post_install() {
|
||||
enable_service led-poweroff.service
|
||||
}
|
||||
|
|
|
@ -7,9 +7,6 @@
|
|||
### Set the default device configuration
|
||||
cat <<EOF >/storage/.config/profile.d/001-device_config
|
||||
DEVICE_BASE_TDP="15w"
|
||||
DEVICE_LED_CONTROL="false"
|
||||
DEVICE_LED_BRIGHTNESS="false"
|
||||
DEVICE_HAS_FAN="false"
|
||||
DEVICE_VOLUMECTL="true"
|
||||
DEVICE_BRIGHTNESS="hardware"
|
||||
EOF
|
||||
|
|
7
packages/hardware/quirks/platforms/AMD64/010-dpms
Executable file
7
packages/hardware/quirks/platforms/AMD64/010-dpms
Executable file
|
@ -0,0 +1,7 @@
|
|||
#!/bin/sh
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS)
|
||||
|
||||
cat <<EOF >/storage/.config/profile.d/010-dpms
|
||||
DEVICE_SLEEP_DPMS="true"
|
||||
EOF
|
11
packages/hardware/quirks/platforms/AMD64/010-led_control
Executable file
11
packages/hardware/quirks/platforms/AMD64/010-led_control
Executable file
|
@ -0,0 +1,11 @@
|
|||
#!/bin/sh
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS)
|
||||
|
||||
. /etc/profile.d/001-functions
|
||||
|
||||
### Set the default device configuration
|
||||
cat <<EOF >/storage/.config/profile.d/010-led_control
|
||||
DEVICE_LED_CONTROL="false"
|
||||
DEVICE_LED_BRIGHTNESS="false"
|
||||
EOF
|
7
packages/hardware/quirks/platforms/AMD64/020-fan_control
Executable file
7
packages/hardware/quirks/platforms/AMD64/020-fan_control
Executable file
|
@ -0,0 +1,7 @@
|
|||
#!/bin/sh
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS)
|
||||
|
||||
cat <<EOF >/storage/.config/profile.d/020-fan_control
|
||||
DEVICE_HAS_FAN="false"
|
||||
EOF
|
10
packages/hardware/quirks/platforms/AMD64/sleep.d/post/001-dpms
Executable file
10
packages/hardware/quirks/platforms/AMD64/sleep.d/post/001-dpms
Executable file
|
@ -0,0 +1,10 @@
|
|||
#!/bin/sh
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# Copyright (C) 2024 JELOS (https://github.com/JustEnoughLinuxOS)
|
||||
|
||||
. /etc/profile.d/001-functions
|
||||
|
||||
if [ "${DEVICE_SLEEP_DPMS}" = "true" ]
|
||||
then
|
||||
dpms-client -m on &
|
||||
fi
|
|
@ -2,6 +2,9 @@
|
|||
# SPDX-License-Identifier: GPL-2.0
|
||||
# Copyright (C) 2024 JELOS (https://github.com/JustEnoughLinuxOS)
|
||||
|
||||
. /etc/profile
|
||||
. /etc/profile.d/001-functions
|
||||
|
||||
dpms-client -m on
|
||||
if [ "${DEVICE_LED_CONTROL}" = "true" ]
|
||||
then
|
||||
ledcontrol &
|
||||
fi
|
|
@ -2,6 +2,9 @@
|
|||
# SPDX-License-Identifier: GPL-2.0
|
||||
# Copyright (C) 2024 JELOS (https://github.com/JustEnoughLinuxOS)
|
||||
|
||||
. /etc/profile
|
||||
. /etc/profile.d/001-functions
|
||||
|
||||
dpms-client -m off
|
||||
if [ "${DEVICE_SLEEP_DPMS}" = "true" ]
|
||||
then
|
||||
dpms-client -m off
|
||||
fi
|
10
packages/hardware/quirks/platforms/AMD64/sleep.d/pre/002-ledcontrol
Executable file
10
packages/hardware/quirks/platforms/AMD64/sleep.d/pre/002-ledcontrol
Executable file
|
@ -0,0 +1,10 @@
|
|||
#!/bin/sh
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# Copyright (C) 2024 JELOS (https://github.com/JustEnoughLinuxOS)
|
||||
|
||||
. /etc/profile.d/001-functions
|
||||
|
||||
if [ "${DEVICE_LED_CONTROL}" = "true" ]
|
||||
then
|
||||
ledcontrol poweroff
|
||||
fi
|
|
@ -0,0 +1,7 @@
|
|||
#!/bin/bash
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# Copyright (C) 2024 JELOS (https://github.com/JustEnoughLinuxOS)
|
||||
|
||||
cat <<EOF >/storage/.config/profile.d/002-turbo-mode_config
|
||||
DEVICE_TURBO_MODE="true"
|
||||
EOF
|
|
@ -37,8 +37,10 @@ export SLOW_CORES \
|
|||
DEVICE_PWM_FAN \
|
||||
DEVICE_PWM_MOTOR \
|
||||
DEVICE_ROTATED_SDL \
|
||||
DEVICE_SLEEP_DPMS \
|
||||
DEVICE_SW_HP_SWITCH \
|
||||
DEVICE_TEMP_SENSOR \
|
||||
DEVICE_TURBO_MODE \
|
||||
DEVICE_VOLUME \
|
||||
DEVICE_VOLUMECTL \
|
||||
DEVICE_WIFI \
|
||||
|
|
12
packages/hardware/quirks/system.d/led-poweroff.service
Normal file
12
packages/hardware/quirks/system.d/led-poweroff.service
Normal file
|
@ -0,0 +1,12 @@
|
|||
[Unit]
|
||||
Description=Power LEDs off before shutting down.
|
||||
After=multi-user.target
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
RemainAfterExit=yes
|
||||
ExecStart=/bin/true
|
||||
ExecStop=/usr/bin/ledcontrol poweroff
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
|
@ -22,13 +22,13 @@ case "${1}" in
|
|||
systemctl reboot
|
||||
;;
|
||||
"ALL")
|
||||
swapoff -a
|
||||
umount /storage/roms ||:
|
||||
umount /storage/games-external ||:
|
||||
swapoff -a 2>/dev/null
|
||||
umount /storage/roms 2>/dev/null ||:
|
||||
umount /storage/games-external 2>/dev/null ||:
|
||||
cd /
|
||||
find /storage -mindepth 1 \( ! -regex '^/storage/.update.*' -a ! -regex '^/storage/roms.*' -a ! -regex '^/storage/games-.*' \) -delete
|
||||
find /storage -mindepth 1 \( ! -regex '^/storage/.update.*' -a ! -regex '^/storage/roms.*' -a ! -regex '^/storage/games-.*' \) -delete 2>/dev/null
|
||||
mkdir /storage/.config/
|
||||
sync
|
||||
sync 2>/dev/null
|
||||
systemctl reboot
|
||||
;;
|
||||
esac
|
||||
|
|
|
@ -2,10 +2,10 @@
|
|||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="kernel-firmware"
|
||||
PKG_VERSION="20231211"
|
||||
PKG_VERSION="20240115"
|
||||
PKG_LICENSE="other"
|
||||
PKG_SITE="https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/"
|
||||
PKG_URL="https://cdn.kernel.org/pub/linux/kernel/firmware/linux-firmware-${PKG_VERSION}.tar.xz"
|
||||
PKG_URL="https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/snapshot/linux-firmware-${PKG_VERSION}.tar.gz"
|
||||
PKG_NEED_UNPACK="${PROJECT_DIR}/${PROJECT}/packages/${PKG_NAME} ${PROJECT_DIR}/${PROJECT}/devices/${DEVICE}/packages/${PKG_NAME}"
|
||||
PKG_LONGDESC="kernel-firmware: kernel related firmware"
|
||||
PKG_TOOLCHAIN="manual"
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
PKG_NAME="linux"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_VERSION="6.7.1"
|
||||
PKG_VERSION="6.6.13"
|
||||
PKG_URL="https://www.kernel.org/pub/linux/kernel/v6.x/${PKG_NAME}-${PKG_VERSION}.tar.xz"
|
||||
PKG_SITE="http://www.kernel.org"
|
||||
PKG_DEPENDS_HOST="ccache:host rsync:host openssl:host rdfind:host"
|
||||
|
|
|
@ -1,533 +1,17 @@
|
|||
diff -rupN linux-6.7-rc8.orig/drivers/gpu/drm/drm_panel_orientation_quirks.c linux-6.7-rc8.panel/drivers/gpu/drm/drm_panel_orientation_quirks.c
|
||||
--- linux-6.7-rc8.orig/drivers/gpu/drm/drm_panel_orientation_quirks.c 2024-01-04 23:15:09.706448784 +0000
|
||||
+++ linux-6.7-rc8.panel/drivers/gpu/drm/drm_panel_orientation_quirks.c 2024-01-04 23:20:09.071025713 +0000
|
||||
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 2023-11-28 17:20:18.000000000 +0000
|
||||
+++ linux/drivers/gpu/drm/drm_panel_orientation_quirks.c 2023-11-30 15:33:54.949480402 +0000
|
||||
@@ -336,6 +336,13 @@ static const struct dmi_system_id orient
|
||||
DMI_EXACT_MATCH(DMI_PRODUCT_VERSION, "IdeaPad Duet 3 10IGL5"),
|
||||
},
|
||||
.driver_data = (void *)&lcd1200x1920_rightside_up,
|
||||
+ }, { /* Lenovo Legion Go */
|
||||
+ }, { /* Lenovo Legion Go */
|
||||
+ .matches = {
|
||||
+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "LENOVO"),
|
||||
+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "83E1"),
|
||||
+ DMI_EXACT_MATCH(DMI_PRODUCT_VERSION, "Legion Go 8APU1"),
|
||||
+ },
|
||||
+ .driver_data = (void *)&lcd1600x2560_leftside_up,
|
||||
}, { /* Lenovo Legion Go 8APU1 */
|
||||
}, { /* Lenovo Yoga Book X90F / X90L */
|
||||
.matches = {
|
||||
DMI_EXACT_MATCH(DMI_SYS_VENDOR, "LENOVO"),
|
||||
diff -rupN linux-6.7-rc8.orig/drivers/gpu/drm/drm_panel_orientation_quirks.c.orig linux-6.7-rc8.panel/drivers/gpu/drm/drm_panel_orientation_quirks.c.orig
|
||||
--- linux-6.7-rc8.orig/drivers/gpu/drm/drm_panel_orientation_quirks.c.orig 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ linux-6.7-rc8.panel/drivers/gpu/drm/drm_panel_orientation_quirks.c.orig 2024-01-04 23:18:55.450922222 +0000
|
||||
@@ -0,0 +1,492 @@
|
||||
+/* SPDX-License-Identifier: MIT */
|
||||
+/*
|
||||
+ * drm_panel_orientation_quirks.c -- Quirks for non-normal panel orientation
|
||||
+ *
|
||||
+ * Copyright (C) 2017 Hans de Goede <hdegoede@redhat.com>
|
||||
+ *
|
||||
+ * Note the quirks in this file are shared with fbdev/efifb and as such
|
||||
+ * must not depend on other drm code.
|
||||
+ */
|
||||
+
|
||||
+#include <linux/dmi.h>
|
||||
+#include <linux/module.h>
|
||||
+#include <drm/drm_connector.h>
|
||||
+#include <drm/drm_utils.h>
|
||||
+
|
||||
+#ifdef CONFIG_DMI
|
||||
+
|
||||
+/*
|
||||
+ * Some x86 clamshell design devices use portrait tablet screens and a display
|
||||
+ * engine which cannot rotate in hardware, so we need to rotate the fbcon to
|
||||
+ * compensate. Unfortunately these (cheap) devices also typically have quite
|
||||
+ * generic DMI data, so we match on a combination of DMI data, screen resolution
|
||||
+ * and a list of known BIOS dates to avoid false positives.
|
||||
+ */
|
||||
+
|
||||
+struct drm_dmi_panel_orientation_data {
|
||||
+ int width;
|
||||
+ int height;
|
||||
+ const char * const *bios_dates;
|
||||
+ int orientation;
|
||||
+};
|
||||
+
|
||||
+static const struct drm_dmi_panel_orientation_data gpd_micropc = {
|
||||
+ .width = 720,
|
||||
+ .height = 1280,
|
||||
+ .bios_dates = (const char * const []){ "04/26/2019",
|
||||
+ NULL },
|
||||
+ .orientation = DRM_MODE_PANEL_ORIENTATION_RIGHT_UP,
|
||||
+};
|
||||
+
|
||||
+static const struct drm_dmi_panel_orientation_data gpd_onemix2s = {
|
||||
+ .width = 1200,
|
||||
+ .height = 1920,
|
||||
+ .bios_dates = (const char * const []){ "05/21/2018", "10/26/2018",
|
||||
+ "03/04/2019", NULL },
|
||||
+ .orientation = DRM_MODE_PANEL_ORIENTATION_RIGHT_UP,
|
||||
+};
|
||||
+
|
||||
+static const struct drm_dmi_panel_orientation_data gpd_pocket = {
|
||||
+ .width = 1200,
|
||||
+ .height = 1920,
|
||||
+ .bios_dates = (const char * const []){ "05/26/2017", "06/28/2017",
|
||||
+ "07/05/2017", "08/07/2017", NULL },
|
||||
+ .orientation = DRM_MODE_PANEL_ORIENTATION_RIGHT_UP,
|
||||
+};
|
||||
+
|
||||
+static const struct drm_dmi_panel_orientation_data gpd_pocket2 = {
|
||||
+ .width = 1200,
|
||||
+ .height = 1920,
|
||||
+ .bios_dates = (const char * const []){ "06/28/2018", "08/28/2018",
|
||||
+ "12/07/2018", NULL },
|
||||
+ .orientation = DRM_MODE_PANEL_ORIENTATION_RIGHT_UP,
|
||||
+};
|
||||
+
|
||||
+static const struct drm_dmi_panel_orientation_data gpd_win = {
|
||||
+ .width = 720,
|
||||
+ .height = 1280,
|
||||
+ .bios_dates = (const char * const []){
|
||||
+ "10/25/2016", "11/18/2016", "12/23/2016", "12/26/2016",
|
||||
+ "02/21/2017", "03/20/2017", "05/25/2017", NULL },
|
||||
+ .orientation = DRM_MODE_PANEL_ORIENTATION_RIGHT_UP,
|
||||
+};
|
||||
+
|
||||
+static const struct drm_dmi_panel_orientation_data gpd_win2 = {
|
||||
+ .width = 720,
|
||||
+ .height = 1280,
|
||||
+ .bios_dates = (const char * const []){
|
||||
+ "12/07/2017", "05/24/2018", "06/29/2018", NULL },
|
||||
+ .orientation = DRM_MODE_PANEL_ORIENTATION_RIGHT_UP,
|
||||
+};
|
||||
+
|
||||
+static const struct drm_dmi_panel_orientation_data itworks_tw891 = {
|
||||
+ .width = 800,
|
||||
+ .height = 1280,
|
||||
+ .bios_dates = (const char * const []){ "10/16/2015", NULL },
|
||||
+ .orientation = DRM_MODE_PANEL_ORIENTATION_RIGHT_UP,
|
||||
+};
|
||||
+
|
||||
+static const struct drm_dmi_panel_orientation_data onegx1_pro = {
|
||||
+ .width = 1200,
|
||||
+ .height = 1920,
|
||||
+ .bios_dates = (const char * const []){ "12/17/2020", NULL },
|
||||
+ .orientation = DRM_MODE_PANEL_ORIENTATION_RIGHT_UP,
|
||||
+};
|
||||
+
|
||||
+static const struct drm_dmi_panel_orientation_data lcd720x1280_rightside_up = {
|
||||
+ .width = 720,
|
||||
+ .height = 1280,
|
||||
+ .orientation = DRM_MODE_PANEL_ORIENTATION_RIGHT_UP,
|
||||
+};
|
||||
+
|
||||
+static const struct drm_dmi_panel_orientation_data lcd800x1280_leftside_up = {
|
||||
+ .width = 800,
|
||||
+ .height = 1280,
|
||||
+ .orientation = DRM_MODE_PANEL_ORIENTATION_LEFT_UP,
|
||||
+};
|
||||
+
|
||||
+static const struct drm_dmi_panel_orientation_data lcd800x1280_rightside_up = {
|
||||
+ .width = 800,
|
||||
+ .height = 1280,
|
||||
+ .orientation = DRM_MODE_PANEL_ORIENTATION_RIGHT_UP,
|
||||
+};
|
||||
+
|
||||
+static const struct drm_dmi_panel_orientation_data lcd1080x1920_leftside_up = {
|
||||
+ .width = 1080,
|
||||
+ .height = 1920,
|
||||
+ .orientation = DRM_MODE_PANEL_ORIENTATION_LEFT_UP,
|
||||
+};
|
||||
+
|
||||
+static const struct drm_dmi_panel_orientation_data lcd1200x1920_rightside_up = {
|
||||
+ .width = 1200,
|
||||
+ .height = 1920,
|
||||
+ .orientation = DRM_MODE_PANEL_ORIENTATION_RIGHT_UP,
|
||||
+};
|
||||
+
|
||||
+static const struct drm_dmi_panel_orientation_data lcd1280x1920_rightside_up = {
|
||||
+ .width = 1280,
|
||||
+ .height = 1920,
|
||||
+ .orientation = DRM_MODE_PANEL_ORIENTATION_RIGHT_UP,
|
||||
+};
|
||||
+
|
||||
+static const struct drm_dmi_panel_orientation_data lcd1600x2560_leftside_up = {
|
||||
+ .width = 1600,
|
||||
+ .height = 2560,
|
||||
+ .orientation = DRM_MODE_PANEL_ORIENTATION_LEFT_UP,
|
||||
+};
|
||||
+
|
||||
+static const struct drm_dmi_panel_orientation_data lcd1600x2560_rightside_up = {
|
||||
+ .width = 1600,
|
||||
+ .height = 2560,
|
||||
+ .orientation = DRM_MODE_PANEL_ORIENTATION_RIGHT_UP,
|
||||
+};
|
||||
+
|
||||
+static const struct dmi_system_id orientation_data[] = {
|
||||
+ { /* Acer One 10 (S1003) */
|
||||
+ .matches = {
|
||||
+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Acer"),
|
||||
+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "One S1003"),
|
||||
+ },
|
||||
+ .driver_data = (void *)&lcd800x1280_rightside_up,
|
||||
+ }, { /* Acer Switch V 10 (SW5-017) */
|
||||
+ .matches = {
|
||||
+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Acer"),
|
||||
+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "SW5-017"),
|
||||
+ },
|
||||
+ .driver_data = (void *)&lcd800x1280_rightside_up,
|
||||
+ }, { /* Anbernic Win600 */
|
||||
+ .matches = {
|
||||
+ DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "Anbernic"),
|
||||
+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Win600"),
|
||||
+ },
|
||||
+ .driver_data = (void *)&lcd720x1280_rightside_up,
|
||||
+ }, { /* Asus T100HA */
|
||||
+ .matches = {
|
||||
+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
|
||||
+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "T100HAN"),
|
||||
+ },
|
||||
+ .driver_data = (void *)&lcd800x1280_leftside_up,
|
||||
+ }, { /* Asus T101HA */
|
||||
+ .matches = {
|
||||
+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
|
||||
+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "T101HA"),
|
||||
+ },
|
||||
+ .driver_data = (void *)&lcd800x1280_rightside_up,
|
||||
+ }, { /* Asus T103HAF */
|
||||
+ .matches = {
|
||||
+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
|
||||
+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "T103HAF"),
|
||||
+ },
|
||||
+ .driver_data = (void *)&lcd800x1280_rightside_up,
|
||||
+ }, { /* AYA NEO 2021 */
|
||||
+ .matches = {
|
||||
+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "AYADEVICE"),
|
||||
+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "AYA NEO 2021"),
|
||||
+ },
|
||||
+ .driver_data = (void *)&lcd800x1280_rightside_up,
|
||||
+ }, { /* AYA NEO AIR */
|
||||
+ .matches = {
|
||||
+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "AYANEO"),
|
||||
+ DMI_MATCH(DMI_PRODUCT_NAME, "AIR"),
|
||||
+ },
|
||||
+ .driver_data = (void *)&lcd1080x1920_leftside_up,
|
||||
+ }, { /* AYA NEO NEXT */
|
||||
+ .matches = {
|
||||
+ DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "AYANEO"),
|
||||
+ DMI_MATCH(DMI_BOARD_NAME, "NEXT"),
|
||||
+ },
|
||||
+ .driver_data = (void *)&lcd800x1280_rightside_up,
|
||||
+ }, { /* Chuwi HiBook (CWI514) */
|
||||
+ .matches = {
|
||||
+ DMI_MATCH(DMI_BOARD_VENDOR, "Hampoo"),
|
||||
+ DMI_MATCH(DMI_BOARD_NAME, "Cherry Trail CR"),
|
||||
+ /* Above matches are too generic, add bios-date match */
|
||||
+ DMI_MATCH(DMI_BIOS_DATE, "05/07/2016"),
|
||||
+ },
|
||||
+ .driver_data = (void *)&lcd1200x1920_rightside_up,
|
||||
+ }, { /* Chuwi Hi10 Pro (CWI529) */
|
||||
+ .matches = {
|
||||
+ DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "Hampoo"),
|
||||
+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Hi10 pro tablet"),
|
||||
+ },
|
||||
+ .driver_data = (void *)&lcd1200x1920_rightside_up,
|
||||
+ }, { /* Dynabook K50 */
|
||||
+ .matches = {
|
||||
+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Dynabook Inc."),
|
||||
+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "dynabook K50/FR"),
|
||||
+ },
|
||||
+ .driver_data = (void *)&lcd800x1280_leftside_up,
|
||||
+ }, { /* GPD MicroPC (generic strings, also match on bios date) */
|
||||
+ .matches = {
|
||||
+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Default string"),
|
||||
+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Default string"),
|
||||
+ DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "Default string"),
|
||||
+ DMI_EXACT_MATCH(DMI_BOARD_NAME, "Default string"),
|
||||
+ },
|
||||
+ .driver_data = (void *)&gpd_micropc,
|
||||
+ }, { /* GPD MicroPC (later BIOS versions with proper DMI strings) */
|
||||
+ .matches = {
|
||||
+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "GPD"),
|
||||
+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "MicroPC"),
|
||||
+ },
|
||||
+ .driver_data = (void *)&lcd720x1280_rightside_up,
|
||||
+ }, { /* GPD Win Max */
|
||||
+ .matches = {
|
||||
+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "GPD"),
|
||||
+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "G1619-01"),
|
||||
+ },
|
||||
+ .driver_data = (void *)&lcd800x1280_rightside_up,
|
||||
+ }, { /*
|
||||
+ * GPD Pocket, note that the DMI data is less generic then
|
||||
+ * it seems, devices with a board-vendor of "AMI Corporation"
|
||||
+ * are quite rare, as are devices which have both board- *and*
|
||||
+ * product-id set to "Default String"
|
||||
+ */
|
||||
+ .matches = {
|
||||
+ DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "AMI Corporation"),
|
||||
+ DMI_EXACT_MATCH(DMI_BOARD_NAME, "Default string"),
|
||||
+ DMI_EXACT_MATCH(DMI_BOARD_SERIAL, "Default string"),
|
||||
+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Default string"),
|
||||
+ },
|
||||
+ .driver_data = (void *)&gpd_pocket,
|
||||
+ }, { /* GPD Pocket 2 (generic strings, also match on bios date) */
|
||||
+ .matches = {
|
||||
+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Default string"),
|
||||
+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Default string"),
|
||||
+ DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "Default string"),
|
||||
+ DMI_EXACT_MATCH(DMI_BOARD_NAME, "Default string"),
|
||||
+ },
|
||||
+ .driver_data = (void *)&gpd_pocket2,
|
||||
+ }, { /* GPD Win (same note on DMI match as GPD Pocket) */
|
||||
+ .matches = {
|
||||
+ DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "AMI Corporation"),
|
||||
+ DMI_EXACT_MATCH(DMI_BOARD_NAME, "Default string"),
|
||||
+ DMI_EXACT_MATCH(DMI_BOARD_SERIAL, "Default string"),
|
||||
+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Default string"),
|
||||
+ },
|
||||
+ .driver_data = (void *)&gpd_win,
|
||||
+ }, { /* GPD Win 2 (too generic strings, also match on bios date) */
|
||||
+ .matches = {
|
||||
+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Default string"),
|
||||
+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Default string"),
|
||||
+ DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "Default string"),
|
||||
+ DMI_EXACT_MATCH(DMI_BOARD_NAME, "Default string"),
|
||||
+ },
|
||||
+ .driver_data = (void *)&gpd_win2,
|
||||
+ }, { /* GPD Win 3 */
|
||||
+ .matches = {
|
||||
+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "GPD"),
|
||||
+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "G1618-03")
|
||||
+ },
|
||||
+ .driver_data = (void *)&lcd720x1280_rightside_up,
|
||||
+ }, { /* I.T.Works TW891 */
|
||||
+ .matches = {
|
||||
+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "To be filled by O.E.M."),
|
||||
+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "TW891"),
|
||||
+ DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "To be filled by O.E.M."),
|
||||
+ DMI_EXACT_MATCH(DMI_BOARD_NAME, "TW891"),
|
||||
+ },
|
||||
+ .driver_data = (void *)&itworks_tw891,
|
||||
+ }, { /* KD Kurio Smart C15200 2-in-1 */
|
||||
+ .matches = {
|
||||
+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "KD Interactive"),
|
||||
+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Kurio Smart"),
|
||||
+ DMI_EXACT_MATCH(DMI_BOARD_NAME, "KDM960BCP"),
|
||||
+ },
|
||||
+ .driver_data = (void *)&lcd800x1280_rightside_up,
|
||||
+ }, { /*
|
||||
+ * Lenovo Ideapad Miix 310 laptop, only some production batches
|
||||
+ * have a portrait screen, the resolution checks makes the quirk
|
||||
+ * apply only to those batches.
|
||||
+ */
|
||||
+ .matches = {
|
||||
+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "LENOVO"),
|
||||
+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "80SG"),
|
||||
+ DMI_EXACT_MATCH(DMI_PRODUCT_VERSION, "MIIX 310-10ICR"),
|
||||
+ },
|
||||
+ .driver_data = (void *)&lcd800x1280_rightside_up,
|
||||
+ }, { /* Lenovo Ideapad Miix 320 */
|
||||
+ .matches = {
|
||||
+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "LENOVO"),
|
||||
+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "80XF"),
|
||||
+ DMI_EXACT_MATCH(DMI_PRODUCT_VERSION, "Lenovo MIIX 320-10ICR"),
|
||||
+ },
|
||||
+ .driver_data = (void *)&lcd800x1280_rightside_up,
|
||||
+ }, { /* Lenovo Ideapad D330-10IGM (HD) */
|
||||
+ .matches = {
|
||||
+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "LENOVO"),
|
||||
+ DMI_EXACT_MATCH(DMI_PRODUCT_VERSION, "Lenovo ideapad D330-10IGM"),
|
||||
+ },
|
||||
+ .driver_data = (void *)&lcd800x1280_rightside_up,
|
||||
+ }, { /* Lenovo Ideapad D330-10IGM (FHD) */
|
||||
+ .matches = {
|
||||
+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "LENOVO"),
|
||||
+ DMI_EXACT_MATCH(DMI_PRODUCT_VERSION, "Lenovo ideapad D330-10IGM"),
|
||||
+ },
|
||||
+ .driver_data = (void *)&lcd1200x1920_rightside_up,
|
||||
+ }, { /* Lenovo Ideapad D330-10IGL (HD) */
|
||||
+ .matches = {
|
||||
+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "LENOVO"),
|
||||
+ DMI_EXACT_MATCH(DMI_PRODUCT_VERSION, "Lenovo ideapad D330-10IGL"),
|
||||
+ },
|
||||
+ .driver_data = (void *)&lcd800x1280_rightside_up,
|
||||
+ }, { /* Lenovo IdeaPad Duet 3 10IGL5 */
|
||||
+ .matches = {
|
||||
+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "LENOVO"),
|
||||
+ DMI_EXACT_MATCH(DMI_PRODUCT_VERSION, "IdeaPad Duet 3 10IGL5"),
|
||||
+ },
|
||||
+ .driver_data = (void *)&lcd1200x1920_rightside_up,
|
||||
+ }, { /* Lenovo Legion Go 8APU1 */
|
||||
+ .matches = {
|
||||
+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "LENOVO"),
|
||||
+ DMI_EXACT_MATCH(DMI_PRODUCT_VERSION, "Legion Go 8APU1"),
|
||||
+ },
|
||||
+ .driver_data = (void *)&lcd1600x2560_leftside_up,
|
||||
+ }, { /* Lenovo Yoga Book X90F / X90L */
|
||||
+ .matches = {
|
||||
+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Intel Corporation"),
|
||||
+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "CHERRYVIEW D1 PLATFORM"),
|
||||
+ DMI_EXACT_MATCH(DMI_PRODUCT_VERSION, "YETI-11"),
|
||||
+ },
|
||||
+ .driver_data = (void *)&lcd1200x1920_rightside_up,
|
||||
+ }, { /* Lenovo Yoga Book X91F / X91L */
|
||||
+ .matches = {
|
||||
+ /* Non exact match to match F + L versions */
|
||||
+ DMI_MATCH(DMI_PRODUCT_NAME, "Lenovo YB1-X91"),
|
||||
+ },
|
||||
+ .driver_data = (void *)&lcd1200x1920_rightside_up,
|
||||
+ }, { /* Lenovo Yoga Tablet 2 830F / 830L */
|
||||
+ .matches = {
|
||||
+ /*
|
||||
+ * Note this also matches the Lenovo Yoga Tablet 2 1050F/L
|
||||
+ * since that uses the same mainboard. The resolution match
|
||||
+ * will limit this to only matching on the 830F/L. Neither has
|
||||
+ * any external video outputs so those are not a concern.
|
||||
+ */
|
||||
+ DMI_MATCH(DMI_SYS_VENDOR, "Intel Corp."),
|
||||
+ DMI_MATCH(DMI_PRODUCT_NAME, "VALLEYVIEW C0 PLATFORM"),
|
||||
+ DMI_MATCH(DMI_BOARD_NAME, "BYT-T FFD8"),
|
||||
+ /* Partial match on beginning of BIOS version */
|
||||
+ DMI_MATCH(DMI_BIOS_VERSION, "BLADE_21"),
|
||||
+ },
|
||||
+ .driver_data = (void *)&lcd1200x1920_rightside_up,
|
||||
+ }, { /* Lenovo Yoga Tab 3 X90F */
|
||||
+ .matches = {
|
||||
+ DMI_MATCH(DMI_SYS_VENDOR, "Intel Corporation"),
|
||||
+ DMI_MATCH(DMI_PRODUCT_NAME, "CHERRYVIEW D1 PLATFORM"),
|
||||
+ DMI_MATCH(DMI_PRODUCT_VERSION, "Blade3-10A-001"),
|
||||
+ },
|
||||
+ .driver_data = (void *)&lcd1600x2560_rightside_up,
|
||||
+ }, { /* Nanote UMPC-01 */
|
||||
+ .matches = {
|
||||
+ DMI_MATCH(DMI_SYS_VENDOR, "RWC CO.,LTD"),
|
||||
+ DMI_MATCH(DMI_PRODUCT_NAME, "UMPC-01"),
|
||||
+ },
|
||||
+ .driver_data = (void *)&lcd1200x1920_rightside_up,
|
||||
+ }, { /* OneGX1 Pro */
|
||||
+ .matches = {
|
||||
+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "SYSTEM_MANUFACTURER"),
|
||||
+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "SYSTEM_PRODUCT_NAME"),
|
||||
+ DMI_EXACT_MATCH(DMI_PRODUCT_VERSION, "Default string"),
|
||||
+ },
|
||||
+ .driver_data = (void *)&onegx1_pro,
|
||||
+ }, { /* OneXPlayer */
|
||||
+ .matches = {
|
||||
+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "ONE-NETBOOK TECHNOLOGY CO., LTD."),
|
||||
+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "ONE XPLAYER"),
|
||||
+ },
|
||||
+ .driver_data = (void *)&lcd1600x2560_leftside_up,
|
||||
+ }, { /* Samsung GalaxyBook 10.6 */
|
||||
+ .matches = {
|
||||
+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."),
|
||||
+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Galaxy Book 10.6"),
|
||||
+ },
|
||||
+ .driver_data = (void *)&lcd1280x1920_rightside_up,
|
||||
+ }, { /* Valve Steam Deck */
|
||||
+ .matches = {
|
||||
+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Valve"),
|
||||
+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Jupiter"),
|
||||
+ DMI_EXACT_MATCH(DMI_PRODUCT_VERSION, "1"),
|
||||
+ },
|
||||
+ .driver_data = (void *)&lcd800x1280_rightside_up,
|
||||
+ }, { /* VIOS LTH17 */
|
||||
+ .matches = {
|
||||
+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "VIOS"),
|
||||
+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "LTH17"),
|
||||
+ },
|
||||
+ .driver_data = (void *)&lcd800x1280_rightside_up,
|
||||
+ }, { /* One Mix 2S (generic strings, also match on bios date) */
|
||||
+ .matches = {
|
||||
+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Default string"),
|
||||
+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Default string"),
|
||||
+ DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "Default string"),
|
||||
+ DMI_EXACT_MATCH(DMI_BOARD_NAME, "Default string"),
|
||||
+ },
|
||||
+ .driver_data = (void *)&gpd_onemix2s,
|
||||
+ },
|
||||
+ {}
|
||||
+};
|
||||
+
|
||||
+/**
|
||||
+ * drm_get_panel_orientation_quirk - Check for panel orientation quirks
|
||||
+ * @width: width in pixels of the panel
|
||||
+ * @height: height in pixels of the panel
|
||||
+ *
|
||||
+ * This function checks for platform specific (e.g. DMI based) quirks
|
||||
+ * providing info on panel_orientation for systems where this cannot be
|
||||
+ * probed from the hard-/firm-ware. To avoid false-positive this function
|
||||
+ * takes the panel resolution as argument and checks that against the
|
||||
+ * resolution expected by the quirk-table entry.
|
||||
+ *
|
||||
+ * Note this function is also used outside of the drm-subsys, by for example
|
||||
+ * the efifb code. Because of this this function gets compiled into its own
|
||||
+ * kernel-module when built as a module.
|
||||
+ *
|
||||
+ * Returns:
|
||||
+ * A DRM_MODE_PANEL_ORIENTATION_* value if there is a quirk for this system,
|
||||
+ * or DRM_MODE_PANEL_ORIENTATION_UNKNOWN if there is no quirk.
|
||||
+ */
|
||||
+int drm_get_panel_orientation_quirk(int width, int height)
|
||||
+{
|
||||
+ const struct dmi_system_id *match;
|
||||
+ const struct drm_dmi_panel_orientation_data *data;
|
||||
+ const char *bios_date;
|
||||
+ int i;
|
||||
+
|
||||
+ for (match = dmi_first_match(orientation_data);
|
||||
+ match;
|
||||
+ match = dmi_first_match(match + 1)) {
|
||||
+ data = match->driver_data;
|
||||
+
|
||||
+ if (data->width != width ||
|
||||
+ data->height != height)
|
||||
+ continue;
|
||||
+
|
||||
+ if (!data->bios_dates)
|
||||
+ return data->orientation;
|
||||
+
|
||||
+ bios_date = dmi_get_system_info(DMI_BIOS_DATE);
|
||||
+ if (!bios_date)
|
||||
+ continue;
|
||||
+
|
||||
+ i = match_string(data->bios_dates, -1, bios_date);
|
||||
+ if (i >= 0)
|
||||
+ return data->orientation;
|
||||
+ }
|
||||
+
|
||||
+ return DRM_MODE_PANEL_ORIENTATION_UNKNOWN;
|
||||
+}
|
||||
+EXPORT_SYMBOL(drm_get_panel_orientation_quirk);
|
||||
+
|
||||
+#else
|
||||
+
|
||||
+/* There are no quirks for non x86 devices yet */
|
||||
+int drm_get_panel_orientation_quirk(int width, int height)
|
||||
+{
|
||||
+ return DRM_MODE_PANEL_ORIENTATION_UNKNOWN;
|
||||
+}
|
||||
+EXPORT_SYMBOL(drm_get_panel_orientation_quirk);
|
||||
+
|
||||
+#endif
|
||||
+
|
||||
+MODULE_LICENSE("Dual MIT/GPL");
|
||||
diff -rupN linux-6.7-rc8.orig/drivers/gpu/drm/drm_panel_orientation_quirks.c.rej linux-6.7-rc8.panel/drivers/gpu/drm/drm_panel_orientation_quirks.c.rej
|
||||
--- linux-6.7-rc8.orig/drivers/gpu/drm/drm_panel_orientation_quirks.c.rej 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ linux-6.7-rc8.panel/drivers/gpu/drm/drm_panel_orientation_quirks.c.rej 2024-01-04 23:18:55.450922222 +0000
|
||||
@@ -0,0 +1,16 @@
|
||||
+--- drivers/gpu/drm/drm_panel_orientation_quirks.c 2023-11-28 17:20:18.000000000 +0000
|
||||
++++ drivers/gpu/drm/drm_panel_orientation_quirks.c 2023-11-30 15:33:54.949480402 +0000
|
||||
+@@ -336,6 +336,13 @@ static const struct dmi_system_id orient
|
||||
+ DMI_EXACT_MATCH(DMI_PRODUCT_VERSION, "IdeaPad Duet 3 10IGL5"),
|
||||
+ },
|
||||
+ .driver_data = (void *)&lcd1200x1920_rightside_up,
|
||||
++ }, { /* Lenovo Legion Go */
|
||||
++ .matches = {
|
||||
++ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "LENOVO"),
|
||||
++ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "83E1"),
|
||||
++ DMI_EXACT_MATCH(DMI_PRODUCT_VERSION, "Legion Go 8APU1"),
|
||||
++ },
|
||||
++ .driver_data = (void *)&lcd1600x2560_leftside_up,
|
||||
+ }, { /* Lenovo Yoga Book X90F / X90L */
|
||||
+ .matches = {
|
||||
+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Intel Corporation"),
|
||||
DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Intel Corporation"),
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
diff -rupN linux-6.6.9.orig/drivers/gpu/drm/drm_panel_orientation_quirks.c linux-6.6.9/drivers/gpu/drm/drm_panel_orientation_quirks.c
|
||||
--- linux-6.6.9.orig/drivers/gpu/drm/drm_panel_orientation_quirks.c 2024-01-04 00:22:05.545161814 +0000
|
||||
+++ linux-6.6.9/drivers/gpu/drm/drm_panel_orientation_quirks.c 2024-01-04 00:23:21.365247268 +0000
|
||||
@@ -141,6 +141,12 @@ static const struct drm_dmi_panel_orient
|
||||
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 2023-09-02 07:14:38.000000000 +0000
|
||||
+++ linux/drivers/gpu/drm/drm_panel_orientation_quirks.c 2023-09-09 03:24:49.178775423 +0000
|
||||
@@ -133,6 +133,12 @@ static const struct drm_dmi_panel_orient
|
||||
.orientation = DRM_MODE_PANEL_ORIENTATION_RIGHT_UP,
|
||||
};
|
||||
|
||||
|
@ -14,7 +14,7 @@ diff -rupN linux-6.6.9.orig/drivers/gpu/drm/drm_panel_orientation_quirks.c linux
|
|||
static const struct dmi_system_id orientation_data[] = {
|
||||
{ /* Acer One 10 (S1003) */
|
||||
.matches = {
|
||||
@@ -178,13 +184,13 @@ static const struct dmi_system_id orient
|
||||
@@ -170,13 +176,13 @@ static const struct dmi_system_id orient
|
||||
DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "T103HAF"),
|
||||
},
|
||||
.driver_data = (void *)&lcd800x1280_rightside_up,
|
||||
|
@ -31,7 +31,7 @@ diff -rupN linux-6.6.9.orig/drivers/gpu/drm/drm_panel_orientation_quirks.c linux
|
|||
.matches = {
|
||||
DMI_EXACT_MATCH(DMI_SYS_VENDOR, "AYANEO"),
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "AIR"),
|
||||
@@ -196,6 +202,30 @@ static const struct dmi_system_id orient
|
||||
@@ -188,6 +194,30 @@ static const struct dmi_system_id orient
|
||||
DMI_MATCH(DMI_BOARD_NAME, "NEXT"),
|
||||
},
|
||||
.driver_data = (void *)&lcd800x1280_rightside_up,
|
||||
|
@ -41,7 +41,7 @@ diff -rupN linux-6.6.9.orig/drivers/gpu/drm/drm_panel_orientation_quirks.c linux
|
|||
+ DMI_MATCH(DMI_BOARD_NAME, "GEEK"),
|
||||
+ },
|
||||
+ .driver_data = (void *)&lcd800x1280_rightside_up,
|
||||
+ }, { /* AYANEO AYANEO 2, 2S */
|
||||
+ }, { /* AYANEO AYANEO 2 */
|
||||
+ .matches = {
|
||||
+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "AYANEO"),
|
||||
+ DMI_MATCH(DMI_PRODUCT_NAME, "AYANEO 2"),
|
||||
|
|
52
packages/kernel/linux/patches/AMD64/009-ayaneo-audio.patch
Normal file
52
packages/kernel/linux/patches/AMD64/009-ayaneo-audio.patch
Normal file
|
@ -0,0 +1,52 @@
|
|||
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
|
||||
alc_write_coef_idx(codec, 0x10, 0x0a20);
|
||||
}
|
||||
|
||||
+static void alc269_fixup_headphone_volume(struct hda_codec *codec,
|
||||
+ const struct hda_fixup *fix, int action)
|
||||
+{
|
||||
+ /* Pin 0x21: Some devices share 0x14 for headphones and speakers.
|
||||
+ * This will fix ensure these devices have volume controls. */
|
||||
+ if (!is_jack_detectable(codec, 0x21))
|
||||
+ return;
|
||||
+
|
||||
+ if (action == HDA_FIXUP_ACT_PRE_PROBE) {
|
||||
+ static const hda_nid_t conn1[] = { 0x02 };
|
||||
+ snd_hda_override_conn_list(codec, 0x14, ARRAY_SIZE(conn1), conn1);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
static void alc294_fixup_gx502_hp(struct hda_codec *codec,
|
||||
const struct hda_fixup *fix, int action)
|
||||
{
|
||||
@@ -7235,6 +7249,7 @@ enum {
|
||||
ALC269_FIXUP_DELL3_MIC_NO_PRESENCE,
|
||||
ALC269_FIXUP_DELL4_MIC_NO_PRESENCE,
|
||||
ALC269_FIXUP_DELL4_MIC_NO_PRESENCE_QUIET,
|
||||
+ ALC269_FIXUP_HEADSET_AYANEO_DEVICES,
|
||||
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
|
||||
.chained = true,
|
||||
.chain_id = ALC256_FIXUP_ASUS_HEADSET_MODE
|
||||
},
|
||||
+ [ALC269_FIXUP_HEADSET_AYANEO_DEVICES] = {
|
||||
+ .type = HDA_FIXUP_FUNC,
|
||||
+ .v.func = alc269_fixup_headphone_volume,
|
||||
+ },
|
||||
[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
|
||||
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, 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),
|
|
@ -7,6 +7,10 @@
|
|||
if [ "$(get_setting bluetooth.enabled)" == "1" ]
|
||||
then
|
||||
tocon "Starting bluetooth..."
|
||||
if [ ! -e "/storage/.cache/services/bluez.conf" ]
|
||||
then
|
||||
cp -f /usr/share/services/bluez.conf /storage/.cache/services/bluez.conf
|
||||
fi
|
||||
nohup systemctl start bluetooth &
|
||||
nohup systemctl start bluetooth-agent &
|
||||
nohup systemctl start bluetoothsense &
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
# Copyright (C) 2019-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="bluez"
|
||||
PKG_VERSION="5.70"
|
||||
PKG_VERSION="5.72"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://www.bluez.org/"
|
||||
PKG_URL="https://www.kernel.org/pub/linux/bluetooth/${PKG_NAME}-${PKG_VERSION}.tar.xz"
|
||||
|
@ -71,9 +71,15 @@ post_makeinstall_target() {
|
|||
mkdir -p ${INSTALL}/etc/bluetooth
|
||||
cp src/main.conf ${INSTALL}/etc/bluetooth
|
||||
|
||||
cat <<EOF >${INSTALL}/etc/bluetooth/input.conf
|
||||
[General]
|
||||
ClassicBondedOnly=false
|
||||
EOF
|
||||
|
||||
mkdir -p ${INSTALL}/usr/share/services
|
||||
cp -P ${PKG_DIR}/default.d/*.conf ${INSTALL}/usr/share/services
|
||||
|
||||
|
||||
# bluez looks in /etc/firmware/
|
||||
ln -sf /usr/lib/firmware ${INSTALL}/etc/firmware
|
||||
|
||||
|
|
|
@ -22,6 +22,7 @@ makeinstall_target() {
|
|||
cp ${PKG_DIR}/sources/scripts/volume_sense ${INSTALL}/usr/bin
|
||||
cp ${PKG_DIR}/sources/scripts/bluetooth_sense ${INSTALL}/usr/bin
|
||||
cp ${PKG_DIR}/sources/scripts/ledcontrol ${INSTALL}/usr/bin
|
||||
cp ${PKG_DIR}/sources/scripts/turbomode ${INSTALL}/usr/bin
|
||||
if [ -d "${PKG_DIR}/sources/devices/${DEVICE}" ]
|
||||
then
|
||||
cp ${PKG_DIR}/sources/devices/${DEVICE}/* ${INSTALL}/usr/bin
|
||||
|
|
15
packages/sysutils/system-utils/sources/scripts/turbomode
Normal file
15
packages/sysutils/system-utils/sources/scripts/turbomode
Normal file
|
@ -0,0 +1,15 @@
|
|||
#!/bin/bash
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# Copyright (C) 2024 JELOS (https://github.com/JustEnoughLinuxOS)
|
||||
|
||||
# Set turbomode state
|
||||
case $1 in
|
||||
disable)
|
||||
echo "0" > /sys/devices/system/cpu/cpufreq/boost
|
||||
set_setting enable.turbo-mode 0
|
||||
;;
|
||||
enable)
|
||||
echo "1" > /sys/devices/system/cpu/cpufreq/boost
|
||||
set_setting enable.turbo-mode 1
|
||||
;;
|
||||
esac
|
|
@ -3,7 +3,7 @@
|
|||
# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS)
|
||||
|
||||
PKG_NAME="emulationstation"
|
||||
PKG_VERSION="ba5c0f88a21fdd19fe0b0f94e1ff6229fbf682cf"
|
||||
PKG_VERSION="67e3614fad133fcc414bffed9ed7941bfac3bc05"
|
||||
PKG_GIT_CLONE_BRANCH="main"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
|
|
|
@ -1,19 +1,12 @@
|
|||
diff -rupN weston-12.0.3.orig/libweston/compositor.c weston-12.0.3/libweston/compositor.c
|
||||
--- weston-12.0.3.orig/libweston/compositor.c 2024-01-15 15:42:23.723505677 +0000
|
||||
+++ weston-12.0.3/libweston/compositor.c 2024-01-20 13:27:54.816568920 +0000
|
||||
@@ -3349,10 +3349,13 @@ weston_output_finish_frame(struct weston
|
||||
* If timestamp of latest vblank is given, it must always go forwards.
|
||||
+++ weston-12.0.3/libweston/compositor.c 2024-01-24 00:32:15.715324559 +0000
|
||||
@@ -3350,7 +3350,7 @@ weston_output_finish_frame(struct weston
|
||||
* If not given, INVALID flag must be set.
|
||||
*/
|
||||
- if (stamp)
|
||||
+ /* if (stamp)
|
||||
assert(timespec_sub_to_nsec(stamp, &output->frame_time) >= 0);
|
||||
if (stamp)
|
||||
- assert(timespec_sub_to_nsec(stamp, &output->frame_time) >= 0);
|
||||
+ assert(timespec_sub_to_nsec(stamp, &output->frame_time) || (presented_flags & WP_PRESENTATION_FEEDBACK_INVALID));
|
||||
else
|
||||
- assert(presented_flags & WP_PRESENTATION_FEEDBACK_INVALID);
|
||||
+ assert(presented_flags & WP_PRESENTATION_FEEDBACK_INVALID); */
|
||||
+
|
||||
+ assert(output->repaint_status == REPAINT_AWAITING_COMPLETION);
|
||||
+ assert(stamp || (presented_flags & WP_PRESENTATION_FEEDBACK_INVALID));
|
||||
|
||||
weston_compositor_read_presentation_clock(compositor, &now);
|
||||
assert(presented_flags & WP_PRESENTATION_FEEDBACK_INVALID);
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/Makefile linux/arch/arm64/boot/dts/rockchip/Makefile
|
||||
--- linux.orig/arch/arm64/boot/dts/rockchip/Makefile 2024-01-17 03:47:10.074350115 +0000
|
||||
+++ linux/arch/arm64/boot/dts/rockchip/Makefile 2024-01-17 04:01:50.682844812 +0000
|
||||
--- linux.orig/arch/arm64/boot/dts/rockchip/Makefile 2024-01-22 23:55:56.423256979 +0000
|
||||
+++ linux/arch/arm64/boot/dts/rockchip/Makefile 2024-01-23 03:05:55.471049048 +0000
|
||||
@@ -9,9 +9,12 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3308-ro
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3308-rock-pi-s.dtb
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3318-a95x-z2.dtb
|
||||
|
@ -15,9 +15,9 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/Makefile linux/arch/arm64/boo
|
|||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-evb.dtb
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-nanopi-r2c.dtb
|
||||
diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/px30.dtsi linux/arch/arm64/boot/dts/rockchip/px30.dtsi
|
||||
--- linux.orig/arch/arm64/boot/dts/rockchip/px30.dtsi 2024-01-17 03:47:10.078350209 +0000
|
||||
+++ linux/arch/arm64/boot/dts/rockchip/px30.dtsi 2024-01-17 03:59:58.108276677 +0000
|
||||
@@ -114,27 +114,11 @@
|
||||
--- linux.orig/arch/arm64/boot/dts/rockchip/px30.dtsi 2024-01-22 23:55:56.427257071 +0000
|
||||
+++ linux/arch/arm64/boot/dts/rockchip/px30.dtsi 2024-01-23 18:01:18.953774998 +0000
|
||||
@@ -114,32 +114,22 @@
|
||||
compatible = "operating-points-v2";
|
||||
opp-shared;
|
||||
|
||||
|
@ -45,7 +45,18 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/px30.dtsi linux/arch/arm64/bo
|
|||
opp-1296000000 {
|
||||
opp-hz = /bits/ 64 <1296000000>;
|
||||
opp-microvolt = <1350000 1350000 1350000>;
|
||||
@@ -349,6 +333,32 @@
|
||||
clock-latency-ns = <40000>;
|
||||
};
|
||||
+ opp-1416000000 {
|
||||
+ opp-hz = /bits/ 64 <1416000000>;
|
||||
+ opp-microvolt = <1350000 1350000 1350000>;
|
||||
+ clock-latency-ns = <40000>;
|
||||
+ turbo-mode;
|
||||
+ };
|
||||
};
|
||||
|
||||
arm-pmu {
|
||||
@@ -349,6 +339,32 @@
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -78,7 +89,7 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/px30.dtsi linux/arch/arm64/bo
|
|||
pmugrf: syscon@ff010000 {
|
||||
compatible = "rockchip,px30-pmugrf", "syscon", "simple-mfd";
|
||||
reg = <0x0 0xff010000 0x0 0x1000>;
|
||||
@@ -1064,20 +1074,12 @@
|
||||
@@ -1064,21 +1080,9 @@
|
||||
gpu_opp_table: opp-table-1 {
|
||||
compatible = "operating-points-v2";
|
||||
|
||||
|
@ -90,20 +101,22 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/px30.dtsi linux/arch/arm64/bo
|
|||
- opp-hz = /bits/ 64 <300000000>;
|
||||
- opp-microvolt = <975000>;
|
||||
- };
|
||||
opp-400000000 {
|
||||
opp-hz = /bits/ 64 <400000000>;
|
||||
opp-microvolt = <1050000>;
|
||||
};
|
||||
- opp-400000000 {
|
||||
- opp-hz = /bits/ 64 <400000000>;
|
||||
- opp-microvolt = <1050000>;
|
||||
- };
|
||||
- opp-480000000 {
|
||||
- opp-hz = /bits/ 64 <480000000>;
|
||||
+ opp-440000000 {
|
||||
+ opp-hz = /bits/ 64 <440000000>;
|
||||
opp-microvolt = <1125000>;
|
||||
- opp-microvolt = <1125000>;
|
||||
+ opp-560000000 {
|
||||
+ opp-hz = /bits/ 64 <560000000>;
|
||||
+ opp-microvolt = <1150000>;
|
||||
};
|
||||
};
|
||||
|
||||
diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dts linux/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dts
|
||||
--- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dts 2024-01-17 03:47:10.078350209 +0000
|
||||
+++ linux/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dts 2024-01-17 03:59:58.108276677 +0000
|
||||
--- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dts 2024-01-22 23:55:56.427257071 +0000
|
||||
+++ linux/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dts 2024-01-23 03:05:55.471049048 +0000
|
||||
@@ -12,6 +12,25 @@
|
||||
model = "Anbernic RG351M";
|
||||
compatible = "anbernic,rg351m", "rockchip,rk3326";
|
||||
|
@ -156,7 +169,7 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dts li
|
|||
+};
|
||||
diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351v.dts linux/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351v.dts
|
||||
--- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351v.dts 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ linux/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351v.dts 2024-01-17 03:59:58.108276677 +0000
|
||||
+++ linux/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351v.dts 2024-01-23 03:05:55.471049048 +0000
|
||||
@@ -0,0 +1,124 @@
|
||||
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
||||
+/*
|
||||
|
@ -282,8 +295,9 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351v.dts li
|
|||
+ };
|
||||
+ };
|
||||
+};
|
||||
--- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-magicx-xu10.dts 1969-12-31 19:00:00.000000000 -0500
|
||||
+++ linux/arch/arm64/boot/dts/rockchip/rk3326-magicx-xu10.dts 2024-01-19 15:39:57.362135961 -0500
|
||||
diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-magicx-xu10.dts linux/arch/arm64/boot/dts/rockchip/rk3326-magicx-xu10.dts
|
||||
--- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-magicx-xu10.dts 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ linux/arch/arm64/boot/dts/rockchip/rk3326-magicx-xu10.dts 2024-01-23 03:05:55.471049048 +0000
|
||||
@@ -0,0 +1,848 @@
|
||||
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
||||
+/*
|
||||
|
@ -1134,8 +1148,8 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351v.dts li
|
|||
+ };
|
||||
+};
|
||||
diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go.dtsi linux/arch/arm64/boot/dts/rockchip/rk3326-odroid-go.dtsi
|
||||
--- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go.dtsi 2024-01-17 03:47:10.078350209 +0000
|
||||
+++ linux/arch/arm64/boot/dts/rockchip/rk3326-odroid-go.dtsi 2024-01-17 03:59:58.108276677 +0000
|
||||
--- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go.dtsi 2024-01-22 23:55:56.427257071 +0000
|
||||
+++ linux/arch/arm64/boot/dts/rockchip/rk3326-odroid-go.dtsi 2024-01-23 03:05:55.471049048 +0000
|
||||
@@ -25,93 +25,40 @@
|
||||
compatible = "pwm-backlight";
|
||||
power-supply = <&vcc_bl>;
|
||||
|
@ -1292,8 +1306,8 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go.dtsi linux/a
|
|||
#clock-cells = <1>;
|
||||
#sound-dai-cells = <0>;
|
||||
diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2-v11.dts linux/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2-v11.dts
|
||||
--- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2-v11.dts 2024-01-17 03:47:10.078350209 +0000
|
||||
+++ linux/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2-v11.dts 2024-01-17 03:59:58.108276677 +0000
|
||||
--- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2-v11.dts 2024-01-22 23:55:56.427257071 +0000
|
||||
+++ linux/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2-v11.dts 2024-01-23 03:05:55.471049048 +0000
|
||||
@@ -16,31 +16,187 @@
|
||||
mmc1 = &sdio;
|
||||
};
|
||||
|
@ -1575,8 +1589,8 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2-v11.dts lin
|
|||
<2 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>,
|
||||
<2 RK_PA6 RK_FUNC_GPIO &pcfg_pull_up>,
|
||||
diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2.dts linux/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2.dts
|
||||
--- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2.dts 2024-01-17 03:47:10.078350209 +0000
|
||||
+++ linux/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2.dts 2024-01-17 03:59:58.108276677 +0000
|
||||
--- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2.dts 2024-01-22 23:55:56.427257071 +0000
|
||||
+++ linux/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2.dts 2024-01-23 03:05:55.471049048 +0000
|
||||
@@ -12,30 +12,175 @@
|
||||
model = "ODROID-GO Advance";
|
||||
compatible = "hardkernel,rk3326-odroid-go2", "rockchip,rk3326";
|
||||
|
@ -1809,8 +1823,8 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2.dts linux/a
|
|||
+ };
|
||||
+};
|
||||
diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go3.dts linux/arch/arm64/boot/dts/rockchip/rk3326-odroid-go3.dts
|
||||
--- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go3.dts 2024-01-17 03:47:10.078350209 +0000
|
||||
+++ linux/arch/arm64/boot/dts/rockchip/rk3326-odroid-go3.dts 2024-01-17 03:59:58.108276677 +0000
|
||||
--- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go3.dts 2024-01-22 23:55:56.427257071 +0000
|
||||
+++ linux/arch/arm64/boot/dts/rockchip/rk3326-odroid-go3.dts 2024-01-23 03:05:55.471049048 +0000
|
||||
@@ -12,67 +12,196 @@
|
||||
model = "ODROID-GO Super";
|
||||
compatible = "hardkernel,rk3326-odroid-go3", "rockchip,rk3326";
|
||||
|
@ -2120,7 +2134,7 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go3.dts linux/a
|
|||
};
|
||||
diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-powkiddy-rgb10.dts linux/arch/arm64/boot/dts/rockchip/rk3326-powkiddy-rgb10.dts
|
||||
--- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-powkiddy-rgb10.dts 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ linux/arch/arm64/boot/dts/rockchip/rk3326-powkiddy-rgb10.dts 2024-01-17 03:59:58.108276677 +0000
|
||||
+++ linux/arch/arm64/boot/dts/rockchip/rk3326-powkiddy-rgb10.dts 2024-01-23 03:05:55.471049048 +0000
|
||||
@@ -0,0 +1,280 @@
|
||||
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
||||
+/*
|
||||
|
|
Loading…
Reference in a new issue