[EVO 4G Android Development] sheffield:
Try

make -j <n> zImage #...

instead of

make zImage #...

This uses <n> threads to build in parallel on multicore, e.g

make -j 4 zImage ARCH=arm #...

would use four threads on a quad core machine.

Here's an idea. Set all timing registers (0xb100-0xb109) to their default values. Both in the init section and in panel_unblank.

See pp 258-260 ("Display Waveform Cycle setting in normal mode") of the novatek docs for an explanation of what this does + waveform pics, but, in a nutshell, those registers control the hardware refresh / frame rate according to the formula posted earlier...

1/T2*(line*VPA) = freq.

0xb100 is VPA

0xb101 and oxb102 are T2,

others are tied to the value of T2

To set the refresh rate to default 60Hz, try the following...

(1) Put the red lines in the nov_init_seq array in board-supersonic-panel.c (insert after line 220 in the git source):

struct reg_val_pair nov_init_seq[] = {[COLOR="Red"]
{0xb100, 0x06},
{0xb101, 0x01},
{0xb102, 0x54},
{0xb103, 0x03},
{0xb104, 0x20},
{0xb105, 0x08},
{0xb106, 0x08},
{0xb107, 0x4a},
{0xb108, 0x00},
{0xb109, 0x00},[/COLOR]
{0xc000, 0x86},
{0xc001, 0x00},
{0xc002, 0x86},
{0xc003, 0x00},
//
// ...
//

(2) Put the red lines to the supersonic_panel_unblank function in board-supersonic-panel.c (insert after git source line 701):

static int
supersonic_panel_unblank(struct msm_mddi_bridge_platform_data *bridge_data,
struct msm_mddi_client_data *client_data)
{
printk(KERN_DEBUG "%s\n", __func__);
if (panel_type == 1) {
// nov
suc_backlight_switch(LED_FULL);[COLOR="Red"]
client_data->remote_write(client_data, 0x06, 0xb100);
msleep(100);
client_data->remote_write(client_data, 0x01, 0xb101);
msleep(100);
client_data->remote_write(client_data, 0x54, 0xb102);
msleep(100);
client_data->remote_write(client_data, 0x03, 0xb103);
msleep(100);
client_data->remote_write(client_data, 0x20, 0xb104);
msleep(100);
client_data->remote_write(client_data, 0x08, 0xb105);
msleep(100);
client_data->remote_write(client_data, 0x08, 0xb106);
msleep(100);
client_data->remote_write(client_data, 0x4A, 0xb107);
msleep(100);
client_data->remote_write(client_data, 0x00, 0xb108);
msleep(100);
client_data->remote_write(client_data, 0x00, 0xb109);
msleep(100);[/COLOR]
client_data->remote_write(client_data, 0x00, 0x2900);
msleep(100);
client_data->remote_write(client_data, 0x24, 0x5300);
} else {
// epson
suc_backlight_switch(LED_FULL);
client_data->remote_write(client_data, 0x4000, 0x600);
msleep(10);
qspi_send_9bit(0x00, 0x29);
}
backlight_control(1);
return 0;
}

All of these are default values taken from the table on page 260. It should be 480x800 @ 60Hz. We should be able to tweak these numbers if the defaults don't work. There's also a restriction on the values of registers 0x0100-0x0109 (aka VPA and T2 through T9) if you want to set your own values:

T2=T4 + 2*(T5 + T5P) + 3*T6 + T7 + T8 + T9

Assuming your screen works, check to see if this actually did anything by using the printk() for maximum video framerate and minimum video frame rate discussed earlier and/or running a framerate benchmark.

modified board-supersonic-panel.c is attached if anyone wants to test (change .txt to .c).