|
22 | 22 |
|
23 | 23 | #define MI2S_COUNT (MI2S_QUATERNARY + 1)
|
24 | 24 |
|
| 25 | +#define ARIZONA_CLK_SYSCLK 1 |
| 26 | +#define ARIZONA_CLK_SRC_MCLK1 0 |
| 27 | + |
25 | 28 | struct apq8016_sbc_data {
|
26 | 29 | struct snd_soc_card card;
|
27 | 30 | void __iomem *mic_iomux;
|
@@ -127,11 +130,21 @@ static int apq8016_dai_init(struct snd_soc_pcm_runtime *rtd, int mi2s)
|
127 | 130 | }
|
128 | 131 |
|
129 | 132 | for_each_rtd_codec_dais(rtd, i, codec_dai) {
|
130 |
| - |
| 133 | + int clk_id, pll_out, source; |
| 134 | + |
| 135 | + if (!strcmp(codec_dai->name, "wm8998-aif1")) { |
| 136 | + clk_id = ARIZONA_CLK_SYSCLK; |
| 137 | + pll_out = 12288000; |
| 138 | + source = ARIZONA_CLK_SRC_MCLK1; |
| 139 | + } else { |
| 140 | + clk_id = 0; |
| 141 | + pll_out = DEFAULT_MCLK_RATE; |
| 142 | + source = 0; |
| 143 | + } |
131 | 144 | component = codec_dai->component;
|
132 | 145 | /* Set default mclk for internal codec */
|
133 |
| - rval = snd_soc_component_set_sysclk(component, 0, 0, DEFAULT_MCLK_RATE, |
134 |
| - SND_SOC_CLOCK_IN); |
| 146 | + rval = snd_soc_component_set_sysclk(component, clk_id, source, |
| 147 | + pll_out, SND_SOC_CLOCK_IN); |
135 | 148 | if (rval != 0 && rval != -ENOTSUPP) {
|
136 | 149 | dev_warn(card->dev, "Failed to set mclk: %d\n", rval);
|
137 | 150 | return rval;
|
|
0 commit comments