arm: tegra: mc: add config option for PTSA.
Krishna Reddy [Fri, 12 Oct 2012 00:48:10 +0000 (17:48 -0700)]
Add config option for MC PTSA enable/disable.
Move T11x specific registers to t11x file.

Change-Id: I48a7013937faffdf99b1f54135b0b06da961b156
Signed-off-by: Krishna Reddy <vdumpa@nvidia.com>
Reviewed-on: http://git-master/r/143901
Reviewed-by: Jon Mayo <jmayo@nvidia.com>

Rebase-Id: Ra60e4393cc04d0d4d7c6eee91dea12c7736fc103

arch/arm/mach-tegra/Kconfig
arch/arm/mach-tegra/latency_allowance.c
arch/arm/mach-tegra/tegra11x_la_priv.h

index 02151e4..325abac 100644 (file)
@@ -110,6 +110,7 @@ config ARCH_TEGRA_11x_SOC
        select TEGRA_DYNAMIC_CBUS
        select TEGRA_LATENCY_ALLOWANCE if !TEGRA_FPGA_PLATFORM
        select TEGRA_LP2_CPU_TIMER if !TEGRA_RAIL_OFF_MULTIPLE_CPUS
+       select TEGRA_MC_PTSA if !TEGRA_FPGA_PLATFORM
        select USB_ARCH_HAS_EHCI if USB_SUPPORT
        select USB_EHCI_TEGRA if USB_SUPPORT
        select USB_ULPI if USB_SUPPORT
@@ -447,6 +448,14 @@ config TEGRA_LATENCY_ALLOWANCE_SCALING
          programmed latency allowance values based on fifo threshold levels
          set for for display and vi hardware.
 
+config TEGRA_MC_PTSA
+       bool "Enable MC PTSA programming"
+       depends on TEGRA_LATENCY_ALLOWANCE
+       help
+         Enables Priority Tier Snap Arbiter programming in
+         Memory Controller. PTSA is a Memory Controller feature that
+         allows specifying the bandwidth necessary for ISO clients.
+
 config TEGRA_ISOMGR
        bool "Isochronous Bandwidth Manager "
        help
index 9b35a07..ba17549 100644 (file)
 /* Bug 995270 */
 #define HACK_LA_FIFO 1
 
