Hello everyone!
This is my first post to this mailing list :)
I'm trying to get a specific panel working on my Thinkpad T400 which runs libreboot. It's an WXGA+ MVA panel (CMO G141C1-L01) and I have soldered an adapter cable for it. From what I have found, nobody succeeded on this mod yet - there are some attempts on 51nb.com, but only for the T410. I basically took some already existing adapter cable, and modified a few pins, so that it would match up exactly with the datasheets. I used the LG LP141WP2-TLB1 for reference. Some details about my adapter cable can be found here:
http://forum.thinkpads.com/viewtopic.php?f=45&t=121151
In the first post there are also links to the datasheets of the two panels in question.
Of course I thoroughly checked all my self-made connections and modifications, but only with some general purpose DMM for continuity. They all seem fine.
So far backlight + PWM control works, but I have no image displayed, both in libreboot (with GRUB2 as payload) and Linux (up-to-date Arch Linux).
I tried the panel both with the latest stock ROM (3.23/EC 1.06) and with the latest libreboot release, which is currently 2016090 (t400_8mb_usqwerty_vesafb.rom in my case).
Since I have not much experience with such low-level hardware stuff, could someone maybe help me with this or direct me to some useful direction, how I can debug this?
I already tried booting with i915.lvds_channel_mode=2 (since I was not able to figure out what mode was actually used, because this module parameter is normally set to "0", which means the channel mode is taken from BIOS).
I attached the EDIDs of both panels, the coreboot log (cbmem -c) of both panels, and a kernel log of both panels. I also attached a kernel log of the MVA panel with drm debbuging enabled (drm.debug=0x1e log_buf_len=1M). Note that all of the logs were taken from the T400 with the latest libreboot release. It would be great if somebody could have a look at it. (I don't understand much of it.)
Here is a picture of the adapter cable, so that you have an idea what it looks like: https://lut.im/funPftuHF0/3sndAspbdiwOpTN4.jpg
I already put *a lot* of effort in this project, and I would be very happy if it succeeded at the end of the day. I would design some PCBs then, so that this would basically become a drop-in replacement. Background is: The T400 is a very desirable target for libreboot, since it's build on the latest Intel hardware currently supported in libreboot for laptops. And (not only in the libreboot community) it is sadly well known for its rather bad TN panels. Also, it would be something that I could give back to the libreboot community.
Since I have not much experience with mailing lists, please correct my of any 'bad' behavior.
Thank you for reading this, and for any advice in advance :)
Regards,
Merlin
Hi Merlin,
On 24.09.2016 21:25, Merlin Büge wrote:
Hello everyone!
This is my first post to this mailing list :)
welcome to coreboot ;)
I didn't have the time for a closer look at your logs. But there is one thing coreboot does definitely wrong: The clock configuration. You can see it from the Linux log as it dumps the settings coreboot made first:
[ 6.523864] [drm:drm_mode_debug_printmodeline] Modeline 0:"1440x900" 50 87075 1440 1520 1672 1820 900 903 909 961 0x40 0xa [ 6.523872] [drm:intel_dump_pipe_config] port clock: 87075
vs what Linux sets up later:
[ 8.787651] [drm:drm_mode_debug_printmodeline] Modeline 0:"1440x900" 60 104500 1440 1520 1672 1820 900 903 909 961 0x48 0xa [ 8.787668] [drm:intel_dump_pipe_config] port clock: 104500
Not sure why Linux doesn't get the display running though. But as Linux sometimes reuses register settings set by the firmware there is a slight chance that fixing coreboot would make it work in Linux too.
There is a related patch up for review for i945 [1] (older chipset) that fixes a similar issue there. Maybe it applies to gm45 too. The code looks very similar.
Regards, Nico
[1] https://review.coreboot.org/#/c/16504/
I'm trying to get a specific panel working on my Thinkpad T400 which runs libreboot. It's an WXGA+ MVA panel (CMO G141C1-L01) and I have soldered an adapter cable for it. From what I have found, nobody succeeded on this mod yet - there are some attempts on 51nb.com, but only for the T410. I basically took some already existing adapter cable, and modified a few pins, so that it would match up exactly with the datasheets. I used the LG LP141WP2-TLB1 for reference. Some details about my adapter cable can be found here:
http://forum.thinkpads.com/viewtopic.php?f=45&t=121151
In the first post there are also links to the datasheets of the two panels in question.
Of course I thoroughly checked all my self-made connections and modifications, but only with some general purpose DMM for continuity. They all seem fine.
So far backlight + PWM control works, but I have no image displayed, both in libreboot (with GRUB2 as payload) and Linux (up-to-date Arch Linux).
I tried the panel both with the latest stock ROM (3.23/EC 1.06) and with the latest libreboot release, which is currently 2016090 (t400_8mb_usqwerty_vesafb.rom in my case).
Since I have not much experience with such low-level hardware stuff, could someone maybe help me with this or direct me to some useful direction, how I can debug this?
I already tried booting with i915.lvds_channel_mode=2 (since I was not able to figure out what mode was actually used, because this module parameter is normally set to "0", which means the channel mode is taken from BIOS).
I attached the EDIDs of both panels, the coreboot log (cbmem -c) of both panels, and a kernel log of both panels. I also attached a kernel log of the MVA panel with drm debbuging enabled (drm.debug=0x1e log_buf_len=1M). Note that all of the logs were taken from the T400 with the latest libreboot release. It would be great if somebody could have a look at it. (I don't understand much of it.)
Here is a picture of the adapter cable, so that you have an idea what it looks like: https://lut.im/funPftuHF0/3sndAspbdiwOpTN4.jpg
I already put *a lot* of effort in this project, and I would be very happy if it succeeded at the end of the day. I would design some PCBs then, so that this would basically become a drop-in replacement. Background is: The T400 is a very desirable target for libreboot, since it's build on the latest Intel hardware currently supported in libreboot for laptops. And (not only in the libreboot community) it is sadly well known for its rather bad TN panels. Also, it would be something that I could give back to the libreboot community.
Since I have not much experience with mailing lists, please correct my of any 'bad' behavior.
Thank you for reading this, and for any advice in advance :)
Regards,
Merlin
Hi Nico,
thank you for your reply.
I didn't have the time for a closer look at your logs. But there is one thing coreboot does definitely wrong: The clock configuration. You can see it from the Linux log as it dumps the settings coreboot made first:
[ 6.523864] [drm:drm_mode_debug_printmodeline] Modeline 0:"1440x900" 50 87075 1440 1520 1672 1820 900 903 909 961 0x40 0xa [ 6.523872] [drm:intel_dump_pipe_config] port clock: 87075
vs what Linux sets up later:
[ 8.787651] [drm:drm_mode_debug_printmodeline] Modeline 0:"1440x900" 60 104500 1440 1520 1672 1820 900 903 909 961 0x48 0xa [ 8.787668] [drm:intel_dump_pipe_config] port clock: 104500
Thank you for the hint. As I have really no idea what I should look for, it's a starting point.
When I'm comparing this to the kernel log of my working CCFL WXGA display, I notice that on the CCFL WXGA display (which is a LP141WX3-TLR1), the clock frequency is set exactly to the value specified in the datasheet and EDID: 69.5 MHz. However on the G141C1-L01 (the MVA panel) datasheet, the clock frequency is '106.5MHz' in the EDID table - but Linux sets it to 104.5 MHz, if I understand the above correctly. The DCLK frequency in the datasheet is specified as: min. 40MHz, typ. 53.25MHz, max. 65MHz (see page 16 of [0])
Could that difference (104.5MHz to 106.5MHz maybe be the issue? I guess not, since there is a frequency range specified in the datasheet.
I also noticed that the max. current draw of the panel is a little bit higher than the max. current draw of the LED WXGA+ which I used to compare the pinouts. (It is known to work and has model number 'LP141WP2-TLB1') For the MVA, typical for black is 550mA, for white it's 450mA. For the TN it's 365mA - 495mA with typical 430mA.
What do you think about that?
Not sure why Linux doesn't get the display running though. But as Linux sometimes reuses register settings set by the firmware there is a slight chance that fixing coreboot would make it work in Linux too.
You mean, despite the kernel log messages (which say 104500), it might be that Linux is actually using the clock settings from coreboot, that is 87075?
So, to check for that - could I temporarily hardcode the correct clock settings in coreboot/libreboot?
Also, is it worth checking with latest coreboot instead of latest libreboot?
Maybe there are some changes concerning LVDS handling which are not yet in libreboot...
So many questions :P
There is a related patch up for review for i945 [1] (older chipset) that fixes a similar issue there. Maybe it applies to gm45 too. The code looks very similar.
To be honest -- I understand nearly nothing of it :/ Also note that all of this feels way above my skills - at least the coreboot / Linux / software part.
Regards,
Merlin
[0] http://www.display-solution.com/pdf/tft-displays/Chi%20Mei%20Innolux/G141C1-...
Merlin Büge toni@bluenox07.de writes:
Not sure why Linux doesn't get the display running though. But as Linux sometimes reuses register settings set by the firmware there is a slight chance that fixing coreboot would make it work in Linux too.
You mean, despite the kernel log messages (which say 104500), it might be that Linux is actually using the clock settings from coreboot, that is 87075?
Linux should be able to modeset the display (mostly) independently from coreboot (misconfigured) settings. So if the display does not work in linux I think something else is wrong.
So, to check for that - could I temporarily hardcode the correct clock settings in coreboot/libreboot?
This https://review.coreboot.org/#/c/16741/ should set graphic clock correcly for g4x gpu's. Since it does the same as linux I don't expect it to work but feel free to try it.
There is a slight chance that this display uses a single channel LVDS, in this case the p2 clock divisor needs to be set to 14 instead of 7, which you can hardcode in src/northbridge/intel/gm45/gma.c
[0] http://www.display-solution.com/pdf/tft-displays/Chi%20Mei%20Innolux/G141C1-...
From what I can understand from datasheets this is a dual channel LVDS
(as expected)...
-- Merlin Büge toni@bluenox07.de
Kind regards
Linux should be able to modeset the display (mostly) independently from coreboot (misconfigured) settings. So if the display does not work in linux I think something else is wrong.
Thank you for that clarification.
I found another attempt to put this MVA panel into a Thinkpad, but in a T410. He used a premade adapter cable from www.iccfl.com, so there was no soldering involved. It showed the exact same behavior as I have: backlight + dimming works, but no images is displayed. But at the end of his attempt, the old panel did not work anymore, so maybe he blew a fuse or so. This might be related to the higher current draw of the MVA panel.
Maybe someone more knowledged could have a look at the electrical specs of the two panels, the officially working one [0] and the MVA panel [1]? And maybe also at the kernel logs I posted previously?
That would be great. Thanks!
Is there any other useful information I could provide, any other logs or such? Please let me know!
From what I can understand from datasheets this is a dual channel LVDS (as expected)...
Yes, it's indeed dual channel LVDS.
[0] LP141WP2-TLB1: http://www.jxlcd.com/Upload/PicFiles/LP141WP2-TLB1.pdf [1] G141C1-L01: http://www.display-solution.com/pdf/tft-displays/Chi%20Mei%20Innolux/G141C1-...
Regards,