diff options
author | Patrick Rudolph <siro@das-labor.org> | 2018-08-04 10:04:45 +0200 |
---|---|---|
committer | Philipp Deppenwiese <zaolin.daisuki@gmail.com> | 2018-09-30 03:20:36 +0000 |
commit | 15d840558480536ddaca71bc1876254d59fca7fe (patch) | |
tree | ecbb8b330e53b9413eaf17a72e0fb79a9ed2523f /Documentation/mainboard/lenovo | |
parent | 3d1d966dd8866e8fd399f988b38b7ceba9f4cfee (diff) |
Documentation: Add basic flashing tutorial for Lenovo
* Add basic flashing tutorial
** Describe internal and external flashing
** Describe flash supply diode protection
** Gives general advices on flashing
** Describe how to use flashrom --ifd
* Describe basic flashing on Lenovo T4xx devices
** Describe how to disassemble and access the flash IC on T4xx
** Describe flash layout on Sandy Bridge and Ivy Bridge series.
Change-Id: Ia833e27f4e7d89ee32be9bed21a0c021839facec
Signed-off-by: Patrick Rudolph <siro@das-labor.org>
Reviewed-on: https://review.coreboot.org/27852
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Philipp Deppenwiese <zaolin.daisuki@gmail.com>
Diffstat (limited to 'Documentation/mainboard/lenovo')
-rw-r--r-- | Documentation/mainboard/lenovo/flashlayout_xx20.svg | 52 | ||||
-rw-r--r-- | Documentation/mainboard/lenovo/flashlayout_xx30.svg | 61 | ||||
-rw-r--r-- | Documentation/mainboard/lenovo/t420.md | 16 | ||||
-rw-r--r-- | Documentation/mainboard/lenovo/t430.md | 15 | ||||
-rw-r--r-- | Documentation/mainboard/lenovo/t4xx_series.md | 20 | ||||
-rw-r--r-- | Documentation/mainboard/lenovo/xx20_series.md | 48 | ||||
-rw-r--r-- | Documentation/mainboard/lenovo/xx30_series.md | 76 |
7 files changed, 288 insertions, 0 deletions
diff --git a/Documentation/mainboard/lenovo/flashlayout_xx20.svg b/Documentation/mainboard/lenovo/flashlayout_xx20.svg new file mode 100644 index 0000000000..8884ac37ad --- /dev/null +++ b/Documentation/mainboard/lenovo/flashlayout_xx20.svg @@ -0,0 +1,52 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/PR-SVG-20010719/DTD/svg10.dtd"> +<svg width="10cm" height="8cm" viewBox="265 -156 186 159" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <g> + <rect style="fill: #ffffff" x="307.888" y="-152.131" width="49.1438" height="30.4667"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="307.888" y="-152.131" width="49.1438" height="30.4667"/> + <text font-size="6.77333" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="332.46" y="-134.831"> + <tspan x="332.46" y="-134.831">IFD</tspan> + </text> + </g> + <g> + <rect style="fill: #ffffff" x="308" y="-91.1844" width="49.1438" height="59.7756"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="308" y="-91.1844" width="49.1438" height="59.7756"/> + <text font-size="6.77333" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="332.572" y="-59.2299"> + <tspan x="332.572" y="-59.2299">ME</tspan> + </text> + </g> + <g> + <rect style="fill: #ffffff" x="307.934" y="-31.6442" width="49.1438" height="30.8828"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="307.934" y="-31.6442" width="49.1438" height="30.8828"/> + <text font-size="6.77333" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="332.506" y="-14.1361"> + <tspan x="332.506" y="-14.1361">BIOS</tspan> + </text> + </g> + <g> + <rect style="fill: #ffffff" x="308" y="-121.59" width="49.1438" height="30.4667"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="308" y="-121.59" width="49.1438" height="30.4667"/> + <text font-size="6.77333" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="332.572" y="-104.29"> + <tspan x="332.572" y="-104.29">GBE</tspan> + </text> + </g> + <text font-size="6.77333" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="265.968" y="-149.208"> + <tspan x="265.968" y="-149.208">0x000000</tspan> + </text> + <text font-size="6.77333" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="266.362" y="-120.102"> + <tspan x="266.362" y="-120.102">0x001000</tspan> + </text> + <text font-size="6.77333" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="266.162" y="-88.8972"> + <tspan x="266.162" y="-88.8972">0x003000</tspan> + </text> + <text font-size="6.77333" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="266.144" y="-29.6656"> + <tspan x="266.144" y="-29.6656">0x500000</tspan> + </text> + <text font-size="6.77333" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="266.326" y="1.87412"> + <tspan x="266.326" y="1.87412">0x800000</tspan> + </text> + <path style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" d="M 380.877 -151.013 C 401.876,-151.013 379.377,-73.513 400.627,-72.513"/> + <path style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" d="M 381.377 -0.763268 C 395.238,-0.763268 387.016,-72.763 400.877,-72.763"/> + <text font-size="10.1598" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="406.127" y="-68.513"> + <tspan x="406.127" y="-68.513">Flash #0</tspan> + </text> +</svg> diff --git a/Documentation/mainboard/lenovo/flashlayout_xx30.svg b/Documentation/mainboard/lenovo/flashlayout_xx30.svg new file mode 100644 index 0000000000..5cc4e4fbaf --- /dev/null +++ b/Documentation/mainboard/lenovo/flashlayout_xx30.svg @@ -0,0 +1,61 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/PR-SVG-20010719/DTD/svg10.dtd"> +<svg width="10cm" height="11cm" viewBox="265 -156 187 213" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <g> + <rect style="fill: #ffffff" x="307.888" y="-152.131" width="49.1438" height="30.4667"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="307.888" y="-152.131" width="49.1438" height="30.4667"/> + <text font-size="6.77333" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="332.46" y="-134.831"> + <tspan x="332.46" y="-134.831">IFD</tspan> + </text> + </g> + <g> + <rect style="fill: #ffffff" x="308" y="-91.1844" width="49.1438" height="59.7756"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="308" y="-91.1844" width="49.1438" height="59.7756"/> + <text font-size="6.77333" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="332.572" y="-59.2299"> + <tspan x="332.572" y="-59.2299">ME</tspan> + </text> + </g> + <g> + <rect style="fill: #ffffff" x="307.934" y="-31.6442" width="49.1438" height="85.7161"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="307.934" y="-31.6442" width="49.1438" height="85.7161"/> + <text font-size="6.77333" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="332.506" y="13.2805"> + <tspan x="332.506" y="13.2805">BIOS</tspan> + </text> + </g> + <g> + <rect style="fill: #ffffff" x="308" y="-121.59" width="49.1438" height="30.4667"/> + <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="308" y="-121.59" width="49.1438" height="30.4667"/> + <text font-size="6.77333" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="332.572" y="-104.29"> + <tspan x="332.572" y="-104.29">GBE</tspan> + </text> + </g> + <text font-size="6.77333" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="265.968" y="-149.208"> + <tspan x="265.968" y="-149.208">0x000000</tspan> + </text> + <text font-size="6.77333" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="266.362" y="-120.102"> + <tspan x="266.362" y="-120.102">0x001000</tspan> + </text> + <text font-size="6.77333" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="266.162" y="-88.8972"> + <tspan x="266.162" y="-88.8972">0x003000</tspan> + </text> + <text font-size="6.77333" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="266.144" y="-29.6656"> + <tspan x="266.144" y="-29.6656">0x500000</tspan> + </text> + <text font-size="6.77333" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="266.326" y="1.87412"> + <tspan x="266.326" y="1.87412">0x800000</tspan> + </text> + <path style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" d="M 380.877 -151.013 C 401.876,-151.013 379.377,-73.513 400.627,-72.513"/> + <path style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" d="M 381.377 -0.763268 C 395.238,-0.763268 387.016,-72.763 400.877,-72.763"/> + <text font-size="10.1598" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="406.127" y="-68.513"> + <tspan x="406.127" y="-68.513">Flash #0</tspan> + </text> + <path style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" d="M 381.223 -0.537117 C 402.222,-0.537117 379.285,28.8102 399.872,27.8376"/> + <path style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" d="M 382.176 54.9128 C 396.037,54.9128 385.445,27.9997 399.548,27.8376"/> + <text font-size="10.1598" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="407.157" y="30.2529"> + <tspan x="407.157" y="30.2529">Flash #1</tspan> + </text> + <text font-size="6.77333" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="266.591" y="54.9733"> + <tspan x="266.591" y="54.9733">0xc00000</tspan> + </text> + <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #000000" x1="305.271" y1="-1.2113" x2="378.831" y2="-1.17038"/> +</svg> diff --git a/Documentation/mainboard/lenovo/t420.md b/Documentation/mainboard/lenovo/t420.md new file mode 100644 index 0000000000..ff7a0a9238 --- /dev/null +++ b/Documentation/mainboard/lenovo/t420.md @@ -0,0 +1,16 @@ +# Lenovo T420 + +## Flashing instructions +You have to disassemble the whole device, as the flash IC is on the bottom +of the mainboard. + +For more details have a look at [T420 / T520 / X220 / T420s / W520 common] and + +```eval_rst +:doc:`../../flash_tutorial/ext_power` +``` + +Steps to access the flash IC are described here [T4xx series]. + +[T4xx series]: t4xx_series.md +[T420 / T520 / X220 / T420s / W520 common]: xx20_series.md diff --git a/Documentation/mainboard/lenovo/t430.md b/Documentation/mainboard/lenovo/t430.md new file mode 100644 index 0000000000..787246f4d4 --- /dev/null +++ b/Documentation/mainboard/lenovo/t430.md @@ -0,0 +1,15 @@ +# Lenovo T430 + +## Flashing instructions +You have to disassemble the whole device, as the flash ICs are on the bottom +of the mainboard. + +For more details have a look at [T430 / T530 / X230 / T430s / W530 common] and +```eval_rst +:doc:`../../flash_tutorial/ext_power` +``` + +Steps to access the flash IC are described here [T4xx series]. + +[T4xx series]: t4xx_series.md +[T430 / T530 / X230 / T430s / W530 common]: xx30_series.md diff --git a/Documentation/mainboard/lenovo/t4xx_series.md b/Documentation/mainboard/lenovo/t4xx_series.md new file mode 100644 index 0000000000..23fe0fbe53 --- /dev/null +++ b/Documentation/mainboard/lenovo/t4xx_series.md @@ -0,0 +1,20 @@ +# Lenovo T4xx series disassembly instructions + +A skilled engineer takes around 40 minutes to disassemble, flash and reassemble +the whole device. + +# Steps to access the flash IC: + +* Unplug the main battery +* Remove the harddisk, CDROM, ExpressCard, SIM-card, SDcard, SmartCard, ... +* Open the bottom flap and remove the keyboard screw +* Remove the keyboard +* Remove the screen +* Remove the top enclosure +* Remove the CMOS battery +* Remove the speakers +* Remove WWAN and WIFI card +* Remove the CPU fan +* Unplug the power cable +* Remove the bottom enclosure +* Flip the mainboard and remove the main frame diff --git a/Documentation/mainboard/lenovo/xx20_series.md b/Documentation/mainboard/lenovo/xx20_series.md new file mode 100644 index 0000000000..976a29ba9f --- /dev/null +++ b/Documentation/mainboard/lenovo/xx20_series.md @@ -0,0 +1,48 @@ +# Lenovo Sandy Bridge series + +## Flashing coreboot +```eval_rst ++---------------------+--------------------+ +| Type | Value | ++=====================+====================+ +| Socketed flash | no | ++---------------------+--------------------+ +| Size | 8 MiB | ++---------------------+--------------------+ +| In circuit flashing | Yes | ++---------------------+--------------------+ +| Package | SOIC-8 | ++---------------------+--------------------+ +| Write protection | No | ++---------------------+--------------------+ +| Dual BIOS feature | No | ++---------------------+--------------------+ +| Internal flashing | Yes | ++---------------------+--------------------+ +``` + +## Installation instructions +* Update the EC firmware, as there's no support for EC updates in coreboot. +* Do **NOT** accidently swap pins or power on the board while a SPI flasher + is connected. It will destroy your device. +* It's recommended to only flash the BIOS region. In that case you don't + need to extract BLOBs from vendor firmware. + If you want to flash the whole chip, you need BLOBs when building + coreboot. +* The shipped *Flash layout* allocates 3MiB to the BIOS region, which is the space + usable by coreboot. +* ROM chip size should be set to 8MiB. + +```eval_rst +Please also have a look at :doc:`../../flash_tutorial/index`. +``` + +## Flash layout +There's one 8MiB flash which contains IFD, GBE, ME and BIOS regions. +On Lenovo's UEFI the EC firmware update is placed at the start of the BIOS +region. The update is then written into the EC once. + +![][fl] + +[fl]: flashlayout_xx20.svg + diff --git a/Documentation/mainboard/lenovo/xx30_series.md b/Documentation/mainboard/lenovo/xx30_series.md new file mode 100644 index 0000000000..e65a3f2a6f --- /dev/null +++ b/Documentation/mainboard/lenovo/xx30_series.md @@ -0,0 +1,76 @@ +# Lenovo Ivy Bridge series + +## Flashing coreboot +```eval_rst ++---------------------+--------------------------------+ +| Type | Value | ++=====================+================================+ +| Socketed flash | no | ++---------------------+--------------------------------+ +| Size | 8 MiB + 4MiB | ++---------------------+--------------------------------+ +| In circuit flashing | Yes | ++---------------------+--------------------------------+ +| Package | SOIC-8 | ++---------------------+--------------------------------+ +| Write protection | No | ++---------------------+--------------------------------+ +| Dual BIOS feature | No | ++---------------------+--------------------------------+ +| Internal flashing | Yes | ++---------------------+--------------------------------+ +``` + +## Installation instructions +* Update the EC firmware, as there's no support for EC updates in coreboot. +* Do **NOT** accidently swap pins or power on the board while a SPI flasher + is connected. It will permanently brick your device. +* It's recommended to only flash the BIOS region. In that case you don't + need to extract BLOBs from vendor firmware. + If you want to flash the whole chip, you need BLOBs when building + coreboot. +* The *Flash layout* shows that by default 7MiB of space are available for + the use with coreboot. +* In that case you only want to use a part of the BIOS region that must not + exceed 4MiB in size, which means CONFIG_CBFS_SIZE must be smaller than 4MiB. +* ROM chip size should be set to 12MiB. + +```eval_rst +Please also have a look at :doc:`../../flash_tutorial/index`. +``` + +## Splitting the coreboot.rom + +To split the coreboot.rom into two images (one for the 8MiB and one for the +4 MiB flash IC), run the following commands: + +```bash +dd of=top.rom bs=1M if=build/coreboot.rom skip=8 +dd of=bottom.rom bs=1M if=build/coreboot.rom count=8 +``` + +That gives one ROM for each flash IC, where *top.rom* is the upper part of the +flash image, that resides on the 4 MiB flash and *bottom.rom* is the lower part +of the flash image, that resides on the 8 MiB flash. + +## Dumping a full ROM + +If you flash externally you need to read both flash chips to get two images +(one for the 8MiB and one for the 4 MiB flash IC), and then run the following +command to concatenate the files: + +```bash +cat bottom.rom top.rom > firmware.rom +``` + +## Flash layout +There's one 8MiB and one 4 MiB flash which contains IFD, GBE, ME and +BIOS region. These two flash ICs appear as a single 12MiB when flashing +internally. +On Lenovo's UEFI the EC firmware update is placed at the start of the BIOS +region. The update is then written into the EC once. + +![][fl] + +[fl]: flashlayout_xx30.svg + |