coreboot/src/mainboard/hp
Walter Sonius 4b46a0690e mb/hp: Add HP ProDesk 600 G1 SFF Business PC (Haswell / NPCD379 SIO)
The HP ProDesk 600 G1 SFF comes with a mainboard named "Merlin Rev.A"
which is also used by the EliteDesk 800 G1 SFF and Z230 SFF series.
Differences are in available USB2, USB3 and SATA (headers / ports)
, PCIe (slots / length), video outputs (number / type) or chipset used.
While the EliteDesk 800 G1 SFF shares the same OEM BIOS update file, the
Z230 SFF differs. This port was made on a model with 2 DP / DP++, 1 VGA,
4 USB2 and 2 USB3 backpanel ports, 4 SATA ports and 4 PCIe slots
(1 16x and 3 1x length) using a Q85 chipset (without heat sink).

Model: HP ProDesk 600 G1 SFF Business PC
Regulatory Model: TPC-F046-SF
Product No. J0E94ET#ABH, PROMO600PDeSi54590500hq4X46k NL (C8T44AV)
Mainboard: Merlin Rev.A, 795972-001

Pure autoport (initial commit) doesn't boot, more patches will bring up
general Haswell fixes, vendor/product naming corrected, RAM SPD MAP
slot detection, devicetree edits enabled all PCIe ports and some NPCD379
code from other HP desktops makes most superio related functions work.

Flash instructions:
After setting the FDO jumper on the motherboard the whole ROM can be
dumped, however writing is locked for some part of the BIOS region.
An external flasher ch341a_spi (3.3v mod) was used with a SOIC 8 pomona
probe to flash the MX25L12873F in situ without any issues. Only the
power of the USB programmer was used, and the board's main PSU was
disconnected during flash!

Tested:
 - coreboot 25.06-77-g812d0e2f626d as base
 - EDK2 (MrChromebox/2502)
 - SeaBIOS 1.16.3
 - Broadwell mrc.bin (tidus)
 - Haswell mrc.bin (peppy)
 - Haswell NRI
 - libgfxinit textmode (SeaBIOS) / framebuffer (EDK2)
 - both DP / DP++ (HDMI) & VGA output available during POST, BOOT and OS
 - Pentium G3220 / Xeon E3-1225 v3 / Xeon E3-1231 v3
 - RAM 1/2/3/4 slots filled using mixed 1.35 / 1.5v 1333 / 1600MHz DIMMs
	(NRI & mrc.bin)
	0/1: 4GB DDR3-1600 - Samsung M378B5173BH0-CK0 (2013-W30)
	0&2: 4GB DDR3-1600 - Kingston 9905402-174.A00G (2015-W33)
	1/2: 2GB DDR3-1333 - Kingston 99U5458-001.A00LF (2010-W29)
	0/3: 2GB DDR3-1600 - Micron 8JTF25664AZ-1G6M1 (2013-W37)
 - Fedora MATE 42 (Kernel 6.14)
 - KDE NEON 6.4 (Kernel 6.11)
 - MS Windows 10 / 11
 - Audio Outputs: 2x DP, Headphone, Line Out, Speaker (left&right chan.)
 - Audio Input: Line In (back)
 - USB2/3 all ports (including internal headers)
 - Intel I217-LM Gb LAN
 - SATA 4 ports
 - PCIe 16x slot @2.5GT/s (or 8x @8GT/s) and three 1x slots @5GT/s
 - dGPU nVidia GeForce GT640-2GD3 / AMD Radeon RX460 4GB (PCIe 8x)
	(disabled Hide PEG devices, option ROMs load in SeaBIOS & EDK2)
 - PS/2 ports (both Keyboard and Mouse)
 - Serial port (coreboot console & OS)
 - PowerButton (Poweron/Poweroff/Wake)
 - LEDs HDD & POWER (both off during suspend)
 - Shutdown/Reboot/Suspend
 - power_on_after_fail= Disable / Enable / Keep
 - Strip down the Intel ME/TXE firmware (make menuconfig)
 - Disabling ME HECI (manually disable in devicetree.cb)
 - flashrom -p internal -c "MX25L12835F/MX25L12873F" #(read & write)

Not tested:
 - COMB (serial port header)
 - PAR (parallel port header)
 - Audio Input Microphone Port (front)
 - USBDEBUG PORT
 - VBIOS

Not working:
 - CMOS checksum errors only on psu_fan_lvl resets to defaults sometimes
 - dual GPU (iGPU shows visual glitches while dGPU works fine)
	This occurs on both Broadwell, Haswell mrc.bin and Haswell NRI,
	may show i915 error in dmesg after waking from suspend!
	All dGPU testing have been done with a cheap PCIe riser cable!
 - Disable Intel ME PCI interface (make menuconfig)
 - PSU FAN control its either full OFF or full ON see instruction!
 - TPM Windows 10/11 detects it but "bios failed to communicate error"
 - Wake on LAN (Power on from coldboot work, but not wake from suspend)

PSU FAN instructions:
If the superio HWM (devicetree.cb node pnp 2e.8) is set to on, the FAN
will turn OFF during post and stays OFF. If the superio HWM pnp 2e.8 is
set to off the FAN will stay ON and will rampup after post in roughly a
minute to its maximum RPM and will stay that way (current default)!

NRI note:
EDK2 shows 0GB instead of the actual RAM amount installed. While using
Haswell mrc.bin EDK2 shows the correct amount of RAM. The earlier noted
RAM modules have also been tested using NRI in Memtest86+ v7.20 which
still correctly displays and test the total amount of RAM.

The data.vbt blob was extracted using debugfs from the OEM firmware
v2.65 enabling both Displayport / DP++ (HDMI) and VGA video outputs.

Theoretically like the "compaq_8200_elite_sff" it should be possible
to flash internally using a 2 step flash procedure using a minimized ME
a small SeaBIOS based coreboot and a temporary flash layout inside the
writeable BIOS region.

Change-Id: If1082e0b56364f32e43f954b589fa627cbaee50c
Signed-off-by: Walter Sonius <walterav1984@gmail.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/88616
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
2025-08-11 15:22:18 +00:00
..
260_g1_dm mb/hp: Add HP 260 G1 DM Business PC (Haswell) 2025-07-10 16:47:34 +00:00
280_g2 soc/intel/skylake: Drop redundant PcieRpEnable 2025-04-23 14:15:29 +00:00
elitebook_820_g2
folio_9480m nb/intel/haswell: Move SPD addresses to devicetree 2024-08-26 11:08:14 +00:00
pro_3x00_series mb/hp/pro_3x00_series: Remove unused ACPI brightness control 2025-02-28 18:31:11 +00:00
prodesk_600_g1_sff mb/hp: Add HP ProDesk 600 G1 SFF Business PC (Haswell / NPCD379 SIO) 2025-08-11 15:22:18 +00:00
snb_ivb_desktops mb/hp/snb_ivb_desktops/variants/compaq_8300_elite_sff: early VGA output 2025-07-22 16:28:57 +00:00
snb_ivb_laptops mb/*: Drop xhci_overcurrent_mapping for the easy ones 2025-01-22 20:18:46 +00:00
Kconfig
Kconfig.name