Lines Matching +full:codec +full:- +full:aif2 +full:- +full:bclk
1 // SPDX-License-Identifier: GPL-2.0+
35 /* codec private data */
37 enum wm8994_type type; /* codec type of wolfson */
84 return dm_i2c_write(priv->dev, reg, val, 2); in wm8994_i2c_write()
94 * @return int value 0 for success, -1 in case of error.
102 ret = dm_i2c_read(priv->dev, reg, val, 1); in wm8994_i2c_read()
106 return -1; in wm8994_i2c_read()
120 * @param reg codec register
134 return -1; in wm8994_bic_or()
152 * @return -1 for error and 0 Success.
176 return -1; in wm8994_set_fmt()
187 return -1; in wm8994_set_fmt()
206 return -1; in wm8994_set_fmt()
222 return -1; in wm8994_set_fmt()
244 return -1; in wm8994_set_fmt()
249 return -1; in wm8994_set_fmt()
260 debug("%s: codec register access error\n", __func__); in wm8994_set_fmt()
261 return -1; in wm8994_set_fmt()
276 * @return -1 for error and 0 Success.
285 int bclk = 0; in wm8994_hw_params() local
288 int aif2 = 0; in wm8994_hw_params() local
290 int id = aif_id - 1; in wm8994_hw_params()
309 return -1; in wm8994_hw_params()
330 return -1; in wm8994_hw_params()
341 return -1; in wm8994_hw_params()
348 best_val = abs((fs_ratios[0] * sampling_rate) - priv->aifclk[id]); in wm8994_hw_params()
351 cur_val = abs(fs_ratios[i] * sampling_rate - priv->aifclk[id]); in wm8994_hw_params()
368 cur_val = (priv->aifclk[id] * 10 / bclk_divs[i]) - bclk_rate; in wm8994_hw_params()
369 if (cur_val < 0) /* BCLK table is sorted */ in wm8994_hw_params()
375 debug("%s: Could not get the best matching bclk division\n", in wm8994_hw_params()
377 return -1; in wm8994_hw_params()
380 bclk_rate = priv->aifclk[id] * 10 / bclk_divs[best]; in wm8994_hw_params()
381 bclk |= best << WM8994_AIF1_BCLK_DIV_SHIFT; in wm8994_hw_params()
385 return -1; in wm8994_hw_params()
389 aif2 |= WM8994_AIF1_MONO; in wm8994_hw_params()
391 if (priv->aifclk[id] == 0) { in wm8994_hw_params()
393 return -1; in wm8994_hw_params()
397 ret |= wm8994_bic_or(priv, aif2_reg, WM8994_AIF1_MONO, aif2); in wm8994_hw_params()
399 bclk); in wm8994_hw_params()
403 debug("rate vale = %x , bclk val= %x\n", rate_val, bclk); in wm8994_hw_params()
406 debug("%s: codec register access error\n", __func__); in wm8994_hw_params()
407 return -1; in wm8994_hw_params()
419 * @return -1 for error and 0 Success.
429 if (aif-1) in configure_aif_clock()
434 switch (priv->sysclk[aif - 1]) { in configure_aif_clock()
437 rate = priv->mclk[0]; in configure_aif_clock()
442 rate = priv->mclk[1]; in configure_aif_clock()
447 rate = priv->fll[0].out; in configure_aif_clock()
452 rate = priv->fll[1].out; in configure_aif_clock()
457 __func__, priv->sysclk[aif - 1]); in configure_aif_clock()
458 return -1; in configure_aif_clock()
467 priv->aifclk[aif - 1] = rate; in configure_aif_clock()
484 debug("%s: codec register access error\n", __func__); in configure_aif_clock()
485 return -1; in configure_aif_clock()
499 * @return -1 for error and 0 success.
507 priv->sysclk[aif_id - 1] = clk_id; in wm8994_set_sysclk()
511 priv->mclk[0] = freq; in wm8994_set_sysclk()
520 priv->mclk[1] = freq; in wm8994_set_sysclk()
529 * Special case - a division (times 10) is given and in wm8994_set_sysclk()
539 return -1; in wm8994_set_sysclk()
554 return -1; in wm8994_set_sysclk()
560 debug("%s: codec register access error\n", __func__); in wm8994_set_sysclk()
561 return -1; in wm8994_set_sysclk()
568 * Initializes Volume for AIF2 to HP path
571 * @returns -1 for error and 0 Success.
604 debug("%s: codec register access error\n", __func__); in wm8994_init_volume_aif2_dac1()
605 return -1; in wm8994_init_volume_aif2_dac1()
615 * @returns -1 for error and 0 Success.
637 debug("%s: codec register access error\n", __func__); in wm8994_init_volume_aif1_dac1()
638 return -1; in wm8994_init_volume_aif1_dac1()
645 * Intialise wm8994 codec device
649 * @returns -1 for error and 0 Success.
667 debug("Device registered as type %d\n", priv->type); in wm8994_device_init()
668 priv->type = WM8994; in wm8994_device_init()
671 return -ENXIO; in wm8994_device_init()
679 priv->revision = reg_data; in wm8994_device_init()
680 debug("%s revision %c\n", devname, 'A' + priv->revision); in wm8994_device_init()
722 /* Power enable for AIF2 and DAC1 */ in wm8994_setup_interface()
774 /* Routing AIF2 to DAC1 */ in wm8994_setup_interface()
783 /* GPIO Settings for AIF2 */ in wm8994_setup_interface()
805 debug("%s: Codec chip setup ok\n", __func__); in wm8994_setup_interface()
808 debug("%s: Codec chip setup error\n", __func__); in wm8994_setup_interface()
809 return -1; in wm8994_setup_interface()
821 debug("%s: wm8994 codec chip init failed\n", __func__); in _wm8994_init()
827 debug("%s: wm8994 codec set sys clock failed\n", __func__); in _wm8994_init()
856 priv->dev = dev; in wm8994_probe()