Board:lenovo/t530: Difference between revisions

From coreboot
Jump to navigation Jump to search
No edit summary
(11 intermediate revisions by 4 users not shown)
Line 19: Line 19:
             +-1f.2  8086:1e03
             +-1f.2  8086:1e03
             \-1f.3  8086:1e22
             \-1f.3  8086:1e22
== Status ==
Thanks for your interest in Lenovo T530 port.
Issues:
* EHCI output failure after sysagent
* no S3
* no MRC cache
* MRC needs watchdog
* yellow USB port isn't powered in power-off state.
(Tested on X230 *not tested* on the T530):
* RAM module combinations of 8G+8G
* USB (both 2.0 and 3.0 ports)
* Video (both internal and VGA)
* Expresscard slot (including hotplugging)
* Sound (integrated speakers, integrated mic, external headphones, external mic)
* LAN
* mini-PCIe slots (both wlan and wwan)
* Linux (through GRUB-as-payload)
* Windows (through GRUB-as-payload loading SeaBIOS image from disk; you have to use extracted VGA blob, dumped from memory isn't good enough)
* SD card slot
* Thermal management
* Fingerprint reader.
* Webcam
* Keyboard backlight
* Thinklight.
* bluetooth
* dock
* msata (fixed in commit c8f54a1109072706e2fa091dc9ab4ad3eb057b42)
Not tested:
* mini displayport (probably works)


== Proprietary components status ==
== Proprietary components status ==
Line 56: Line 25:
* EC(Embedded Controller) =>  you do not have to touch it (just leave it where it is)
* EC(Embedded Controller) =>  you do not have to touch it (just leave it where it is)


== GPIO layout ==
== Status ==
[[Intel_Native_Raminit]] has it's own status page.
 
{{Status|
 
|CPU_status = OK
|CPU_comments =
|CPU_L1_status = OK
|CPU_L1_comments = Always on
|CPU_L2_status = OK
|CPU_L2_comments = Always on
|CPU_L3_status = N/A
|CPU_multiple_status = N/A
|CPU_multicore_status = OK
|CPU_virt_status = OK
 
|RAM_EDO_status = N/A
|RAM_SDRAM_status = N/A
|RAM_SODIMM_status = N/A
|RAM_DDR_status = N/A
|RAM_DDR2_status = N/A
|RAM_DDR3_status = OK
|RAM_DDR3_comments = Native
|RAM_dualchannel_status = OK
|RAM_ecc_status = N/A
 
|IDE_status = N/A
|IDE_CF_status = N/A
|IDE_25_status = N/A
|CDROM_DVD_status = OK
|SATA_status = OK
|SATA_comments =
|Onboard_SCSI_status = N/A
|USB_status = OK
|USB_comments =
|Onboard_VGA_status = OK
|Onboard_VGA_comments = BIOS/console: works.
|Onboard_ethernet_status = OK
|Onboard_audio_status = OK
|Onboard_audio_comments = Basic two channel audio works fine.
|Onboard_modem_status = N/A
|Onboard_firewire_status = N/A
|Smartcard_status = N/A
|Onboard_CF_status = N/A
|Onboard_PCMCIA_status = N/A
|Onboard_Wifi_status = Untested
|Onboard_Bluetooth_status = Untested
 
|ISA_cards_status = N/A
|AMR_cards_status = N/A
|Mini_PCI_cards_status = N/A
|Mini_PCI_cards_comments =
|PCIX_cards_status = N/A
|AGP_cards_status = N/A
|PCI_cards_status = OK
|PCI_cards_comments =
|PCIE_x1_status = OK
|PCIE_x1_comments =
|PCIE_x2_status = N/A
|PCIE_x4_status = N/A
|PCIE_x8_status = N/A
|PCIE_x16_status = Untested
|PCIE_x32_status = N/A
|HTX_status = N/A
 
|Floppy_status = N/A
|COM1_status = N/A
|COM2_status = N/A
|PP_status = N/A
|PS2_keyboard_status = OK
|PS2_mouse_status = OK
|Game_port_status = N/A
|IR_status = N/A
|IR_comments =
|Speaker_status = OK
|DiskOnChip_status = N/A
 
|Trackpoint_status = Untested
|Touchpad_status = Untested
|FnHotkeys_status = Untested
|Fingerprint_status = Untested


This information should not be considered reliable in any way, shape or form
|Docking_VGA_status = Untested
|Docking_LAN_status = Untested
|Docking_USB_status = Untested
|Docking_Audio_status = Untested
|Docking_Displayport_status = Untested
|Thinklight_status = Untested
|Webcam_status = Untested


* GPIO57 - OUT - controls..
|Sensors_status = OK
|Sensors_comments =
|Watchdog_status = Pending
|Watchdog_comments = What needs to be done here??
|SMBus_status = OK
|CAN_bus_status = N/A
|CPUfreq_status = OK
|Powersave_status = N/A
|ACPI_status = WIP
|ACPI_comments = Mostly working, needs a good Review!
|Reboot_status = OK
|Poweroff_status = OK
|Suspend_status = OK
|Poweroff_comments =
|LEDs_status = N/A
|HPET_status = OK
|RNG_status = OK
|WakeOnModem_status = N/A
|WakeOnLAN_status = Untested
|WakeOnKeyboard_status = Untested
|WakeOnMouse_status = Untested
|Flashrom_status = OK
|Flashrom_comments = MXIC MX25L3206E 4MB SPI Flash


== General Purpose Events layout ==
}}


* GPE? - EC SCI
USB 3.0 is not supported with native ram init. Ports will only use USB 2.0, some USB 3.0 devices may not work.
* GPE? - EC SMI
 
== Building Firmware ==
Please have a look at [[Intel_Sandybridge_Build_Tutorial]].


== Flashing ==
== Flashing ==
Line 75: Line 154:
* Descriptor (12K)
* Descriptor (12K)
* ME firmware (5M-12K)
* ME firmware (5M-12K)
* GbE firmware
* System flash (7M)
* System flash (7M)


ME firmware is not readable.
The 'Descriptor' region locks the flash and so you need to flash externally. ME firmware region is not readable from the CPU.
Vendor firmware locks the flash and so you need to flash externally (unless until someone figures out a way around it).
 
More precisely:
 
  0x54: 0x00000000 FREG0: Warning: Flash Descriptor region (0x00000000-0x00000fff) is read-only.
  0x58: 0x0bff0500 FREG1: BIOS region (0x00500000-0x00bfffff) is read-write.
  0x5C: 0x04ff0003 FREG2: Warning: Management Engine region (0x00003000-0x004fffff) is locked.
  0x60: 0x00020001 FREG3: Gigabit Ethernet region (0x00001000-0x00002fff) is read-write
 
=== Outline ===


Proceeds as follows:
Proceeds as follows:
* Turn off your laptop, remove battery and AC adapter.
* Turn off your laptop, remove battery and AC adapter.
* Remove the keyboard.
* Dismantle machine.
* Connect your external SPI flasher to the top SPI chip which is under palm resting space, on left side of the board. It's a 4M chip. IF you've chosen CBFS_SIZE 4M or smaller that's the only chip you need to reflash.
* Connect external SPI flasher to the 4MB chip.
 
Remark: You will need a SOIC clip to connect an external SPI programmer.


I recommend using SOIC clip. Depending on the flasher you use, you may have to use separate
=== Flashing Process ===
3.3V source. Make sure not to feed more than 3.3V ot the chip. I used
 
buspirate as flasher and 3.3V power lines from another computer.
1.) Read out the flash to make a backup '''Twice''', compare to ensure they match and then save a
copy of it on external media:


