Lines Matching defs:rk3328

3 // rk3328 ALSA SoC Audio driver
56 static int rk3328_codec_reset(struct rk3328_codec_priv *rk3328)
58 regmap_write(rk3328->regmap, CODEC_RESET, 0x00);
60 regmap_write(rk3328->regmap, CODEC_RESET, 0x03);
67 struct rk3328_codec_priv *rk3328 =
82 regmap_update_bits(rk3328->regmap, DAC_INIT_CTRL1,
103 regmap_update_bits(rk3328->regmap, DAC_INIT_CTRL2,
111 struct rk3328_codec_priv *rk3328 =
120 regmap_update_bits(rk3328->regmap, HPOUT_CTRL,
126 static int rk3328_codec_power_on(struct rk3328_codec_priv *rk3328, int wait_ms)
128 regmap_update_bits(rk3328->regmap, DAC_PRECHARGE_CTRL,
131 regmap_update_bits(rk3328->regmap, DAC_PRECHARGE_CTRL,
139 static int rk3328_codec_power_off(struct rk3328_codec_priv *rk3328, int wait_ms)
141 regmap_update_bits(rk3328->regmap, DAC_PRECHARGE_CTRL,
144 regmap_update_bits(rk3328->regmap, DAC_PRECHARGE_CTRL,
181 static int rk3328_codec_open_playback(struct rk3328_codec_priv *rk3328)
185 regmap_update_bits(rk3328->regmap, DAC_PRECHARGE_CTRL,
190 regmap_update_bits(rk3328->regmap,
197 msleep(rk3328->spk_depop_time);
198 gpiod_set_value(rk3328->mute, 0);
200 regmap_update_bits(rk3328->regmap, HPOUTL_GAIN_CTRL,
202 regmap_update_bits(rk3328->regmap, HPOUTR_GAIN_CTRL,
235 static int rk3328_codec_close_playback(struct rk3328_codec_priv *rk3328)
239 gpiod_set_value(rk3328->mute, 1);
241 regmap_update_bits(rk3328->regmap, HPOUTL_GAIN_CTRL,
243 regmap_update_bits(rk3328->regmap, HPOUTR_GAIN_CTRL,
247 regmap_update_bits(rk3328->regmap,
255 rk3328_codec_reset(rk3328);
257 regmap_update_bits(rk3328->regmap, DAC_PRECHARGE_CTRL,
268 struct rk3328_codec_priv *rk3328 =
288 regmap_update_bits(rk3328->regmap, DAC_INIT_CTRL2, DAC_VDL_MASK, val);
291 regmap_update_bits(rk3328->regmap, DAC_INIT_CTRL3,
300 struct rk3328_codec_priv *rk3328 =
303 return rk3328_codec_open_playback(rk3328);
309 struct rk3328_codec_priv *rk3328 =
312 rk3328_codec_close_playback(rk3328);
326 .name = "rk3328-hifi",
354 struct rk3328_codec_priv *rk3328 =
357 rk3328_codec_reset(rk3328);
358 rk3328_codec_power_on(rk3328, 0);
365 struct rk3328_codec_priv *rk3328 =
368 rk3328_codec_close_playback(rk3328);
369 rk3328_codec_power_off(rk3328, 0);
425 struct rk3328_codec_priv *rk3328;
430 rk3328 = devm_kzalloc(&pdev->dev, sizeof(*rk3328), GFP_KERNEL);
431 if (!rk3328)
445 &rk3328->spk_depop_time);
448 rk3328->spk_depop_time = 200;
451 rk3328->mute = gpiod_get_optional(&pdev->dev, "mute", GPIOD_OUT_HIGH);
452 if (IS_ERR(rk3328->mute))
453 return PTR_ERR(rk3328->mute);
459 if (!rk3328->mute && of_machine_is_compatible("pine64,rock64")) {
464 rk3328->mclk = devm_clk_get(&pdev->dev, "mclk");
465 if (IS_ERR(rk3328->mclk))
466 return PTR_ERR(rk3328->mclk);
468 ret = clk_prepare_enable(rk3328->mclk);
471 clk_set_rate(rk3328->mclk, INITIAL_FREQ);
473 rk3328->pclk = devm_clk_get(&pdev->dev, "pclk");
474 if (IS_ERR(rk3328->pclk)) {
476 ret = PTR_ERR(rk3328->pclk);
480 ret = clk_prepare_enable(rk3328->pclk);
492 rk3328->regmap = devm_regmap_init_mmio(&pdev->dev, base,
494 if (IS_ERR(rk3328->regmap)) {
495 ret = PTR_ERR(rk3328->regmap);
499 platform_set_drvdata(pdev, rk3328);
510 clk_disable_unprepare(rk3328->pclk);
513 clk_disable_unprepare(rk3328->mclk);
518 { .compatible = "rockchip,rk3328-codec", },
525 .name = "rk3328-codec",
533 MODULE_DESCRIPTION("ASoC rk3328 codec driver");