summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt DeVillier <matt.devillier@puri.sm>2020-06-29 14:54:20 -0500
committerPatrick Georgi <pgeorgi@google.com>2020-08-18 16:01:05 +0000
commit87093758c57f41c0aac24cfe855cd1489aece36a (patch)
tree32718f0c24c36e55fbd121071e066fb45580e36a
parente87ec095a427ab12b2c1665d6dcd23cb81bf311b (diff)
documentation: Add documentation for Purism Librem Mini
Change-Id: Ie5699942f48d2d5b1417f447a9a36b98e4b18156 Signed-off-by: Matt DeVillier <matt.devillier@puri.sm> Reviewed-on: https://review.coreboot.org/c/coreboot/+/42882 Reviewed-by: Angel Pons <th3fanbus@gmail.com> Reviewed-by: Patrick Georgi <pgeorgi@google.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
-rw-r--r--Documentation/mainboard/index.md4
-rw-r--r--Documentation/mainboard/purism/librem_mini.jpgbin0 -> 17720 bytes
-rw-r--r--Documentation/mainboard/purism/librem_mini.md120
-rw-r--r--Documentation/mainboard/purism/librem_mini_flash.jpgbin0 -> 41040 bytes
4 files changed, 124 insertions, 0 deletions
diff --git a/Documentation/mainboard/index.md b/Documentation/mainboard/index.md
index 7507a15bcb..17490643aa 100644
--- a/Documentation/mainboard/index.md
+++ b/Documentation/mainboard/index.md
@@ -136,6 +136,10 @@ The boards in this section are not real mainboards, but emulators.
- [Hermes](prodrive/hermes.md)
+## Purism
+
+- [Librem Mini](purism/librem_mini.md)
+
## Protectli
- [FW2B / FW4B](protectli/fw2b_fw4b.md)
diff --git a/Documentation/mainboard/purism/librem_mini.jpg b/Documentation/mainboard/purism/librem_mini.jpg
new file mode 100644
index 0000000000..004235d013
--- /dev/null
+++ b/Documentation/mainboard/purism/librem_mini.jpg
Binary files differ
diff --git a/Documentation/mainboard/purism/librem_mini.md b/Documentation/mainboard/purism/librem_mini.md
new file mode 100644
index 0000000000..240dcff2d0
--- /dev/null
+++ b/Documentation/mainboard/purism/librem_mini.md
@@ -0,0 +1,120 @@
+# Purism Librem Mini
+
+```eval_rst
++------------------+--------------------------------------------------+
+| CPU | Intel Core i7-8665U |
++------------------+--------------------------------------------------+
+| PCH | Whiskey Lake / Cannon Point LP |
++------------------+--------------------------------------------------+
+| Super I/O, EC | ITE IT8528E |
++------------------+--------------------------------------------------+
+| Coprocessor | Intel Management Engine (CSME 12.x) |
++------------------+--------------------------------------------------+
+```
+
+![](librem_mini.jpg)
+![](librem_mini_flash.jpg)
+
+## Required proprietary blobs
+
+To build a minimal working coreboot image some blobs are required (assuming
+only the BIOS region is being modified).
+
+```eval_rst
++-----------------+---------------------------------+---------------------+
+| Binary file | Apply | Required / Optional |
++=================+=================================+=====================+
+| FSP-M, FSP-S | Intel Firmware Support Package | Required |
++-----------------+---------------------------------+---------------------+
+| microcode | CPU microcode | Required |
++-----------------+---------------------------------+---------------------+
+| vgabios | VGA Option ROM | Optional |
++-----------------+---------------------------------+---------------------+
+```
+
+FSP-M and FSP-S are obtained after splitting the Coffee Lake FSP binary (done
+automatically by the coreboot build system and included into the image) from
+the `3rdparty/fsp` submodule.
+
+Microcode updates are automatically included into the coreboot image by the build
+system from the `3rdparty/intel-microcode` submodule. Official Purism release
+images may include newer microcode, which is instead pulled from Purism's
+[purism-blobs] repository.
+
+VGA Option ROM is not required to boot, but if one needs graphics in pre-OS
+stage, it should be included (if not using FSP/GOP display init). It can
+be extracted via cbfstool from the existing board firmware or pulled from
+the [purism-blobs] repository.
+
+## Intel Management Engine
+
+The Librem Mini uses version 12.x of the Intel Management Engine (ME) /
+Converged Security Engine (CSE). The ME/CSE is disabled using the High
+Assurance Platform (HAP) bit, which puts the ME into a disabled state
+after platform bring-up (BUP) and disables all PCI/HECI interfaces.
+This can be verified via the coreboot cbmem utility:
+`sudo ./cbmem -1 | grep 'ME:'`
+provided coreboot has been modified to output the ME status even when
+the PCI device is not visible/active (as it is in Purism's release builds).
+
+## Flashing coreboot
+
+### Internal programming
+
+The main SPI flash can be accessed using [flashrom]. The first version
+supporting the chipset is flashrom v1.2. Firmware an be easily flashed
+with internal programmer (either BIOS region or full image).
+
+### External programming
+
+The system has an internal flash chip which is a 8 MiB soldered SOIC-8 chip,
+and has a diode attached to the VCC line for in-system programming.
+This chip is located on the bottom side of the board under the CPU heatsink,
+in line with the front USB 2.0 ports.
+
+One has to remove all screws (in order):
+
+ * 2 top cover screws
+ * 4 screws securing the mainboard to the chassis
+ * 4 screws securing the heatsink/fan assembly to the mainboard (under the SODIMMs)
+
+The m.2 SSD will need to be removed if the Wi-Fi antenna are connected to
+an internal Wi-Fi/BT module. Use a SOIC-8 chip clip to program the chip.
+Specifically, it's a Winbond W25Q128JV (3.3V) -[datasheet][W25Q128JV].
+
+The EC firmware is stored on a separate SOIC-8 chip (a Winbond W25Q80DV),
+but is not protected by a diode and therefore cannot be read/written to without
+desoldering it from the mainboard.
+
+## Known issues
+
+ * SeaBIOS can be finicky with detecting USB devices
+ * Booting can sometimes hang when a bootsplash image is used with SeaBIOS
+ and VGA option ROM display init, related to display mode changing
+ * Issues with some SATA devices have been mitigated by limiting the SATA speed to 3Gbps
+ until the correct HSIO PHY settings can be determined.
+
+## Working
+
+ * External displays via HDMI/DislpayPort with VGA option ROM or FSP/GOP init
+ (no libgfxinit support yet)
+ * SeaBIOS (1.13.x), Tianocore (CorebootPayloadpkg), Heads (Purism downstream) payloads
+ * Ethernet, m.2 2230 Wi-Fi
+ * System firmware updates via flashrom
+ * PCIe NVMe
+ * m.2 and SATA III
+ * Audio via front 3.5mm jack, HDMI, and DisplayPort
+ * SMBus (reading SPD from DIMMs)
+ * Initialization with CFL FSP 2.0
+ * S3 Suspend/Resume
+ * Booting PureOS 9.x, Debian 10.x, Qubes 4.0.3, Linux Mint 19.3, Windows 10 2004
+
+## Not working / untested
+
+ * ITE IT8528E Super IO functions
+
+
+[Purism Librem Mini]: https://puri.sm/products/librem-mini/
+[purism-blobs] : https://source.puri.sm/coreboot/purism-blobs
+[W25Q128JV]: https://www.winbond.com/resource-files/w25q128jv%20revf%2003272018%20plus.pdf
+[flashrom]: https://flashrom.org/Flashrom
diff --git a/Documentation/mainboard/purism/librem_mini_flash.jpg b/Documentation/mainboard/purism/librem_mini_flash.jpg
new file mode 100644
index 0000000000..d1c6071f25
--- /dev/null
+++ b/Documentation/mainboard/purism/librem_mini_flash.jpg
Binary files differ