Lines Matching refs:cx2072x

583 static int cx2072x_config_pll(struct cx2072x_priv *cx2072x)  in cx2072x_config_pll()  argument
585 struct device *dev = cx2072x->dev; in cx2072x_config_pll()
594 unsigned int sample_rate = cx2072x->sample_rate; in cx2072x_config_pll()
621 pre_div = get_div_from_mclk(cx2072x->mclk_rate); in cx2072x_config_pll()
622 pll_input = cx2072x->mclk_rate / pre_div; in cx2072x_config_pll()
636 regmap_write(cx2072x->regmap, CX2072X_ANALOG_TEST4, in cx2072x_config_pll()
640 regmap_write(cx2072x->regmap, CX2072X_ANALOG_TEST7, 0x100); in cx2072x_config_pll()
643 regmap_write(cx2072x->regmap, CX2072X_ANALOG_TEST6, in cx2072x_config_pll()
645 regmap_write(cx2072x->regmap, CX2072X_ANALOG_TEST7, in cx2072x_config_pll()
650 regmap_write(cx2072x->regmap, CX2072X_ANALOG_TEST8, int_div); in cx2072x_config_pll()
655 regmap_write(cx2072x->regmap, CX2072X_DIGITAL_TEST16, 0x00); in cx2072x_config_pll()
658 regmap_write(cx2072x->regmap, CX2072X_DIGITAL_TEST16, in cx2072x_config_pll()
660 regmap_write(cx2072x->regmap, CX2072X_DIGITAL_TEST17, in cx2072x_config_pll()
662 regmap_write(cx2072x->regmap, CX2072X_DIGITAL_TEST18, in cx2072x_config_pll()
664 regmap_write(cx2072x->regmap, CX2072X_DIGITAL_TEST19, 0x01); in cx2072x_config_pll()
665 regmap_write(cx2072x->regmap, CX2072X_DIGITAL_TEST20, 0x02); in cx2072x_config_pll()
666 regmap_update_bits(cx2072x->regmap, CX2072X_DIGITAL_TEST16, in cx2072x_config_pll()
673 static int cx2072x_config_i2spcm(struct cx2072x_priv *cx2072x) in cx2072x_config_i2spcm() argument
675 struct device *dev = cx2072x->dev; in cx2072x_config_i2spcm()
682 int frame_len = cx2072x->frame_size; in cx2072x_config_i2spcm()
683 int sample_size = cx2072x->sample_size; in cx2072x_config_i2spcm()
697 const unsigned int fmt = cx2072x->dai_fmt; in cx2072x_config_i2spcm()
804 if (cx2072x->en_aec_ref) in cx2072x_config_i2spcm()
816 if (cx2072x->en_aec_ref) in cx2072x_config_i2spcm()
834 bclk_rate = cx2072x->sample_rate * frame_len; in cx2072x_config_i2spcm()
838 regmap_write(cx2072x->regmap, CX2072X_I2SPCM_CONTROL5, 0); in cx2072x_config_i2spcm()
853 regmap_write(cx2072x->regmap, CX2072X_I2SPCM_CONTROL1, reg1.ulval); in cx2072x_config_i2spcm()
854 regmap_update_bits(cx2072x->regmap, CX2072X_I2SPCM_CONTROL2, 0xffffffc0, in cx2072x_config_i2spcm()
856 regmap_update_bits(cx2072x->regmap, CX2072X_I2SPCM_CONTROL3, 0xffffffc0, in cx2072x_config_i2spcm()
858 regmap_write(cx2072x->regmap, CX2072X_I2SPCM_CONTROL4, reg4.ulval); in cx2072x_config_i2spcm()
859 regmap_write(cx2072x->regmap, CX2072X_I2SPCM_CONTROL6, reg6.ulval); in cx2072x_config_i2spcm()
860 regmap_write(cx2072x->regmap, CX2072X_I2SPCM_CONTROL5, reg5.ulval); in cx2072x_config_i2spcm()
862 regmap_write(cx2072x->regmap, CX2072X_DIGITAL_BIOS_TEST2, in cx2072x_config_i2spcm()
872 struct cx2072x_priv *cx2072x = snd_soc_component_get_drvdata(codec); in afg_power_ev() local
876 regmap_update_bits(cx2072x->regmap, CX2072X_DIGITAL_BIOS_TEST0, in afg_power_ev()
881 regmap_update_bits(cx2072x->regmap, CX2072X_DIGITAL_BIOS_TEST0, in afg_power_ev()
918 struct cx2072x_priv *cx2072x = snd_soc_component_get_drvdata(codec); in cx2072x_hw_params() local
933 if (cx2072x->mclk_rate == 0) { in cx2072x_hw_params()
938 if (cx2072x->bclk_ratio) in cx2072x_hw_params()
939 frame_size = cx2072x->bclk_ratio; in cx2072x_hw_params()
958 cx2072x->frame_size = frame_size; in cx2072x_hw_params()
959 cx2072x->sample_size = sample_size; in cx2072x_hw_params()
960 cx2072x->sample_rate = sample_rate; in cx2072x_hw_params()
963 cx2072x->en_aec_ref = true; in cx2072x_hw_params()
964 dev_dbg(cx2072x->dev, "enables aec reference\n"); in cx2072x_hw_params()
965 regmap_write(cx2072x->regmap, in cx2072x_hw_params()
969 if (cx2072x->pll_changed) { in cx2072x_hw_params()
970 cx2072x_config_pll(cx2072x); in cx2072x_hw_params()
971 cx2072x->pll_changed = false; in cx2072x_hw_params()
974 if (cx2072x->i2spcm_changed) { in cx2072x_hw_params()
975 cx2072x_config_i2spcm(cx2072x); in cx2072x_hw_params()
976 cx2072x->i2spcm_changed = false; in cx2072x_hw_params()
986 struct cx2072x_priv *cx2072x = snd_soc_component_get_drvdata(codec); in cx2072x_set_dai_bclk_ratio() local
988 cx2072x->bclk_ratio = ratio; in cx2072x_set_dai_bclk_ratio()
996 struct cx2072x_priv *cx2072x = snd_soc_component_get_drvdata(codec); in cx2072x_set_dai_sysclk() local
998 if (clk_set_rate(cx2072x->mclk, freq)) { in cx2072x_set_dai_sysclk()
1003 cx2072x->mclk_rate = freq; in cx2072x_set_dai_sysclk()
1010 struct cx2072x_priv *cx2072x = snd_soc_component_get_drvdata(codec); in cx2072x_set_dai_fmt() local
1050 cx2072x->dai_fmt = fmt; in cx2072x_set_dai_fmt()
1354 struct cx2072x_priv *cx2072x = snd_soc_component_get_drvdata(codec); in cx2072x_set_bias_level() local
1359 regmap_write(cx2072x->regmap, CX2072X_AFG_POWER_STATE, 0); in cx2072x_set_bias_level()
1361 regmap_write(cx2072x->regmap, CX2072X_AFG_POWER_STATE, 3); in cx2072x_set_bias_level()
1376 struct cx2072x_priv *cx2072x = snd_soc_component_get_drvdata(codec); in cx2072x_enable_jack_detect() local
1380 regmap_write(cx2072x->regmap, CX2072X_GPIO_STICKY_MASK, 0x1f); in cx2072x_enable_jack_detect()
1383 regmap_write(cx2072x->regmap, CX2072X_UM_INTERRUPT_CRTL_E, 0x12 << 24); in cx2072x_enable_jack_detect()
1386 regmap_write(cx2072x->regmap, CX2072X_PORTA_UNSOLICITED_RESPONSE, 0x80); in cx2072x_enable_jack_detect()
1389 regmap_write(cx2072x->regmap, CX2072X_DIGITAL_TEST15, 0x73); in cx2072x_enable_jack_detect()
1392 regmap_write(cx2072x->regmap, CX2072X_ANALOG_TEST12, 0x300); in cx2072x_enable_jack_detect()
1395 regmap_write(cx2072x->regmap, CX2072X_DIGITAL_TEST1, 0); in cx2072x_enable_jack_detect()
1408 struct cx2072x_priv *cx2072x = snd_soc_component_get_drvdata(codec); in cx2072x_disable_jack_detect() local
1410 regmap_write(cx2072x->regmap, CX2072X_UM_INTERRUPT_CRTL_E, 0); in cx2072x_disable_jack_detect()
1411 regmap_write(cx2072x->regmap, CX2072X_PORTA_UNSOLICITED_RESPONSE, 0); in cx2072x_disable_jack_detect()
1417 struct cx2072x_priv *cx2072x = snd_soc_component_get_drvdata(codec); in cx2072x_jack_status_check() local
1422 mutex_lock(&cx2072x->lock); in cx2072x_jack_status_check()
1424 regmap_read(cx2072x->regmap, CX2072X_PORTA_PIN_SENSE, &jack); in cx2072x_jack_status_check()
1426 regmap_read(cx2072x->regmap, CX2072X_DIGITAL_TEST11, &type); in cx2072x_jack_status_check()
1446 regmap_write(cx2072x->regmap, CX2072X_UM_INTERRUPT_CRTL_E, 0x12 << 24); in cx2072x_jack_status_check()
1448 mutex_unlock(&cx2072x->lock); in cx2072x_jack_status_check()
1466 struct cx2072x_priv *cx2072x = snd_soc_component_get_drvdata(codec); in cx2072x_set_jack() local
1474 if (!cx2072x->jack_gpio.gpiod_dev) { in cx2072x_set_jack()
1475 cx2072x->jack_gpio = cx2072x_jack_gpio; in cx2072x_set_jack()
1476 cx2072x->jack_gpio.gpiod_dev = codec->dev; in cx2072x_set_jack()
1477 cx2072x->jack_gpio.data = codec; in cx2072x_set_jack()
1478 err = snd_soc_jack_add_gpios(jack, 1, &cx2072x->jack_gpio); in cx2072x_set_jack()
1480 cx2072x->jack_gpio.gpiod_dev = NULL; in cx2072x_set_jack()
1491 struct cx2072x_priv *cx2072x = snd_soc_component_get_drvdata(codec); in cx2072x_probe() local
1493 cx2072x->codec = codec; in cx2072x_probe()
1505 regmap_write(cx2072x->regmap, CX2072X_AFG_POWER_STATE, 0); in cx2072x_probe()
1507 regmap_multi_reg_write(cx2072x->regmap, cx2072x_reg_init, in cx2072x_probe()
1511 regmap_update_bits(cx2072x->regmap, CX2072X_PORTC_PIN_CTRL, in cx2072x_probe()
1514 regmap_update_bits(cx2072x->regmap, CX2072X_DIGITAL_BIOS_TEST2, in cx2072x_probe()
1517 regmap_write(cx2072x->regmap, CX2072X_AFG_POWER_STATE, 3); in cx2072x_probe()
1547 struct cx2072x_priv *cx2072x = in cx2072x_dsp_dai_probe() local
1550 cx2072x->en_aec_ref = true; in cx2072x_dsp_dai_probe()
1619 struct cx2072x_priv *cx2072x = dev_get_drvdata(dev); in cx2072x_runtime_suspend() local
1621 clk_disable_unprepare(cx2072x->mclk); in cx2072x_runtime_suspend()
1627 struct cx2072x_priv *cx2072x = dev_get_drvdata(dev); in cx2072x_runtime_resume() local
1629 return clk_prepare_enable(cx2072x->mclk); in cx2072x_runtime_resume()
1635 struct cx2072x_priv *cx2072x; in cx2072x_i2c_probe() local
1639 cx2072x = devm_kzalloc(&i2c->dev, sizeof(struct cx2072x_priv), in cx2072x_i2c_probe()
1641 if (!cx2072x) in cx2072x_i2c_probe()
1644 cx2072x->regmap = devm_regmap_init(&i2c->dev, NULL, i2c, in cx2072x_i2c_probe()
1646 if (IS_ERR(cx2072x->regmap)) in cx2072x_i2c_probe()
1647 return PTR_ERR(cx2072x->regmap); in cx2072x_i2c_probe()
1649 mutex_init(&cx2072x->lock); in cx2072x_i2c_probe()
1651 i2c_set_clientdata(i2c, cx2072x); in cx2072x_i2c_probe()
1653 cx2072x->dev = &i2c->dev; in cx2072x_i2c_probe()
1654 cx2072x->pll_changed = true; in cx2072x_i2c_probe()
1655 cx2072x->i2spcm_changed = true; in cx2072x_i2c_probe()
1656 cx2072x->bclk_ratio = 0; in cx2072x_i2c_probe()
1658 cx2072x->mclk = devm_clk_get(cx2072x->dev, "mclk"); in cx2072x_i2c_probe()
1659 if (IS_ERR(cx2072x->mclk)) { in cx2072x_i2c_probe()
1660 dev_err(cx2072x->dev, "Failed to get MCLK\n"); in cx2072x_i2c_probe()
1661 return PTR_ERR(cx2072x->mclk); in cx2072x_i2c_probe()
1664 regmap_read(cx2072x->regmap, CX2072X_VENDOR_ID, &ven_id); in cx2072x_i2c_probe()
1665 regmap_read(cx2072x->regmap, CX2072X_REVISION_ID, &rev_id); in cx2072x_i2c_probe()
1667 dev_info(cx2072x->dev, "codec version: %08x,%08x\n", ven_id, rev_id); in cx2072x_i2c_probe()
1669 ret = devm_snd_soc_register_component(cx2072x->dev, in cx2072x_i2c_probe()
1676 pm_runtime_use_autosuspend(cx2072x->dev); in cx2072x_i2c_probe()
1677 pm_runtime_enable(cx2072x->dev); in cx2072x_i2c_probe()