ASoC: tegra-alt: ASRC_INT_CLEAR_WAR config cleanup

- CONFIG_TEGRA186_ASRC_INT_CLEAR_WAR is removed.

- Int clear war is disabled for platforms >= t194 as the related
  h/w issue is resolved with the help of compatible string match

Bug 200540133

Change-Id: I48677f17278f0451c67fa2b9232b9e960bf8a34f
Signed-off-by: Asha Talambedu <atalambedu@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/2233940
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
This commit is contained in:
Asha Talambedu
2019-11-07 12:41:53 +05:30
committed by Sameer Pujar
parent 7a56385cb5
commit 14ccf06582
2 changed files with 16 additions and 14 deletions

View File

@@ -41,10 +41,6 @@ config SND_SOC_TEGRA186_ASRC_WAR
depends on SND_SOC_TEGRA186_ASRC_ALT depends on SND_SOC_TEGRA186_ASRC_ALT
depends on SND_SOC_TEGRA186_ARAD_WAR depends on SND_SOC_TEGRA186_ARAD_WAR
config TEGRA186_ASRC_INT_CLEAR_WAR
def_bool y
depends on SND_SOC_TEGRA186_ASRC_ALT
config SND_SOC_TEGRA_ALT config SND_SOC_TEGRA_ALT
tristate "Alternative DAPM-based SoC audio support for the Tegra System-on-Chip" tristate "Alternative DAPM-based SoC audio support for the Tegra System-on-Chip"
depends on ARCH_TEGRA depends on ARCH_TEGRA

View File

@@ -192,11 +192,13 @@ static int tegra186_asrc_runtime_resume(struct device *dev)
regmap_write(asrc->regmap, TEGRA186_ASRC_GLOBAL_INT_CLEAR, regmap_write(asrc->regmap, TEGRA186_ASRC_GLOBAL_INT_CLEAR,
0x01); 0x01);
#if defined(CONFIG_TEGRA186_ASRC_INT_CLEAR_WAR) /**
/* Hw Bug:200208400 - asrc interrupt status gets cleared when * Hw Bug:200208400 - asrc interrupt status gets cleared when
it is cleared twice */ * it is cleared twice. This WAR is only applicable for T186
regmap_write(asrc->regmap, TEGRA186_ASRC_GLOBAL_INT_CLEAR, 0x1); */
#endif if (of_machine_is_compatible("nvidia,tegra186-asrc"))
regmap_write(asrc->regmap, TEGRA186_ASRC_GLOBAL_INT_CLEAR, 0x1);
for (lane_id = 0; lane_id < 6; lane_id++) { for (lane_id = 0; lane_id < 6; lane_id++) {
if (asrc->lane[lane_id].ratio_source == RATIO_SW) { if (asrc->lane[lane_id].ratio_source == RATIO_SW) {
regmap_write(asrc->regmap, regmap_write(asrc->regmap,
@@ -1059,11 +1061,14 @@ static void tegra186_asrc_ahc_cb(void *data)
regcache_cache_bypass(asrc->regmap, true); regcache_cache_bypass(asrc->regmap, true);
regmap_write(asrc->regmap, TEGRA186_ASRC_GLOBAL_INT_CLEAR, 0x1); regmap_write(asrc->regmap, TEGRA186_ASRC_GLOBAL_INT_CLEAR, 0x1);
#if defined(CONFIG_TEGRA186_ASRC_INT_CLEAR_WAR)
/* Hw Bug:200208400 - asrc interrupt status gets cleared when /**
it is cleared twice */ * Hw Bug:200208400 - asrc interrupt status gets cleared when
regmap_write(asrc->regmap, TEGRA186_ASRC_GLOBAL_INT_CLEAR, 0x1); * it is cleared twice. This WAR is only applicable for T186
#endif */
if (of_machine_is_compatible("nvidia,tegra186-asrc"))
regmap_write(asrc->regmap, TEGRA186_ASRC_GLOBAL_INT_CLEAR, 0x1);
regmap_write(asrc->regmap, TEGRA186_ASRC_GLOBAL_ENB, 0x0); regmap_write(asrc->regmap, TEGRA186_ASRC_GLOBAL_ENB, 0x0);
udelay(100); udelay(100);
regmap_write(asrc->regmap, TEGRA186_ASRC_GLOBAL_ENB, 0x1); regmap_write(asrc->regmap, TEGRA186_ASRC_GLOBAL_ENB, 0x1);
@@ -1073,6 +1078,7 @@ static void tegra186_asrc_ahc_cb(void *data)
static const struct of_device_id tegra186_asrc_of_match[] = { static const struct of_device_id tegra186_asrc_of_match[] = {
{ .compatible = "nvidia,tegra186-asrc" }, { .compatible = "nvidia,tegra186-asrc" },
{ .compatible = "nvidia,tegra194-asrc" },
{}, {},
}; };
static int tegra186_asrc_platform_probe(struct platform_device *pdev) static int tegra186_asrc_platform_probe(struct platform_device *pdev)