Lines Matching +full:clk +full:- +full:phase +full:-
1 // SPDX-License-Identifier: GPL-2.0-or-later
13 #include <linux/clk.h>
25 #include "sirf-audio-codec.h"
28 struct clk *clk; member
33 static const char * const input_mode_mux[] = {"Single-ended",
42 static const DECLARE_TLV_DB_SCALE(playback_vol_tlv, -12400, 100, 0);
45 0, 7, TLV_DB_SCALE_ITEM(-100, 100, 0),
122 struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm); in atlas6_codec_enable_and_reset_event()
126 enable_and_reset_codec(sirf_audio_codec->regmap, in atlas6_codec_enable_and_reset_event()
130 regmap_update_bits(sirf_audio_codec->regmap, in atlas6_codec_enable_and_reset_event()
145 struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm); in prima2_codec_enable_and_reset_event()
149 enable_and_reset_codec(sirf_audio_codec->regmap, in prima2_codec_enable_and_reset_event()
153 regmap_update_bits(sirf_audio_codec->regmap, in prima2_codec_enable_and_reset_event()
237 SND_SOC_DAPM_SUPPLY("HSL Phase Opposite", AUDIO_IC_CODEC_CTRL0,
264 {"DAC left", NULL, "HSL Phase Opposite"},
265 {"DAC right", NULL, "HSL Phase Opposite"},
277 {"Mic input mode mux", "Single-ended", "MICIN1"},
283 regmap_update_bits(sirf_audio_codec->regmap, AUDIO_PORT_IC_TXFIFO_OP, in sirf_audio_codec_tx_enable()
285 regmap_update_bits(sirf_audio_codec->regmap, AUDIO_PORT_IC_TXFIFO_OP, in sirf_audio_codec_tx_enable()
287 regmap_write(sirf_audio_codec->regmap, AUDIO_PORT_IC_TXFIFO_INT_MSK, 0); in sirf_audio_codec_tx_enable()
288 regmap_write(sirf_audio_codec->regmap, AUDIO_PORT_IC_TXFIFO_OP, 0); in sirf_audio_codec_tx_enable()
289 regmap_update_bits(sirf_audio_codec->regmap, AUDIO_PORT_IC_TXFIFO_OP, in sirf_audio_codec_tx_enable()
291 regmap_update_bits(sirf_audio_codec->regmap, in sirf_audio_codec_tx_enable()
297 regmap_write(sirf_audio_codec->regmap, AUDIO_PORT_IC_TXFIFO_OP, 0); in sirf_audio_codec_tx_disable()
298 regmap_update_bits(sirf_audio_codec->regmap, in sirf_audio_codec_tx_disable()
305 regmap_update_bits(sirf_audio_codec->regmap, AUDIO_PORT_IC_RXFIFO_OP, in sirf_audio_codec_rx_enable()
307 regmap_update_bits(sirf_audio_codec->regmap, AUDIO_PORT_IC_RXFIFO_OP, in sirf_audio_codec_rx_enable()
309 regmap_write(sirf_audio_codec->regmap, in sirf_audio_codec_rx_enable()
311 regmap_write(sirf_audio_codec->regmap, AUDIO_PORT_IC_RXFIFO_OP, 0); in sirf_audio_codec_rx_enable()
312 regmap_update_bits(sirf_audio_codec->regmap, AUDIO_PORT_IC_RXFIFO_OP, in sirf_audio_codec_rx_enable()
315 regmap_update_bits(sirf_audio_codec->regmap, in sirf_audio_codec_rx_enable()
319 regmap_update_bits(sirf_audio_codec->regmap, in sirf_audio_codec_rx_enable()
326 regmap_update_bits(sirf_audio_codec->regmap, in sirf_audio_codec_rx_disable()
335 struct snd_soc_component *component = dai->component; in sirf_audio_codec_trigger()
337 int playback = substream->stream == SNDRV_PCM_STREAM_PLAYBACK; in sirf_audio_codec_trigger()
363 substream->runtime->channels); in sirf_audio_codec_trigger()
366 return -EINVAL; in sirf_audio_codec_trigger()
377 .name = "sirf-audio-codec",
399 pm_runtime_enable(component->dev); in sirf_audio_codec_probe()
401 if (of_device_is_compatible(component->dev->of_node, "sirf,prima2-audio-codec")) { in sirf_audio_codec_probe()
411 if (of_device_is_compatible(component->dev->of_node, "sirf,atlas6-audio-codec")) { in sirf_audio_codec_probe()
422 return -EINVAL; in sirf_audio_codec_probe()
427 pm_runtime_disable(component->dev); in sirf_audio_codec_remove()
443 { .compatible = "sirf,prima2-audio-codec" },
444 { .compatible = "sirf,atlas6-audio-codec" },
463 sirf_audio_codec = devm_kzalloc(&pdev->dev, in sirf_audio_codec_driver_probe()
466 return -ENOMEM; in sirf_audio_codec_driver_probe()
474 sirf_audio_codec->regmap = devm_regmap_init_mmio(&pdev->dev, base, in sirf_audio_codec_driver_probe()
476 if (IS_ERR(sirf_audio_codec->regmap)) in sirf_audio_codec_driver_probe()
477 return PTR_ERR(sirf_audio_codec->regmap); in sirf_audio_codec_driver_probe()
479 sirf_audio_codec->clk = devm_clk_get(&pdev->dev, NULL); in sirf_audio_codec_driver_probe()
480 if (IS_ERR(sirf_audio_codec->clk)) { in sirf_audio_codec_driver_probe()
481 dev_err(&pdev->dev, "Get clock failed.\n"); in sirf_audio_codec_driver_probe()
482 return PTR_ERR(sirf_audio_codec->clk); in sirf_audio_codec_driver_probe()
485 ret = clk_prepare_enable(sirf_audio_codec->clk); in sirf_audio_codec_driver_probe()
487 dev_err(&pdev->dev, "Enable clock failed.\n"); in sirf_audio_codec_driver_probe()
491 ret = devm_snd_soc_register_component(&(pdev->dev), in sirf_audio_codec_driver_probe()
495 dev_err(&pdev->dev, "Register Audio Codec dai failed.\n"); in sirf_audio_codec_driver_probe()
503 regmap_update_bits(sirf_audio_codec->regmap, AUDIO_IC_CODEC_CTRL0, in sirf_audio_codec_driver_probe()
506 if (of_device_is_compatible(pdev->dev.of_node, "sirf,atlas6-audio-codec")) in sirf_audio_codec_driver_probe()
507 regmap_update_bits(sirf_audio_codec->regmap, in sirf_audio_codec_driver_probe()
512 clk_disable_unprepare(sirf_audio_codec->clk); in sirf_audio_codec_driver_probe()
520 clk_disable_unprepare(sirf_audio_codec->clk); in sirf_audio_codec_driver_remove()
530 regmap_read(sirf_audio_codec->regmap, AUDIO_IC_CODEC_CTRL0, in sirf_audio_codec_suspend()
531 &sirf_audio_codec->reg_ctrl0); in sirf_audio_codec_suspend()
532 regmap_read(sirf_audio_codec->regmap, AUDIO_IC_CODEC_CTRL1, in sirf_audio_codec_suspend()
533 &sirf_audio_codec->reg_ctrl1); in sirf_audio_codec_suspend()
534 clk_disable_unprepare(sirf_audio_codec->clk); in sirf_audio_codec_suspend()
544 ret = clk_prepare_enable(sirf_audio_codec->clk); in sirf_audio_codec_resume()
548 regmap_write(sirf_audio_codec->regmap, AUDIO_IC_CODEC_CTRL0, in sirf_audio_codec_resume()
549 sirf_audio_codec->reg_ctrl0); in sirf_audio_codec_resume()
550 regmap_write(sirf_audio_codec->regmap, AUDIO_IC_CODEC_CTRL1, in sirf_audio_codec_resume()
551 sirf_audio_codec->reg_ctrl1); in sirf_audio_codec_resume()
563 .name = "sirf-audio-codec",