On 11/22/2013 11:32 AM, Mark Brown wrote:
On Fri, Nov 22, 2013 at 10:29:18AM -0700, Stephen Warren wrote:
From: Stephen Warren swarren@nvidia.com
SND_SOC_DAPM_MUX() doesn't currently initialize the .mask field. This results in the mux never affecting HW, since no bits are ever set or cleared. Fix SND_SOC_DAPM_MUX() to use SND_SOC_DAPM_INIT_REG_VAL() to set up the reg, shift, on_val, and off_val fields like almost all other SND_SOC_xxx() macros. It looks like this was a "typo" in the fixed commit linked below.
Hrm. Why has nobody else noticed this? I've been doing plenty of testing that involved changing muxes... The patch and reasoning makes sense but I can't immediately see why any of the testing I've been doing recently would've worked without it since it all relies on muxes being configured to make any noise.
I think it's not the mux values/routing that matter, but the mux power gating.
Also, if HW were to power up with muxes powered, then never changing the power gate wouldn't have any effect (aside from increased power consumption). In my case, the mux isn't powered by default, so I saw an issue.