| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,103 @@ | ||
| # ASUS P8H61-M Pro | ||
|
|
||
| This page describes how to run coreboot on the [ASUS P8H61-M Pro]. | ||
|
|
||
| ## Flashing coreboot | ||
|
|
||
| ```eval_rst | ||
| +---------------------+------------+ | ||
| | Type | Value | | ||
| +=====================+============+ | ||
| | Socketed flash | yes | | ||
| +---------------------+------------+ | ||
| | Model | W25Q32BV | | ||
| +---------------------+------------+ | ||
| | Size | 4 MiB | | ||
| +---------------------+------------+ | ||
| | Package | DIP-8 | | ||
| +---------------------+------------+ | ||
| | Write protection | no | | ||
| +---------------------+------------+ | ||
| | Dual BIOS feature | no | | ||
| +---------------------+------------+ | ||
| | Internal flashing | yes | | ||
| +---------------------+------------+ | ||
| ``` | ||
|
|
||
| The flash IC is located right next to one of the SATA ports: | ||
|  | ||
|
|
||
| ### Internal programming | ||
|
|
||
| The main SPI flash can be accessed using [flashrom]. By default, only | ||
| the BIOS region of the flash is writable. If you wish to change any | ||
| other region (Management Engine or flash descriptor), then an external | ||
| programmer is required. | ||
|
|
||
| The following command may be used to flash coreboot: | ||
|
|
||
| ``` | ||
| $ sudo flashrom --noverify-all --ifd -i bios -p internal -w coreboot.rom | ||
| ``` | ||
|
|
||
| The use of `--noverify-all` is required since the Management Engine | ||
| region is not readable even by the host. | ||
|
|
||
| ## Known issues | ||
|
|
||
| - There is no automatic, OS-independent fan control. This is because | ||
| the super I/O hardware monitor can only obtain valid CPU temperature | ||
| readings from the PECI agent, whose complete initialisation is not | ||
| publicly documented. The `coretemp` driver can still be used for | ||
| accurate CPU temperature readings. | ||
|
|
||
| - me_cleaner breaks LPC bus and attached components! | ||
| - PS/2 mouse doesn't work | ||
|
|
||
| ## Untested | ||
|
|
||
| - parallel port | ||
| - EHCI debug | ||
| - S/PDIF audio | ||
|
|
||
| ## Working | ||
|
|
||
| - PS/2 keyboard | ||
| - PCIe graphics | ||
| - USB | ||
| - Gigabit Ethernet | ||
| - Integrated graphics | ||
| - SATA | ||
| - Serial port | ||
| - hardware monitor (see [Known issues](#known-issues) for caveats) | ||
| - front panel audio | ||
| - Native raminit (2 x 2GB, DDR3-1333) | ||
| - Native graphics init (libgfxinit) | ||
| - Wake-on-LAN | ||
| - TPM on TPM-header | ||
|
|
||
| ## Technology | ||
|
|
||
| ```eval_rst | ||
| +------------------+--------------------------------------------------+ | ||
| | Northbridge | :doc:`../../northbridge/intel/sandybridge/index` | | ||
| +------------------+--------------------------------------------------+ | ||
| | Southbridge | bd82x6x | | ||
| +------------------+--------------------------------------------------+ | ||
| | CPU | model_206ax | | ||
| +------------------+--------------------------------------------------+ | ||
| | Super I/O | Nuvoton NCT6776 | | ||
| +------------------+--------------------------------------------------+ | ||
| | EC | None | | ||
| +------------------+--------------------------------------------------+ | ||
| | Coprocessor | Intel Management Engine | | ||
| +------------------+--------------------------------------------------+ | ||
| ``` | ||
|
|
||
| ## Extra resources | ||
|
|
||
| - [Flash chip datasheet][W25Q32BV] | ||
|
|
||
| [ASUS P8H61-M Pro]: https://www.asus.com/Motherboards/P8H61M_Pro/ | ||
| [W25Q32BV]: https://www.winbond.com/resource-files/w25q32bv_revi_100413_wo_automotive.pdf | ||
| [flashrom]: https://flashrom.org/Flashrom |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -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. | ||
|
|
||
|  | ||
|
|
||
| ## 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 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -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 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,76 @@ | ||
| # Rutundu | ||
|
|
||
| This page describes how to run coreboot on the [Rotundu] compute board | ||
| from [OpenCellular]. | ||
|
|
||
| ## TODO | ||
|
|
||
| * Configure UART | ||
| * EC interface | ||
|
|
||
| ## Flashing coreboot | ||
|
|
||
| ```eval_rst | ||
| +---------------------+------------+ | ||
| | Type | Value | | ||
| +=====================+============+ | ||
| | Socketed flash | no | | ||
| +---------------------+------------+ | ||
| | Model | W25Q128 | | ||
| +---------------------+------------+ | ||
| | Size | 16 MiB | | ||
| +---------------------+------------+ | ||
| | In circuit flashing | yes | | ||
| +---------------------+------------+ | ||
| | Package | SOIC-8 | | ||
| +---------------------+------------+ | ||
| | Write protection | No | | ||
| +---------------------+------------+ | ||
| | Dual BIOS feature | No | | ||
| +---------------------+------------+ | ||
| | Internal flashing | yes | | ||
| +---------------------+------------+ | ||
| ``` | ||
|
|
||
| ### Internal programming | ||
|
|
||
| The SPI flash can be accessed using [flashrom]. | ||
|
|
||
| ### External programming | ||
|
|
||
| The GBCv1 board does have a pinheader to flash the SOIC-8 in circuit. | ||
| Directly connecting a Pomona test-clip on the flash is also possible. | ||
|
|
||
| **Closeup view of SOIC-8 flash IC** | ||
|
|
||
| ![][rotundu_flash] | ||
|
|
||
| [rotundu_flash]: rotundu_flash.jpg | ||
|
|
||
| **SPI header** | ||
|
|
||
| ![][rotundu_header2] | ||
|
|
||
| [rotundu_header2]: rotundu_header2.jpg | ||
|
|
||
| **SPI header pinout** | ||
|
|
||
| Dediprog compatible pinout. | ||
|
|
||
| ![][rotundu_j16] | ||
|
|
||
| [rotundu_j16]: rotundu_j16.png | ||
|
|
||
| ## Technology | ||
|
|
||
| ```eval_rst | ||
| +------------------+--------------------------------------------------+ | ||
| | SoC | Intel Baytrail | | ||
| +------------------+--------------------------------------------------+ | ||
| | Coprocessor | Intel ME | | ||
| +------------------+--------------------------------------------------+ | ||
| ``` | ||
|
|
||
| [Rotundu]: https://github.com/Telecominfraproject/OpenCellular | ||
| [OpenCellular]: https://code.fb.com/connectivity/introducing-opencellular-an-open-source-wireless-access-platform/ | ||
| [flashrom]: https://flashrom.org/Flashrom |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,99 @@ | ||
| # Squared | ||
|
|
||
| ## Overview | ||
| ### Top | ||
| ![][overview_top] | ||
|
|
||
| ### Bottom | ||
| ![][overview_bottom] | ||
|
|
||
| ## Mainboard components | ||
| ### Platform | ||
| ```eval_rst | ||
| +------------------+----------------------------------+ | ||
| | CPU | Intel Atom, Celeron, Pentium | | ||
| +------------------+----------------------------------+ | ||
| | PCH | Intel Apollo Lake | | ||
| +------------------+----------------------------------+ | ||
| | EC / Super IO | N/A | | ||
| +------------------+----------------------------------+ | ||
| | Coprocessor | Intel TXE 3.0 | | ||
| +------------------+----------------------------------+ | ||
| ``` | ||
|
|
||
| ### Flash chip | ||
| ```eval_rst | ||
| +---------------------+------------+ | ||
| | Type | Value | | ||
| +=====================+============+ | ||
| | Socketed flash | no | | ||
| +---------------------+------------+ | ||
| | Vendor | Winbond | | ||
| +---------------------+------------+ | ||
| | Model | W25Q128FW | | ||
| +---------------------+------------+ | ||
| | Voltage | 1.8V | | ||
| +---------------------+------------+ | ||
| | Size | 16 MiB | | ||
| +---------------------+------------+ | ||
| | Package | SOIC-8 | | ||
| +---------------------+------------+ | ||
| | Write protection | No | | ||
| +---------------------+------------+ | ||
| | Internal flashing | No | | ||
| +---------------------+------------+ | ||
| | In curcuit flashing | Yes | | ||
| +---------------------+------------+ | ||
| ``` | ||
|
|
||
| ## Board status | ||
| ### Working | ||
| - bootblock, romstage, ramstage | ||
| - Serial console UART0, UART1 | ||
| - SPI flash console | ||
| - iGPU init with libgfxinit | ||
| - LAN1, LAN2 | ||
| - USB2, USB3 | ||
| - HDMI, DisplayPort | ||
| - eMMC | ||
| - flashing with flashrom externally | ||
|
|
||
| ### Work in progress | ||
| - Documentation | ||
| - ACPI | ||
|
|
||
| ### Not working / Known issues | ||
| - Generally SeaBIOS works, but it can't find the CBFS region and therefore it can't load seavgabios. This is because of changes at the Apollolake platform. | ||
|
|
||
| ### Untested | ||
| - GPIO pin header | ||
| - 60 pin EXHAT | ||
| - Camera interface | ||
| - MIPI-CSI2 2-lane (2MP) | ||
| - MIPI-CSI2 4-lane (8MP) | ||
| - SATA3 | ||
| - USB3 OTG | ||
| - embedded DisplayPort | ||
| - M.2 slot | ||
| - mini PCIe | ||
| - flashing with flashrom internally using Linux | ||
|
|
||
| ## Building and flashing coreboot | ||
| ### Building | ||
|
|
||
| ```bash | ||
| make distclean | ||
| touch .config | ||
| ./util/scripts/config --enable VENDOR_UP | ||
| ./util/scripts/config --enable BOARD_UP_SQUARED | ||
| ./util/scripts/config --enable NEED_IFWI | ||
| ./util/scripts/config --enable HAVE_IFD_BIN | ||
| ./util/scripts/config --set-str IFWI_FILE_NAME "<path_to_your_bios_region>" | ||
| ./util/scripts/config --set-str IFD_BIN_PATH "<path_to_your_ifd_region>" | ||
| make olddefconfig | ||
| ``` | ||
|
|
||
| ### Flashing | ||
|
|
||
| [overview_top]: top.jpg | ||
| [overview_bottom]: bottom.jpg |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,25 @@ | ||
| CONFIG_LOCALVERSION="v4.9.0.6" | ||
| CONFIG_VENDOR_PCENGINES=y | ||
| CONFIG_CBFS_SIZE=0x20C000 | ||
| CONFIG_PAYLOAD_CONFIGFILE="$(top)/src/mainboard/$(MAINBOARDDIR)/seabios_config" | ||
| CONFIG_VBOOT=y | ||
| CONFIG_BOARD_PCENGINES_APU2=y | ||
| CONFIG_PXE_ROM_ID="8086,157b" | ||
| CONFIG_CPU_MICROCODE_CBFS_NONE=y | ||
| CONFIG_NO_GFX_INIT=y | ||
| CONFIG_VBOOT_MEASURED_BOOT=y | ||
| CONFIG_VBOOT_SLOTS_RW_AB=y | ||
| CONFIG_USER_TPM2=y | ||
| CONFIG_DEFAULT_CONSOLE_LOGLEVEL_1=y | ||
| CONFIG_SEABIOS_REVISION=y | ||
| CONFIG_SEABIOS_REVISION_ID="rel-1.12.1.2" | ||
| CONFIG_SEABIOS_BOOTORDER_FILE="$(top)/src/mainboard/$(MAINBOARDDIR)/variants/$(CONFIG_VARIANT_DIR)/bootorder" | ||
| CONFIG_SEABIOS_DEBUG_LEVEL=0 | ||
| CONFIG_PXE=y | ||
| CONFIG_BUILD_IPXE=y | ||
| # CONFIG_PXE_SERIAL_CONSOLE is not set | ||
| CONFIG_PXE_CUSTOM_BUILD_ID="12345678" | ||
| CONFIG_MEMTEST_SECONDARY_PAYLOAD=y | ||
| CONFIG_SORTBOOTORDER_SECONDARY_PAYLOAD=y | ||
| CONFIG_MEMTEST_REVISION=y | ||
| CONFIG_MEMTEST_REVISION_ID="0bd34c22604660e4283316331f3e7bf8a3863753" |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,30 @@ | ||
| /* | ||
| * This file is part of the coreboot project. | ||
| * | ||
| * Copyright 2015 Google, Inc. | ||
| * | ||
| * This program is free software; you can redistribute it and/or modify | ||
| * it under the terms of the GNU General Public License as published by | ||
| * the Free Software Foundation; version 2 of the License. | ||
| * | ||
| * This program is distributed in the hope that it will be useful, | ||
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| * GNU General Public License for more details. | ||
| */ | ||
|
|
||
| #include <cbmem.h> | ||
| #include <stage_cache.h> | ||
| #include <cpu/intel/smm/gen1/smi.h> | ||
| #include "model_2065x.h" | ||
|
|
||
| void stage_cache_external_region(void **base, size_t *size) | ||
| { | ||
| /* | ||
| * The ramstage cache lives in the TSEG region at RESERVED_SMM_OFFSET. | ||
| * The top of RAM is defined to be the TSEG base address. | ||
| */ | ||
| *size = RESERVED_SMM_SIZE; | ||
| *base = (void *)((uintptr_t)northbridge_get_tseg_base() | ||
| + RESERVED_SMM_OFFSET); | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,10 +1,7 @@ | ||
| config CPU_INTEL_MODEL_206AX | ||
| bool | ||
|
|
||
| if CPU_INTEL_MODEL_206AX | ||
|
|
||
| config CPU_SPECIFIC_OPTIONS | ||
| def_bool y | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,27 @@ | ||
| /* | ||
| * This file is part of the coreboot project. | ||
| * | ||
| * This program is free software; you can redistribute it and/or modify | ||
| * it under the terms of the GNU General Public License as published by | ||
| * the Free Software Foundation; version 2 of the License. | ||
| * | ||
| * This program is distributed in the hope that it will be useful, | ||
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| * GNU General Public License for more details. | ||
| */ | ||
|
|
||
|
|
||
| .text | ||
| .global chipset_teardown_car | ||
| chipset_teardown_car: | ||
|
|
||
| pop %ebx | ||
| /* Move the stack pointer to real ram */ | ||
| movl post_car_stack_top, %esp | ||
| /* Align the stack 16 bytes */ | ||
| andl $0xfffffff0, %esp | ||
|
|
||
| call chipset_teardown_car_main | ||
|
|
||
| jmp *%ebx |