ASoC: tegra-alt: Add support to enable I2S_CYA_0

I2S_CYA register is a spare register reserved for any issue
in design. I2S4 has "i2s4a" and "i2s4b" pins in the pinmux.
In order to select i2s4b pin for I2S4 instance, we need to
enable CYA register

Bug 1602439

Change-Id: I42c401a301efb648e1141159367038a084718a93
Signed-off-by: Arun Shamanna Lakshmi <aruns@nvidia.com>
Reviewed-on: http://git-master/r/677018
(cherry picked from commit ecae3a30ba4bd9333872f1aff6e6215169fd16d0)
Reviewed-on: http://git-master/r/679674
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Justin Kim (SW-TEGRA) <juskim@nvidia.com>
Reviewed-by: Uday Gupta <udayg@nvidia.com>
This commit is contained in:
Arun Shamanna Lakshmi
2015-01-23 10:46:11 -08:00
committed by Sameer Pujar
parent 096fe92f57
commit b75cc383f7

View File

@@ -1,7 +1,7 @@
/*
* tegra210_i2s.c - Tegra210 I2S driver
*
* Copyright (c) 2014 NVIDIA CORPORATION. All rights reserved.
* Copyright (c) 2014-2015 NVIDIA CORPORATION. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
@@ -511,6 +511,9 @@ static int tegra210_i2s_hw_params(struct snd_pcm_substream *substream,
i2s->soc_data->set_audio_cif(i2s->regmap, reg, &cif_conf);
if (i2s->enable_cya)
regmap_write(i2s->regmap, TEGRA210_I2S_CYA, 1);
return 0;
}
@@ -680,6 +683,7 @@ static bool tegra210_i2s_wr_reg(struct device *dev, unsigned int reg)
case TEGRA210_I2S_TIMING:
case TEGRA210_I2S_SLOT_CTRL:
case TEGRA210_I2S_CLK_TRIM:
case TEGRA210_I2S_CYA:
return true;
default:
return false;
@@ -722,6 +726,7 @@ static bool tegra210_i2s_rd_reg(struct device *dev, unsigned int reg)
case TEGRA210_I2S_SLOT_CTRL:
case TEGRA210_I2S_CLK_TRIM:
case TEGRA210_I2S_INT_STATUS:
case TEGRA210_I2S_CYA:
return true;
default:
return false;
@@ -746,7 +751,7 @@ static const struct regmap_config tegra210_i2s_regmap_config = {
.reg_bits = 32,
.reg_stride = 4,
.val_bits = 32,
.max_register = TEGRA210_I2S_CLK_TRIM,
.max_register = TEGRA210_I2S_CYA,
.writeable_reg = tegra210_i2s_wr_reg,
.readable_reg = tegra210_i2s_rd_reg,
.volatile_reg = tegra210_i2s_volatile_reg,
@@ -796,6 +801,7 @@ static int tegra210_i2s_platform_probe(struct platform_device *pdev)
i2s->soc_data = soc_data;
i2s->tx_mask = i2s->rx_mask = 0xFFFF;
i2s->bclk_ratio = 2;
i2s->enable_cya = false;
i2s->clk_i2s = devm_clk_get(&pdev->dev, NULL);
if (IS_ERR(i2s->clk_i2s)) {
@@ -882,6 +888,10 @@ static int tegra210_i2s_platform_probe(struct platform_device *pdev)
i2s->fsync_width = 31;
}
i2s->enable_cya =
of_property_read_bool(pdev->dev.of_node,
"enable-cya");
num_supplies = of_property_count_strings(np, "regulator-supplies");
if (num_supplies > 0) {
i2s->num_supplies = num_supplies;