Lines Matching +full:rk3036 +full:- +full:codec

1 // SPDX-License-Identifier: GPL-2.0-only
3 * Driver of Inno codec for rk3036 by Rockchip Inc.
6 * Author: Zheng ShunQian<zhengsq@rock-chips.com>
11 #include <sound/soc-dapm.h>
12 #include <sound/soc-dai.h>
34 static const DECLARE_TLV_DB_MINMAX(rk3036_codec_hp_tlv, -39, 0);
39 uinfo->type = SNDRV_CTL_ELEM_TYPE_BOOLEAN; in rk3036_codec_antipop_info()
40 uinfo->count = 2; in rk3036_codec_antipop_info()
41 uinfo->value.integer.min = 0; in rk3036_codec_antipop_info()
42 uinfo->value.integer.max = 1; in rk3036_codec_antipop_info()
56 ucontrol->value.integer.value[0] = val; in rk3036_codec_antipop_get()
60 ucontrol->value.integer.value[1] = val; in rk3036_codec_antipop_get()
71 val = (ucontrol->value.integer.value[0] ? in rk3036_codec_antipop_put()
74 val |= (ucontrol->value.integer.value[1] ? in rk3036_codec_antipop_put()
102 SOC_RK3036_CODEC_ANTIPOP_DECL("Anti-pop Switch"),
198 struct snd_soc_component *component = dai->component; in rk3036_codec_dai_set_fmt()
201 dev_dbg(component->dev, "rk3036_codec dai set fmt : %08x\n", fmt); in rk3036_codec_dai_set_fmt()
213 dev_err(component->dev, "invalid fmt\n"); in rk3036_codec_dai_set_fmt()
214 return -EINVAL; in rk3036_codec_dai_set_fmt()
231 dev_err(component->dev, "set dai format failed\n"); in rk3036_codec_dai_set_fmt()
232 return -EINVAL; in rk3036_codec_dai_set_fmt()
253 dev_err(component->dev, "set dai format failed\n"); in rk3036_codec_dai_set_fmt()
254 return -EINVAL; in rk3036_codec_dai_set_fmt()
270 struct snd_soc_component *component = dai->component; in rk3036_codec_dai_hw_params()
287 return -EINVAL; in rk3036_codec_dai_hw_params()
319 .name = "rk3036-codec-dai",
404 struct device_node *of_node = pdev->dev.of_node; in rk3036_codec_platform_probe()
409 priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL); in rk3036_codec_platform_probe()
411 return -ENOMEM; in rk3036_codec_platform_probe()
417 priv->base = base; in rk3036_codec_platform_probe()
418 priv->regmap = devm_regmap_init_mmio(&pdev->dev, priv->base, in rk3036_codec_platform_probe()
420 if (IS_ERR(priv->regmap)) { in rk3036_codec_platform_probe()
421 dev_err(&pdev->dev, "init regmap failed\n"); in rk3036_codec_platform_probe()
422 return PTR_ERR(priv->regmap); in rk3036_codec_platform_probe()
427 dev_err(&pdev->dev, "needs 'rockchip,grf' property\n"); in rk3036_codec_platform_probe()
432 dev_err(&pdev->dev, "Could not write to GRF: %d\n", ret); in rk3036_codec_platform_probe()
436 priv->pclk = devm_clk_get(&pdev->dev, "acodec_pclk"); in rk3036_codec_platform_probe()
437 if (IS_ERR(priv->pclk)) in rk3036_codec_platform_probe()
438 return PTR_ERR(priv->pclk); in rk3036_codec_platform_probe()
440 ret = clk_prepare_enable(priv->pclk); in rk3036_codec_platform_probe()
442 dev_err(&pdev->dev, "failed to enable clk\n"); in rk3036_codec_platform_probe()
446 priv->dev = &pdev->dev; in rk3036_codec_platform_probe()
447 dev_set_drvdata(&pdev->dev, priv); in rk3036_codec_platform_probe()
449 ret = devm_snd_soc_register_component(&pdev->dev, &rk3036_codec_driver, in rk3036_codec_platform_probe()
453 clk_disable_unprepare(priv->pclk); in rk3036_codec_platform_probe()
454 dev_set_drvdata(&pdev->dev, NULL); in rk3036_codec_platform_probe()
462 struct rk3036_codec_priv *priv = dev_get_drvdata(&pdev->dev); in rk3036_codec_platform_remove()
464 clk_disable_unprepare(priv->pclk); in rk3036_codec_platform_remove()
468 { .compatible = "rockchip,rk3036-codec", },
475 .name = "rk3036-codec-platform",
485 MODULE_DESCRIPTION("Rockchip rk3036 codec driver");