On Fri, Oct 30, 2009 at 02:04:25PM -0500, Bill Gatliff wrote:
Mark Brown wrote:
wm8993 supports multiple internal options for sysclk usig the id parameter. Could you be more explicit about what you can't follow here please? I might be able to help more if I could see what's confusing you.
I guess what it comes down to is, I have no idea what I'm doing as far as the Alsa SoC APIs are concerned. I understand fully how the hardware works, but not any of the SND_SOC_* macros. I'm lost! :)
All I said to do was to take your code to set this via the set_sysclk() function and use the id that gets passed in to split up the changes to the master clock and the output clock so the two are adjusted independently.
I see in the wm8993 code the following:
static const struct snd_soc_dapm_widget wm8993_dapm_widgets[] = { SND_SOC_DAPM_SUPPLY("CLK_SYS", WM8993_BUS_CONTROL_1, 1, 0, clk_sys_event, SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD), ...
This is used to switch on and off the internal system clock in the CODEC which supplies the clock to all the digital functionaliy in the device, it's not something that's visible outside the device. The wm8731 is a much older device and doesn't have this sort of detailed control.