int omap_mcbsp_st_add_controls(struct snd_soc_pcm_runtime *rtd) { struct snd_soc_dai *cpu_dai = rtd->cpu_dai; struct omap_mcbsp *mcbsp = snd_soc_dai_get_drvdata(cpu_dai); if (!mcbsp->st_data) { dev_warn(mcbsp->dev, "No sidetone data for port\n"); return 0; } switch (mcbsp->id) { case 2: /* McBSP 2 */ return snd_soc_add_dai_controls(cpu_dai, omap_mcbsp2_st_controls, ARRAY_SIZE(omap_mcbsp2_st_controls)); case 3: /* McBSP 3 */ return snd_soc_add_dai_controls(cpu_dai, omap_mcbsp3_st_controls, ARRAY_SIZE(omap_mcbsp3_st_controls)); default: break; } return -EINVAL; }
static int spdif_soc_dai_probe(struct snd_soc_dai *dai) { struct spdif_out_dev *host = snd_soc_dai_get_drvdata(dai); host->dma_params_tx.filter_data = &host->dma_params; dai->playback_dma_data = &host->dma_params_tx; return snd_soc_add_dai_controls(dai, spdif_out_controls, ARRAY_SIZE(spdif_out_controls)); }
static int img_spdif_out_dai_probe(struct snd_soc_dai *dai) { struct img_spdif_out *spdif = snd_soc_dai_get_drvdata(dai); snd_soc_dai_init_dma_data(dai, &spdif->dma_data, NULL); snd_soc_add_dai_controls(dai, img_spdif_out_controls, ARRAY_SIZE(img_spdif_out_controls)); return 0; }
static int stm32_spdifrx_dai_register_ctrls(struct snd_soc_dai *cpu_dai) { int ret; ret = snd_soc_add_dai_controls(cpu_dai, stm32_spdifrx_iec_ctrls, ARRAY_SIZE(stm32_spdifrx_iec_ctrls)); if (ret < 0) return ret; return snd_soc_add_component_controls(cpu_dai->component, stm32_spdifrx_ctrls, ARRAY_SIZE(stm32_spdifrx_ctrls)); }
int omap_mcbsp_st_add_controls(struct snd_soc_pcm_runtime *rtd) { struct snd_soc_dai *cpu_dai = rtd->cpu_dai; struct omap_mcbsp *mcbsp = snd_soc_dai_get_drvdata(cpu_dai); if (!mcbsp->st_data) return -ENODEV; switch (cpu_dai->id) { case 2: /* McBSP 2 */ return snd_soc_add_dai_controls(cpu_dai, omap_mcbsp2_st_controls, ARRAY_SIZE(omap_mcbsp2_st_controls)); case 3: /* McBSP 3 */ return snd_soc_add_dai_controls(cpu_dai, omap_mcbsp3_st_controls, ARRAY_SIZE(omap_mcbsp3_st_controls)); default: break; } return -EINVAL; }
static int kirkwood_i2s_probe(struct snd_soc_dai *dai) { struct kirkwood_dma_data *priv = snd_soc_dai_get_drvdata(dai); unsigned long value; unsigned int reg_data; int ret; ret = snd_soc_add_dai_controls(dai, kirkwood_i2s_iec958_controls, ARRAY_SIZE(kirkwood_i2s_iec958_controls)); if (ret) { dev_err(dai->dev, "unable to add soc card controls\n"); return ret; } /* put system in a "safe" state : */ /* disable audio interrupts */ writel(0xffffffff, priv->io + KIRKWOOD_INT_CAUSE); writel(0, priv->io + KIRKWOOD_INT_MASK); reg_data = readl(priv->io + 0x120c); reg_data = readl(priv->io + 0x1200); reg_data &= (~(0x333FF8)); reg_data |= 0x111D18; writel(reg_data, priv->io + 0x1200); msleep(500); reg_data = readl(priv->io + 0x1200); reg_data &= (~(0x333FF8)); reg_data |= 0x111D18; msleep(500); writel(reg_data, priv->io + 0x1200); /* disable playback/record */ value = readl(priv->io + KIRKWOOD_PLAYCTL); value &= ~(KIRKWOOD_PLAYCTL_I2S_EN|KIRKWOOD_PLAYCTL_SPDIF_EN); writel(value, priv->io + KIRKWOOD_PLAYCTL); value = readl(priv->io + KIRKWOOD_RECCTL); value &= ~(KIRKWOOD_RECCTL_I2S_EN | KIRKWOOD_RECCTL_SPDIF_EN); writel(value, priv->io + KIRKWOOD_RECCTL); return 0; }
int spdif_soc_dai_probe(struct snd_soc_dai *dai) { return snd_soc_add_dai_controls(dai, spdif_out_controls, ARRAY_SIZE(spdif_out_controls)); }