* Read the flash. Twice. Compare the files to be sure. Save a copy of it on
external media.
  flashrom -p <yourprogrammer> -r flash.bin
  flashrom -p <yourprogrammer> -r flash.bin
  flashrom -p <yourprogrammer> -r flash2.bin
  flashrom -p <yourprogrammer> -r flash2.bin
  diff flash.bin flash2.bin
  diff flash.bin flash2.bin


If they don't match, do not proceed. If the file is 8M, you're flashing wrong chip, connect to the right one.
'''If they don't match, do not proceed and if the file size is 8M you are flashing the wrong chip.'''
 
2.) Since you have to write only top 4M out of the 12M coreboot.rom, first split out those 4M by:


* Write the flash. Since you have to write only top 4M, first split out those 4M:
   dd of=top.rom bs=1M if=build/coreboot.rom skip=8
   dd of=top.rom bs=1M if=build/coreboot.rom skip=8


* Use flashrom to flash top.rom.
Then use flashrom to flash top.rom.
 
If you have trouble reading the chip successfully,
the most common problems are
*insufficient power supply
*bad contacts
*too long wires
*bad pinout
The cable shipped with buspirate was too long, and needed to be trimmed.
 
See also [http://flashrom.org/ISP In-System Programming]

Revision as of 11:02, 23 November 2016

Specification

The machine has:

- Chipset: Intel QM77
- GPU's: Intel Integrated HD Graphics
       : Discrete NVIDIA NVS 5400M (1 GB VRAM) with Optimus Technology

and pci configuration of:

-[0000:00]-+-00.0  8086:0154
           +-02.0  8086:0166
           +-16.0  8086:1e3a
           +-19.0  8086:1502
           +-1a.0  8086:1e2d
           +-1b.0  8086:1e20
           +-1c.0-[02]----00.0  1180:e823
           +-1c.1-[03]----00.0  8086:4238
           +-1c.2-[04-0b]--
           +-1d.0  8086:1e26
           +-1f.0  8086:1e55
           +-1f.2  8086:1e03
           \-1f.3  8086:1e22

Proprietary components status

  • CPU Microcode (optional)
  • ME(Management Engine) => you do not have to touch it (just leave it where it is)
  • EC(Embedded Controller) => you do not have to touch it (just leave it where it is)

Status

Intel_Native_Raminit has it's own status page.

Device/functionality Status Comments
CPU
CPU works OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
L1 cache enabled OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Always on
L2 cache enabled OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Always on
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 }}" | N/A
DDR3 OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Native
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 BIOS/console: works.
On-board Ethernet OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
On-board Audio OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Basic two channel audio works fine.
On-board Modem OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
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 }}" | N/A
On-board Wifi OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
On-board Bluetooth OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
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 }}" | OK
Mini-PCI add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
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 }}" | OK
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 }}" | Untested
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 }}" | N/A
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 }}" | OK
PS/2 mouse OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
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 }}" | N/A
PC speaker OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
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 }}" | Untested
Touchpad OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
Fn Hotkeys OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
Fingerprint Reader OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
Laptop
Docking VGA OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
Docking LAN OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
Docking USB OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
Docking Audio OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
Docking Displayport OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
Thinklight OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
Webcam OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
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 }}" | Pending What needs to be done here??
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 }}" | N/A
ACPI OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | WIP Mostly working, needs a good Review!
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 }}" | N/A
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 }}" | OK
Wake on modem ring OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Wake on LAN OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
Wake on keyboard OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
Wake on mouse OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
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 MXIC MX25L3206E 4MB SPI Flash

USB 3.0 is not supported with native ram init. Ports will only use USB 2.0, some USB 3.0 devices may not work.

Building Firmware

Please have a look at Intel_Sandybridge_Build_Tutorial.

Flashing

Location of the SPI chips

T530 has 2 flash chips of 8M and 4M. They're concatenated to one virtual flash chip of 12M which is itself subdivided in roughly in 4 parts:

  • Descriptor (12K)
  • ME firmware (5M-12K)
  • GbE firmware
  • System flash (7M)

The 'Descriptor' region locks the flash and so you need to flash externally. ME firmware region is not readable from the CPU.

More precisely:

 0x54: 0x00000000 FREG0: Warning: Flash Descriptor region (0x00000000-0x00000fff) is read-only.
 0x58: 0x0bff0500 FREG1: BIOS region (0x00500000-0x00bfffff) is read-write.
 0x5C: 0x04ff0003 FREG2: Warning: Management Engine region (0x00003000-0x004fffff) is locked.
 0x60: 0x00020001 FREG3: Gigabit Ethernet region (0x00001000-0x00002fff) is read-write

Outline

Proceeds as follows:

  • Turn off your laptop, remove battery and AC adapter.
  • Dismantle machine.
  • Connect external SPI flasher to the 4MB chip.

Remark: You will need a SOIC clip to connect an external SPI programmer.

Flashing Process

1.) Read out the flash to make a backup Twice, compare to ensure they match and then save a copy of it on external media:

flashrom -p <yourprogrammer> -r flash.bin
flashrom -p <yourprogrammer> -r flash2.bin
diff flash.bin flash2.bin

If they don't match, do not proceed and if the file size is 8M you are flashing the wrong chip.

2.) Since you have to write only top 4M out of the 12M coreboot.rom, first split out those 4M by:

 dd of=top.rom bs=1M if=build/coreboot.rom skip=8

Then use flashrom to flash top.rom.