3D GPU: overclock 3D gpu to 480MHz

file:e72150048b07cee2bef954beb74b840edb2b4228(new)
--- /dev/null
+++ b/arch/arm/kernel/machine_kexec.c.rej
@@ -0,0 +1,12 @@
+--- arch/arm/kernel/machine_kexec.c
++++ arch/arm/kernel/machine_kexec.c
+@@ -106,6 +111,9 @@
+ mem_text_write_kernel_word(&kexec_indirection_page, page_list);
+ mem_text_write_kernel_word(&kexec_mach_type, machine_arch_type);
+ mem_text_write_kernel_word(&kexec_boot_atags, image->start - KEXEC_ARM_ZIMAGE_OFFSET + KEXEC_ARM_ATAGS_OFFSET);
++#ifdef CONFIG_KEXEC_HARDBOOT
++ mem_text_write_kernel_word(&kexec_hardboot, image->hardboot);
++#endif
+
+ /* copy our kernel relocation code to the control code page */
+ memcpy(reboot_code_buffer,
file:8774b648ac6fb3c35ce3d1e0b2f128ee85fc4fa8 -> file:7b73ca6e8a190d71a6f7e659a88590ec68d1e2c4
--- a/arch/arm/mach-msm/clock-8960.c
+++ b/arch/arm/mach-msm/clock-8960.c
@@ -3392,6 +3392,34 @@ static unsigned long fmax_gfx3d_8960_v2[
[VDD_DIG_HIGH] = 400000000
};
+static struct clk_freq_tbl clk_tbl_gfx3d_8960_oc[] = {
+ F_GFX3D( 0, gnd, 0, 0),
+ F_GFX3D( 27000000, pxo, 0, 0),
+ F_GFX3D( 48000000, pll8, 1, 8),
+ F_GFX3D( 54857000, pll8, 1, 7),
+ F_GFX3D( 64000000, pll8, 1, 6),
+ F_GFX3D( 76800000, pll8, 1, 5),
+ F_GFX3D( 96000000, pll8, 1, 4),
+ F_GFX3D(128000000, pll8, 1, 3),
+ F_GFX3D(145455000, pll2, 2, 11),
+ F_GFX3D(160000000, pll2, 1, 5),
+ F_GFX3D(177778000, pll2, 2, 9),
+ F_GFX3D(200000000, pll2, 1, 4),
+ F_GFX3D(228571000, pll2, 2, 7),
+ F_GFX3D(266667000, pll2, 1, 3),
+ F_GFX3D(300000000, pll3, 1, 4),
+ F_GFX3D(320000000, pll2, 2, 5),
+ F_GFX3D(400000000, pll2, 1, 2),
+ F_GFX3D(480000000, pll3, 2, 5),
+ F_END
+};
+
+static unsigned long fmax_gfx3d_8960_oc[MAX_VDD_LEVELS] __initdata = {
+ [VDD_DIG_LOW] = 128000000,
+ [VDD_DIG_NOMINAL] = 320000000,
+ [VDD_DIG_HIGH] = 480000000
+};
+
static struct clk_freq_tbl clk_tbl_gfx3d_8064[] = {
F_GFX3D( 0, gnd, 0, 0),
F_GFX3D( 27000000, pxo, 0, 0),
@@ -5888,9 +5916,9 @@ static void __init msm8960_clock_init(vo
memcpy(msm_clocks_8960, msm_clocks_8960_v1,
sizeof(msm_clocks_8960_v1));
if (SOCINFO_VERSION_MAJOR(socinfo_get_version()) >= 2) {
- gfx3d_clk.freq_tbl = clk_tbl_gfx3d_8960_v2;
+ gfx3d_clk.freq_tbl = clk_tbl_gfx3d_8960_oc;
- memcpy(gfx3d_clk.c.fmax, fmax_gfx3d_8960_v2,
+ memcpy(gfx3d_clk.c.fmax, fmax_gfx3d_8960_oc,
sizeof(gfx3d_clk.c.fmax));
memcpy(ijpeg_clk.c.fmax, fmax_ijpeg_8960_v2,
sizeof(ijpeg_clk.c.fmax));
file:f67a5cb00df3f75a7e1627050fedd45b18927fde -> file:778ac52866dbf700662b5dbff2f3530f0375674f
--- a/arch/arm/mach-msm/devices-8960.c
+++ b/arch/arm/mach-msm/devices-8960.c
@@ -2631,7 +2631,7 @@ static struct msm_bus_vectors grp3d_nomi
.src = MSM_BUS_MASTER_GRAPHICS_3D,
.dst = MSM_BUS_SLAVE_EBI_CH0,
.ab = 0,
- .ib = KGSL_CONVERT_TO_MBPS(2656),
+ .ib = KGSL_CONVERT_TO_MBPS(3968),
},
};
@@ -2640,7 +2640,7 @@ static struct msm_bus_vectors grp3d_max_
.src = MSM_BUS_MASTER_GRAPHICS_3D,
.dst = MSM_BUS_SLAVE_EBI_CH0,
.ab = 0,
- .ib = KGSL_CONVERT_TO_MBPS(3968),
+ .ib = KGSL_CONVERT_TO_MBPS(5290),
},
};
@@ -2788,14 +2788,14 @@ static struct resource kgsl_3d0_resource
static struct kgsl_device_platform_data kgsl_3d0_pdata = {
.pwrlevel = {
{
- .gpu_freq = 400000000,
+ .gpu_freq = 480000000,
.bus_freq = 4,
.io_fraction = 0,
},
{
- .gpu_freq = 300000000,
+ .gpu_freq = 400000000,
.bus_freq = 3,
- .io_fraction = 33,
+ .io_fraction = 0,
},
{
.gpu_freq = 200000000,