Lines Matching refs:rk3328

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