[FINISHED & WORKING]TX with working screens users wanted! - Sony Xperia T, TL, TX, V
I have gathered the data and my phone is normal now.Thanks for participation!
And here is the data for MDW30_id_1e,which is Touch Firmware ver.C,provided by Sakilia @ Angeeks.Thank you!
The recovery method is posted here: http://forum.xda-developers.com/showthread.php?p=49297118
Due to the limitation of MAX RETURN PACKET SIZE=10,some data is NOT complete but it's easy to find the missing parts.
You can use the data to compare and create your own register recovery method.There are so many clues/hints in its driver
SPOILER:
GEN_READ
reg=0xE6
len=10
data[0]=0x12
data[1]=0x56
data[2]=0x81
data[3]=0x72
data[4]=0x1E
data[5]=0x01
data[6]=0x00
data[7]=0x00
data[8]=0x54
data[9]=0x33
GEN_READ
reg=0xE7
len=10
data[0]=0x02
data[1]=0x02
data[2]=0x0D
data[3]=0x36
data[4]=0x00
data[5]=0x00
data[6]=0x00
data[7]=0x00
data[8]=0xCE
data[9]=0x9A
GEN_READ
reg=0xDE
len=10
data[0]=0x10
data[1]=0x80
data[2]=0x11
data[3]=0x0B
data[4]=0x00
data[5]=0x00
data[6]=0x00
data[7]=0x00
data[8]=0x9E
data[9]=0xA0
GEN_READ
reg=0xBF
len=10
data[0]=0x01
data[1]=0x22
data[2]=0x33
data[3]=0x06
data[4]=0xB0
data[5]=0x00
data[6]=0x00
data[7]=0x00
data[8]=0xA2
data[9]=0x38
GEN_READ
reg=0xE4
len=10
data[0]=0x00
data[1]=0x00
data[2]=0x00
data[3]=0x00
data[4]=0x00
data[5]=0x00
data[6]=0x00
data[7]=0x00
data[8]=0x8C
data[9]=0x7C
GEN_READ
reg=0xE1
len=10
data[0]=0x00
data[1]=0x00
data[2]=0x00
data[3]=0x00
data[4]=0x00
data[5]=0x00
data[6]=0x00
data[7]=0x00
data[8]=0x8C
data[9]=0x7C
GEN_READ
reg=0xB2
len=10
data[0]=0x00
data[1]=0x00
data[2]=0x00
data[3]=0x00
data[4]=0x00
data[5]=0x00
data[6]=0x00
data[7]=0x00
data[8]=0x8C
data[9]=0x7C
GEN_READ
reg=0xB4
len=10
data[0]=0x02
data[1]=0x00
data[2]=0x00
data[3]=0x00
data[4]=0x00
data[5]=0x00
data[6]=0x00
data[7]=0x00
data[8]=0xE3
data[9]=0x77
GEN_READ
reg=0xB6
len=10
data[0]=0x51
data[1]=0xE3
data[2]=0x00
data[3]=0x00
data[4]=0x00
data[5]=0x00
data[6]=0x00
data[7]=0x00
data[8]=0x4C
data[9]=0x49
GEN_READ
reg=0xC0
len=10
data[0]=0x40
data[1]=0x02
data[2]=0x7F
data[3]=0xC8
data[4]=0x08
data[5]=0x00
data[6]=0x00
data[7]=0x00
data[8]=0xC1
data[9]=0x22
GEN_READ
reg=0xC1
len=10
data[0]=0x00
data[1]=0xA8
data[2]=0x00
data[3]=0x00
data[4]=0x00
data[5]=0x00
data[6]=0x00
data[7]=0x9D
data[8]=0x92
data[9]=0x08
GEN_READ
reg=0xC2
len=10
data[0]=0x00
data[1]=0x00
data[2]=0x09
data[3]=0x00
data[4]=0x00
data[5]=0x00
data[6]=0x00
data[7]=0x00
data[8]=0xFF
data[9]=0x59
GEN_READ
reg=0xC3
len=10
data[0]=0x04
data[1]=0x00
data[2]=0x00
data[3]=0x00
data[4]=0x00
data[5]=0x00
data[6]=0x00
data[7]=0x00
data[8]=0x52
data[9]=0x6A
GEN_READ
reg=0xC4
len=10
data[0]=0x4D
data[1]=0x83
data[2]=0x00
data[3]=0x00
data[4]=0x00
data[5]=0x00
data[6]=0x00
data[7]=0x00
data[8]=0xD3
data[9]=0x8D
GEN_READ
reg=0xC6
len=10
data[0]=0x12
data[1]=0x00
data[2]=0x08
data[3]=0x71
data[4]=0x00
data[5]=0x00
data[6]=0x00
data[7]=0x80
data[8]=0x7C
data[9]=0x97
GEN_READ
reg=0xC7
len=10
data[0]=0x22
data[1]=0x00
data[2]=0x00
data[3]=0x00
data[4]=0x00
data[5]=0x00
data[6]=0x00
data[7]=0x00
data[8]=0x13
data[9]=0xC1
GEN_READ
reg=0xC8
len=10
data[0]=0x4C
data[1]=0x0C
data[2]=0x0C
data[3]=0x0C
data[4]=0x00
data[5]=0x00
data[6]=0x00
data[7]=0x00
data[8]=0x41
data[9]=0xD5
GEN_READ
reg=0xC9
len=10
data[0]=0x00
data[1]=0x00
data[2]=0x00
data[3]=0x16
data[4]=0x32
data[5]=0x2E
data[6]=0x3A
data[7]=0x43
data[8]=0xBD
data[9]=0xAE
GEN_READ
reg=0xCA
len=10
data[0]=0x00
data[1]=0x12
data[2]=0x22
data[3]=0x26
data[4]=0x21
data[5]=0x1C
data[6]=0x25
data[7]=0x31
data[8]=0x9E
data[9]=0xE6
GEN_READ
reg=0xCB
len=10
data[0]=0x00
data[1]=0x0C
data[2]=0x20
data[3]=0x3A
data[4]=0x42
data[5]=0x40
data[6]=0x47
data[7]=0x4B
data[8]=0x01
data[9]=0x0E
GEN_READ
reg=0xCC
len=10
data[0]=0x00
data[1]=0x0D
data[2]=0x21
data[3]=0x24
data[4]=0x1D
data[5]=0x14
data[6]=0x18
data[7]=0x1F
data[8]=0xF4
data[9]=0x83
GEN_READ
reg=0xCD
len=10
data[0]=0x23
data[1]=0x39
data[2]=0x5A
data[3]=0x5F
data[4]=0x57
data[5]=0x4C
data[6]=0x51
data[7]=0x51
data[8]=0xEF
data[9]=0x09
GEN_READ
reg=0xCE
len=10
data[0]=0x00
data[1]=0x0C
data[2]=0x1C
data[3]=0x23
data[4]=0x1A
data[5]=0x0E
data[6]=0x0E
data[7]=0x13
data[8]=0x11
data[9]=0x74
GEN_READ
reg=0xD0
len=10
data[0]=0x6A
data[1]=0x64
data[2]=0x01
data[3]=0x18
data[4]=0xA1
data[5]=0x00
data[6]=0x21
data[7]=0x00
data[8]=0x8B
data[9]=0x2C
GEN_READ
reg=0xD1
len=10
data[0]=0x77
data[1]=0xD4
data[2]=0x5C
data[3]=0x21
data[4]=0x97
data[5]=0x06
data[6]=0x00
data[7]=0x00
data[8]=0x28
data[9]=0x86
GEN_READ
reg=0xD3
len=10
data[0]=0x33
data[1]=0x00
data[2]=0x00
data[3]=0x00
data[4]=0x00
data[5]=0x00
data[6]=0x00
data[7]=0x00
data[8]=0xD4
data[9]=0x1B
GEN_READ
reg=0xD5
len=10
data[0]=0x0C
data[1]=0x0C
data[2]=0x00
data[3]=0x00
data[4]=0x00
data[5]=0x00
data[6]=0x00
data[7]=0x00
data[8]=0x74
data[9]=0xF6
GEN_READ
reg=0xD7
len=10
data[0]=0x22
data[1]=0x21
data[2]=0x55
data[3]=0x46
data[4]=0x44
data[5]=0x34
data[6]=0x02
data[7]=0x65
data[8]=0x96
data[9]=0x15
GEN_READ
reg=0xD8
len=10
data[0]=0x34
data[1]=0x64
data[2]=0x23
data[3]=0x25
data[4]=0x62
data[5]=0x32
data[6]=0x00
data[7]=0x00
data[8]=0x75
data[9]=0x10
GEN_READ
reg=0xD9
len=10
data[0]=0xDF
data[1]=0xDD
data[2]=0x3F
data[3]=0x00
data[4]=0x00
data[5]=0x00
data[6]=0x00
data[7]=0x00
data[8]=0x91
data[9]=0x18
GEN_READ
reg=0xDA
len=10
data[0]=0x01
data[1]=0x00
data[2]=0x00
data[3]=0x00
data[4]=0x00
data[5]=0x00
data[6]=0x00
data[7]=0x00
data[8]=0x33
data[9]=0xFD
GEN_READ
reg=0xDB
len=10
data[0]=0x46
data[1]=0x62
data[2]=0x42
data[3]=0x00
data[4]=0x00
data[5]=0x00
data[6]=0x00
data[7]=0x00
data[8]=0x75
data[9]=0x9D
GEN_READ
reg=0xDE
len=10
data[0]=0x10
data[1]=0x80
data[2]=0x11
data[3]=0x0B
data[4]=0x00
data[5]=0x00
data[6]=0x00
data[7]=0x00
data[8]=0x9E
data[9]=0xA0
GEN_READ
reg=0xE2
len=10
data[0]=0x01
data[1]=0x00
data[2]=0x00
data[3]=0x00
data[4]=0x00
data[5]=0x00
data[6]=0x00
data[7]=0x00
data[8]=0x33
data[9]=0xFD
GEN_READ
reg=0xF3
len=10
data[0]=0x00
data[1]=0x00
data[2]=0x00
data[3]=0x25
data[4]=0x00
data[5]=0x00
data[6]=0x00
data[7]=0x00
data[8]=0x49
data[9]=0x3A
GEN_READ
reg=0xFD
len=10
data[0]=0x04
data[1]=0x55
data[2]=0x53
data[3]=0x00
data[4]=0x70
data[5]=0xFF
data[6]=0x10
data[7]=0x73
data[8]=0x19
data[9]=0xEC
GEN_READ
reg=0xE5
len=10
data[0]=0x01
data[1]=0x00
data[2]=0x00
data[3]=0x00
data[4]=0x00
data[5]=0x00
data[6]=0x00
data[7]=0x00
data[8]=0x33
data[9]=0xFD
GEN_READ
reg=0xE6
len=10
data[0]=0x12
data[1]=0x56
data[2]=0x81
data[3]=0x72
data[4]=0x1E
data[5]=0x01
data[6]=0x00
data[7]=0x00
data[8]=0x54
data[9]=0x33
GEN_READ
reg=0xFE
len=10
data[0]=0x00
data[1]=0x00
data[2]=0x00
data[3]=0x00
data[4]=0x00
data[5]=0x00
data[6]=0x00
data[7]=0x00
data[8]=0x8C
data[9]=0x7C
=========================================================
Just like what I said in previous post about inverted screen on TX,we can collect the correct register data from normal TX's Touch Firmware version C screen and write it back to the problem ones.Now I have come up with an easy way to collect the data.
If you are a TX owner and your phone's screen works normally,not inverted even in stock firmware,you are the one we are looking for!
(Touchscreen firmware version C is recommended.But if you get a B,post it anyway and mention that it's a B one )
1.Extract the attacted zip to /data
2.In Root Explorer(or anything else similar)grant /data/readnvm_new.sh with executing permissions(chmod 755)
3.Run this script.Just click it in Root Explorer and "Execute" will do.Adb shell+su is also ok.The screen will flicker sightly for ~3sec.
4.After it finishes,post /sdcard/nvm.txt here.
Click to expand...
Click to collapse
Thanks in advance!
Some minor problems:the panel only return 10bytes at most.But the data written in NVM_RECOVER is 13bytes at most,which means there are 3bytes of correct data can't be read.I will try writing the first 10bytes.If that doesn't work,let's come up with something else...
Well I have collected the data I needed.Thanks for you downloaders!~
Related
Partitions
I was searching for fix no logo after upgrading to android 2.1, and I founded this: Code: cat /proc/mtd dev: size erasesize name mtd0: 00500000 00020000 "boot" mtd1: 04000000 00020000 "cache" mtd2: 00500000 00020000 "recovery" mtd3: 183c0000 00020000 "splash" mtd4: 0f500000 00020000 "system" mtd5: 00200000 00020000 "lgdrm" mtd6: 08a00000 00020000 "userdata" mtd7: 00100000 00020000 "misc" mtd8: 1dd60000 00020000 "usd" mtd9: 00500000 00020000 "pkg" mtd10: 1cfc0000 00020000 "" As you can see my splash and usd partitions seems to be too big... So my questions are: Can you place here yours /proc/mtd? Witch partition is storing bootloader? Witch partition is storing IMEI and mac of hardware? Can i simply copy good partitions by fastboot or I need to modify them first? ps. Sorry for my poor English
[Q] Error in NativeDaemonConnector
Hi; I'm trying to build the Android 2.3.3 for Nexus One (HTC Passion) on my Ubuntu 10.04 64 bit machine. I first ran the extract-files.sh and get all the proprietary files from the HTC Passion device which was loaded with Android 2.3.3. I could successfully build the code and flashed the boot, recovery, system and userdata images to the device. But when I booted the device I got endless loop: 12-09 01:27:06.664: E/NetdConnector(114): Communications error 12-09 01:27:06.664: E/NetdConnector(114): java.io.IOException: No such file or directory 12-09 01:27:06.664: E/NetdConnector(114): at android.net.LocalSocketImpl.connectLocal(Native Method) 12-09 01:27:06.664: E/NetdConnector(114): at android.net.LocalSocketImpl.connect(LocalSocketImpl.java:238) 12-09 01:27:06.664: E/NetdConnector(114): at android.net.LocalSocket.connect(LocalSocket.java:98) 12-09 01:27:06.664: E/NetdConnector(114): at com.android.server.NativeDaemonConnector.listenToSocket(NativeDaemonConnector.java:99) 12-09 01:27:06.664: E/NetdConnector(114): at com.android.server.NativeDaemonConnector.run(NativeDaemonConnector.java:83) 12-09 01:27:06.664: E/NetdConnector(114): at java.lang.Thread.run(Thread.java:1019) 12-09 01:27:06.667: E/NetdConnector(114): Error in NativeDaemonConnector 12-09 01:27:06.667: E/NetdConnector(114): java.io.IOException: No such file or directory 12-09 01:27:06.667: E/NetdConnector(114): at android.net.LocalSocketImpl.connectLocal(Native Method) 12-09 01:27:06.667: E/NetdConnector(114): at android.net.LocalSocketImpl.connect(LocalSocketImpl.java:238) 12-09 01:27:06.667: E/NetdConnector(114): at android.net.LocalSocket.connect(LocalSocket.java:98) 12-09 01:27:06.667: E/NetdConnector(114): at com.android.server.NativeDaemonConnector.listenToSocket(NativeDaemonConnector.java:99) 12-09 01:27:06.667: E/NetdConnector(114): at com.android.server.NativeDaemonConnector.run(NativeDaemonConnector.java:83) 12-09 01:27:06.667: E/NetdConnector(114): at java.lang.Thread.run(Thread.java:1019) I google many hours and couldn't get any help. Could someone help for this problem ? Very appreciated. JSC
[Q] Error in NativeDaemonConnector
Hi; I'm trying to build the Android 2.3.3 for Nexus One (HTC Passion) on my Ubuntu 10.04 64 bit machine. I first ran the extract-files.sh and get all the proprietary files from the HTC Passion device which was loaded with Android 2.3.3. I could successfully build the code and flashed the boot, recovery, system and userdata images to the device. But when I booted the device I got endless loop: 12-09 01:27:06.664: E/NetdConnector(114): Communications error 12-09 01:27:06.664: E/NetdConnector(114): java.io.IOException: No such file or directory 12-09 01:27:06.664: E/NetdConnector(114): at android.net.LocalSocketImpl.connectLocal(Native Method) 12-09 01:27:06.664: E/NetdConnector(114): at android.net.LocalSocketImpl.connect(LocalSocketImpl.java:238) 12-09 01:27:06.664: E/NetdConnector(114): at android.net.LocalSocket.connect(LocalSocket.java:98) 12-09 01:27:06.664: E/NetdConnector(114): at com.android.server.NativeDaemonConnector.listenToSocket(NativeDaemonConnector.java:99) 12-09 01:27:06.664: E/NetdConnector(114): at com.android.server.NativeDaemonConnector.run(NativeDaemonConnector.java:83) 12-09 01:27:06.664: E/NetdConnector(114): at java.lang.Thread.run(Thread.java:1019) 12-09 01:27:06.667: E/NetdConnector(114): Error in NativeDaemonConnector 12-09 01:27:06.667: E/NetdConnector(114): java.io.IOException: No such file or directory 12-09 01:27:06.667: E/NetdConnector(114): at android.net.LocalSocketImpl.connectLocal(Native Method) 12-09 01:27:06.667: E/NetdConnector(114): at android.net.LocalSocketImpl.connect(LocalSocketImpl.java:238) 12-09 01:27:06.667: E/NetdConnector(114): at android.net.LocalSocket.connect(LocalSocket.java:98) 12-09 01:27:06.667: E/NetdConnector(114): at com.android.server.NativeDaemonConnector.listenToSocket(NativeDaemonConnector.java:99) 12-09 01:27:06.667: E/NetdConnector(114): at com.android.server.NativeDaemonConnector.run(NativeDaemonConnector.java:83) 12-09 01:27:06.667: E/NetdConnector(114): at java.lang.Thread.run(Thread.java:1019) I google many hours and couldn't get any help. Could someone help for this problem ? Very appreciated. JSC
[Q] How to fastboot boot (not flash) into recovery on 4.3?
As per this thread: http://forum.xda-developers.com/showpost.php?p=43940670&postcount=1061 it is no longer possible after 4.3 to simply do "fastboot boot recovery.img" -- if you don't give a -c parameter, fastboot just hangs. Instead, we have to give kernel parameters to fastboot with the -c option. The thread for Nexus suggests that the contents of /proc/cmdline would be sufficient. From my install of CWM ( http://forum.xda-developers.com/showthread.php?t=2390651 ) I have: poweron_status=1 reset_status=0 board_m7_ul.disable_uart3=0 diag.enabled=0 board_m7_ul.debug_uart=0 userdata_sel=0 androidboot.emmc=true androidboot.pagesize=2048 skuid=0 ddt=20 ats=0 dap=6 androidboot.lb=1 uif=m000 td.sf=0 td.td=0 td.ofs=328 td.prd=1 td.dly=0 td.tmo=300 hlog.ofs=628 un.ofs=696 imc_online_log=0 androidboot.efuse_info=1NSL androidboot.baseband=4A.18.3263.15 androidboot.cid=GOOGL001 androidboot.devicerev=3 androidboot.batt_poweron=good_battery androidboot.carrier=GOOGLE androidboot.mid=PN0712000 androidboot.keycaps=qwerty androidboot.dq=PASS androidboot.mode=recovery androidboot.serialno=FA34WW906464 androidboot.bootloader=1.54.0000 lscd=0x1 wificd=0x2 androidboot.nledhw=0 androidboot.ddrmid=(0x6) acpu.footprint=0B010101 abnrst=0 zygote_oneshot=on kmemleak=off rpm_debug.enable=0 console=ttyHSL0,115200,n8 androidboot.hardware=qcom user_debug=31 HOWEVER, this line is too long and fastboot gives me an overflow error when I try to give that entire line. Any ideas?
Did you ever find out how to do this?
[HOWTO]Some possible way to recover inverted scrren for T,TX,V
(I don't know if T suffers from inverted screen...) According to my research,inverted screen is caused by cross-flashing.Wrong screen driver is used for initializing the screen,and the registers get corrupted(written data from the inappropriate driver).After that,the screen will be recognized as other model(written data suggests)so even if you use stock kernel,no proper driver will be loaded. In order to fix this,we need to write proper register data into the screen again.If we take a look at the source of the driver,we will find "RECOVER_NVM" feature.That's how pre-defined data gets written into screen and we will use it for rescuing the screen. Step 1.COLLECTING CORRECT DATA. 1.1 Identify your actual screen model Since the screen is already broken,we can't use any software to make it clear.You need to distinguish them using other ways.For example,TX's B screen has a much wider viewing angle than Screen C.Looking from side will give you answer.1.2 Get to know current detected model. 1.2.1 Reboot your phone to clear dmesg cache. 1.2.2 When it finishes boot,open ADB SHELL or Terminal Emulator. 1.2.3 Type "su". 1.2.4 After # shows up(root privilege acquired),type Code: dmesg | grep "panel" 1.2.5 Look at the lines in red <6>[ 1.006409] default panel: mipi_sharp_panel <6>[ 1.006775] setting pdata->panel_info.fb_num to 3. type: 8 <6>[ 1.012208] mdp_probe: panel_detect function <6>[ 1.061651] mipi_renesas_r63306 mipi_renesas_r63306.0: found panel vendor: mipi_sharp_panel <6>[ 1.062078] mipi_renesas_r63306 mipi_renesas_r63306.0: found panel: mipi_video_sharp_wxga_ls043k3sx04 <3>[ 1.397588] msm_fb_detect_panel: comparing name=hdmi_msm with mipi_video_renesas_fwvga <6>[ 1.398718] setting pdata->panel_info.fb_num to 1. type: 7 <6>[ 1.399450] mdp_probe: panel_detect function <6>[ 1.399603] mdp_probe: no panel_detect function <6>[ 1.402685] setting pdata->panel_info.fb_num to 1. type: 10 <6>[ 1.403906] mdp_probe: panel_detect function <6>[ 1.403998] mdp_probe: no panel_detect function Click to expand... Click to collapse In this case,ls043k3sx04 is detected screen model. (Mine is MDX80,not this log)1.3 Collect correct register data for your ACTUAL screen model. You may ask your friend who has the same phone and screen to run the script from this post:http://forum.xda-developers.com/showthread.php?t=2607323 And run the dmesg | grep "panel" also to find the model number. Note that the register number may differ.The numbers in the script is for TX with Screen C.You can download the kernel source of your phone,navigate to /drivers/video/msm and search for your DETECTED model,open the .c file with any text editor.Search for "nvm_**_reg".The hex number is the register number.List them all in the script. EG.Mine is Screen C/MDW30 2.MODIFY THE DETECTED MODEL'S DRIVER 2.1 Open the driver mentioned above.2.2 Scroll to the first "nvm_**_reg". You can simply skip the nvm_e4_00_00_00_f0_ff_reg ones(have more than one hex num in their names-they are not storing the register data and are more like START/END BURNING commands ) For example,you find Code: static char nvm_[COLOR="Red"]e7[/COLOR]_reg[] = { 0x[COLOR="red"]E7[/COLOR], 0x0F, 0x0C, 0x0B, 0x34 }; The first byte in the array is the same as register number.Leave it unchanged and modify the rest bytes accroding to the correct data you have just collected. EG.The collected data for E7 is Code: GEN_READ reg=0xE7 len=10 data[0]=0x02 data[1]=0x02 data[2]=0x0D data[3]=0x36 data[4]=0x00 data[5]=0x00 data[6]=0x00 data[7]=0x00 data[8]=0xCE data[9]=0x9A We have 1+4 bytes in the nvm_e7_reg array,1 for reg number and 4 for rest bytes.So you copy 4bytes from this list to the array. After modding,it should be Code: static char nvm_e7_reg[] = { 0xE7, 0x02, 0x02, 0x0D, 0x36 }; NOTE! The last 2 bytes in each register data is checksum.DO NOT write them into the driver.So the max. available data is 8 bytes.If you find some arrays have more than 8 bytes of data,you need to skip them and go on.2.3 Find the correct values of long arrays Open ACTUAL screen's driver,search 0xREG_NUM. EG. You find Code: static char nvm_[COLOR="Red"]ca[/COLOR]_reg[] = { 0xCA, 0x0A, 0x15, 0x2E, 0x2D, 0x27, 0x1B, 0x20, 0x2B, 0x29, 0x31, 0x4F, 0x79, 0x3F }; There are 1+13 bytes.So you search for 0xCA in mdw30.c(my actual model) You will find in mdw30.c EG. Code: static char gamma_ctrl_set_r_neg[] = { [COLOR="red"]0xCA[/COLOR], 0x00, 0x12, 0x22, 0x26, 0x21, 0x1C, 0x25, 0x31, 0x2D, 0x49, 0x5F, 0x3F, 0x3F }; So this is the actual value for Register CA.Copy the rest bytes to mdx80.c(my detected model) Note: do not use value from arrays named "eco".2.4 Save the file. 3.RE-COMPILE THE KERNEL AND APPLY MOD The rest is pretty easy:compile this kernel with CONFIG_MSM_FB_RECOVER_PANEL,boot into recovery,and follow command in this post: http://forum.xda-developers.com/showthread.php?p=49297118 Note: Code: cd /d/msm_fb/mipi_[COLOR="red"]r63306[/COLOR] r63306 is the controller name.You can see it in the directory name of the driver. I hope this will help you.If you have any question,please ask.
Ive run into a problem. It seems the NVM read data is all blank except the checksums bytes. Additionally, the CONFIG_FB_MSM_RECOVER_PANEL for all the panels do not appear to use the same values. Your mdw30 panel doesnt even have this! What did you do? mdx80 CONFIG_FB_MSM_RECOVER_PANEL Code: #ifdef CONFIG_FB_MSM_RECOVER_PANEL static char nvm_e4_00_00_00_f0_ff_reg[] = { 0xE4, 0x00, 0x00, 0x00, 0xF0, 0xFF }; static char nvm_e7_reg[] = { 0xE7, 0x0F, 0x0C, 0x0B, 0x34 /* default data according to SoMC */ }; static char nvm_bf_reg[] = { 0xBF, 0x01, 0x22, 0x33, 0x06, 0xB0 }; static char nvm_b2_reg[] = { 0xB2, 0x00 }; static char nvm_b4_reg[] = { 0xB4, 0x02 }; static char nvm_b6_reg[] = { 0xB6, 0x51, 0xE3 }; static char nvm_c0_reg[] = { 0xC0, 0x40, 0x02, 0x7F, 0xC8, 0x08 }; static char nvm_c1_reg[] = { 0xC1, 0x00, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9D, 0x08, 0x27, 0x09, 0x00, 0x00, 0x00, 0x00 }; static char nvm_c2_reg[] = { 0xC2, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00 }; static char nvm_c3_reg[] = { 0xC3, 0x04 }; static char nvm_c4_reg[] = { 0xC4, 0x4D, 0x83, 0x00 }; static char nvm_c6_reg[] = { 0xC6, 0x12, 0x00, 0x08, 0x71, 0x00, 0x00, 0x00, 0x80, 0x00, 0x04 }; static char nvm_c7_reg[] = { 0xC7, 0x22 }; static char nvm_c8_reg[] = { 0xC8, 0x4C, 0x0C, 0x0C, 0x0C }; static char nvm_c9_reg[] = { 0xC9, 0x00, 0x06, 0x10, 0x2E, 0x36, 0x34, 0x3F, 0x44, 0x38, 0x32, 0x31, 0x6A, 0x35 }; static char nvm_ca_reg[] = { 0xCA, 0x0A, 0x15, 0x2E, 0x2D, 0x27, 0x1B, 0x20, 0x2B, 0x29, 0x31, 0x4F, 0x79, 0x3F ... ... mdw30 does not have CONFIG_FB_MSM_RECOVER_PANEL ls043k3sx04 CONFIG_FB_MSM_RECOVER_PANEL Code: #ifdef CONFIG_FB_MSM_RECOVER_PANEL static char nvm_rsp1[] = { 0xE7, 0x07, 0x0E, 0x0E, 0x35 /* default data */ }; static char dev_code[] = { 0xBF, 0x01, 0x22, 0x33, 0x06, 0xA4 }; static char test_mode1[] = { 0xE4, 0x00, 0x00, 0x00, 0xF0, 0xFF }; static char test_mode2[] = { 0xE4, 0x39, 0x87 }; static char test_mode3[] = { 0xE4, 0x00, 0x00, 0x00, 0x00, 0x00 }; static char test_mode4[] = { 0xE4, 0xB9, 0x47 }; static char test_mode5[] = { 0xE4, 0xBD }; static char nvm_read_e4_reg[] = { 0xE4 }; static char nvm_read_e1_reg[] = { 0xE1 }; static char test_mode7[] = { 0xFD, 0x04, 0x55, 0x53, 0x00, 0x70, 0xFF, 0x10, 0x33, 0x22, 0x22, 0x22, 0x37, 0x00 }; static char nvm_erase_and_write_rsp[] = { 0xE0 ... ... NVM.txt Code: e7 03 00 0f 34 de 00 00 11 0b 00 00 00 00 00 00 00 00GEN_READ reg=0xE6 len=10 data[0]=0x00 data[1]=0x00 data[2]=0x00 data[3]=0x00 data[4]=0x00 data[5]=0x00 data[6]=0x00 data[7]=0x00 data[8]=0x8C data[9]=0x7C GEN_READ reg=0xE7 len=10 data[0]=0x00 data[1]=0x00 data[2]=0x00 data[3]=0x00 data[4]=0x00 data[5]=0x00 data[6]=0x00 data[7]=0x00 data[8]=0x8C data[9]=0x7C GEN_READ reg=0xDE len=10 data[0]=0x00 data[1]=0x00 data[2]=0x00 data[3]=0x00 data[4]=0x00 data[5]=0x00 data[6]=0x00 data[7]=0x00 data[8]=0x8C data[9]=0x7C GEN_READ reg=0xBF len=10 data[0]=0x00 data[1]=0x00 data[2]=0x00 data[3]=0x00 data[4]=0x00 data[5]=0x00 data[6]=0x00 data[7]=0x00 data[8]=0x8C data[9]=0x7C GEN_READ reg=0xE4 len=10 data[0]=0x00 data[1]=0x00 data[2]=0x00 data[3]=0x00 data[4]=0x00 data[5]=0x00 data[6]=0x00 data[7]=0x00 data[8]=0x8C data[9]=0x7C GEN_READ reg=0xE1 len=10 data[0]=0x00 data[1]=0x00 data[2]=0x00 data[3]=0x00 data[4]=0x00 data[5]=0x00 data[6]=0x00 data[7]=0x00 data[8]=0x8C data[9]=0x7C GEN_READ ... ...
Brewski606 said: Ive run into a problem. It seems the NVM read data is all blank except the checksums bytes. Additionally, the CONFIG_FB_MSM_RECOVER_PANEL for all the panels do not appear to use the same values. Your mdw30 panel doesnt even have this! What did you do? mdx80 CONFIG_FB_MSM_RECOVER_PANEL Code: #ifdef CONFIG_FB_MSM_RECOVER_PANEL static char nvm_e4_00_00_00_f0_ff_reg[] = { 0xE4, 0x00, 0x00, 0x00, 0xF0, 0xFF }; static char nvm_e7_reg[] = { 0xE7, 0x0F, 0x0C, 0x0B, 0x34 /* default data according to SoMC */ }; static char nvm_bf_reg[] = { 0xBF, 0x01, 0x22, 0x33, 0x06, 0xB0 }; static char nvm_b2_reg[] = { 0xB2, 0x00 }; static char nvm_b4_reg[] = { 0xB4, 0x02 }; static char nvm_b6_reg[] = { 0xB6, 0x51, 0xE3 }; static char nvm_c0_reg[] = { 0xC0, 0x40, 0x02, 0x7F, 0xC8, 0x08 }; static char nvm_c1_reg[] = { 0xC1, 0x00, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9D, 0x08, 0x27, 0x09, 0x00, 0x00, 0x00, 0x00 }; static char nvm_c2_reg[] = { 0xC2, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00 }; static char nvm_c3_reg[] = { 0xC3, 0x04 }; static char nvm_c4_reg[] = { 0xC4, 0x4D, 0x83, 0x00 }; static char nvm_c6_reg[] = { 0xC6, 0x12, 0x00, 0x08, 0x71, 0x00, 0x00, 0x00, 0x80, 0x00, 0x04 }; static char nvm_c7_reg[] = { 0xC7, 0x22 }; static char nvm_c8_reg[] = { 0xC8, 0x4C, 0x0C, 0x0C, 0x0C }; static char nvm_c9_reg[] = { 0xC9, 0x00, 0x06, 0x10, 0x2E, 0x36, 0x34, 0x3F, 0x44, 0x38, 0x32, 0x31, 0x6A, 0x35 }; static char nvm_ca_reg[] = { 0xCA, 0x0A, 0x15, 0x2E, 0x2D, 0x27, 0x1B, 0x20, 0x2B, 0x29, 0x31, 0x4F, 0x79, 0x3F ... ... mdw30 does not have CONFIG_FB_MSM_RECOVER_PANEL ls043k3sx04 CONFIG_FB_MSM_RECOVER_PANEL Code: #ifdef CONFIG_FB_MSM_RECOVER_PANEL static char nvm_rsp1[] = { 0xE7, 0x07, 0x0E, 0x0E, 0x35 /* default data */ }; static char dev_code[] = { 0xBF, 0x01, 0x22, 0x33, 0x06, 0xA4 }; static char test_mode1[] = { 0xE4, 0x00, 0x00, 0x00, 0xF0, 0xFF }; static char test_mode2[] = { 0xE4, 0x39, 0x87 }; static char test_mode3[] = { 0xE4, 0x00, 0x00, 0x00, 0x00, 0x00 }; static char test_mode4[] = { 0xE4, 0xB9, 0x47 }; static char test_mode5[] = { 0xE4, 0xBD }; static char nvm_read_e4_reg[] = { 0xE4 }; static char nvm_read_e1_reg[] = { 0xE1 }; static char test_mode7[] = { 0xFD, 0x04, 0x55, 0x53, 0x00, 0x70, 0xFF, 0x10, 0x33, 0x22, 0x22, 0x22, 0x37, 0x00 }; static char nvm_erase_and_write_rsp[] = { 0xE0 ... ... NVM.txt Code: e7 03 00 0f 34 de 00 00 11 0b 00 00 00 00 00 00 00 00GEN_READ reg=0xE6 len=10 data[0]=0x00 data[1]=0x00 data[2]=0x00 data[3]=0x00 data[4]=0x00 data[5]=0x00 data[6]=0x00 data[7]=0x00 data[8]=0x8C data[9]=0x7C GEN_READ reg=0xE7 len=10 data[0]=0x00 data[1]=0x00 data[2]=0x00 data[3]=0x00 data[4]=0x00 data[5]=0x00 data[6]=0x00 data[7]=0x00 data[8]=0x8C data[9]=0x7C GEN_READ reg=0xDE len=10 data[0]=0x00 data[1]=0x00 data[2]=0x00 data[3]=0x00 data[4]=0x00 data[5]=0x00 data[6]=0x00 data[7]=0x00 data[8]=0x8C data[9]=0x7C GEN_READ reg=0xBF len=10 data[0]=0x00 data[1]=0x00 data[2]=0x00 data[3]=0x00 data[4]=0x00 data[5]=0x00 data[6]=0x00 data[7]=0x00 data[8]=0x8C data[9]=0x7C GEN_READ reg=0xE4 len=10 data[0]=0x00 data[1]=0x00 data[2]=0x00 data[3]=0x00 data[4]=0x00 data[5]=0x00 data[6]=0x00 data[7]=0x00 data[8]=0x8C data[9]=0x7C GEN_READ reg=0xE1 len=10 data[0]=0x00 data[1]=0x00 data[2]=0x00 data[3]=0x00 data[4]=0x00 data[5]=0x00 data[6]=0x00 data[7]=0x00 data[8]=0x8C data[9]=0x7C GEN_READ ... ... Click to expand... Click to collapse Maybe your panel require different reading method(or different registers)...And you should modify the RECOGNIZED model's driver.Since it's able to corrupt the registers,it should contain such section.
updateing said: Maybe your panel require different reading method(or different registers)...And you should modify the RECOGNIZED model's driver.Since it's able to corrupt the registers,it should contain such section. Click to expand... Click to collapse Yes I understand that but I dont know how you find the values for your phone! You have mipi_tmd_mdw30 correct? The files I pulled from source for your phone are also very different! How did you know what to change the values to? I attached the source files for your phone. are these the same ones you used?
Brewski606 said: Yes I understand that but I dont know how you find the values for your phone! You have mipi_tmd_mdw30 correct? The files I pulled from source for your phone are also very different! How did you know what to change the values to? I attached the source files for your phone. are these the same ones you used? Click to expand... Click to collapse The data was collected by some member in another forum.MDW30 driver doesn't contain RECOVER_PANEL section.My screen was recognized as MDX80 and it happens to have such a section,so I replaced the data in original MDX80 driver with the one I collected.I didn't touch the mdw30 driver,only replaced the bytes in mdx80.
please Help me My xperia tx no show anything after today call and the screen is gray. The phone is receive calls and SMS. Even touch screen working but it is gray and don't show anything.