ARM: tegra: clock: add DC2 to iso usage table
Jihoon Bang [Wed, 10 Jul 2013 17:22:13 +0000 (10:22 -0700)]
Consider DC1 and DC2 as separate iso client.
If DC1 and DC2 are on at the same time, use lower
iso efficiency as DC is on with other client.

Bug 1320063

Change-Id: Id2060339b50899a4507df0e6dee62648a3a9bd2f
Reviewed-on: http://git-master/r/247282
(cherry picked from commit e2fba905182737c73446f5d989b22cb5d886963a)
Signed-off-by: Jihoon Bang <jbang@nvidia.com>
Reviewed-on: http://git-master/r/247251
(cherry picked from commit f6111cb1ab843c60a6265610d686deb6475b8f36)
Signed-off-by: Jihoon Bang <jbang@nvidia.com>
Reviewed-on: http://git-master/r/254364
Reviewed-by: Simone Willett <swillett@nvidia.com>
Tested-by: Simone Willett <swillett@nvidia.com>

arch/arm/mach-tegra/tegra11_clocks.c
arch/arm/mach-tegra/tegra11_emc.c
arch/arm/mach-tegra/tegra12_clocks.c
arch/arm/mach-tegra/tegra14_clocks.c
arch/arm/mach-tegra/tegra14_emc.c
arch/arm/mach-tegra/tegra_emc.c
arch/arm/mach-tegra/tegra_emc.h

