[XPERIA X1 Android Development] scholbert:
screen rotation, again and again...

Hi,

it's me again. There's no doubt we'll have to fix this issue!

I already admited that i'm a badass kernel hacker, but let me point something out, please :p

This hack may work, but we would reinvent the wheel for every distribtuion we'd like to run on our X1.

Work around for Android, Meamo, Ubuntu.... would look different.

That's obviously the better way!

O.K. we need some good hackers and reversing skills, otherwise this issue never will be solved.

Let me hint the coders at some point in the code :D

First let's have a look at the raphael code sources at line 148:

http://gitorious.org/~fatsal/linux-...27/arch/arm/mach-msm/board-htcraphael-panel.c

Step back in time and look at what i had posted some weeks ago:

http://xdaforums.com/showpost.php?p=5304521&postcount=106

Have a look in this diagram and especially at the lines i marked in the picture attached. Do you see the similarity ;)

I guess it would be possible to hack this damn driver for kovsky to initialize the panel the correct way!

We just need to find the init routine from the SPL code and set the registers in our driver code accordingly.

Maybe this will led to other problems, so could become a try and error...

I may prepare my reversed assembler code of SPL to give it to someone able to understand what i'm talking about and willing to help.

Simply write a PM and i'll send it via email...

Hacker's only please!

EDIT:

Could look like this for kovsky:

static struct mddi_table mddi_lcm_init_table[] = {
{0x0010801c,0x4ed000a2},{1,50},
{0x00108020,0x00000110},
{0x00108024,0x00000000},
{0x00108028,0x00000001},{1,100},
{0x0010802c,0x00000001},

{0x00160004,0x000000fd},
{0x00150000,0x03cf0044},
{0x00150004,0x000003cf},
{0x00170000,0x00000001},{1,50},
{0x00150028,0x00000000},{1,50},

{0x00160000,0x00000000},
{0x00150014,0x00000001},
{0x0016000c,0x00000001}, //???
{0x00160008,0x00000001},

{0x00160004,0x000000ff},

{0x00140008,0x00000060},
{0x00140000,0x00001388},{1,60},

{0x0014001c,0x00000001},
{0x00140028,0x00000060},
{0x00140020,0x00001388},
{0x0014001c,0x00000001},
{0x00140028,0x00000060},
{0x00140020,0x00001388},

//{0x0014003c,0x00000001},
{0x00140008,0x000000e0},
{0x00140028,0x000000e0},
{0x00140068,0x00000001},

{0x00120000,0x00000799},
{0x00120004,0x00000100},

{0x00160010,0x00000000},
{0x00120000,0x0000079b},

{0x00108044,0x032001e0},
{0x00108048,0x01e000f0}, //???
{0x0010804c,0x01e000f0}, //???
{0x00108050,0x01e000f0}, //???
{0x00108054,0x00dc00b0},

{0x00160004,0x0000a1ff},

{0x00110010,0x00000010},

{0x00110004,0x00000001},
{0x0011000c,0x0000000b},

{0x00110030,0x00000002},
{0x00110020,0x00000000},
{0x00110034,0x000000f9},
{0x00110038,0x00000002},
{0x0011003c,0x00000007},
{0x00110040,0x000000ef},

{0x00110044,0x00000333}, //???

{0x00110048,0x00000005},
{0x0011004c,0x00000009},

{0x00110050,0x0000031f},
{0x00160010,0x00000000},

{0x0011005c,0x00000001},
{0x00110054,0x00000005},

{0x00110008,0x00000001},

{0x00120000,0x00000771},
{0x00120004,0x00000100},
{0x00160010,0x00000000},
{0x00120000,0x00000773},

//{0x00150000,0x00040004},
};

I just gathered the values from the flow diagram, so this was quick and dirty.

We should implement this table in the kovsky code and rework it after some testing. I'm sure there's something missing :o

I also should check the subroutines and could be that the last line (0x00150000...) is also required.

Have fun!

scholbert