Beispiel #1
0
static int i2s_configure(struct tegra_i2s_info *info )
{
	struct platform_device *pdev = info->pdev;
	struct tegra_audio_platform_data *pdata = pdev->dev.platform_data;
	unsigned int i2s_id = pdev->id;
	unsigned int rate;

	i2s_enable_fifos(i2s_id, 0);
	i2s_fifo_clear(i2s_id, I2S_FIFO_TX);
	i2s_fifo_clear(i2s_id, I2S_FIFO_RX);
	i2s_set_left_right_control_polarity(i2s_id, 0); /* default */

	rate = clk_get_rate(info->i2s_clk);
	if (info->bit_format == TEGRA_AUDIO_BIT_FORMAT_DSP)
		rate *= 2;

	i2s_set_master(i2s_id, pdata->i2s_master);
	info->i2s_master =  pdata->i2s_master;
	if (pdata->i2s_master && pdata->i2s_master_clk)
		i2s_set_channel_bit_count(i2s_id, pdata->i2s_master_clk, rate);

	i2s_set_fifo_mode(i2s_id, I2S_FIFO_TX, 1);
	i2s_set_fifo_mode(i2s_id, I2S_FIFO_RX, 0);

	i2s_set_bit_format(i2s_id, pdata->mode);
	i2s_set_bit_size(i2s_id, pdata->bit_size);
	i2s_set_fifo_format(i2s_id, pdata->fifo_fmt);

	if (i2s_id == 0)
		en_dmic = pdata->en_dmic;

	return 0;
}
Beispiel #2
0
static int i2s_configure(struct tegra_i2s_info *info )
{
	struct platform_device *pdev = info->pdev;
	struct tegra_audio_platform_data *pdata = pdev->dev.platform_data;
	struct clk *i2s_clk;
	unsigned int i2s_id = pdev->id;
	unsigned int rate;

	i2s_enable_fifos(i2s_id, 0);
	i2s_fifo_clear(i2s_id, I2S_FIFO_TX);
	i2s_fifo_clear(i2s_id, I2S_FIFO_RX);
	i2s_set_left_right_control_polarity(i2s_id, 0); /* default */

	i2s_clk = clk_get(&pdev->dev, NULL);
	if (!i2s_clk) {
		dev_err(&pdev->dev, "%s: could not get i2s clock\n",
			__func__);
		return -EIO;
	}

	rate = clk_get_rate(i2s_clk);
	if (info->bit_format == TEGRA_AUDIO_BIT_FORMAT_DSP)
		rate *= 2;

	if (pdata->i2s_master && pdata->i2s_master_clk)
		i2s_set_channel_bit_count(i2s_id, pdata->i2s_master_clk, rate);

	i2s_set_master(i2s_id, pdata->i2s_master);

	i2s_set_fifo_mode(i2s_id, I2S_FIFO_TX, 1);
	i2s_set_fifo_mode(i2s_id, I2S_FIFO_RX, 0);

	i2s_set_bit_format(i2s_id, pdata->mode);
	i2s_set_bit_size(i2s_id, pdata->bit_size);
	i2s_set_fifo_format(i2s_id, pdata->fifo_fmt);

	return 0;
}