Lines Matching refs:scodec

250 static void sun4i_codec_start_playback(struct sun4i_codec *scodec)
253 regmap_set_bits(scodec->regmap, SUN4I_CODEC_DAC_FIFOC,
257 regmap_set_bits(scodec->regmap, SUN4I_CODEC_DAC_FIFOC,
261 static void sun4i_codec_stop_playback(struct sun4i_codec *scodec)
264 regmap_clear_bits(scodec->regmap, SUN4I_CODEC_DAC_FIFOC,
268 static void sun4i_codec_start_capture(struct sun4i_codec *scodec)
271 regmap_field_set_bits(scodec->reg_adc_fifoc,
275 static void sun4i_codec_stop_capture(struct sun4i_codec *scodec)
278 regmap_field_clear_bits(scodec->reg_adc_fifoc,
286 struct sun4i_codec *scodec = snd_soc_card_get_drvdata(rtd->card);
293 sun4i_codec_start_playback(scodec);
295 sun4i_codec_start_capture(scodec);
302 sun4i_codec_stop_playback(scodec);
304 sun4i_codec_stop_capture(scodec);
318 struct sun4i_codec *scodec = snd_soc_card_get_drvdata(rtd->card);
322 regmap_field_set_bits(scodec->reg_adc_fifoc,
327 regmap_field_update_bits(scodec->reg_adc_fifoc,
336 if (of_device_is_compatible(scodec->dev->of_node,
338 of_device_is_compatible(scodec->dev->of_node,
340 regmap_update_bits(scodec->regmap, SUN4I_CODEC_ADC_ACTL,
345 if (of_device_is_compatible(scodec->dev->of_node,
348 regmap_update_bits(scodec->regmap, SUN4I_CODEC_DAC_TUNE,
359 struct sun4i_codec *scodec = snd_soc_card_get_drvdata(rtd->card);
363 regmap_set_bits(scodec->regmap, SUN4I_CODEC_DAC_FIFOC,
367 regmap_update_bits(scodec->regmap, SUN4I_CODEC_DAC_FIFOC,
378 regmap_update_bits(scodec->regmap, SUN4I_CODEC_DAC_FIFOC,
383 regmap_clear_bits(scodec->regmap, SUN4I_CODEC_DAC_FIFOC,
470 static int sun4i_codec_hw_params_capture(struct sun4i_codec *scodec,
475 regmap_field_update_bits(scodec->reg_adc_fifoc,
481 regmap_field_set_bits(scodec->reg_adc_fifoc,
484 regmap_field_clear_bits(scodec->reg_adc_fifoc,
489 regmap_field_set_bits(scodec->reg_adc_fifoc,
492 regmap_field_clear_bits(scodec->reg_adc_fifoc,
495 scodec->capture_dma_data.addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;
497 regmap_field_clear_bits(scodec->reg_adc_fifoc,
501 regmap_field_set_bits(scodec->reg_adc_fifoc,
504 scodec->capture_dma_data.addr_width = DMA_SLAVE_BUSWIDTH_2_BYTES;
510 static int sun4i_codec_hw_params_playback(struct sun4i_codec *scodec,
517 regmap_update_bits(scodec->regmap, SUN4I_CODEC_DAC_FIFOC,
527 regmap_update_bits(scodec->regmap, SUN4I_CODEC_DAC_FIFOC,
533 regmap_set_bits(scodec->regmap, SUN4I_CODEC_DAC_FIFOC,
537 regmap_clear_bits(scodec->regmap, SUN4I_CODEC_DAC_FIFOC,
540 scodec->playback_dma_data.addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;
542 regmap_clear_bits(scodec->regmap, SUN4I_CODEC_DAC_FIFOC,
546 regmap_set_bits(scodec->regmap, SUN4I_CODEC_DAC_FIFOC,
549 scodec->playback_dma_data.addr_width = DMA_SLAVE_BUSWIDTH_2_BYTES;
560 struct sun4i_codec *scodec = snd_soc_card_get_drvdata(rtd->card);
568 ret = clk_set_rate(scodec->clk_module, clk_freq);
577 return sun4i_codec_hw_params_playback(scodec, params,
580 return sun4i_codec_hw_params_capture(scodec, params,
601 struct sun4i_codec *scodec = snd_soc_card_get_drvdata(rtd->card);
610 regmap_set_bits(scodec->regmap, SUN4I_CODEC_DAC_FIFOC,
613 return clk_prepare_enable(scodec->clk_module);
620 struct sun4i_codec *scodec = snd_soc_card_get_drvdata(rtd->card);
622 clk_disable_unprepare(scodec->clk_module);
1247 struct sun4i_codec *scodec = snd_soc_card_get_drvdata(card);
1249 snd_soc_dai_init_dma_data(dai, &scodec->playback_dma_data,
1250 &scodec->capture_dma_data);
1314 struct sun4i_codec *scodec = snd_soc_card_get_drvdata(w->dapm->card);
1316 gpiod_set_value_cansleep(scodec->gpio_pa,
1686 struct sun4i_codec *scodec;
1692 scodec = devm_kzalloc(&pdev->dev, sizeof(*scodec), GFP_KERNEL);
1693 if (!scodec)
1696 scodec->dev = &pdev->dev;
1708 scodec->regmap = devm_regmap_init_mmio(&pdev->dev, base,
1710 if (IS_ERR(scodec->regmap)) {
1712 return PTR_ERR(scodec->regmap);
1716 scodec->clk_apb = devm_clk_get(&pdev->dev, "apb");
1717 if (IS_ERR(scodec->clk_apb)) {
1719 return PTR_ERR(scodec->clk_apb);
1722 scodec->clk_module = devm_clk_get(&pdev->dev, "codec");
1723 if (IS_ERR(scodec->clk_module)) {
1725 return PTR_ERR(scodec->clk_module);
1729 scodec->rst = devm_reset_control_get_exclusive(&pdev->dev,
1731 if (IS_ERR(scodec->rst)) {
1733 return PTR_ERR(scodec->rst);
1737 scodec->gpio_pa = devm_gpiod_get_optional(&pdev->dev, "allwinner,pa",
1739 if (IS_ERR(scodec->gpio_pa)) {
1740 ret = PTR_ERR(scodec->gpio_pa);
1746 scodec->reg_adc_fifoc = devm_regmap_field_alloc(&pdev->dev,
1747 scodec->regmap,
1749 if (IS_ERR(scodec->reg_adc_fifoc)) {
1750 ret = PTR_ERR(scodec->reg_adc_fifoc);
1757 if (clk_prepare_enable(scodec->clk_apb)) {
1763 if (scodec->rst) {
1764 ret = reset_control_deassert(scodec->rst);
1773 scodec->playback_dma_data.addr = res->start + quirks->reg_dac_txdata;
1774 scodec->playback_dma_data.maxburst = 8;
1775 scodec->playback_dma_data.addr_width = DMA_SLAVE_BUSWIDTH_2_BYTES;
1778 scodec->capture_dma_data.addr = res->start + quirks->reg_adc_rxdata;
1779 scodec->capture_dma_data.maxburst = 8;
1780 scodec->capture_dma_data.addr_width = DMA_SLAVE_BUSWIDTH_2_BYTES;
1810 snd_soc_card_set_drvdata(card, scodec);
1821 if (scodec->rst)
1822 reset_control_assert(scodec->rst);
1824 clk_disable_unprepare(scodec->clk_apb);
1831 struct sun4i_codec *scodec = snd_soc_card_get_drvdata(card);
1834 if (scodec->rst)
1835 reset_control_assert(scodec->rst);
1836 clk_disable_unprepare(scodec->clk_apb);