.. | .. |
---|
286 | 286 | {RK817_CODEC_AREF_RTCFG1, 0x40}, |
---|
287 | 287 | {RK817_CODEC_DDAC_POPD_DACST, 0x02}, |
---|
288 | 288 | /* APLL */ |
---|
289 | | - {RK817_CODEC_APLL_CFG0, 0x04}, |
---|
| 289 | + /* {RK817_CODEC_APLL_CFG0, 0x04}, */ |
---|
290 | 290 | {RK817_CODEC_APLL_CFG1, 0x58}, |
---|
291 | 291 | {RK817_CODEC_APLL_CFG2, 0x2d}, |
---|
292 | | - {RK817_CODEC_APLL_CFG4, 0xa5}, |
---|
| 292 | + /* {RK817_CODEC_APLL_CFG4, 0xa5}, */ |
---|
293 | 293 | {RK817_CODEC_APLL_CFG5, 0x00}, |
---|
294 | 294 | |
---|
295 | 295 | {RK817_CODEC_DI2S_RXCMD_TSD, 0x00}, |
---|
.. | .. |
---|
324 | 324 | {RK817_CODEC_AREF_RTCFG1, 0x40}, |
---|
325 | 325 | {RK817_CODEC_DADC_SR_ACL0, 0x02}, |
---|
326 | 326 | /* {RK817_CODEC_DTOP_DIGEN_CLKE, 0xff}, */ |
---|
327 | | - {RK817_CODEC_APLL_CFG0, 0x04}, |
---|
| 327 | + /* {RK817_CODEC_APLL_CFG0, 0x04}, */ |
---|
328 | 328 | {RK817_CODEC_APLL_CFG1, 0x58}, |
---|
329 | 329 | {RK817_CODEC_APLL_CFG2, 0x2d}, |
---|
330 | | - {RK817_CODEC_APLL_CFG4, 0xa5}, |
---|
| 330 | + /* {RK817_CODEC_APLL_CFG4, 0xa5}, */ |
---|
331 | 331 | {RK817_CODEC_APLL_CFG5, 0x00}, |
---|
332 | 332 | |
---|
333 | 333 | /*{RK817_CODEC_DI2S_RXCMD_TSD, 0x00},*/ |
---|
.. | .. |
---|
378 | 378 | playback_power_up_list[i].value); |
---|
379 | 379 | } |
---|
380 | 380 | |
---|
381 | | - /* Re-configure APLL CFG0/4 if (chip_ver <= 0x4) */ |
---|
| 381 | + /* configure APLL CFG0/4 */ |
---|
382 | 382 | if (rk817->chip_ver <= 0x4) { |
---|
383 | 383 | DBG("%s (%d): SMIC TudorAG and previous versions\n", |
---|
384 | 384 | __func__, __LINE__); |
---|
385 | 385 | snd_soc_component_write(component, RK817_CODEC_APLL_CFG0, 0x0c); |
---|
386 | 386 | snd_soc_component_write(component, RK817_CODEC_APLL_CFG4, 0x95); |
---|
| 387 | + } else { |
---|
| 388 | + DBG("%s: SMIC TudorAG version later\n", __func__); |
---|
| 389 | + snd_soc_component_write(component, RK817_CODEC_APLL_CFG0, 0x04); |
---|
| 390 | + snd_soc_component_write(component, RK817_CODEC_APLL_CFG4, 0xa5); |
---|
387 | 391 | } |
---|
388 | 392 | |
---|
389 | 393 | snd_soc_component_update_bits(component, RK817_CODEC_DTOP_DIGEN_CLKE, |
---|
.. | .. |
---|
405 | 409 | capture_power_up_list[i].value); |
---|
406 | 410 | } |
---|
407 | 411 | |
---|
408 | | - /* Re-configure APLL CFG0/4 if (chip_ver <= 0x4) */ |
---|
| 412 | + /* configure APLL CFG0/4 */ |
---|
409 | 413 | if (rk817->chip_ver <= 0x4) { |
---|
410 | 414 | DBG("%s (%d): SMIC TudorAG and previous versions\n", |
---|
411 | 415 | __func__, __LINE__); |
---|
412 | 416 | snd_soc_component_write(component, RK817_CODEC_APLL_CFG0, 0x0c); |
---|
413 | 417 | snd_soc_component_write(component, RK817_CODEC_APLL_CFG4, 0x95); |
---|
| 418 | + } else { |
---|
| 419 | + DBG("%s: SMIC TudorAG version later\n", __func__); |
---|
| 420 | + snd_soc_component_write(component, RK817_CODEC_APLL_CFG0, 0x04); |
---|
| 421 | + snd_soc_component_write(component, RK817_CODEC_APLL_CFG4, 0xa5); |
---|
414 | 422 | } |
---|
415 | 423 | |
---|
416 | 424 | snd_soc_component_update_bits(component, RK817_CODEC_DTOP_DIGEN_CLKE, |
---|
.. | .. |
---|
1230 | 1238 | rk817->chip_ver = (chip_ver & 0x0f); |
---|
1231 | 1239 | dev_info(component->dev, "%s: chip_name:0x%x, chip_ver:0x%x\n", __func__, chip_name, chip_ver); |
---|
1232 | 1240 | |
---|
| 1241 | + /* always enable mclk, and will disable mclk in rk817_remove */ |
---|
1233 | 1242 | clk_prepare_enable(rk817->mclk); |
---|
1234 | 1243 | rk817_reset(component); |
---|
1235 | | - clk_disable_unprepare(rk817->mclk); |
---|
1236 | 1244 | mutex_init(&rk817->clk_lock); |
---|
1237 | 1245 | rk817->clk_capture = 0; |
---|
1238 | 1246 | rk817->clk_playback = 0; |
---|
.. | .. |
---|
1257 | 1265 | rk817_codec_power_down(component, RK817_CODEC_ALL); |
---|
1258 | 1266 | snd_soc_component_exit_regmap(component); |
---|
1259 | 1267 | mutex_destroy(&rk817->clk_lock); |
---|
| 1268 | + clk_disable_unprepare(rk817->mclk); |
---|
1260 | 1269 | mdelay(10); |
---|
1261 | 1270 | |
---|
1262 | 1271 | } |
---|