Board:lenovo/x60: Difference between revisions
(backlight controls. using Fn keys. without oprom. ---> yay!) |
No edit summary |
||
Line 136: | Line 136: | ||
== Enable backlight controls on X60 (with native gpu init instead of VGA ROM) == | == Enable backlight controls on X60 (with native gpu init instead of VGA ROM) == | ||
<fchmmr> I just got backlight controls working PERFECTLY | <fchmmr> I just got backlight controls working PERFECTLY | ||
<fchmmr> on an X60, running libreboot with native graphics init instead of vga oprom | <fchmmr> on an X60, running libreboot with native graphics init instead of vga oprom | ||
<fchmmr> Fn keys, that is. | <fchmmr> Fn keys, that is. | ||
<fchmmr> it'll also work in coreboot (using change set 5320) | <fchmmr> it'll also work in coreboot (using change set 5320) | ||
<fchmmr> how i did it: | <fchmmr> how i did it: | ||
<fchmmr> run coreboot on X60 with vgarom | <fchmmr> run coreboot on X60 with vgarom | ||
<fchmmr> do that to read from that address at each brightness level: | <fchmmr> do that to read from that address at each brightness level: | ||
<fchmmr> sudo devmem2 0xe4361254 w | <fchmmr> sudo devmem2 0xe4361254 w | ||
<fchmmr> it came back with 0x879F879E every time | <fchmmr> it came back with 0x879F879E every time | ||
<fchmmr> so then I tried: | <fchmmr> so then I tried: | ||
<fchmmr> sudo devmem2 0xe4361254 w 0x879F879E | <fchmmr> sudo devmem2 0xe4361254 w 0x879F879E | ||
<fchmmr> writing 0x879F879E to address 0xe4361254 | <fchmmr> writing 0x879F879E to address 0xe4361254 | ||
<fchmmr> and then I try the Fn keys for brightness controls on the X60 | <fchmmr> and then I try the Fn keys for brightness controls on the X60 | ||
<fchmmr> now it works. | <fchmmr> now it works. | ||
<fchmmr> brightenss controlls work | <fchmmr> brightenss controlls work | ||
And then: | And then: | ||
<fchmmr> idwer, there is still an issue | <fchmmr> idwer, there is still an issue | ||
<fchmmr> use xset to turn off the monitor | <fchmmr> use xset to turn off the monitor | ||
<fchmmr> then try to turn it back on | <fchmmr> then try to turn it back on | ||
<fchmmr> backlight won't initialize | <fchmmr> backlight won't initialize | ||
<fchmmr> so there needs to be code in the native init to detect that and automatically turn backlight back on | <fchmmr> so there needs to be code in the native init to detect that and automatically turn backlight back on | ||
<fchmmr> So, the workaround is: sleep, then resume, | <fchmmr> So, the workaround is: sleep, then resume, | ||
<fchmmr> then run that again: | <fchmmr> then run that again: | ||
<fchmmr> sudo devmem2 0xe4361254 w 0x879F879E | <fchmmr> sudo devmem2 0xe4361254 w 0x879F879E | ||
<fchmmr> You could make a rule to do that in /etc/pm/sleep.d/ or so I'm told. | <fchmmr> You could make a rule to do that in /etc/pm/sleep.d/ or so I'm told. | ||
<fchmmr> You could also configure it simply not to turn off the monitor. | <fchmmr> You could also configure it simply not to turn off the monitor. | ||
<fchmmr> And just set backlight to 0 (using Fn key) when you want to do that. | <fchmmr> And just set backlight to 0 (using Fn key) when you want to do that. | ||
<fchmmr> And you set a rule so that command runs when resuming from sleep: | <fchmmr> And you set a rule so that command runs when resuming from sleep: | ||
<fchmmr> sudo devmem2 0xe4361254 w 0x879F879E | <fchmmr> sudo devmem2 0xe4361254 w 0x879F879E | ||
<fchmmr> this could be done in coreboot! | <fchmmr> this could be done in coreboot! | ||
Revision as of 21:26, 15 May 2014
works fine with Linux, some ACPI issues with Windows needs to be fixed.
Lenovo ThinkPad X60
Except where noted all status items apply to:
- x60
- x60s
- x60 tablet
Aside from pre-sales configuration (display, processor speed, optional components) the three models appear identical. It is believed that they share a single schematic.
Installation and Flashing
Tutorial on Installation and flashing the x60 or t60:
Which used to be the main x60 page:
Board:lenovo/x60/Installation
Status
Device/functionality | Status | Comments | ||||||
---|---|---|---|---|---|---|---|---|
CPU | ||||||||
CPU works | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK | Core Duo Mobile (L2300), PBGA479 | ||||||
L1 cache enabled | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK | |||||||
L2 cache enabled | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK | |||||||
L3 cache enabled | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
Multiple CPU support | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
Multi-core support | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK | |||||||
Hardware virtualization | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK | |||||||
RAM | ||||||||
EDO | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
SDRAM | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
SO-DIMM | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
DDR | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
DDR2 | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK | |||||||
DDR3 | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
Dual channel support | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK | |||||||
ECC support | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
On-board Hardware | ||||||||
On-board IDE 3.5" | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
On-board IDE 2.5" | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
On-board SATA | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK | |||||||
On-board SCSI | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
On-board USB | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK | |||||||
On-board VGA | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK | |||||||
On-board Ethernet | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK | Intel 82573L | ||||||
On-board Audio | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK | |||||||
On-board Modem | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested | |||||||
On-board FireWire | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
On-board Smartcard reader | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
On-board CompactFlash | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
On-board PCMCIA | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK | Ricoh rl5c476 | ||||||
On-board Wifi | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
On-board Bluetooth | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
On-board SD card reader | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
Add-on slots/cards | ||||||||
ISA add-on cards | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
Audio/Modem-Riser (AMR/CNR) cards | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
PCI add-on cards | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
Mini-PCI add-on cards | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK | |||||||
Mini-PCI-Express add-on cards | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Unknown | |||||||
PCI-X add-on cards | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
AGP graphics cards | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
PCI Express x1 add-on cards | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
PCI Express x2 add-on cards | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
PCI Express x4 add-on cards | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
PCI Express x8 add-on cards | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
PCI Express x16 add-on cards | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
PCI Express x32 add-on cards | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
HTX add-on cards | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
Legacy / Super I/O | ||||||||
Floppy | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
Serial port 1 (COM1) | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK | located in Ultrabase X6 | ||||||
Serial port 2 (COM2) | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
Parallel port | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
PS/2 keyboard | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
PS/2 mouse | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
Game port | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
Infrared | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | WIP | |||||||
PC speaker | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
DiskOnChip | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
Input | ||||||||
Trackpoint | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
Touchpad | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
Fn Hotkeys | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
Fingerprint Reader | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
Laptop | ||||||||
Docking VGA | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
Docking LAN | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
Docking USB | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
Docking Audio | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
Docking Displayport | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
Thinklight | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
Webcam | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
Miscellaneous | ||||||||
Sensors / fan control | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK | |||||||
Hardware watchdog | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
SMBus | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK | |||||||
CAN bus | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
CPU frequency scaling | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK | |||||||
Other powersaving features | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK | |||||||
ACPI | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK | |||||||
Reboot | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK | |||||||
Poweroff | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK | |||||||
Suspend | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK | |||||||
Nonstandard LEDs | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK | LEDs are controlled by Embedded Controller (EC). Working without special support. | ||||||
High precision event timers (HPET) | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK | |||||||
Random number generator (RNG) | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A | |||||||
Wake on modem ring | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Unknown | |||||||
Wake on LAN | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Unknown | |||||||
Wake on keyboard | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Unknown | |||||||
Wake on mouse | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Unknown | |||||||
TPM | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Unknown | |||||||
Flashrom | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK | See Lenovo_x60x |
Laptop specific | ||||||||
Tablet Touchscreen | OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | WIP | x60 tablet wacom "penabled" |
the touchscreen/pen do not work as coreboot does not expose the internal COM port to which it is attached:
- Serial: irq 5 port 0x0200
Some additional info from a x61t wacom
Support for digitizer (and IrDA) has been written and submitted for review
proprietary components status
- CPU Microcode (optional?)
- VGA option rom (optional): without it you will get no graphics during early boot, old kernel versions(like the one in trisquel 6) are able to initializes the intel graphic card. Note that the replacement doesn't work yet with seabios but works with grub(as a payload) or libpayload based payloads.
- EC(Embedded Controller) => you do not have to touch it(just leave it where it is)
TODO
Non-free components replacements
Replace the non-free VGA option rom by making native graphics init work.submited for review.- Create a Native graphics<->VGA option rom.
- Make backlight work without the non-free option rom.
VGA Option ROM / VBIOS replacement (native graphics)
The VGA option ROM is proprietary. If you have an X60,X60s or X60t, GNUtoo has developed a free replacement which is under review, but you can use it right now:
Problems in native graphics code exposed by recent kernels
It was discovered that while this code seems to work fine on kernels older than linux 3.12.
On 3.12 and later kernels the i915 driver became unstable. Causing broken/glitchy 3D. and performance bugs.
The current suspicion is that linux had a bug which caused it to miss stolen memory altogether on this machine and hence disable parts of code. This bug was corrected in: 17fec8a08698bcab98788e1e89f5b8e7502ababd
Which was identified by git bisect, to be the cause of the driver crashes using native vga on the x60.
The native vga init code in coreboot needs to be corrected to have more engineered memory management. In the interim users have attempted running patched linux 3.12 kernels which revert commit 17fec. To apparent success.
Enable backlight controls on X60 (with native gpu init instead of VGA ROM)
<fchmmr> I just got backlight controls working PERFECTLY
<fchmmr> on an X60, running libreboot with native graphics init instead of vga oprom
<fchmmr> Fn keys, that is.
<fchmmr> it'll also work in coreboot (using change set 5320)
<fchmmr> how i did it:
<fchmmr> run coreboot on X60 with vgarom
<fchmmr> do that to read from that address at each brightness level:
<fchmmr> sudo devmem2 0xe4361254 w
<fchmmr> it came back with 0x879F879E every time
<fchmmr> so then I tried:
<fchmmr> sudo devmem2 0xe4361254 w 0x879F879E
<fchmmr> writing 0x879F879E to address 0xe4361254
<fchmmr> and then I try the Fn keys for brightness controls on the X60
<fchmmr> now it works.
<fchmmr> brightenss controlls work
And then:
<fchmmr> idwer, there is still an issue
<fchmmr> use xset to turn off the monitor
<fchmmr> then try to turn it back on
<fchmmr> backlight won't initialize
<fchmmr> so there needs to be code in the native init to detect that and automatically turn backlight back on
<fchmmr> So, the workaround is: sleep, then resume,
<fchmmr> then run that again:
<fchmmr> sudo devmem2 0xe4361254 w 0x879F879E
<fchmmr> You could make a rule to do that in /etc/pm/sleep.d/ or so I'm told.
<fchmmr> You could also configure it simply not to turn off the monitor.
<fchmmr> And just set backlight to 0 (using Fn key) when you want to do that.
<fchmmr> And you set a rule so that command runs when resuming from sleep:
<fchmmr> sudo devmem2 0xe4361254 w 0x879F879E
<fchmmr> this could be done in coreboot!
Other things
- Add support for more batteries in ACPI.
- Make the wifi card and/or the laptop produce less heat.
- Finish and merge support for thinkpad_acpi linux kernel module
- Sometimes some dock USB port aren't initialized => fix that
- Fix that warning:
[ 14.566817] ACPI Warning: 0x00000400-0x0000041f SystemIO conflicts with Region \_SB_.PCI0.SBUS.SMBI 1 (20130117/utaddress-251)
By using that advise:
<phcoder> GNUtoo-x60: in this case it looks like same range is declared twice in DSDT/SSDT
Features
nvramtool
Without the VGA optiorn rom nvramtool says:
# ./nvramtool -a nvramtool: coreboot table not found. coreboot does not appear to be installed on this system. Scanning for the table produced the following results: 0 valid signatures were found with bad header checksums. 0 valid headers were found with bad table checksums.
Fortunately there is a workarround:
# ./nvramtool -y ../../src/mainboard/lenovo/x60/cmos.layout -a boot_option = Fallback last_boot = Fallback baud_rate = 115200 debug_level = Emergency hyper_threading = Enable nmi = Disable # Bad value -> boot_devices boot_default = 0x40 cmos_defaults_loaded = Yes lpt = Disable volume = 0xc tft_brightness = 0xf first_battery = Primary bluetooth = Disable
cbmem console
To get cbmem console working you need the non-free i915 option rom or native graphics(doesn't work yet, don't use) :fixed in master
Howto
When configuring coreboot with "make menuconfig" Go in console:
Console --->
Enable it:
[*] Send console output to a CBMEM buffer (0x20000) Room allocated for console output in CBMEM (0xc00) Room allocated for console output in Cache as RAM
thinkpad_acpi compatibility
The following commit might be interesting to cherry-pick:
git fetch http://review.coreboot.org/coreboot refs/changes/03/3403/3 && git cherry-pick FETCH_HEAD
Dmidecode from the BIOS says:
BIOS Information Vendor: LENOVO Version: 7BETC7WW (2.08 )
So in make menuconfig go in
General setup --->
And modify Local version string accordinly
(7BETC7WW (2.08 )) Local version string
Then locate the following in dmidecode:
System Information Manufacturer: LENOVO Product Name: 1707Y8W Version: ThinkPad X60 Serial Number: L3BY949
Then in
Mainboard --->
do that:
(L3BY949) Serial number (ThinkPad X60) Version number (LENOVO) BIOS table vendor string (ThinkPad X60 / X60s) BIOS table part number string
Then configure and build coreboot as usual
To modprobe the module use that:
modprobe thinkpad_acpi force_load=1 debug=0xffff fan_control=1 experimental=1
The module should now load automatically...