-/* Hack program PTSA */
-#if defined (CONFIG_ARCH_TEGRA_11x_SOC)
-#define HACK_PROGRAM_PTSA 1
-#else
-#define HACK_PROGRAM_PTSA 0
-#endif
-
-#if HACK_PROGRAM_PTSA
-#define MC_DIS_PTSA_RATE_0             0x41c
-#define MC_DIS_PTSA_MIN_0              0x420
-#define MC_DIS_PTSA_MAX_0              0x424
-#define MC_DISB_PTSA_RATE_0            0x428
-#define MC_DISB_PTSA_MIN_0             0x42c
-#define MC_DISB_PTSA_MAX_0             0x430
-#define MC_VE_PTSA_RATE_0              0x434
-#define MC_VE_PTSA_MIN_0               0x438
-#define MC_VE_PTSA_MAX_0               0x43c
-#define MC_RING2_PTSA_RATE_0           0x440
-#define MC_RING2_PTSA_MIN_0            0x444
-#define MC_RING2_PTSA_MAX_0            0x448
-#define MC_MLL_MPCORER_PTSA_RATE_0     0x44c
-#define MC_MLL_MPCORER_PTSA_MIN_0      0x450
-#define MC_MLL_MPCORER_PTSA_MAX_0      0x454
-#define MC_SMMU_SMMU_PTSA_RATE_0       0x458
-#define MC_SMMU_SMMU_PTSA_MIN_0                0x45c
-#define MC_SMMU_SMMU_PTSA_MAX_0                0x460
-#define MC_R0_DIS_PTSA_RATE_0          0x464
-#define MC_R0_DIS_PTSA_MIN_0           0x468
-#define MC_R0_DIS_PTSA_MAX_0           0x46c
-#define MC_R0_DISB_PTSA_RATE_0         0x470
-#define MC_R0_DISB_PTSA_MIN_0          0x474
-#define MC_R0_DISB_PTSA_MAX_0          0x478
-#define MC_RING1_PTSA_RATE_0           0x47c
-#define MC_RING1_PTSA_MIN_0            0x480
-#define MC_RING1_PTSA_MAX_0            0x484
-
-#define MC_DIS_EXTRA_SNAP_LEVELS_0     0x2ac
-#define MC_HEG_EXTRA_SNAP_LEVELS_0     0x2b0
-#define MC_EMEM_ARB_MISC0_0            0x0d8
-#define MC_PTSA_GRANT_DECREMENT_0      0x960
-
-#define BASE_EMC_FREQ_MHZ              500
-#define MAX_CAMERA_BW_MHZ              528
+#ifdef CONFIG_TEGRA_MC_PTSA
 
 static unsigned int get_ptsa_rate(unsigned int bw)
 {
@@ -210,7 +168,7 @@ int tegra_set_latency_allowance(enum tegra_la_id id,
        ci = &la_info_array[idx];
        fifo_size_in_atoms = ci->fifo_size_in_atoms;
 
-#if HACK_PROGRAM_PTSA
+#ifdef CONFIG_TEGRA_MC_PTSA
        if (id >= TEGRA_LA_DISPLAY_0A && id <= TEGRA_LA_DISPLAY_HCB) {
                disp_bw_array[id - TEGRA_LA_DISPLAY_0A] = bandwidth_in_mbps;
                update_display_ptsa_rate();
@@ -476,7 +434,7 @@ static int __init tegra_latency_allowance_init(void)
        tegra_set_latency_allowance(TEGRA_LA_G2DW, 20);
 #endif
 
-#if HACK_PROGRAM_PTSA
+#ifdef CONFIG_TEGRA_MC_PTSA
        emc_clk = clk_get(NULL, "emc");
        la_debug("**** emc clk_rate=%luMHz", clk_get_rate(emc_clk)/1000000);
 
index f480469..1eac0a7 100644 (file)
 #define MC_LA_EMUCIF_0         0x38c
 #define MC_LA_TSEC_0           0x390
 
+#define MC_DIS_PTSA_RATE_0             0x41c
+#define MC_DIS_PTSA_MIN_0              0x420
+#define MC_DIS_PTSA_MAX_0              0x424
+#define MC_DISB_PTSA_RATE_0            0x428
+#define MC_DISB_PTSA_MIN_0             0x42c
+#define MC_DISB_PTSA_MAX_0             0x430
+#define MC_VE_PTSA_RATE_0              0x434
+#define MC_VE_PTSA_MIN_0               0x438
+#define MC_VE_PTSA_MAX_0               0x43c
+#define MC_RING2_PTSA_RATE_0           0x440
+#define MC_RING2_PTSA_MIN_0            0x444
+#define MC_RING2_PTSA_MAX_0            0x448
+#define MC_MLL_MPCORER_PTSA_RATE_0     0x44c
+#define MC_MLL_MPCORER_PTSA_MIN_0      0x450
+#define MC_MLL_MPCORER_PTSA_MAX_0      0x454
+#define MC_SMMU_SMMU_PTSA_RATE_0       0x458
+#define MC_SMMU_SMMU_PTSA_MIN_0                0x45c
+#define MC_SMMU_SMMU_PTSA_MAX_0                0x460
+#define MC_R0_DIS_PTSA_RATE_0          0x464
+#define MC_R0_DIS_PTSA_MIN_0           0x468
+#define MC_R0_DIS_PTSA_MAX_0           0x46c
+#define MC_R0_DISB_PTSA_RATE_0         0x470
+#define MC_R0_DISB_PTSA_MIN_0          0x474
+#define MC_R0_DISB_PTSA_MAX_0          0x478
+#define MC_RING1_PTSA_RATE_0           0x47c
+#define MC_RING1_PTSA_MIN_0            0x480
+#define MC_RING1_PTSA_MAX_0            0x484
+
+#define MC_DIS_EXTRA_SNAP_LEVELS_0     0x2ac
+#define MC_HEG_EXTRA_SNAP_LEVELS_0     0x2b0
+#define MC_EMEM_ARB_MISC0_0            0x0d8
+#define MC_PTSA_GRANT_DECREMENT_0      0x960
+
+#define BASE_EMC_FREQ_MHZ              500
+#define MAX_CAMERA_BW_MHZ              528
+
+
 /*
  * The rule for getting the fifo_size_in_atoms is:
  * 1.If REORDER_DEPTH exists, use it(default is overridden).