コード例 #1
0
ファイル: s3c-i2s-v2.c プロジェクト: asmalldev/linux
int s3c_i2sv2_probe(struct snd_soc_dai *dai,
		    struct s3c_i2sv2_info *i2s,
		    unsigned long base)
{
	struct device *dev = dai->dev;
	unsigned int iismod;

	i2s->dev = dev;

	/* record our i2s structure for later use in the callbacks */
	snd_soc_dai_set_drvdata(dai, i2s);

	i2s->iis_pclk = clk_get(dev, "iis");
	if (IS_ERR(i2s->iis_pclk)) {
		dev_err(dev, "failed to get iis_clock\n");
		iounmap(i2s->regs);
		return -ENOENT;
	}

	clk_enable(i2s->iis_pclk);

	/* Mark ourselves as in TXRX mode so we can run through our cleanup
	 * process without warnings. */
	iismod = readl(i2s->regs + S3C2412_IISMOD);
	iismod |= S3C2412_IISMOD_MODE_TXRX;
	writel(iismod, i2s->regs + S3C2412_IISMOD);
	s3c2412_snd_txctrl(i2s, 0);
	s3c2412_snd_rxctrl(i2s, 0);

	return 0;
}
コード例 #2
0
ファイル: s3c64xx-i2s.c プロジェクト: Adjustxx/Savaged-Zen
static int s3c64xx_i2s_probe(struct snd_soc_dai *dai)
{
	struct s3c_i2sv2_info *i2s;
	int ret;

	if (dai->id >= MAX_I2SV3) {
		dev_err(dai->dev, "id %d out of range\n", dai->id);
		return -EINVAL;
	}

	i2s = &s3c64xx_i2s[dai->id];
	snd_soc_dai_set_drvdata(dai, i2s);

	i2s->iis_cclk = clk_get(dai->dev, "audio-bus");
	if (IS_ERR(i2s->iis_cclk)) {
		dev_err(dai->dev, "failed to get audio-bus\n");
		ret = PTR_ERR(i2s->iis_cclk);
		goto err;
	}

	clk_enable(i2s->iis_cclk);

	ret = s3c_i2sv2_probe(dai, i2s, i2s->base);
	if (ret)
		goto err_clk;

	return 0;

err_clk:
	clk_disable(i2s->iis_cclk);
	clk_put(i2s->iis_cclk);
err:
	kfree(i2s);
	return ret;
}
コード例 #3
0
ファイル: mmp-sspa.c プロジェクト: 3null/linux
static int mmp_sspa_probe(struct snd_soc_dai *dai)
{
	struct sspa_priv *priv = dev_get_drvdata(dai->dev);

	snd_soc_dai_set_drvdata(dai, priv);
	return 0;

}
コード例 #4
0
ファイル: mxs-saif.c プロジェクト: avagin/linux
static int mxs_saif_dai_probe(struct snd_soc_dai *dai)
{
	struct mxs_saif *saif = dev_get_drvdata(dai->dev);

	snd_soc_dai_set_drvdata(dai, saif);

	return 0;
}
コード例 #5
0
static int bf5xx_ad1836_startup(struct snd_pcm_substream *substream)
{
	struct snd_soc_pcm_runtime *rtd = substream->private_data;
	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;

	snd_soc_dai_set_drvdata(cpu_dai, sport_handle);
	return 0;
}
コード例 #6
0
static int mcbsp_dai_probe(struct snd_soc_dai *dai)
{
	mcbsp_data[dai->id].bus_id = dai->id;
	spin_lock_init(&mcbsp_data[dai->id].tx_retry_spinlock);
	init_timer(&mcbsp_data[dai->id].tx_retry_timer);
	snd_soc_dai_set_drvdata(dai, &mcbsp_data[dai->id].bus_id);
	return 0;
}
コード例 #7
0
static int bf5xx_ad73311_startup(struct snd_pcm_substream *substream)
{
	struct snd_soc_pcm_runtime *rtd = substream->private_data;
	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;

	pr_debug("%s enter\n", __func__);
	snd_soc_dai_set_drvdata(cpu_dai, sport_handle);
	return 0;
}
コード例 #8
0
ファイル: zx-spdif.c プロジェクト: AlexShiLucky/linux
static int zx_spdif_dai_probe(struct snd_soc_dai *dai)
{
	struct zx_spdif_info *zx_spdif = dev_get_drvdata(dai->dev);

	snd_soc_dai_set_drvdata(dai, zx_spdif);
	zx_spdif->dma_data.addr = zx_spdif->mapbase + ZX_DATA;
	zx_spdif->dma_data.maxburst = 8;
	snd_soc_dai_init_dma_data(dai, &zx_spdif->dma_data, NULL);
	return 0;
}
コード例 #9
0
ファイル: s3c64xx-i2s-v4.c プロジェクト: Adjustxx/Savaged-Zen
static int s3c64xx_i2sv4_probe(struct snd_soc_dai *dai)
{
	struct s3c_i2sv2_info *i2s = &s3c64xx_i2sv4;
	int ret = 0;

	snd_soc_dai_set_drvdata(dai, i2s);

	ret = s3c_i2sv2_probe(dai, i2s, i2s->base);

	return ret;
}
コード例 #10
0
ファイル: zx-tdm.c プロジェクト: ReneNyffenegger/linux
static int zx_tdm_dai_probe(struct snd_soc_dai *dai)
{
	struct zx_tdm_info *zx_tdm = dev_get_drvdata(dai->dev);

	snd_soc_dai_set_drvdata(dai, zx_tdm);
	zx_tdm->dma_playback.addr = zx_tdm->phy_addr + REG_DATABUF;
	zx_tdm->dma_playback.maxburst = 16;
	zx_tdm->dma_capture.addr = zx_tdm->phy_addr + REG_DATABUF;
	zx_tdm->dma_capture.maxburst = 16;
	snd_soc_dai_init_dma_data(dai, &zx_tdm->dma_playback,
				  &zx_tdm->dma_capture);
	return 0;
}
コード例 #11
0
ファイル: atmel_ssc_dai.c プロジェクト: ANFS/ANFS-kernel
static int atmel_ssc_probe(struct snd_soc_dai *dai)
{
	struct atmel_ssc_info *ssc_p = &ssc_info[dai->id];
	int ret = 0;

	snd_soc_dai_set_drvdata(dai, ssc_p);

	/*
	 * Request SSC device
	 */
	ssc_p->ssc = ssc_request(dai->id);
	if (IS_ERR(ssc_p->ssc)) {
		printk(KERN_ERR "ASoC: Failed to request SSC %d\n", dai->id);
		ret = PTR_ERR(ssc_p->ssc);
	}

	return ret;
}
コード例 #12
0
ファイル: fsl_sai.c プロジェクト: Astralix/mainline-dss11
static int fsl_sai_dai_probe(struct snd_soc_dai *cpu_dai)
{
	struct fsl_sai *sai = dev_get_drvdata(cpu_dai->dev);

	regmap_update_bits(sai->regmap, FSL_SAI_TCSR, 0xffffffff, 0x0);
	regmap_update_bits(sai->regmap, FSL_SAI_RCSR, 0xffffffff, 0x0);
	regmap_update_bits(sai->regmap, FSL_SAI_TCR1, FSL_SAI_CR1_RFW_MASK,
			   FSL_SAI_MAXBURST_TX * 2);
	regmap_update_bits(sai->regmap, FSL_SAI_RCR1, FSL_SAI_CR1_RFW_MASK,
			   FSL_SAI_MAXBURST_RX - 1);

	snd_soc_dai_init_dma_data(cpu_dai, &sai->dma_params_tx,
				&sai->dma_params_rx);

	snd_soc_dai_set_drvdata(cpu_dai, sai);

	return 0;
}
コード例 #13
0
static int mcbsp_dai_probe(struct snd_soc_dai *dai)
{
	mcbsp_data[dai->id].bus_id = dai->id;
	snd_soc_dai_set_drvdata(dai, &mcbsp_data[dai->id].bus_id);
	return 0;
}