Lines Matching refs:codec
517 static void m98095_eq_band(struct snd_soc_codec *codec, unsigned int dai, in m98095_eq_band() argument
535 snd_soc_write(codec, eq_reg++, M98095_BYTE1(coefs[i])); in m98095_eq_band()
536 snd_soc_write(codec, eq_reg++, M98095_BYTE0(coefs[i])); in m98095_eq_band()
543 static void m98095_biquad_band(struct snd_soc_codec *codec, unsigned int dai, in m98095_biquad_band() argument
561 snd_soc_write(codec, bq_reg++, M98095_BYTE1(coefs[i])); in m98095_biquad_band()
562 snd_soc_write(codec, bq_reg++, M98095_BYTE0(coefs[i])); in m98095_biquad_band()
619 struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); in max98095_mic1pre_set() local
620 struct max98095_priv *max98095 = snd_soc_codec_get_drvdata(codec); in max98095_mic1pre_set()
624 snd_soc_update_bits(codec, M98095_05F_LVL_MIC1, M98095_MICPRE_MASK, in max98095_mic1pre_set()
633 struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); in max98095_mic1pre_get() local
634 struct max98095_priv *max98095 = snd_soc_codec_get_drvdata(codec); in max98095_mic1pre_get()
643 struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); in max98095_mic2pre_set() local
644 struct max98095_priv *max98095 = snd_soc_codec_get_drvdata(codec); in max98095_mic2pre_set()
648 snd_soc_update_bits(codec, M98095_060_LVL_MIC2, M98095_MICPRE_MASK, in max98095_mic2pre_set()
657 struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); in max98095_mic2pre_get() local
658 struct max98095_priv *max98095 = snd_soc_codec_get_drvdata(codec); in max98095_mic2pre_get()
869 struct snd_soc_codec *codec = snd_soc_dapm_to_codec(w->dapm); in max98095_mic_event() local
870 struct max98095_priv *max98095 = snd_soc_codec_get_drvdata(codec); in max98095_mic_event()
875 snd_soc_update_bits(codec, w->reg, M98095_MICPRE_MASK, in max98095_mic_event()
878 snd_soc_update_bits(codec, w->reg, M98095_MICPRE_MASK, in max98095_mic_event()
883 snd_soc_update_bits(codec, w->reg, M98095_MICPRE_MASK, 0); in max98095_mic_event()
899 struct snd_soc_codec *codec = snd_soc_dapm_to_codec(w->dapm); in max98095_line_pga() local
900 struct max98095_priv *max98095 = snd_soc_codec_get_drvdata(codec); in max98095_line_pga()
911 snd_soc_update_bits(codec, w->reg, in max98095_line_pga()
917 snd_soc_update_bits(codec, w->reg, in max98095_line_pga()
947 struct snd_soc_codec *codec = snd_soc_dapm_to_codec(w->dapm); in max98095_lineout_event() local
951 snd_soc_update_bits(codec, w->reg, in max98095_lineout_event()
955 snd_soc_update_bits(codec, w->reg, in max98095_lineout_event()
1213 struct snd_soc_codec *codec = dai->codec; in max98095_dai1_hw_params() local
1214 struct max98095_priv *max98095 = snd_soc_codec_get_drvdata(codec); in max98095_dai1_hw_params()
1226 snd_soc_update_bits(codec, M98095_02A_DAI1_FORMAT, in max98095_dai1_hw_params()
1230 snd_soc_update_bits(codec, M98095_02A_DAI1_FORMAT, in max98095_dai1_hw_params()
1240 snd_soc_update_bits(codec, M98095_027_DAI1_CLKMODE, in max98095_dai1_hw_params()
1245 if (snd_soc_read(codec, M98095_02A_DAI1_FORMAT) & M98095_DAI_MAS) { in max98095_dai1_hw_params()
1247 dev_err(codec->dev, "Invalid system clock frequency\n"); in max98095_dai1_hw_params()
1253 snd_soc_write(codec, M98095_028_DAI1_CLKCFG_HI, in max98095_dai1_hw_params()
1255 snd_soc_write(codec, M98095_029_DAI1_CLKCFG_LO, in max98095_dai1_hw_params()
1261 snd_soc_update_bits(codec, M98095_02E_DAI1_FILTERS, in max98095_dai1_hw_params()
1264 snd_soc_update_bits(codec, M98095_02E_DAI1_FILTERS, in max98095_dai1_hw_params()
1274 struct snd_soc_codec *codec = dai->codec; in max98095_dai2_hw_params() local
1275 struct max98095_priv *max98095 = snd_soc_codec_get_drvdata(codec); in max98095_dai2_hw_params()
1287 snd_soc_update_bits(codec, M98095_034_DAI2_FORMAT, in max98095_dai2_hw_params()
1291 snd_soc_update_bits(codec, M98095_034_DAI2_FORMAT, in max98095_dai2_hw_params()
1301 snd_soc_update_bits(codec, M98095_031_DAI2_CLKMODE, in max98095_dai2_hw_params()
1306 if (snd_soc_read(codec, M98095_034_DAI2_FORMAT) & M98095_DAI_MAS) { in max98095_dai2_hw_params()
1308 dev_err(codec->dev, "Invalid system clock frequency\n"); in max98095_dai2_hw_params()
1314 snd_soc_write(codec, M98095_032_DAI2_CLKCFG_HI, in max98095_dai2_hw_params()
1316 snd_soc_write(codec, M98095_033_DAI2_CLKCFG_LO, in max98095_dai2_hw_params()
1322 snd_soc_update_bits(codec, M98095_038_DAI2_FILTERS, in max98095_dai2_hw_params()
1325 snd_soc_update_bits(codec, M98095_038_DAI2_FILTERS, in max98095_dai2_hw_params()
1335 struct snd_soc_codec *codec = dai->codec; in max98095_dai3_hw_params() local
1336 struct max98095_priv *max98095 = snd_soc_codec_get_drvdata(codec); in max98095_dai3_hw_params()
1348 snd_soc_update_bits(codec, M98095_03E_DAI3_FORMAT, in max98095_dai3_hw_params()
1352 snd_soc_update_bits(codec, M98095_03E_DAI3_FORMAT, in max98095_dai3_hw_params()
1362 snd_soc_update_bits(codec, M98095_03B_DAI3_CLKMODE, in max98095_dai3_hw_params()
1367 if (snd_soc_read(codec, M98095_03E_DAI3_FORMAT) & M98095_DAI_MAS) { in max98095_dai3_hw_params()
1369 dev_err(codec->dev, "Invalid system clock frequency\n"); in max98095_dai3_hw_params()
1375 snd_soc_write(codec, M98095_03C_DAI3_CLKCFG_HI, in max98095_dai3_hw_params()
1377 snd_soc_write(codec, M98095_03D_DAI3_CLKCFG_LO, in max98095_dai3_hw_params()
1383 snd_soc_update_bits(codec, M98095_042_DAI3_FILTERS, in max98095_dai3_hw_params()
1386 snd_soc_update_bits(codec, M98095_042_DAI3_FILTERS, in max98095_dai3_hw_params()
1395 struct snd_soc_codec *codec = dai->codec; in max98095_dai_set_sysclk() local
1396 struct max98095_priv *max98095 = snd_soc_codec_get_drvdata(codec); in max98095_dai_set_sysclk()
1413 snd_soc_write(codec, M98095_026_SYS_CLK, 0x10); in max98095_dai_set_sysclk()
1415 snd_soc_write(codec, M98095_026_SYS_CLK, 0x20); in max98095_dai_set_sysclk()
1417 snd_soc_write(codec, M98095_026_SYS_CLK, 0x30); in max98095_dai_set_sysclk()
1419 dev_err(codec->dev, "Invalid master clock frequency\n"); in max98095_dai_set_sysclk()
1432 struct snd_soc_codec *codec = codec_dai->codec; in max98095_dai1_set_fmt() local
1433 struct max98095_priv *max98095 = snd_soc_codec_get_drvdata(codec); in max98095_dai1_set_fmt()
1445 snd_soc_write(codec, M98095_028_DAI1_CLKCFG_HI, in max98095_dai1_set_fmt()
1447 snd_soc_write(codec, M98095_029_DAI1_CLKCFG_LO, in max98095_dai1_set_fmt()
1457 dev_err(codec->dev, "Clock mode unsupported"); in max98095_dai1_set_fmt()
1487 snd_soc_update_bits(codec, M98095_02A_DAI1_FORMAT, in max98095_dai1_set_fmt()
1491 snd_soc_write(codec, M98095_02B_DAI1_CLOCK, M98095_DAI_BSEL64); in max98095_dai1_set_fmt()
1500 struct snd_soc_codec *codec = codec_dai->codec; in max98095_dai2_set_fmt() local
1501 struct max98095_priv *max98095 = snd_soc_codec_get_drvdata(codec); in max98095_dai2_set_fmt()
1513 snd_soc_write(codec, M98095_032_DAI2_CLKCFG_HI, in max98095_dai2_set_fmt()
1515 snd_soc_write(codec, M98095_033_DAI2_CLKCFG_LO, in max98095_dai2_set_fmt()
1525 dev_err(codec->dev, "Clock mode unsupported"); in max98095_dai2_set_fmt()
1555 snd_soc_update_bits(codec, M98095_034_DAI2_FORMAT, in max98095_dai2_set_fmt()
1559 snd_soc_write(codec, M98095_035_DAI2_CLOCK, in max98095_dai2_set_fmt()
1569 struct snd_soc_codec *codec = codec_dai->codec; in max98095_dai3_set_fmt() local
1570 struct max98095_priv *max98095 = snd_soc_codec_get_drvdata(codec); in max98095_dai3_set_fmt()
1582 snd_soc_write(codec, M98095_03C_DAI3_CLKCFG_HI, in max98095_dai3_set_fmt()
1584 snd_soc_write(codec, M98095_03D_DAI3_CLKCFG_LO, in max98095_dai3_set_fmt()
1594 dev_err(codec->dev, "Clock mode unsupported"); in max98095_dai3_set_fmt()
1624 snd_soc_update_bits(codec, M98095_03E_DAI3_FORMAT, in max98095_dai3_set_fmt()
1628 snd_soc_write(codec, M98095_03F_DAI3_CLOCK, in max98095_dai3_set_fmt()
1635 static int max98095_set_bias_level(struct snd_soc_codec *codec, in max98095_set_bias_level() argument
1638 struct max98095_priv *max98095 = snd_soc_codec_get_drvdata(codec); in max98095_set_bias_level()
1654 if (codec->dapm.bias_level == SND_SOC_BIAS_ON) in max98095_set_bias_level()
1662 if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) { in max98095_set_bias_level()
1666 dev_err(codec->dev, "Failed to sync cache: %d\n", ret); in max98095_set_bias_level()
1671 snd_soc_update_bits(codec, M98095_090_PWR_EN_IN, in max98095_set_bias_level()
1676 snd_soc_update_bits(codec, M98095_090_PWR_EN_IN, in max98095_set_bias_level()
1681 codec->dapm.bias_level = level; in max98095_set_bias_level()
1762 struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); in max98095_put_eq_enum() local
1763 struct max98095_priv *max98095 = snd_soc_codec_get_drvdata(codec); in max98095_put_eq_enum()
1796 dev_dbg(codec->dev, "Selected %s/%dHz for %dHz sample rate\n", in max98095_put_eq_enum()
1805 regsave = snd_soc_read(codec, M98095_088_CFG_LEVEL); in max98095_put_eq_enum()
1806 snd_soc_update_bits(codec, M98095_088_CFG_LEVEL, regmask, 0); in max98095_put_eq_enum()
1809 snd_soc_update_bits(codec, M98095_00F_HOST_CFG, M98095_SEG, M98095_SEG); in max98095_put_eq_enum()
1810 m98095_eq_band(codec, channel, 0, coef_set->band1); in max98095_put_eq_enum()
1811 m98095_eq_band(codec, channel, 1, coef_set->band2); in max98095_put_eq_enum()
1812 m98095_eq_band(codec, channel, 2, coef_set->band3); in max98095_put_eq_enum()
1813 m98095_eq_band(codec, channel, 3, coef_set->band4); in max98095_put_eq_enum()
1814 m98095_eq_band(codec, channel, 4, coef_set->band5); in max98095_put_eq_enum()
1815 snd_soc_update_bits(codec, M98095_00F_HOST_CFG, M98095_SEG, 0); in max98095_put_eq_enum()
1819 snd_soc_update_bits(codec, M98095_088_CFG_LEVEL, regmask, regsave); in max98095_put_eq_enum()
1826 struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); in max98095_get_eq_enum() local
1827 struct max98095_priv *max98095 = snd_soc_codec_get_drvdata(codec); in max98095_get_eq_enum()
1837 static void max98095_handle_eq_pdata(struct snd_soc_codec *codec) in max98095_handle_eq_pdata() argument
1839 struct max98095_priv *max98095 = snd_soc_codec_get_drvdata(codec); in max98095_handle_eq_pdata()
1892 ret = snd_soc_add_codec_controls(codec, controls, ARRAY_SIZE(controls)); in max98095_handle_eq_pdata()
1894 dev_err(codec->dev, "Failed to add EQ control: %d\n", ret); in max98095_handle_eq_pdata()
1899 static int max98095_get_bq_channel(struct snd_soc_codec *codec, in max98095_get_bq_channel() argument
1909 dev_err(codec->dev, "Bad biquad channel name '%s'\n", name); in max98095_get_bq_channel()
1916 struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); in max98095_put_bq_enum() local
1917 struct max98095_priv *max98095 = snd_soc_codec_get_drvdata(codec); in max98095_put_bq_enum()
1919 int channel = max98095_get_bq_channel(codec, kcontrol->id.name); in max98095_put_bq_enum()
1950 dev_dbg(codec->dev, "Selected %s/%dHz for %dHz sample rate\n", in max98095_put_bq_enum()
1959 regsave = snd_soc_read(codec, M98095_088_CFG_LEVEL); in max98095_put_bq_enum()
1960 snd_soc_update_bits(codec, M98095_088_CFG_LEVEL, regmask, 0); in max98095_put_bq_enum()
1963 snd_soc_update_bits(codec, M98095_00F_HOST_CFG, M98095_SEG, M98095_SEG); in max98095_put_bq_enum()
1964 m98095_biquad_band(codec, channel, 0, coef_set->band1); in max98095_put_bq_enum()
1965 m98095_biquad_band(codec, channel, 1, coef_set->band2); in max98095_put_bq_enum()
1966 snd_soc_update_bits(codec, M98095_00F_HOST_CFG, M98095_SEG, 0); in max98095_put_bq_enum()
1970 snd_soc_update_bits(codec, M98095_088_CFG_LEVEL, regmask, regsave); in max98095_put_bq_enum()
1977 struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); in max98095_get_bq_enum() local
1978 struct max98095_priv *max98095 = snd_soc_codec_get_drvdata(codec); in max98095_get_bq_enum()
1979 int channel = max98095_get_bq_channel(codec, kcontrol->id.name); in max98095_get_bq_enum()
1991 static void max98095_handle_bq_pdata(struct snd_soc_codec *codec) in max98095_handle_bq_pdata() argument
1993 struct max98095_priv *max98095 = snd_soc_codec_get_drvdata(codec); in max98095_handle_bq_pdata()
2047 ret = snd_soc_add_codec_controls(codec, controls, ARRAY_SIZE(controls)); in max98095_handle_bq_pdata()
2049 dev_err(codec->dev, "Failed to add Biquad control: %d\n", ret); in max98095_handle_bq_pdata()
2052 static void max98095_handle_pdata(struct snd_soc_codec *codec) in max98095_handle_pdata() argument
2054 struct max98095_priv *max98095 = snd_soc_codec_get_drvdata(codec); in max98095_handle_pdata()
2059 dev_dbg(codec->dev, "No platform data\n"); in max98095_handle_pdata()
2070 snd_soc_write(codec, M98095_087_CFG_MIC, regval); in max98095_handle_pdata()
2074 max98095_handle_eq_pdata(codec); in max98095_handle_pdata()
2078 max98095_handle_bq_pdata(codec); in max98095_handle_pdata()
2083 struct snd_soc_codec *codec = data; in max98095_report_jack() local
2084 struct max98095_priv *max98095 = snd_soc_codec_get_drvdata(codec); in max98095_report_jack()
2090 value = snd_soc_read(codec, M98095_007_JACK_AUTO_STS); in max98095_report_jack()
2121 static int max98095_jack_detect_enable(struct snd_soc_codec *codec) in max98095_jack_detect_enable() argument
2123 struct max98095_priv *max98095 = snd_soc_codec_get_drvdata(codec); in max98095_jack_detect_enable()
2134 ret = snd_soc_write(codec, M98095_08E_JACK_DC_SLEW, slew); in max98095_jack_detect_enable()
2136 dev_err(codec->dev, "Failed to cfg auto detect %d\n", ret); in max98095_jack_detect_enable()
2141 ret = snd_soc_write(codec, M98095_089_JACK_DET_AUTO, detect_enable); in max98095_jack_detect_enable()
2143 dev_err(codec->dev, "Failed to cfg auto detect %d\n", ret); in max98095_jack_detect_enable()
2150 static int max98095_jack_detect_disable(struct snd_soc_codec *codec) in max98095_jack_detect_disable() argument
2155 ret = snd_soc_write(codec, M98095_089_JACK_DET_AUTO, 0x0); in max98095_jack_detect_disable()
2157 dev_err(codec->dev, "Failed to cfg auto detect %d\n", ret); in max98095_jack_detect_disable()
2164 int max98095_jack_detect(struct snd_soc_codec *codec, in max98095_jack_detect() argument
2167 struct max98095_priv *max98095 = snd_soc_codec_get_drvdata(codec); in max98095_jack_detect()
2168 struct i2c_client *client = to_i2c_client(codec->dev); in max98095_jack_detect()
2178 max98095_jack_detect_enable(codec); in max98095_jack_detect()
2181 ret = snd_soc_update_bits(codec, M98095_013_JACK_INT_EN, in max98095_jack_detect()
2184 dev_err(codec->dev, "Failed to cfg jack irqs %d\n", ret); in max98095_jack_detect()
2188 max98095_report_jack(client->irq, codec); in max98095_jack_detect()
2194 static int max98095_suspend(struct snd_soc_codec *codec) in max98095_suspend() argument
2196 struct max98095_priv *max98095 = snd_soc_codec_get_drvdata(codec); in max98095_suspend()
2199 max98095_jack_detect_disable(codec); in max98095_suspend()
2201 max98095_set_bias_level(codec, SND_SOC_BIAS_OFF); in max98095_suspend()
2206 static int max98095_resume(struct snd_soc_codec *codec) in max98095_resume() argument
2208 struct max98095_priv *max98095 = snd_soc_codec_get_drvdata(codec); in max98095_resume()
2209 struct i2c_client *client = to_i2c_client(codec->dev); in max98095_resume()
2211 max98095_set_bias_level(codec, SND_SOC_BIAS_STANDBY); in max98095_resume()
2214 max98095_jack_detect_enable(codec); in max98095_resume()
2215 max98095_report_jack(client->irq, codec); in max98095_resume()
2225 static int max98095_reset(struct snd_soc_codec *codec) in max98095_reset() argument
2231 ret = snd_soc_write(codec, M98095_00F_HOST_CFG, 0); in max98095_reset()
2233 dev_err(codec->dev, "Failed to reset DSP: %d\n", ret); in max98095_reset()
2237 ret = snd_soc_write(codec, M98095_097_PWR_SYS, 0); in max98095_reset()
2239 dev_err(codec->dev, "Failed to reset codec: %d\n", ret); in max98095_reset()
2246 ret = snd_soc_write(codec, i, snd_soc_read(codec, i)); in max98095_reset()
2248 dev_err(codec->dev, "Failed to reset: %d\n", ret); in max98095_reset()
2256 static int max98095_probe(struct snd_soc_codec *codec) in max98095_probe() argument
2258 struct max98095_priv *max98095 = snd_soc_codec_get_drvdata(codec); in max98095_probe()
2263 max98095->mclk = devm_clk_get(codec->dev, "mclk"); in max98095_probe()
2268 max98095_reset(codec); in max98095_probe()
2270 client = to_i2c_client(codec->dev); in max98095_probe()
2305 "max98095", codec); in max98095_probe()
2307 dev_err(codec->dev, "Failed to request IRQ: %d\n", ret); in max98095_probe()
2312 ret = snd_soc_read(codec, M98095_0FF_REV_ID); in max98095_probe()
2314 dev_err(codec->dev, "Failure reading hardware revision: %d\n", in max98095_probe()
2318 dev_info(codec->dev, "Hardware revision: %c\n", ret - 0x40 + 'A'); in max98095_probe()
2320 snd_soc_write(codec, M98095_097_PWR_SYS, M98095_PWRSV); in max98095_probe()
2322 snd_soc_write(codec, M98095_048_MIX_DAC_LR, in max98095_probe()
2325 snd_soc_write(codec, M98095_049_MIX_DAC_M, in max98095_probe()
2328 snd_soc_write(codec, M98095_092_PWR_EN_OUT, M98095_SPK_SPREADSPECTRUM); in max98095_probe()
2329 snd_soc_write(codec, M98095_045_CFG_DSP, M98095_DSPNORMAL); in max98095_probe()
2330 snd_soc_write(codec, M98095_04E_CFG_HP, M98095_HPNORMAL); in max98095_probe()
2332 snd_soc_write(codec, M98095_02C_DAI1_IOCFG, in max98095_probe()
2335 snd_soc_write(codec, M98095_036_DAI2_IOCFG, in max98095_probe()
2338 snd_soc_write(codec, M98095_040_DAI3_IOCFG, in max98095_probe()
2341 max98095_handle_pdata(codec); in max98095_probe()
2344 snd_soc_update_bits(codec, M98095_097_PWR_SYS, M98095_SHDNRUN, in max98095_probe()
2351 free_irq(client->irq, codec); in max98095_probe()
2356 static int max98095_remove(struct snd_soc_codec *codec) in max98095_remove() argument
2358 struct max98095_priv *max98095 = snd_soc_codec_get_drvdata(codec); in max98095_remove()
2359 struct i2c_client *client = to_i2c_client(codec->dev); in max98095_remove()
2362 max98095_jack_detect_disable(codec); in max98095_remove()
2365 free_irq(client->irq, codec); in max98095_remove()