Lines Matching refs:rcd

224 	struct rk_codec_digital_priv *rcd = snd_soc_component_get_drvdata(component);  in rk_codec_digital_dac_pa_get()  local
226 if (!rcd->pa_ctl) in rk_codec_digital_dac_pa_get()
229 ucontrol->value.enumerated.item[0] = gpiod_get_value(rcd->pa_ctl); in rk_codec_digital_dac_pa_get()
238 struct rk_codec_digital_priv *rcd = snd_soc_component_get_drvdata(component); in rk_codec_digital_dac_pa_put() local
240 if (!rcd->pa_ctl) in rk_codec_digital_dac_pa_put()
243 gpiod_set_value(rcd->pa_ctl, ucontrol->value.enumerated.item[0]); in rk_codec_digital_dac_pa_put()
290 static void rk_codec_digital_reset(struct rk_codec_digital_priv *rcd) in rk_codec_digital_reset() argument
292 if (IS_ERR(rcd->rc)) in rk_codec_digital_reset()
295 reset_control_assert(rcd->rc); in rk_codec_digital_reset()
297 reset_control_deassert(rcd->rc); in rk_codec_digital_reset()
343 static void rk_codec_digital_enable_clk_adc(struct rk_codec_digital_priv *rcd) in rk_codec_digital_enable_clk_adc() argument
345 regmap_update_bits(rcd->regmap, ADCCLKCTRL, in rk_codec_digital_enable_clk_adc()
360 static void rk_codec_digital_enable_clk_dac(struct rk_codec_digital_priv *rcd) in rk_codec_digital_enable_clk_dac() argument
362 regmap_update_bits(rcd->regmap, DACCLKCTRL, in rk_codec_digital_enable_clk_dac()
375 static int rk_codec_digital_set_clk_sync(struct rk_codec_digital_priv *rcd, in rk_codec_digital_set_clk_sync() argument
385 clk_set_rate(rcd->clk_adc, mclk); in rk_codec_digital_set_clk_sync()
386 clk_set_rate(rcd->clk_dac, mclk); in rk_codec_digital_set_clk_sync()
389 regmap_update_bits(rcd->regmap, SYSCTRL0, in rk_codec_digital_set_clk_sync()
395 regmap_update_bits(rcd->regmap, ADCINT_DIV, in rk_codec_digital_set_clk_sync()
398 regmap_update_bits(rcd->regmap, DACINT_DIV, in rk_codec_digital_set_clk_sync()
402 rk_codec_digital_enable_clk_adc(rcd); in rk_codec_digital_set_clk_sync()
403 rk_codec_digital_enable_clk_dac(rcd); in rk_codec_digital_set_clk_sync()
405 regmap_update_bits(rcd->regmap, DACSCLKRXINT_DIV, in rk_codec_digital_set_clk_sync()
408 regmap_update_bits(rcd->regmap, I2S_CKR0, in rk_codec_digital_set_clk_sync()
411 regmap_update_bits(rcd->regmap, ADCSCLKTXINT_DIV, in rk_codec_digital_set_clk_sync()
414 regmap_update_bits(rcd->regmap, I2S_CKR0, in rk_codec_digital_set_clk_sync()
421 static int rk_codec_digital_set_clk(struct rk_codec_digital_priv *rcd, in rk_codec_digital_set_clk() argument
436 if (rcd->sync) in rk_codec_digital_set_clk()
437 return rk_codec_digital_set_clk_sync(rcd, mclk, sclk, bclk); in rk_codec_digital_set_clk()
440 clk_set_rate(rcd->clk_dac, mclk); in rk_codec_digital_set_clk()
442 regmap_update_bits(rcd->regmap, DACINT_DIV, in rk_codec_digital_set_clk()
446 rk_codec_digital_enable_clk_dac(rcd); in rk_codec_digital_set_clk()
448 regmap_update_bits(rcd->regmap, DACSCLKRXINT_DIV, in rk_codec_digital_set_clk()
451 regmap_update_bits(rcd->regmap, I2S_CKR0, in rk_codec_digital_set_clk()
455 clk_set_rate(rcd->clk_adc, mclk); in rk_codec_digital_set_clk()
457 regmap_update_bits(rcd->regmap, ADCINT_DIV, in rk_codec_digital_set_clk()
461 rk_codec_digital_enable_clk_adc(rcd); in rk_codec_digital_set_clk()
462 regmap_update_bits(rcd->regmap, ADCSCLKTXINT_DIV, in rk_codec_digital_set_clk()
465 regmap_update_bits(rcd->regmap, I2S_CKR0, in rk_codec_digital_set_clk()
476 struct rk_codec_digital_priv *rcd = in rk_codec_digital_set_dai_fmt() local
481 regmap_update_bits(rcd->regmap, I2S_CKR1, in rk_codec_digital_set_dai_fmt()
514 regmap_update_bits(rcd->regmap, I2S_CKR1, mask, val); in rk_codec_digital_set_dai_fmt()
519 static int rk_codec_digital_enable_sync(struct rk_codec_digital_priv *rcd) in rk_codec_digital_enable_sync() argument
521 regmap_update_bits(rcd->regmap, I2S_XFER, in rk_codec_digital_enable_sync()
527 regmap_update_bits(rcd->regmap, SYSCTRL0, in rk_codec_digital_enable_sync()
531 regmap_update_bits(rcd->regmap, ADCDIGEN, in rk_codec_digital_enable_sync()
539 regmap_update_bits(rcd->regmap, DACDIGEN, in rk_codec_digital_enable_sync()
548 static int rk_codec_digital_disable_sync(struct rk_codec_digital_priv *rcd) in rk_codec_digital_disable_sync() argument
550 regmap_update_bits(rcd->regmap, I2S_XFER, in rk_codec_digital_disable_sync()
556 regmap_update_bits(rcd->regmap, I2S_CLR, in rk_codec_digital_disable_sync()
562 regmap_update_bits(rcd->regmap, SYSCTRL0, in rk_codec_digital_disable_sync()
566 regmap_update_bits(rcd->regmap, ADCDIGEN, in rk_codec_digital_disable_sync()
574 regmap_update_bits(rcd->regmap, DACDIGEN, in rk_codec_digital_disable_sync()
587 struct rk_codec_digital_priv *rcd = in rk_codec_digital_hw_params() local
591 rk_codec_digital_set_clk(rcd, substream, params_rate(params)); in rk_codec_digital_hw_params()
624 regmap_update_bits(rcd->regmap, DACCFG1, in rk_codec_digital_hw_params()
640 regmap_update_bits(rcd->regmap, I2S_RXCR0, in rk_codec_digital_hw_params()
643 if (rcd->pwmout) in rk_codec_digital_hw_params()
644 regmap_update_bits(rcd->regmap, DACPWM_CTRL, in rk_codec_digital_hw_params()
682 regmap_update_bits(rcd->regmap, ADCCFG1, in rk_codec_digital_hw_params()
698 regmap_update_bits(rcd->regmap, I2S_TXCR0, in rk_codec_digital_hw_params()
713 regmap_update_bits(rcd->regmap, I2S_TXCR1, in rk_codec_digital_hw_params()
717 if (rcd->sync) in rk_codec_digital_hw_params()
718 return rk_codec_digital_enable_sync(rcd); in rk_codec_digital_hw_params()
721 regmap_update_bits(rcd->regmap, I2S_XFER, in rk_codec_digital_hw_params()
724 regmap_update_bits(rcd->regmap, DACDIGEN, in rk_codec_digital_hw_params()
730 regmap_update_bits(rcd->regmap, I2S_XFER, in rk_codec_digital_hw_params()
733 regmap_update_bits(rcd->regmap, ADCDIGEN, in rk_codec_digital_hw_params()
748 struct rk_codec_digital_priv *rcd = in rk_codec_digital_pcm_startup() local
751 if (rcd->pa_ctl) { in rk_codec_digital_pcm_startup()
752 gpiod_set_value_cansleep(rcd->pa_ctl, 1); in rk_codec_digital_pcm_startup()
753 if (rcd->pa_ctl_delay_ms) in rk_codec_digital_pcm_startup()
754 msleep(rcd->pa_ctl_delay_ms); in rk_codec_digital_pcm_startup()
763 struct rk_codec_digital_priv *rcd = in rk_codec_digital_pcm_shutdown() local
766 if (rcd->pa_ctl) in rk_codec_digital_pcm_shutdown()
767 gpiod_set_value_cansleep(rcd->pa_ctl, 0); in rk_codec_digital_pcm_shutdown()
769 if (rcd->sync) { in rk_codec_digital_pcm_shutdown()
771 rk_codec_digital_disable_sync(rcd); in rk_codec_digital_pcm_shutdown()
772 rk_codec_digital_reset(rcd); in rk_codec_digital_pcm_shutdown()
779 if (rcd->pwmout) in rk_codec_digital_pcm_shutdown()
780 regmap_update_bits(rcd->regmap, DACPWM_CTRL, in rk_codec_digital_pcm_shutdown()
785 regmap_update_bits(rcd->regmap, I2S_XFER, in rk_codec_digital_pcm_shutdown()
788 regmap_update_bits(rcd->regmap, I2S_CLR, in rk_codec_digital_pcm_shutdown()
791 regmap_update_bits(rcd->regmap, DACDIGEN, in rk_codec_digital_pcm_shutdown()
797 regmap_update_bits(rcd->regmap, I2S_XFER, in rk_codec_digital_pcm_shutdown()
800 regmap_update_bits(rcd->regmap, I2S_CLR, in rk_codec_digital_pcm_shutdown()
804 regmap_update_bits(rcd->regmap, ADCDIGEN, in rk_codec_digital_pcm_shutdown()
862 struct rk_codec_digital_priv *rcd = dev_get_drvdata(dev); in rk3568_soc_init() local
864 if (IS_ERR(rcd->grf)) in rk3568_soc_init()
865 return PTR_ERR(rcd->grf); in rk3568_soc_init()
868 return regmap_write(rcd->grf, RK3568_GRF_SOC_CON2, in rk3568_soc_init()
874 struct rk_codec_digital_priv *rcd = dev_get_drvdata(dev); in rk3568_soc_deinit() local
876 if (IS_ERR(rcd->grf)) in rk3568_soc_deinit()
879 regmap_write(rcd->grf, RK3568_GRF_SOC_CON2, (BIT(13) << 16)); in rk3568_soc_deinit()
889 struct rk_codec_digital_priv *rcd = dev_get_drvdata(dev); in rk3588_soc_init() local
891 if (IS_ERR(rcd->grf)) in rk3588_soc_init()
892 return PTR_ERR(rcd->grf); in rk3588_soc_init()
895 return regmap_write(rcd->grf, RK3588_GRF_SOC_CON6, in rk3588_soc_init()
901 struct rk_codec_digital_priv *rcd = dev_get_drvdata(dev); in rk3588_soc_deinit() local
903 if (IS_ERR(rcd->grf)) in rk3588_soc_deinit()
906 regmap_write(rcd->grf, RK3588_GRF_SOC_CON6, (BIT(11) << 16)); in rk3588_soc_deinit()
916 struct rk_codec_digital_priv *rcd = dev_get_drvdata(dev); in rv1106_soc_init() local
918 if (IS_ERR(rcd->grf)) in rv1106_soc_init()
919 return PTR_ERR(rcd->grf); in rv1106_soc_init()
922 return regmap_write(rcd->grf, RV1106_GRF_SOC_CON1, in rv1106_soc_init()
928 struct rk_codec_digital_priv *rcd = dev_get_drvdata(dev); in rv1106_soc_deinit() local
930 if (IS_ERR(rcd->grf)) in rv1106_soc_deinit()
933 regmap_write(rcd->grf, RV1106_GRF_SOC_CON1, (BIT(8) << 16)); in rv1106_soc_deinit()
943 struct rk_codec_digital_priv *rcd = dev_get_drvdata(dev); in rv1126_soc_init() local
945 if (IS_ERR(rcd->grf)) in rv1126_soc_init()
946 return PTR_ERR(rcd->grf); in rv1126_soc_init()
949 return regmap_write(rcd->grf, RV1126_GRF_SOC_CON2, in rv1126_soc_init()
955 struct rk_codec_digital_priv *rcd = dev_get_drvdata(dev); in rv1126_soc_deinit() local
957 if (IS_ERR(rcd->grf)) in rv1126_soc_deinit()
960 regmap_write(rcd->grf, RV1126_GRF_SOC_CON2, (BIT(13) << 16)); in rv1126_soc_deinit()
991 struct rk_codec_digital_priv *rcd = dev_get_drvdata(dev); in rk_codec_digital_runtime_resume() local
994 ret = clk_prepare_enable(rcd->pclk); in rk_codec_digital_runtime_resume()
998 regcache_cache_only(rcd->regmap, false); in rk_codec_digital_runtime_resume()
999 regcache_mark_dirty(rcd->regmap); in rk_codec_digital_runtime_resume()
1001 ret = regcache_sync(rcd->regmap); in rk_codec_digital_runtime_resume()
1005 ret = clk_prepare_enable(rcd->clk_adc); in rk_codec_digital_runtime_resume()
1009 ret = clk_prepare_enable(rcd->clk_dac); in rk_codec_digital_runtime_resume()
1013 ret = clk_prepare_enable(rcd->clk_i2c); in rk_codec_digital_runtime_resume()
1020 clk_disable_unprepare(rcd->clk_dac); in rk_codec_digital_runtime_resume()
1022 clk_disable_unprepare(rcd->clk_adc); in rk_codec_digital_runtime_resume()
1024 clk_disable_unprepare(rcd->pclk); in rk_codec_digital_runtime_resume()
1031 struct rk_codec_digital_priv *rcd = dev_get_drvdata(dev); in rk_codec_digital_runtime_suspend() local
1033 regcache_cache_only(rcd->regmap, true); in rk_codec_digital_runtime_suspend()
1034 clk_disable_unprepare(rcd->clk_adc); in rk_codec_digital_runtime_suspend()
1035 clk_disable_unprepare(rcd->clk_dac); in rk_codec_digital_runtime_suspend()
1036 clk_disable_unprepare(rcd->clk_i2c); in rk_codec_digital_runtime_suspend()
1037 clk_disable_unprepare(rcd->pclk); in rk_codec_digital_runtime_suspend()
1046 struct rk_codec_digital_priv *rcd; in rk_codec_digital_platform_probe() local
1051 rcd = devm_kzalloc(&pdev->dev, sizeof(*rcd), GFP_KERNEL); in rk_codec_digital_platform_probe()
1052 if (!rcd) in rk_codec_digital_platform_probe()
1055 rcd->grf = syscon_regmap_lookup_by_phandle(np, "rockchip,grf"); in rk_codec_digital_platform_probe()
1056 rcd->pwmout = of_property_read_bool(np, "rockchip,pwm-output-mode"); in rk_codec_digital_platform_probe()
1057 rcd->sync = of_property_read_bool(np, "rockchip,clk-sync-mode"); in rk_codec_digital_platform_probe()
1059 &rcd->pa_ctl_delay_ms)) in rk_codec_digital_platform_probe()
1060 rcd->pa_ctl_delay_ms = 0; in rk_codec_digital_platform_probe()
1062 rcd->rc = devm_reset_control_get(&pdev->dev, "reset"); in rk_codec_digital_platform_probe()
1065 rcd->clk_adc = devm_clk_get_optional(&pdev->dev, "adc"); in rk_codec_digital_platform_probe()
1066 if (IS_ERR(rcd->clk_adc)) in rk_codec_digital_platform_probe()
1067 return PTR_ERR(rcd->clk_adc); in rk_codec_digital_platform_probe()
1069 rcd->clk_dac = devm_clk_get(&pdev->dev, "dac"); in rk_codec_digital_platform_probe()
1070 if (IS_ERR(rcd->clk_dac)) in rk_codec_digital_platform_probe()
1071 return PTR_ERR(rcd->clk_dac); in rk_codec_digital_platform_probe()
1074 rcd->clk_i2c = devm_clk_get_optional(&pdev->dev, "i2c"); in rk_codec_digital_platform_probe()
1075 if (IS_ERR(rcd->clk_i2c)) in rk_codec_digital_platform_probe()
1076 return PTR_ERR(rcd->clk_i2c); in rk_codec_digital_platform_probe()
1078 rcd->pclk = devm_clk_get(&pdev->dev, "pclk"); in rk_codec_digital_platform_probe()
1079 if (IS_ERR(rcd->pclk)) in rk_codec_digital_platform_probe()
1080 return PTR_ERR(rcd->pclk); in rk_codec_digital_platform_probe()
1087 rcd->regmap = in rk_codec_digital_platform_probe()
1089 if (IS_ERR(rcd->regmap)) in rk_codec_digital_platform_probe()
1090 return PTR_ERR(rcd->regmap); in rk_codec_digital_platform_probe()
1092 platform_set_drvdata(pdev, rcd); in rk_codec_digital_platform_probe()
1094 rcd->data = of_device_get_match_data(&pdev->dev); in rk_codec_digital_platform_probe()
1095 if (rcd->data && rcd->data->init) { in rk_codec_digital_platform_probe()
1096 ret = rcd->data->init(&pdev->dev); in rk_codec_digital_platform_probe()
1108 if (rcd->pwmout) in rk_codec_digital_platform_probe()
1109 regmap_update_bits(rcd->regmap, DACPWM_CTRL, in rk_codec_digital_platform_probe()
1113 rcd->pa_ctl = devm_gpiod_get_optional(&pdev->dev, "pa-ctl", in rk_codec_digital_platform_probe()
1116 if (!rcd->pa_ctl) { in rk_codec_digital_platform_probe()
1118 } else if (IS_ERR(rcd->pa_ctl)) { in rk_codec_digital_platform_probe()
1119 ret = PTR_ERR(rcd->pa_ctl); in rk_codec_digital_platform_probe()
1138 if (rcd->data && rcd->data->deinit) in rk_codec_digital_platform_probe()
1139 rcd->data->deinit(&pdev->dev); in rk_codec_digital_platform_probe()
1146 struct rk_codec_digital_priv *rcd = dev_get_drvdata(&pdev->dev); in rk_codec_digital_platform_remove() local
1152 if (rcd->data && rcd->data->deinit) in rk_codec_digital_platform_remove()
1153 rcd->data->deinit(&pdev->dev); in rk_codec_digital_platform_remove()