From c752c500fbcc055e8cdfb30a2e523e8a9349b79f Mon Sep 17 00:00:00 2001 From: Iru Cai Date: Wed, 16 Jan 2019 18:31:08 +0800 Subject: [PATCH] Documentation: Add HP EliteBook 8760w Also add the HP EliteBook document from wiki. Change-Id: I189db9c279705af53d82af66d0c2e8afb6f84d73 Signed-off-by: Iru Cai Reviewed-on: https://review.coreboot.org/c/coreboot/+/30950 Reviewed-by: Patrick Georgi Tested-by: build bot (Jenkins) --- Documentation/mainboard/hp/8760w.md | 82 +++++++++++++ Documentation/mainboard/hp/8760w_flash.jpg | Bin 0 -> 55849 bytes .../mainboard/hp/elitebook_series.md | 111 ++++++++++++++++++ Documentation/mainboard/index.md | 5 + 4 files changed, 198 insertions(+) create mode 100644 Documentation/mainboard/hp/8760w.md create mode 100644 Documentation/mainboard/hp/8760w_flash.jpg create mode 100644 Documentation/mainboard/hp/elitebook_series.md diff --git a/Documentation/mainboard/hp/8760w.md b/Documentation/mainboard/hp/8760w.md new file mode 100644 index 0000000000..714745aa04 --- /dev/null +++ b/Documentation/mainboard/hp/8760w.md @@ -0,0 +1,82 @@ +# HP EliteBook 8760w + +This page describes how to run coreboot on the [HP EliteBook 8760w]. + +## Flashing coreboot + +```eval_rst ++---------------------+------------+ +| Type | Value | ++=====================+============+ +| Socketed flash | no | ++---------------------+------------+ +| Model | W25Q64.V | ++---------------------+------------+ +| Size | 8 MiB | ++---------------------+------------+ +| Package | SOIC-8 | ++---------------------+------------+ +| Write protection | no | ++---------------------+------------+ +| Dual BIOS feature | no | ++---------------------+------------+ +| In circuit flashing | yes | ++---------------------+------------+ +| Internal flashing | yes | ++---------------------+------------+ +``` + +## Required proprietary blobs + +- Intel Firmware Descriptor, ME and GbE firmware +- EC: please read [EliteBook Series](elitebook_series) + +## Flashing instructions + +HP EliteBook 8760w has an 8MB SOIC-8 flash chip on the bottom of the +mainboard. You just need to remove the service cover, and use an SOIC-8 +clip to read and flash the chip. + +![8760w_chip_location](8760w_flash.jpg) + +## Untested + +- dock: serial port, parallel port, ... +- TPM +- S3 suspend/resume +- Gigabit Ethernet + +## Working + +- i7-2630QM, 0+4G+8G+0 +- i7-3720QM, 8G+8G+8G+8G +- Arch Linux boot from SeaBIOS payload +- EHCI debug: the port is at the right side, next to the charging port +- SATA +- eSATA +- USB2 and USB3 +- keyboard, touchpad, trackpad +- WLAN +- WWAN +- EC ACPI +- Using `me_cleaner` + +## Technology + +```eval_rst ++------------------+--------------------------------------------------+ +| Northbridge | :doc:`../../northbridge/intel/sandybridge/index` | ++------------------+--------------------------------------------------+ +| Southbridge | bd82x6x | ++------------------+--------------------------------------------------+ +| CPU | model_206ax | ++------------------+--------------------------------------------------+ +| Super I/O | SMSC LPC47n217 | ++------------------+--------------------------------------------------+ +| EC | SMSC KBC1126 | ++------------------+--------------------------------------------------+ +| Coprocessor | Intel Management Engine | ++------------------+--------------------------------------------------+ +``` + +[HP EliteBook 8760w]: https://support.hp.com/us-en/product/hp-elitebook-8760w-mobile-workstation/5071180 diff --git a/Documentation/mainboard/hp/8760w_flash.jpg b/Documentation/mainboard/hp/8760w_flash.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d9bbac6788a3982c01dbda568b58ab8eade72726 GIT binary patch literal 55849 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 S4p@m(ZL^Y?8&Pb3)c@I&H9x2T literal 0 HcmV?d00001 diff --git a/Documentation/mainboard/hp/elitebook_series.md b/Documentation/mainboard/hp/elitebook_series.md new file mode 100644 index 0000000000..6668928008 --- /dev/null +++ b/Documentation/mainboard/hp/elitebook_series.md @@ -0,0 +1,111 @@ +# HP EliteBook series + +This document is about HP EliteBook series laptops up to Ivy Bridge era +which use SMSC KBC1126 as embedded controller. + +## EC + +SMSC KBC1098/KBC1126 has been used in HP EliteBooks for many generations. +They use similar EC firmware that will load other code and data from the +SPI flash chip, so we need to put some firmware blobs to the coreboot image. + +The following document takes EliteBook 2760p as an example. + +First, you need to extract the blobs needed by EC firmware using util/kbc1126. +You can extract them from your backup firmware image, or firmware update +provided by HP with [unar] as follows: + +```bash +wget https://ftp.hp.com/pub/softpaq/sp79501-80000/sp79710.exe +unar sp79710.exe +${COREBOOT_DIR}/util/kbc1126/kbc1126_ec_dump sp79710/Rompaq/68SOU.BIN +mv 68SOU.BIN.fw1 ${COREBOOT_DIR}/2760p-fw1.bin +mv 68SOU.BIN.fw2 ${COREBOOT_DIR}/2760p-fw2.bin +``` + +When you config coreboot, select: + +```text +Chipset ---> + [*] Add firmware images for KBC1126 EC + (2760p-fw1.bin) KBC1126 firmware #1 path and filename + (2760p-fw2.bin) KBC1126 filename #2 path and filename +``` + +## Super I/O + +EliteBook 8000 series laptops have SMSC LPC47n217 Super I/O to provide +a serial port and a parallel port, you can debug the laptop via this +serial port. + +## porting + +To port coreboot to an HP EliteBook laptop, you need to do the following: + +- select Kconfig option `EC_HP_KBC1126` +- select Kconfig option `SUPERIO_SMSC_LPC47N217` if there is LPC47n217 Super I/O +- initialize EC and Super I/O in romstage +- add EC and Super I/O support to devicetree.cb + +To get the related values for EC in devicetree.cb, you need to extract the EFI +module EcThermalInit from the vendor UEFI firmware with [UEFITool]. Usually, +`ec_data_port`, `ec_cmd_port` and `ec_ctrl_reg` has the following values: + +- For xx60 series: 0x60, 0x64, 0xca +- For xx70 series: 0x62, 0x66, 0x81 + +You can use [radare2] and the following [r2pipe] Python script to find +these values from the EcThermalInit EFI module: + +```python +#!/usr/bin/env python + +# install radare2 and use `pip3 install --user r2pipe` to install r2pipe + +import r2pipe +import sys + +if len(sys.argv) < 2: + fn = "ecthermalinit.efi" +else: + fn = sys.argv[1] + +r2 = r2pipe.open(fn) +r2.cmd("aa") +entryf = r2.cmdj("pdfj") + +for insn in entryf["ops"]: + if "lea r8" in insn["opcode"]: + _callback = insn["ptr"] + break + +r2.cmd("af @ {}".format(_callback)) +callbackf_insns = r2.cmdj("pdfj @ {}".format(_callback))["ops"] + +def find_port(addr): + ops = r2.cmdj("pdfj @ {}".format(addr))["ops"] + for insn in ops: + if "lea r8d" in insn["opcode"]: + return insn["ptr"] + +ctrl_reg_found = False + +for i in range(0, len(callbackf_insns)): + if not ctrl_reg_found and "mov cl" in callbackf_insns[i]["opcode"]: + ctrl_reg_found = True + ctrl_reg = callbackf_insns[i]["ptr"] + print("ec_ctrl_reg = 0x%02x" % ctrl_reg) + cmd_port = find_port(callbackf_insns[i+1]["jump"]) + data_port = find_port(callbackf_insns[i+3]["jump"]) + print("ec_cmd_port = 0x%02x\nec_data_port = 0x%02x" % (cmd_port, data_port)) + + if "mov bl" in callbackf_insns[i]["opcode"]: + ctrl_value = callbackf_insns[i]["ptr"] + print("ec_fan_ctrl_value = 0x%02x" % ctrl_value) +``` + + +[unar]: https://theunarchiver.com/command-line +[UEFITool]: https://github.com/LongSoft/UEFITool +[radare2]: https://radare.org/ +[r2pipe]: https://github.com/radare/radare2-r2pipe diff --git a/Documentation/mainboard/index.md b/Documentation/mainboard/index.md index 1494e06244..7e0dab2f4c 100644 --- a/Documentation/mainboard/index.md +++ b/Documentation/mainboard/index.md @@ -51,6 +51,11 @@ The boards in this section are not real mainboards, but emulators. - [Compaq 8200 Elite SFF](hp/compaq_8200_sff.md) +### EliteBook series + +- [EliteBook common](hp/elitebook_series.md) +- [EliteBook 8760w](hp/8760w.md) + ## Lenovo - [Mainboard codenames](lenovo/codenames.md)