From bbd106d104ec3995964e89cb54a9a5a67fc7591d Mon Sep 17 00:00:00 2001 From: Alexander Stein Date: Thu, 10 Apr 2025 13:01:19 +0200 Subject: [PATCH 1/2] bat: Fix buffer time configuration By swapping time configuration some hardware constraints can be supported. Fixes the error: Set parameter to device error: buffer time: 500000 hw:tqmtlv320aic32: Invalid argument(-22) Signed-off-by: Alexander Stein Signed-off-by: Takashi Iwai --- bat/alsa.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/bat/alsa.c b/bat/alsa.c index 67489c421..457e79a2b 100644 --- a/bat/alsa.c +++ b/bat/alsa.c @@ -221,23 +221,23 @@ static int set_snd_pcm_params(struct bat *bat, struct pcm_container *sndpcm) period_time = buffer_time / DIV_BUFFERTIME; - /* Set buffer time and period time */ - err = snd_pcm_hw_params_set_buffer_time_near(sndpcm->handle, - params, &buffer_time, 0); + /* Set period time and buffer time */ + err = snd_pcm_hw_params_set_period_time_near(sndpcm->handle, + params, &period_time, 0); if (err < 0) { fprintf(bat->err, _("Set parameter to device error: ")); - fprintf(bat->err, _("buffer time: %d %s: %s(%d)\n"), - buffer_time, + fprintf(bat->err, _("period time: %d %s: %s(%d)\n"), + period_time, device_name, snd_strerror(err), err); return err; } - err = snd_pcm_hw_params_set_period_time_near(sndpcm->handle, - params, &period_time, 0); + err = snd_pcm_hw_params_set_buffer_time_near(sndpcm->handle, + params, &buffer_time, 0); if (err < 0) { fprintf(bat->err, _("Set parameter to device error: ")); - fprintf(bat->err, _("period time: %d %s: %s(%d)\n"), - period_time, + fprintf(bat->err, _("buffer time: %d %s: %s(%d)\n"), + buffer_time, device_name, snd_strerror(err), err); return err; } From 73e87f9e8239bf1b28666b5f661eef3eb96b960d Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Wed, 6 Aug 2025 10:28:15 +0200 Subject: [PATCH 2/2] amixer: always use line buffering for (s)events Line buffering is the obviously correct mode for (s)events, but block buffering would typically be used when piping its output to another program. Signed-off-by: Anton Khirnov --- amixer/amixer.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/amixer/amixer.c b/amixer/amixer.c index 07e9819e5..a52df7410 100644 --- a/amixer/amixer.c +++ b/amixer/amixer.c @@ -1595,6 +1595,8 @@ static int events(int argc ATTRIBUTE_UNUSED, char *argv[] ATTRIBUTE_UNUSED) snd_hctl_elem_t *helem; int err; + setlinebuf(stdout); + if ((err = snd_hctl_open(&handle, card, 0)) < 0) { error("Control %s open error: %s\n", card, snd_strerror(err)); return err; @@ -1674,6 +1676,8 @@ static int sevents(int argc ATTRIBUTE_UNUSED, char *argv[] ATTRIBUTE_UNUSED) snd_mixer_t *handle; int err; + setlinebuf(stdout); + if ((err = snd_mixer_open(&handle, 0)) < 0) { error("Mixer %s open error: %s", card, snd_strerror(err)); return err;