Lines Matching refs:scodec
250 static void sun4i_codec_start_playback(struct sun4i_codec *scodec) in sun4i_codec_start_playback() argument
253 regmap_update_bits(scodec->regmap, SUN4I_CODEC_DAC_FIFOC, in sun4i_codec_start_playback()
258 regmap_update_bits(scodec->regmap, SUN4I_CODEC_DAC_FIFOC, in sun4i_codec_start_playback()
263 static void sun4i_codec_stop_playback(struct sun4i_codec *scodec) in sun4i_codec_stop_playback() argument
266 regmap_update_bits(scodec->regmap, SUN4I_CODEC_DAC_FIFOC, in sun4i_codec_stop_playback()
271 static void sun4i_codec_start_capture(struct sun4i_codec *scodec) in sun4i_codec_start_capture() argument
274 regmap_field_update_bits(scodec->reg_adc_fifoc, in sun4i_codec_start_capture()
279 static void sun4i_codec_stop_capture(struct sun4i_codec *scodec) in sun4i_codec_stop_capture() argument
282 regmap_field_update_bits(scodec->reg_adc_fifoc, in sun4i_codec_stop_capture()
290 struct sun4i_codec *scodec = snd_soc_card_get_drvdata(rtd->card); in sun4i_codec_trigger() local
297 sun4i_codec_start_playback(scodec); in sun4i_codec_trigger()
299 sun4i_codec_start_capture(scodec); in sun4i_codec_trigger()
306 sun4i_codec_stop_playback(scodec); in sun4i_codec_trigger()
308 sun4i_codec_stop_capture(scodec); in sun4i_codec_trigger()
322 struct sun4i_codec *scodec = snd_soc_card_get_drvdata(rtd->card); in sun4i_codec_prepare_capture() local
326 regmap_field_update_bits(scodec->reg_adc_fifoc, in sun4i_codec_prepare_capture()
332 regmap_field_update_bits(scodec->reg_adc_fifoc, in sun4i_codec_prepare_capture()
341 if (of_device_is_compatible(scodec->dev->of_node, in sun4i_codec_prepare_capture()
343 of_device_is_compatible(scodec->dev->of_node, in sun4i_codec_prepare_capture()
345 regmap_update_bits(scodec->regmap, SUN4I_CODEC_ADC_ACTL, in sun4i_codec_prepare_capture()
350 if (of_device_is_compatible(scodec->dev->of_node, in sun4i_codec_prepare_capture()
353 regmap_update_bits(scodec->regmap, SUN4I_CODEC_DAC_TUNE, in sun4i_codec_prepare_capture()
364 struct sun4i_codec *scodec = snd_soc_card_get_drvdata(rtd->card); in sun4i_codec_prepare_playback() local
368 regmap_update_bits(scodec->regmap, SUN4I_CODEC_DAC_FIFOC, in sun4i_codec_prepare_playback()
373 regmap_update_bits(scodec->regmap, SUN4I_CODEC_DAC_FIFOC, in sun4i_codec_prepare_playback()
384 regmap_update_bits(scodec->regmap, SUN4I_CODEC_DAC_FIFOC, in sun4i_codec_prepare_playback()
389 regmap_update_bits(scodec->regmap, SUN4I_CODEC_DAC_FIFOC, in sun4i_codec_prepare_playback()
477 static int sun4i_codec_hw_params_capture(struct sun4i_codec *scodec, in sun4i_codec_hw_params_capture() argument
482 regmap_field_update_bits(scodec->reg_adc_fifoc, in sun4i_codec_hw_params_capture()
488 regmap_field_update_bits(scodec->reg_adc_fifoc, in sun4i_codec_hw_params_capture()
492 regmap_field_update_bits(scodec->reg_adc_fifoc, in sun4i_codec_hw_params_capture()
498 regmap_field_update_bits(scodec->reg_adc_fifoc, in sun4i_codec_hw_params_capture()
502 regmap_field_update_bits(scodec->reg_adc_fifoc, in sun4i_codec_hw_params_capture()
506 scodec->capture_dma_data.addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES; in sun4i_codec_hw_params_capture()
508 regmap_field_update_bits(scodec->reg_adc_fifoc, in sun4i_codec_hw_params_capture()
513 regmap_field_update_bits(scodec->reg_adc_fifoc, in sun4i_codec_hw_params_capture()
517 scodec->capture_dma_data.addr_width = DMA_SLAVE_BUSWIDTH_2_BYTES; in sun4i_codec_hw_params_capture()
523 static int sun4i_codec_hw_params_playback(struct sun4i_codec *scodec, in sun4i_codec_hw_params_playback() argument
530 regmap_update_bits(scodec->regmap, SUN4I_CODEC_DAC_FIFOC, in sun4i_codec_hw_params_playback()
540 regmap_update_bits(scodec->regmap, SUN4I_CODEC_DAC_FIFOC, in sun4i_codec_hw_params_playback()
546 regmap_update_bits(scodec->regmap, SUN4I_CODEC_DAC_FIFOC, in sun4i_codec_hw_params_playback()
551 regmap_update_bits(scodec->regmap, SUN4I_CODEC_DAC_FIFOC, in sun4i_codec_hw_params_playback()
555 scodec->playback_dma_data.addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES; in sun4i_codec_hw_params_playback()
557 regmap_update_bits(scodec->regmap, SUN4I_CODEC_DAC_FIFOC, in sun4i_codec_hw_params_playback()
562 regmap_update_bits(scodec->regmap, SUN4I_CODEC_DAC_FIFOC, in sun4i_codec_hw_params_playback()
566 scodec->playback_dma_data.addr_width = DMA_SLAVE_BUSWIDTH_2_BYTES; in sun4i_codec_hw_params_playback()
577 struct sun4i_codec *scodec = snd_soc_card_get_drvdata(rtd->card); in sun4i_codec_hw_params() local
585 ret = clk_set_rate(scodec->clk_module, clk_freq); in sun4i_codec_hw_params()
594 return sun4i_codec_hw_params_playback(scodec, params, in sun4i_codec_hw_params()
597 return sun4i_codec_hw_params_capture(scodec, params, in sun4i_codec_hw_params()
618 struct sun4i_codec *scodec = snd_soc_card_get_drvdata(rtd->card); in sun4i_codec_startup() local
627 regmap_update_bits(scodec->regmap, SUN4I_CODEC_DAC_FIFOC, in sun4i_codec_startup()
631 return clk_prepare_enable(scodec->clk_module); in sun4i_codec_startup()
638 struct sun4i_codec *scodec = snd_soc_card_get_drvdata(rtd->card); in sun4i_codec_shutdown() local
640 clk_disable_unprepare(scodec->clk_module); in sun4i_codec_shutdown()
1265 struct sun4i_codec *scodec = snd_soc_card_get_drvdata(card); in sun4i_codec_dai_probe() local
1267 snd_soc_dai_init_dma_data(dai, &scodec->playback_dma_data, in sun4i_codec_dai_probe()
1268 &scodec->capture_dma_data); in sun4i_codec_dai_probe()
1328 struct sun4i_codec *scodec = snd_soc_card_get_drvdata(w->dapm->card); in sun4i_codec_spk_event() local
1330 gpiod_set_value_cansleep(scodec->gpio_pa, in sun4i_codec_spk_event()
1700 struct sun4i_codec *scodec; in sun4i_codec_probe() local
1706 scodec = devm_kzalloc(&pdev->dev, sizeof(*scodec), GFP_KERNEL); in sun4i_codec_probe()
1707 if (!scodec) in sun4i_codec_probe()
1710 scodec->dev = &pdev->dev; in sun4i_codec_probe()
1725 scodec->regmap = devm_regmap_init_mmio(&pdev->dev, base, in sun4i_codec_probe()
1727 if (IS_ERR(scodec->regmap)) { in sun4i_codec_probe()
1729 return PTR_ERR(scodec->regmap); in sun4i_codec_probe()
1733 scodec->clk_apb = devm_clk_get(&pdev->dev, "apb"); in sun4i_codec_probe()
1734 if (IS_ERR(scodec->clk_apb)) { in sun4i_codec_probe()
1736 return PTR_ERR(scodec->clk_apb); in sun4i_codec_probe()
1739 scodec->clk_module = devm_clk_get(&pdev->dev, "codec"); in sun4i_codec_probe()
1740 if (IS_ERR(scodec->clk_module)) { in sun4i_codec_probe()
1742 return PTR_ERR(scodec->clk_module); in sun4i_codec_probe()
1746 scodec->rst = devm_reset_control_get_exclusive(&pdev->dev, in sun4i_codec_probe()
1748 if (IS_ERR(scodec->rst)) { in sun4i_codec_probe()
1750 return PTR_ERR(scodec->rst); in sun4i_codec_probe()
1754 scodec->gpio_pa = devm_gpiod_get_optional(&pdev->dev, "allwinner,pa", in sun4i_codec_probe()
1756 if (IS_ERR(scodec->gpio_pa)) { in sun4i_codec_probe()
1757 ret = PTR_ERR(scodec->gpio_pa); in sun4i_codec_probe()
1764 scodec->reg_adc_fifoc = devm_regmap_field_alloc(&pdev->dev, in sun4i_codec_probe()
1765 scodec->regmap, in sun4i_codec_probe()
1767 if (IS_ERR(scodec->reg_adc_fifoc)) { in sun4i_codec_probe()
1768 ret = PTR_ERR(scodec->reg_adc_fifoc); in sun4i_codec_probe()
1775 if (clk_prepare_enable(scodec->clk_apb)) { in sun4i_codec_probe()
1781 if (scodec->rst) { in sun4i_codec_probe()
1782 ret = reset_control_deassert(scodec->rst); in sun4i_codec_probe()
1791 scodec->playback_dma_data.addr = res->start + quirks->reg_dac_txdata; in sun4i_codec_probe()
1792 scodec->playback_dma_data.maxburst = 8; in sun4i_codec_probe()
1793 scodec->playback_dma_data.addr_width = DMA_SLAVE_BUSWIDTH_2_BYTES; in sun4i_codec_probe()
1796 scodec->capture_dma_data.addr = res->start + quirks->reg_adc_rxdata; in sun4i_codec_probe()
1797 scodec->capture_dma_data.maxburst = 8; in sun4i_codec_probe()
1798 scodec->capture_dma_data.addr_width = DMA_SLAVE_BUSWIDTH_2_BYTES; in sun4i_codec_probe()
1828 snd_soc_card_set_drvdata(card, scodec); in sun4i_codec_probe()
1839 if (scodec->rst) in sun4i_codec_probe()
1840 reset_control_assert(scodec->rst); in sun4i_codec_probe()
1842 clk_disable_unprepare(scodec->clk_apb); in sun4i_codec_probe()
1849 struct sun4i_codec *scodec = snd_soc_card_get_drvdata(card); in sun4i_codec_remove() local
1852 if (scodec->rst) in sun4i_codec_remove()
1853 reset_control_assert(scodec->rst); in sun4i_codec_remove()
1854 clk_disable_unprepare(scodec->clk_apb); in sun4i_codec_remove()