|
@@ -240,13 +240,13 @@ SOC_DOUBLE_R("Capture Volume ZC Switch", WM8960_LINVOL, WM8960_RINVOL,
|
|
|
SOC_DOUBLE_R("Capture Switch", WM8960_LINVOL, WM8960_RINVOL,
|
|
|
7, 1, 1),
|
|
|
|
|
|
-SOC_SINGLE_TLV("Right Input Boost Mixer RINPUT3 Volume",
|
|
|
+SOC_SINGLE_TLV("Left Input Boost Mixer LINPUT3 Volume",
|
|
|
WM8960_INBMIX1, 4, 7, 0, lineinboost_tlv),
|
|
|
-SOC_SINGLE_TLV("Right Input Boost Mixer RINPUT2 Volume",
|
|
|
+SOC_SINGLE_TLV("Left Input Boost Mixer LINPUT2 Volume",
|
|
|
WM8960_INBMIX1, 1, 7, 0, lineinboost_tlv),
|
|
|
-SOC_SINGLE_TLV("Left Input Boost Mixer LINPUT3 Volume",
|
|
|
+SOC_SINGLE_TLV("Right Input Boost Mixer RINPUT3 Volume",
|
|
|
WM8960_INBMIX2, 4, 7, 0, lineinboost_tlv),
|
|
|
-SOC_SINGLE_TLV("Left Input Boost Mixer LINPUT2 Volume",
|
|
|
+SOC_SINGLE_TLV("Right Input Boost Mixer RINPUT2 Volume",
|
|
|
WM8960_INBMIX2, 1, 7, 0, lineinboost_tlv),
|
|
|
SOC_SINGLE_TLV("Right Input Boost Mixer RINPUT1 Volume",
|
|
|
WM8960_RINPATH, 4, 3, 0, micboost_tlv),
|
|
@@ -643,29 +643,31 @@ static int wm8960_configure_clocking(struct snd_soc_codec *codec)
|
|
|
return -EINVAL;
|
|
|
}
|
|
|
|
|
|
- /* check if the sysclk frequency is available. */
|
|
|
- for (i = 0; i < ARRAY_SIZE(sysclk_divs); ++i) {
|
|
|
- if (sysclk_divs[i] == -1)
|
|
|
- continue;
|
|
|
- sysclk = freq_out / sysclk_divs[i];
|
|
|
- for (j = 0; j < ARRAY_SIZE(dac_divs); ++j) {
|
|
|
- if (sysclk == dac_divs[j] * lrclk) {
|
|
|
+ if (wm8960->clk_id != WM8960_SYSCLK_PLL) {
|
|
|
+ /* check if the sysclk frequency is available. */
|
|
|
+ for (i = 0; i < ARRAY_SIZE(sysclk_divs); ++i) {
|
|
|
+ if (sysclk_divs[i] == -1)
|
|
|
+ continue;
|
|
|
+ sysclk = freq_out / sysclk_divs[i];
|
|
|
+ for (j = 0; j < ARRAY_SIZE(dac_divs); ++j) {
|
|
|
+ if (sysclk != dac_divs[j] * lrclk)
|
|
|
+ continue;
|
|
|
for (k = 0; k < ARRAY_SIZE(bclk_divs); ++k)
|
|
|
if (sysclk == bclk * bclk_divs[k] / 10)
|
|
|
break;
|
|
|
if (k != ARRAY_SIZE(bclk_divs))
|
|
|
break;
|
|
|
}
|
|
|
+ if (j != ARRAY_SIZE(dac_divs))
|
|
|
+ break;
|
|
|
}
|
|
|
- if (j != ARRAY_SIZE(dac_divs))
|
|
|
- break;
|
|
|
- }
|
|
|
|
|
|
- if (i != ARRAY_SIZE(sysclk_divs)) {
|
|
|
- goto configure_clock;
|
|
|
- } else if (wm8960->clk_id != WM8960_SYSCLK_AUTO) {
|
|
|
- dev_err(codec->dev, "failed to configure clock\n");
|
|
|
- return -EINVAL;
|
|
|
+ if (i != ARRAY_SIZE(sysclk_divs)) {
|
|
|
+ goto configure_clock;
|
|
|
+ } else if (wm8960->clk_id != WM8960_SYSCLK_AUTO) {
|
|
|
+ dev_err(codec->dev, "failed to configure clock\n");
|
|
|
+ return -EINVAL;
|
|
|
+ }
|
|
|
}
|
|
|
/* get a available pll out frequency and set pll */
|
|
|
for (i = 0; i < ARRAY_SIZE(sysclk_divs); ++i) {
|