[T-Mobile Samsung Galaxy S II SGH-T989] car vs driver:
You want to dig through this file:

arch/arm/mach-msm/devices-msm8x60.c

Here are the relevant structures, starting around line 819:

static struct kgsl_device_platform_data kgsl_3d0_pdata = {
.pwrlevel = {
{
.gpu_freq = 320000000,
.bus_freq = 4,
.io_fraction = 0,
},
{
.gpu_freq = 300000000,
.bus_freq = 4,
.io_fraction = 0,
},
{
.gpu_freq = 266667000,
.bus_freq = 4,
.io_fraction = 25,
},
{
.gpu_freq = 228571000,
.bus_freq = 3,
.io_fraction = 50,
},
{
.gpu_freq = 200000000,
.bus_freq = 2,
.io_fraction = 100,
},
{
.gpu_freq = 177778000,
.bus_freq = 1,
.io_fraction = 100,
},
{
.gpu_freq = 27000000,
.bus_freq = 0,
},
},
.init_level = 2,
#if defined(CONFIG_MSM_KGSL_GPU_CLOCK_MAX) || defined(CONFIG_MSM_KGSL_GPU_CLOCK_NIBBLES)
.max_level = 0,
#elif defined(CONFIG_MSM_KGSL_GPU_CLOCK_MODERATE)
.max_level = 1,
#else
.max_level = 2,
#endif
.num_levels = 7,
.set_grp_async = NULL,
.idle_timeout = HZ/5,
.nap_allowed = true,
.clk_map = KGSL_CLK_CORE | KGSL_CLK_IFACE | KGSL_CLK_MEM_IFACE,
#ifdef CONFIG_MSM_BUS_SCALING
.bus_scale_table = &grp3d_bus_scale_pdata,
#endif
};

struct platform_device msm_kgsl_3d0 = {
.name = "kgsl-3d0",
.id = 0,
.num_resources = ARRAY_SIZE(kgsl_3d0_resources),
.resource = kgsl_3d0_resources,
.dev = {
.platform_data = &kgsl_3d0_pdata,
},
};

static struct resource kgsl_2d0_resources[] = {
{
.name = KGSL_2D0_REG_MEMORY,
.start = 0x04100000, /* Z180 base address */
.end = 0x04100FFF,
.flags = IORESOURCE_MEM,
},
{
.name = KGSL_2D0_IRQ,
.start = GFX2D0_IRQ,
.end = GFX2D0_IRQ,
.flags = IORESOURCE_IRQ,
},
};

static struct kgsl_device_platform_data kgsl_2d0_pdata = {
.pwrlevel = {
{
.gpu_freq = 266667000,
.bus_freq = 2,
},
{
.gpu_freq = 228571000,
.bus_freq = 2,
},
{
.gpu_freq = 200000000,
.bus_freq = 1,
},
{
.gpu_freq = 160000000,
.bus_freq = 1,
},
{
.gpu_freq = 96000000,
.bus_freq = 1,
},
{
.gpu_freq = 27000000,
.bus_freq = 0,
},
},
.init_level = 2,
#if defined(CONFIG_MSM_KGSL_GPU_CLOCK_MAX)
.max_level = 0,
#elif defined(CONFIG_MSM_KGSL_GPU_CLOCK_MODERATE) || defined(CONFIG_MSM_KGSL_GPU_CLOCK_NIBBLES)
.max_level = 1,
#else
.max_level = 2,
#endif
.num_levels = 6,
.set_grp_async = NULL,
.idle_timeout = HZ/5,
.nap_allowed = true,
.clk_map = KGSL_CLK_CORE | KGSL_CLK_IFACE,
#ifdef CONFIG_MSM_BUS_SCALING
.bus_scale_table = &grp2d0_bus_scale_pdata,
#endif
};

struct platform_device msm_kgsl_2d0 = {
.name = "kgsl-2d0",
.id = 0,
.num_resources = ARRAY_SIZE(kgsl_2d0_resources),
.resource = kgsl_2d0_resources,
.dev = {
.platform_data = &kgsl_2d0_pdata,
},
};

static struct resource kgsl_2d1_resources[] = {
{
.name = KGSL_2D1_REG_MEMORY,
.start = 0x04200000, /* Z180 device 1 base address */
.end = 0x04200FFF,
.flags = IORESOURCE_MEM,
},
{
.name = KGSL_2D1_IRQ,
.start = GFX2D1_IRQ,
.end = GFX2D1_IRQ,
.flags = IORESOURCE_IRQ,
},
};

static struct kgsl_device_platform_data kgsl_2d1_pdata = {
.pwrlevel = {
{
.gpu_freq = 266667000,
.bus_freq = 2,
},

{
.gpu_freq = 228571000,
.bus_freq = 2,
},
{
.gpu_freq = 200000000,
.bus_freq = 1,
},
{
.gpu_freq = 160000000,
.bus_freq = 1,
},
{
.gpu_freq = 96000000,
.bus_freq = 1,
},
{
.gpu_freq = 27000000,
.bus_freq = 0,
},
},
.init_level = 2,
#if defined(CONFIG_MSM_KGSL_GPU_CLOCK_MAX)
.max_level = 0,
#elif defined(CONFIG_MSM_KGSL_GPU_CLOCK_MODERATE) || defined(CONFIG_MSM_KGSL_GPU_CLOCK_NIBBLES)
.max_level = 1,
#else
.max_level = 2,
#endif
.num_levels = 6,
.set_grp_async = NULL,
.idle_timeout = HZ/5,
.nap_allowed = false,
.clk_map = KGSL_CLK_CORE | KGSL_CLK_IFACE,
#if 0	// ICS ES2
.clk = {
.name = {
/* note: 2d clocks disabled on v1 */
.clk = "core_clk",
.pclk = "iface_clk",
},
#endif
#ifdef CONFIG_MSM_BUS_SCALING
.bus_scale_table = &grp2d1_bus_scale_pdata,
#endif
};

Notice that there are two for 2D and one for 3D. You'll also see in here that based on your configs, it'll set the level at which it clocks each GPU. The definition CONFIG_MSM_KGSL_GPU_CLOCK_NIBBLES is what I added in my last commit, I build with that set as the default for the Nibbles ROM. You can mix and match the frequencies following how I did that. Do NOT set the 2D frequencies different from each other. Also, the 3D at 320MHz will eventually crash the device, but it's pretty fun to screw with anyway.

Don't mess with anything else here, there's really nothing further you can tweak. Also, make sure your num_levels value matches the number of clock speeds in the structure. If you remove one, subtract 1 from the num_levels and vice versa.

Tread lightly here my friend, screw up these values and you could easily cook the GPU and hard brick your device.

One thing I'm working on is making this configurable on the fly through system settings -> performance. That requires a change to the settings panel of CM10 from what I can tell, but I only briefly looked into it. Maybe this weekend I'll sort it out as part of the Nibbles ROM and shoot you over the code if I can get it working properly.

I wouldn't do this. The kernel supports user voltage changes, if your settings aren't properly reflected in voltage control people could be under volting by more than they thing they are which will cause instability. Double check that your voltage changes show up as default in something like IncrediControl to be sure. If they don't, I'd revert the change back to stock.