index 4dadba0..2af7f89 100644 (file)
@@ -6973,8 +6973,8 @@ struct clk tegra_list_clks[] = {
 
        SHARED_EMC_CLK("avp.emc",       "tegra-avp",    "emc",  &tegra_clk_emc, NULL, 0, 0, 0),
        SHARED_EMC_CLK("cpu.emc",       "cpu",          "emc",  &tegra_clk_emc, NULL, 0, 0, 0),
-       SHARED_EMC_CLK("disp1.emc",     "tegradc.0",    "emc",  &tegra_clk_emc, NULL, 0, SHARED_ISO_BW, BIT(EMC_USER_DC)),
-       SHARED_EMC_CLK("disp2.emc",     "tegradc.1",    "emc",  &tegra_clk_emc, NULL, 0, SHARED_ISO_BW, BIT(EMC_USER_DC)),
+       SHARED_EMC_CLK("disp1.emc",     "tegradc.0",    "emc",  &tegra_clk_emc, NULL, 0, SHARED_ISO_BW, BIT(EMC_USER_DC1)),
+       SHARED_EMC_CLK("disp2.emc",     "tegradc.1",    "emc",  &tegra_clk_emc, NULL, 0, SHARED_ISO_BW, BIT(EMC_USER_DC2)),
        SHARED_EMC_CLK("hdmi.emc",      "hdmi",         "emc",  &tegra_clk_emc, NULL, 0, 0, 0),
        SHARED_EMC_CLK("usbd.emc",      "tegra-udc.0",  "emc",  &tegra_clk_emc, NULL, 0, 0, 0),
        SHARED_EMC_CLK("usb1.emc",      "tegra-ehci.0", "emc",  &tegra_clk_emc, NULL, 0, 0, 0),
index 61d2a0c..8585164 100644 (file)
@@ -68,27 +68,58 @@ static u8 iso_share_calc_t114_lpddr3_dc(unsigned long iso_bw);
 u8 tegra_emc_bw_efficiency = 80;
 
 static struct emc_iso_usage tegra11_ddr3_emc_iso_usage[] = {
-       { BIT(EMC_USER_DC),                     80},
-       { BIT(EMC_USER_DC) | BIT(EMC_USER_VI),  45},
+       { BIT(EMC_USER_DC1),                            80},
+       { BIT(EMC_USER_DC2),                            80},
+       { BIT(EMC_USER_DC1) | BIT(EMC_USER_DC2),        45},
+       { BIT(EMC_USER_DC1) | BIT(EMC_USER_VI),         45},
+       { BIT(EMC_USER_DC2) | BIT(EMC_USER_VI),         45},
 };
 
 static struct emc_iso_usage tegra11_lpddr3_emc_iso_usage[] = {
        {
-               BIT(EMC_USER_DC),
+               BIT(EMC_USER_DC1),
                80, iso_share_calc_t114_lpddr3_dc
        },
        {
-               BIT(EMC_USER_DC) | BIT(EMC_USER_VI),
+               BIT(EMC_USER_DC2),
+               80, iso_share_calc_t114_lpddr3_dc
+       },
+       {
+               BIT(EMC_USER_DC1) | BIT(EMC_USER_DC2),
+               45, iso_share_calc_t114_lpddr3_default
+       },
+       {
+               BIT(EMC_USER_DC1) | BIT(EMC_USER_VI),
                45, iso_share_calc_t114_lpddr3_default
        },
        {
-               BIT(EMC_USER_DC) | BIT(EMC_USER_MSENC),
+               BIT(EMC_USER_DC1) | BIT(EMC_USER_MSENC),
                50, iso_share_calc_t114_lpddr3_default
        },
        {
-               BIT(EMC_USER_DC) | BIT(EMC_USER_3D),
+               BIT(EMC_USER_DC1) | BIT(EMC_USER_3D),
                50, iso_share_calc_t114_lpddr3_default
        },
+       {
+               BIT(EMC_USER_DC1) | BIT(EMC_USER_VDE),
+               45, iso_share_calc_t114_lpddr3_default
+       },
+       {
+               BIT(EMC_USER_DC2) | BIT(EMC_USER_VI),
+               45, iso_share_calc_t114_lpddr3_default
+       },
+       {
+               BIT(EMC_USER_DC2) | BIT(EMC_USER_MSENC),
+               50, iso_share_calc_t114_lpddr3_default
+       },
+       {
+               BIT(EMC_USER_DC2) | BIT(EMC_USER_3D),
+               50, iso_share_calc_t114_lpddr3_default
+       },
+       {
+               BIT(EMC_USER_DC2) | BIT(EMC_USER_VDE),
+               45, iso_share_calc_t114_lpddr3_default
+       },
 };
 
 #define MHZ 1000000
index 2590586..ba61d01 100644 (file)
@@ -7101,8 +7101,8 @@ struct clk tegra_list_clks[] = {
 
        SHARED_EMC_CLK("avp.emc",       "tegra-avp",    "emc",  &tegra_clk_emc, NULL, 0, 0, 0),
        SHARED_EMC_CLK("cpu.emc",       "cpu",          "emc",  &tegra_clk_emc, NULL, 0, 0, 0),
-       SHARED_EMC_CLK("disp1.emc",     "tegradc.0",    "emc",  &tegra_clk_emc, NULL, 0, SHARED_ISO_BW, BIT(EMC_USER_DC)),
-       SHARED_EMC_CLK("disp2.emc",     "tegradc.1",    "emc",  &tegra_clk_emc, NULL, 0, SHARED_ISO_BW, BIT(EMC_USER_DC)),
+       SHARED_EMC_CLK("disp1.emc",     "tegradc.0",    "emc",  &tegra_clk_emc, NULL, 0, SHARED_ISO_BW, BIT(EMC_USER_DC1)),
+       SHARED_EMC_CLK("disp2.emc",     "tegradc.1",    "emc",  &tegra_clk_emc, NULL, 0, SHARED_ISO_BW, BIT(EMC_USER_DC2)),
        SHARED_EMC_CLK("hdmi.emc",      "hdmi",         "emc",  &tegra_clk_emc, NULL, 0, 0, 0),
        SHARED_EMC_CLK("usbd.emc",      "tegra-udc.0",  "emc",  &tegra_clk_emc, NULL, 0, 0, 0),
        SHARED_EMC_CLK("usb1.emc",      "tegra-ehci.0", "emc",  &tegra_clk_emc, NULL, 0, 0, 0),
index 7c7d76a..11fda22 100644 (file)
@@ -6515,8 +6515,8 @@ struct clk tegra_list_clks[] = {
 
        SHARED_EMC_CLK("avp.emc",       "tegra-avp",            "emc",  &tegra_clk_emc, NULL, 0, 0, 0),
        SHARED_EMC_CLK("cpu.emc",       "cpu",                  "emc",  &tegra_clk_emc, NULL, 0, 0, 0),
-       SHARED_EMC_CLK("disp1.emc",     "tegradc.0",            "emc",  &tegra_clk_emc, NULL, 0, SHARED_ISO_BW, BIT(EMC_USER_DC)),
-       SHARED_EMC_CLK("disp2.emc",     "tegradc.1",            "emc",  &tegra_clk_emc, NULL, 0, SHARED_ISO_BW, BIT(EMC_USER_DC)),
+       SHARED_EMC_CLK("disp1.emc",     "tegradc.0",            "emc",  &tegra_clk_emc, NULL, 0, SHARED_ISO_BW, BIT(EMC_USER_DC1)),
+       SHARED_EMC_CLK("disp2.emc",     "tegradc.1",            "emc",  &tegra_clk_emc, NULL, 0, SHARED_ISO_BW, BIT(EMC_USER_DC2)),
        SHARED_EMC_CLK("hdmi.emc",      "hdmi",                 "emc",  &tegra_clk_emc, NULL, 0, 0, 0),
        SHARED_EMC_CLK("usbd.emc",      "tegra-udc.0",          "emc",  &tegra_clk_emc, NULL, 0, 0, 0),
        SHARED_EMC_CLK("usb1.emc",      "tegra-ehci.0",         "emc",  &tegra_clk_emc, NULL, 0, 0, 0),
index 5afc6bb..a121b97 100644 (file)
@@ -48,8 +48,11 @@ module_param(emc_enable, bool, 0644);
 
 u8 tegra_emc_bw_efficiency = 100;
 static struct emc_iso_usage tegra14_emc_iso_usage[] = {
-       { BIT(EMC_USER_DC),                     80 },
-       { BIT(EMC_USER_DC) | BIT(EMC_USER_VI),  50 },
+       { BIT(EMC_USER_DC1),                            80 },
+       { BIT(EMC_USER_DC2),                            80 },
+       { BIT(EMC_USER_DC1) | BIT(EMC_USER_DC2),        50 },
+       { BIT(EMC_USER_DC1) | BIT(EMC_USER_VI),         50 },
+       { BIT(EMC_USER_DC2) | BIT(EMC_USER_VI),         50 },
        { BIT(EMC_USER_BB),     50 },
 };
 
index 276422d..9a89f52 100644 (file)
@@ -105,7 +105,8 @@ unsigned long tegra_emc_apply_efficiency(unsigned long total_bw,
 [EMC_USER_##module] = #module
 
 static const char *emc_user_names[EMC_USER_NUM] = {
-       USER_NAME(DC),
+       USER_NAME(DC1),
+       USER_NAME(DC2),
        USER_NAME(VI),
        USER_NAME(MSENC),
        USER_NAME(2D),
index 4dfe9b9..4191120 100644 (file)
@@ -31,12 +31,14 @@ enum {
 };
 
 enum emc_user_id {
-       EMC_USER_DC = 0,
+       EMC_USER_DC1 = 0,
+       EMC_USER_DC2,
        EMC_USER_VI,
        EMC_USER_MSENC,
        EMC_USER_2D,
        EMC_USER_3D,
        EMC_USER_BB,
+       EMC_USER_VDE,
 
        EMC_USER_NUM,
 };