From 28b9c8bfeb13748abcb850884e538d4a5ca3d5ce Mon Sep 17 00:00:00 2001 From: Solomon Peachy Date: Sun, 25 Oct 2020 21:00:50 -0400 Subject: [PATCH] rocker: Disable mute-on-pause, due to a platform kernel bug. In short, the display fading back in after a pause resuming interferes with the audio codec, causing BadThings(tm) that cannot be recovered from This really is just avoiding a known trigger; there's no guarantee this condition won't occur under random circumstances during normal use, and there's no good way to work around this from within rockbox. I suspect the underlying problem is that both the display control and codec control share an i2c bus, but the kernel drivers implementing them isn't using proper linux bus access/locking. Change-Id: Id4f56f9cb269ed74aac2f041146b3630cef09030 --- firmware/drivers/audio/rocker_codec.c | 4 ++++ firmware/export/rocker_codec.h | 7 +++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/firmware/drivers/audio/rocker_codec.c b/firmware/drivers/audio/rocker_codec.c index abe13be285..4beda4b572 100644 --- a/firmware/drivers/audio/rocker_codec.c +++ b/firmware/drivers/audio/rocker_codec.c @@ -71,7 +71,11 @@ void audiohw_preinit(void) { alsa_controls_init(); hw_open(); +#if defined(AUDIOHW_MUTE_ON_PAUSE) || defined (AUDIOHW_NEEDS_INITIAL_UNMUTE) audiohw_mute(true); /* Start muted to avoid the POP */ +#else + audiohw_mute(false); +#endif } void audiohw_postinit(void) diff --git a/firmware/export/rocker_codec.h b/firmware/export/rocker_codec.h index 48e280a4e4..c1ee7b87bc 100644 --- a/firmware/export/rocker_codec.h +++ b/firmware/export/rocker_codec.h @@ -2,9 +2,12 @@ #define __ROCKER_CODEC__ #define AUDIOHW_CAPS 0 -AUDIOHW_SETTING(VOLUME, "dB", 1, 5, -102*10, 0, -30*10) +AUDIOHW_SETTING(VOLUME, "dB", 1, 5, -115*10, 0, -30*10) #endif -#define AUDIOHW_MUTE_ON_PAUSE +//#define AUDIOHW_MUTE_ON_PAUSE +//#define AUDIOHW_NEEDS_INITIAL_UNMUTE + +/* Note: Due to Kernel bug, we can't use MUTE_ON_PAUSE with backlight fading */ void audiohw_mute(int mute);