meta-digi-dey: backport ALSA and PulseAudio fixes from meta-imx
* Y2038: compile pulseaudio and alsa-lib with 64bit time flags * Add patch to fix playback stuck issues on suspend/resume https://onedigi.atlassian.net/browse/DEL-9681 Signed-off-by: Javier Viguera <javier.viguera@digi.com>
This commit is contained in:
parent
01ead103b1
commit
6b40ed52d2
|
|
@ -0,0 +1,64 @@
|
|||
From 2adc30e9838daf62312f32a0a93129d64b1668b3 Mon Sep 17 00:00:00 2001
|
||||
From: Takashi Iwai <tiwai@suse.de>
|
||||
Date: Fri, 6 Sep 2024 10:05:56 +0200
|
||||
Subject: [PATCH] pcm: dmix: Fix resume with multiple instances
|
||||
|
||||
Upstream-Status: Pending
|
||||
|
||||
The fix for PCM dmix suspend/resume checks spcm->info bit of
|
||||
SND_PCM_INFO_RESUME for applying a workaround for drivers with the
|
||||
full resume support. This assumed that scpm->info is exposed from the
|
||||
underlying slave PCM device.
|
||||
|
||||
The above is true for the first opened instance, but for the second
|
||||
opened instance, it's a copy from the saved data in shmem. And, we
|
||||
dropped SND_PCM_INFO_RESUME bit there to assure not to expose the full
|
||||
resume capability to applications. This resulted in the
|
||||
inconsistencies, and when the second instance is resumed at first, it
|
||||
misses the snd_pcm_resume() call, hence the driver doesn't react
|
||||
properly any longer.
|
||||
|
||||
For addressing it, we keep SND_PCM_INFO_RESUME bit in shmptr->s.info
|
||||
bits as is, while dropping the bit exposed to apps in
|
||||
snd_pcm_direct_hw_refine() and *_hw_params() callbacks.
|
||||
|
||||
Fixes: 6d1d620eadf3 ("pcm: dmix: resume workaround for buggy driver")
|
||||
Reported-and-tested-by: Chancel Liu <chancel.liu@nxp.com>
|
||||
Closes: https://lore.kernel.org/DB9PR04MB94988752ED7C43B399E0BC00E3942@DB9PR04MB9498.eurprd04.prod.outlook.com
|
||||
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
||||
---
|
||||
src/pcm/pcm_direct.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/pcm/pcm_direct.c b/src/pcm/pcm_direct.c
|
||||
index e53e5923..17e677f6 100644
|
||||
--- a/src/pcm/pcm_direct.c
|
||||
+++ b/src/pcm/pcm_direct.c
|
||||
@@ -1018,6 +1018,7 @@ int snd_pcm_direct_hw_refine(snd_pcm_t *pcm, snd_pcm_hw_params_t *params)
|
||||
}
|
||||
dshare->timer_ticks = hw_param_interval(params, SND_PCM_HW_PARAM_PERIOD_SIZE)->max / dshare->slave_period_size;
|
||||
params->info = dshare->shmptr->s.info;
|
||||
+ params->info &= ~SND_PCM_INFO_RESUME;
|
||||
#ifdef REFINE_DEBUG
|
||||
snd_output_puts(log, "DMIX REFINE (end):\n");
|
||||
snd_pcm_hw_params_dump(params, log);
|
||||
@@ -1031,6 +1032,7 @@ int snd_pcm_direct_hw_params(snd_pcm_t *pcm, snd_pcm_hw_params_t * params)
|
||||
snd_pcm_direct_t *dmix = pcm->private_data;
|
||||
|
||||
params->info = dmix->shmptr->s.info;
|
||||
+ params->info &= ~SND_PCM_INFO_RESUME;
|
||||
params->rate_num = dmix->shmptr->s.rate;
|
||||
params->rate_den = 1;
|
||||
params->fifo_size = 0;
|
||||
@@ -1183,8 +1185,6 @@ static void save_slave_setting(snd_pcm_direct_t *dmix, snd_pcm_t *spcm)
|
||||
COPY_SLAVE(buffer_time);
|
||||
COPY_SLAVE(sample_bits);
|
||||
COPY_SLAVE(frame_bits);
|
||||
-
|
||||
- dmix->shmptr->s.info &= ~SND_PCM_INFO_RESUME;
|
||||
}
|
||||
|
||||
#undef COPY_SLAVE
|
||||
--
|
||||
2.46.0
|
||||
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
# Copyright (C) 2025, Digi International Inc.
|
||||
|
||||
FILESEXTRAPATHS:prepend := "${THISDIR}/alsa-lib:"
|
||||
# override meta-freescale/recipes-multimedia/alsa/alsa-lib_%.bbappend
|
||||
GLIBC_64BIT_TIME_FLAGS:arm:imx-nxp-bsp = " -D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64"
|
||||
|
||||
SRC_URI:append = " file://0001-pcm-dmix-Fix-resume-with-multiple-instances.patch"
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
# Copyright (C) 2019-2024, Digi International Inc.
|
||||
# Copyright (C) 2019-2025, Digi International Inc.
|
||||
|
||||
FILESEXTRAPATHS:prepend := "${THISDIR}/${BPN}:"
|
||||
|
||||
|
|
@ -57,6 +57,8 @@ SRC_URI:append:mx9-nxp-bsp = " \
|
|||
|
||||
# Disable allow-autospawn-for-root as default
|
||||
PACKAGECONFIG:remove = "autospawn-for-root"
|
||||
PACKAGECONFIG[oss-output] = "-Doss-output=enabled,-Doss-output=disabled,"
|
||||
GLIBC_64BIT_TIME_FLAGS:pn-pulseaudio = " ${@bb.utils.contains('PACKAGECONFIG', 'oss-output', '', ' -D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64', d)}"
|
||||
|
||||
EXTRA_OECONF:append:ccimx6 = " --disable-memfd"
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue