arm: tegra: la: hack LA value for VI
Srikanth Nori [Thu, 22 Aug 2013 01:00:16 +0000 (18:00 -0700)]
With current LA setting VI FIFO can overflow when VI/EMC clock
changes. This fix pretends the FIFO is smaller and reduces the
latency allowance for VI, which ensures the FIFO drains in time.

Bug 1323454

Change-Id: I5f727d3d9ce7dc097029b8357d4686cd9b4490b0
Signed-off-by: Srikanth Nori <srikanthn@nvidia.com>
Reviewed-on: http://git-master/r/264659
GVS: Gerrit_Virtual_Submit
Reviewed-by: Jihoon Bang <jbang@nvidia.com>
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Krishna Reddy <vdumpa@nvidia.com>

arch/arm/mach-tegra/latency_allowance.c

index ba17549..37cc7f4 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * arch/arm/mach-tegra/latency_allowance.c
  *
- * Copyright (C) 2011-2012, NVIDIA CORPORATION. All rights reserved.
+ * Copyright (C) 2011-2013, NVIDIA CORPORATION. All rights reserved.
  *
  * This software is licensed under the terms of the GNU General Public
  * License version 2, as published by the Free Software Foundation, and
@@ -179,6 +179,16 @@ int tegra_set_latency_allowance(enum tegra_la_id id,
         * we expect to see */
        if (id >= ID(DISPLAY_0A) && id <= ID(DISPLAY_HCB))
                fifo_size_in_atoms /= fifo_scale;
+
+/* Bug 1323454 */
+#ifdef CONFIG_ARCH_TEGRA_11x_SOC
+       /* Similarly for VI pretend there's a smaller FIFO to make up
+        * for the additional latency in case there's a clock
+        * frequency change in VI/EMC.
+        */
+       if (id >= TEGRA_LA_VI_WSB && id <= TEGRA_LA_VI_WY)
+               fifo_size_in_atoms >>= 1;
+#endif
 #endif
 
        if (bandwidth_in_mbps == 0) {