Lines Matching defs:rk3328

3 // rk3328 ALSA SoC Audio driver
57 static int rk3328_codec_reset(struct rk3328_codec_priv *rk3328)
59 regmap_write(rk3328->regmap, CODEC_RESET, 0x00);
61 regmap_write(rk3328->regmap, CODEC_RESET, 0x03);
68 struct rk3328_codec_priv *rk3328 =
83 regmap_update_bits(rk3328->regmap, DAC_INIT_CTRL1,
104 regmap_update_bits(rk3328->regmap, DAC_INIT_CTRL2,
112 struct rk3328_codec_priv *rk3328 =
121 regmap_update_bits(rk3328->regmap, HPOUT_CTRL,
127 static int rk3328_codec_power_on(struct rk3328_codec_priv *rk3328, int wait_ms)
129 regmap_update_bits(rk3328->regmap, DAC_PRECHARGE_CTRL,
132 regmap_update_bits(rk3328->regmap, DAC_PRECHARGE_CTRL,
140 static int rk3328_codec_power_off(struct rk3328_codec_priv *rk3328, int wait_ms)
142 regmap_update_bits(rk3328->regmap, DAC_PRECHARGE_CTRL,
145 regmap_update_bits(rk3328->regmap, DAC_PRECHARGE_CTRL,
182 static int rk3328_codec_open_playback(struct rk3328_codec_priv *rk3328)
186 regmap_update_bits(rk3328->regmap, DAC_PRECHARGE_CTRL,
191 regmap_update_bits(rk3328->regmap,
198 msleep(rk3328->spk_depop_time);
199 gpiod_set_value(rk3328->mute, 0);
201 regmap_update_bits(rk3328->regmap, HPOUTL_GAIN_CTRL,
203 regmap_update_bits(rk3328->regmap, HPOUTR_GAIN_CTRL,
236 static int rk3328_codec_close_playback(struct rk3328_codec_priv *rk3328)
240 gpiod_set_value(rk3328->mute, 1);
242 regmap_update_bits(rk3328->regmap, HPOUTL_GAIN_CTRL,
244 regmap_update_bits(rk3328->regmap, HPOUTR_GAIN_CTRL,
248 regmap_update_bits(rk3328->regmap,
256 rk3328_codec_reset(rk3328);
258 regmap_update_bits(rk3328->regmap, DAC_PRECHARGE_CTRL,
269 struct rk3328_codec_priv *rk3328 =
289 regmap_update_bits(rk3328->regmap, DAC_INIT_CTRL2, DAC_VDL_MASK, val);
292 regmap_update_bits(rk3328->regmap, DAC_INIT_CTRL3,
301 struct rk3328_codec_priv *rk3328 =
304 return rk3328_codec_open_playback(rk3328);
310 struct rk3328_codec_priv *rk3328 =
313 rk3328_codec_close_playback(rk3328);
327 .name = "rk3328-hifi",
355 struct rk3328_codec_priv *rk3328 =
358 rk3328_codec_reset(rk3328);
359 rk3328_codec_power_on(rk3328, 0);
366 struct rk3328_codec_priv *rk3328 =
369 rk3328_codec_close_playback(rk3328);
370 rk3328_codec_power_off(rk3328, 0);
426 struct rk3328_codec_priv *rk3328;
431 rk3328 = devm_kzalloc(&pdev->dev, sizeof(*rk3328), GFP_KERNEL);
432 if (!rk3328)
446 &rk3328->spk_depop_time);
449 rk3328->spk_depop_time = 200;
452 rk3328->mute = gpiod_get_optional(&pdev->dev, "mute", GPIOD_OUT_HIGH);
453 if (IS_ERR(rk3328->mute))
454 return PTR_ERR(rk3328->mute);
460 if (!rk3328->mute && of_machine_is_compatible("pine64,rock64")) {
465 rk3328->mclk = devm_clk_get(&pdev->dev, "mclk");
466 if (IS_ERR(rk3328->mclk))
467 return PTR_ERR(rk3328->mclk);
469 ret = clk_prepare_enable(rk3328->mclk);
472 clk_set_rate(rk3328->mclk, INITIAL_FREQ);
474 rk3328->pclk = devm_clk_get(&pdev->dev, "pclk");
475 if (IS_ERR(rk3328->pclk)) {
477 ret = PTR_ERR(rk3328->pclk);
481 ret = clk_prepare_enable(rk3328->pclk);
493 rk3328->regmap = devm_regmap_init_mmio(&pdev->dev, base,
495 if (IS_ERR(rk3328->regmap)) {
496 ret = PTR_ERR(rk3328->regmap);
500 platform_set_drvdata(pdev, rk3328);
511 clk_disable_unprepare(rk3328->pclk);
514 clk_disable_unprepare(rk3328->mclk);
519 { .compatible = "rockchip,rk3328-codec", },
526 .name = "rk3328-codec",
534 MODULE_DESCRIPTION("ASoC rk3328 codec driver");