Skip to content

minipc: hide ACPI for devices absent on Chromebox#36

Closed
jackadam1981 wants to merge 1 commit into
MrChromebox:MrChromebox-2606from
jackadam1981:pr/1-minipc-acpi-hide
Closed

minipc: hide ACPI for devices absent on Chromebox#36
jackadam1981 wants to merge 1 commit into
MrChromebox:MrChromebox-2606from
jackadam1981:pr/1-minipc-acpi-hide

Conversation

@jackadam1981

@jackadam1981 jackadam1981 commented Jun 24, 2026

Copy link
Copy Markdown

Summary

Hide ACPI nodes for hardware that is absent on Google Kaisa repurposed as an Acer CXI4 Chromebox (no battery, no lid, NVMe-only SKU): AC adapter, battery, volume buttons (VBTN), RTL8168 companion ACPI device, and eMMC host.

All hides are gated on CONFIG_SYSTEM_TYPE_MINIPC Kconfig options that default to n; Kaisa UEFI defconfig enables them explicitly (see #38).

Hardware / test platform

Item Value
Board BOARD_GOOGLE_KAISA (Puff baseboard, SYSTEM_TYPE_MINIPC=y)
AP Intel Core i7-10610U (CML-U)
Form factor Chromebox � no internal battery, no lid switch, boot from NVMe
DUT Lab unit JACK-KAISA (192.168.2.119)
EC Google Chrome EC legacy puff firmware
OS used for validation Windows 10 LTSC (primary), Ubuntu 24.04 (secondary)

Problem (before this change)

On stock MrChromebox Kaisa UEFI builds, Windows Device Manager showed:

  1. ACPI\R8168 ghost device � Code 28 (driver not installed). The Realtek GbE NIC works via PCI (PCI\VEN_10EC&DEV_8168), but an extra ACPI companion node confuses PnP and support tools.
  2. Duplicate / phantom storage controllers � eMMC ACPI host (DEV_02C4) on NVMe-only boxes; users see an extra SD/eMMC class device with no media.
  3. Fake mobile ACPI devicesACPI0003 (AC), PNP0C0A (battery), VBTN on a desktop chromebox.

These do not affect ChromeOS images (different ACPI expectations) but are visible on Windows and generic Linux when using UEFI payload.

Validation (after flash with this patch + #37 + #38)

Automated inventory diff (scripts/data/kaisa-chromeos-expected-devices.json, profile windows_fork, 2026-06-22):

Device ChromeOS ref Windows expectation With this patch
ACPI AC adapter hidden absent OK (absent)
ACPI battery hidden absent OK (absent)
Intel eMMC host (02C4) present on CR absent on box OK (absent)
Realtek R8168 duplicate ACPI present on CR absent OK (absent)
Realtek PCIe GbE (PCI function) present present OK (works, PXE-capable)

PnP inventory: 18/21 expected devices OK; remaining UNEXPECTED items are Type-C retimer/DP bridge ACPI exposure (separate from this PR).

Windows still lists expected core devices: UHD 630, AX201 Wi-Fi, xHCI, Intel SST/DSP, HDMI audio endpoints, Chrome EC stack, NVMe boot drive.

Design notes (for review)

Files (9)

MINIPC_HIDE_{AC,BATTERY,VBTN,R8168_ACPI}, SOC_INTEL_HIDE_EMMC, EC ACPI _STA guards, Cannonlake scs.asl, fsp_params.c.

Build / test plan

Dependencies

None. #37 and #38 depend on this PR.

Out of scope

@jackadam1981

Copy link
Copy Markdown
Author

Superseded: minipc hide redesign uses compile-time ACPI omit + SOC_INTEL_HIDE_SATA (fork kaisa-linux-s0ix @ 9309f3a), not _STA=0. Reopening as a new PR stack from MrChromebox-2606.

jackadam1981 added a commit to jackadam1981/coreboot-CXI4 that referenced this pull request Jun 28, 2026
Hide laptop/tablet-class ACPI and storage on Acer Chromebox CXI4 (Kaisa)
when built as SYSTEM_TYPE_MINIPC.

Prior related PRs MrChromebox#36, MrChromebox#37, and MrChromebox#38 were closed. Those were AI-auto
submissions without hardware validation. This patch is submitted only
after manual flash testing and acceptance on real hardware.

Hardware scope: I only have one device (Kaisa / Acer Chromebox CXI4).
All testing below is on that single unit. Other Puff SKUs are unchanged
at compile time (BOARD_GOOGLE_KAISA* gates only).

Kconfig (defaults enable hide; config.kaisa.uefi unchanged):
- src/Kconfig: SYSTEM_HIDE_AC_ADAPTER / SYSTEM_HIDE_BATTERY (def_bool y
  if SYSTEM_TYPE_MINIPC)
- src/mainboard/google/puff/Kconfig: KAISA_HIDE_VBTN, KAISA_HIDE_R8168_ACPI,
  KAISA_HIDE_EMMC, KAISA_HIDE_SATA under BOARD_GOOGLE_KAISA*

EC ACPI (compile-time omit or _STA=0; EC Notify guarded):
- src/ec/google/chromeec/acpi/ac.asl: omit Device (AC) / ACPI0003
- src/ec/google/chromeec/acpi/battery.asl: omit BAT0/BAT1; guard Notify
- src/ec/google/chromeec/acpi/ec.asl: guard Notify(AC/BAT*) on _Qxx
- src/ec/google/chromeec/acpi/vbtn.asl: VBTN/VBTO _STA=0 when hide
- src/ec/google/chromeec/acpi/superio.asl: keyboard _STA=0 when hide

Drivers / SoC / devicetree:
- src/drivers/net/r8168.c: skip R8168 SSDT; PCI 10ec:8168 stays up
- src/soc/intel/cannonlake/fsp_params.c: SataEnable/ScsEmmcEnabled off
- src/soc/intel/cannonlake/acpi/scs.asl: eMMC _STA=0 when hide
- src/mainboard/google/puff/variants/kaisa/overridetree.cb: sata off

Tested on Kaisa only (single DUT): MrChromebox-2606 baseline vs this ROM
(linux_v0.2.0). kaisa-pr1-hide-accept: baseline fail=2 (R8168 ACPI,
8086:02d3 SATA, 8086:02c4 eMMC visible); with this patch fail=0.

Signed-off-by: Jack <jackadam1981@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant