Board:lenovo/t530: Difference between revisions

From coreboot
Jump to navigation Jump to search
mNo edit summary
No edit summary
 
(25 intermediate revisions by 5 users not shown)
Line 1: Line 1:
== 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 ==
== Status ==
Thanks for your interest in Lenovo T530 port.
[[Intel_Native_Raminit]] has it's own status page.
Issues:
 
* EHCI output failure after sysagent
{{Status|
* no S3
 
* no MRC cache
|CPU_status = OK
* MRC needs watchdog
|CPU_comments =
* yellow USB port isn't powered in power-off state.
|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 = OK
|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 = OK
|Touchpad_status = OK
|FnHotkeys_status = OK
|Fingerprint_status = OK
 
|Docking_VGA_status = OK
|Docking_LAN_status = OK
|Docking_USB_status = OK
|Docking_Audio_status = Untested
|Docking_Displayport_status = Untested
|Thinklight_status = OK
|Webcam_status = OK


Tested:
|Sensors_status = OK
* RAM module combinations of 8G+8G
|Sensors_comments =
* USB (both 2.0 and 3.0 ports)
|Watchdog_status = OK
* Video (both internal and VGA)
|Watchdog_comments = Disabled early.
* Expresscard slot (including hotplugging)
|SMBus_status = OK
* Sound (integrated speakers, integrated mic, external headphones, external mic)
|CAN_bus_status = N/A
* LAN
|CPUfreq_status = OK
* mini-PCIe slots (both wlan and wwan)
|Powersave_status = N/A
* Linux (through GRUB-as-payload)
|ACPI_status = WIP
* Windows (through GRUB-as-payload loading SeaBIOS image from disk; you have to use extracted VGA blob, dumped from memory isn't good enough)
|ACPI_comments = Mostly working, needs a good Review!
* SD card slot
|Reboot_status = OK
* Thermal management
|Poweroff_status = OK
* Fingerprint reader.
|Suspend_status = OK
* Webcam
|Poweroff_comments =
* Keyboard backlight
|LEDs_status = N/A
* Thinklight.
|HPET_status = OK
* bluetooth
|RNG_status = OK
* dock
|WakeOnModem_status = N/A
* msata (fixed in commit c8f54a1109072706e2fa091dc9ab4ad3eb057b42)
|WakeOnLAN_status = Untested
Not tested:
|WakeOnKeyboard_status = Untested
* mini displayport (probably works)
|WakeOnMouse_status = Untested
|Flashrom_status = OK
|Flashrom_comments = MXIC MX25L3206E 4MB SPI Flash


== proprietary components status ==
}}
* CPU Microcode (optional)
* VGA option rom
* MRC
* 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)


== Code ==
== Building Firmware ==
* The code has been merged into coreboot master
Please have a look at [[Intel_Sandybridge_Build_Tutorial]].


  $ git clone http://review.coreboot.org/p/coreboot
== Nvidia GPU ==
State of dual graphics on Lenovo Notebooks: [[Board:lenovo/Nvidia_Optimus]]


== Flashing ==
== Flashing ==
[[File:T530_SPI_chips.jpg|thumb|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:
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)
* 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' the only chip you need to reflash.
* Connect external SPI flasher to the 4MB chip.


I recommend using SOIC clip. Depending on the flasher you use, you may have to use separate
Remark: You will need a SOIC clip to connect an external SPI programmer.
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.
=== 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:


* 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, connec 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]

Latest revision as of 13:39, 31 December 2017

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 }}" | OK
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 }}" | OK
Touchpad OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
Fn Hotkeys OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
Fingerprint Reader OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
Laptop
Docking VGA OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
Docking LAN OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
Docking USB OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
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 }}" | OK
Webcam OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
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 }}" | OK Disabled early.
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

Building Firmware

Please have a look at Intel_Sandybridge_Build_Tutorial.

Nvidia GPU

State of dual graphics on Lenovo Notebooks: Board:lenovo/Nvidia_Optimus

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.