# SmbiosType39

- **Module:** 0088
- **File:** SmbiosType39.efi
- **Size:** 10112 bytes (0x2780)
- **Phase:** DXE (Driver Execution Environment)
- **Source package:** LenovoServerPkg

## Overview

UEFI DXE driver that installs SMBIOS Type 39 (Power Supply) records. Communicates with the Management Engine (ME) via the HECI protocol to retrieve power supply information for up to two power supply bays. For each detected bay, queries the ME for device name, manufacturer, serial number, asset tag, model part number, revision level, max power capacity, and presence/status. The collected data is assembled into SMBIOS Type 39 structures and installed via the SMBIOS protocol.

## Key Functions

| Function | Description |
|---|---|
| `_ModuleEntryPoint` | UEFI driver entry point; initializes globals and registers InstallSmbiosType39Structure as a notification callback |
| `InstallSmbiosType39Structure` | Main callback that enumerates power supply bays (0-1), communicates with ME via HECI, and installs SMBIOS Type 39 records |
| `SendHeciPowerSupplyCommand` | Sends a HECI command to the ME with group ID 0x8A0A and retrieves the response data |
| `GetSmbiosProtocol` | Locates and caches the EFI SMBIOS protocol |
| `GetHeciProtocol` | Locates and caches the HECI protocol for ME communication |
| `GetPcdProtocol` | Locates and caches the PCD protocol |
| `GetHobList` | Retrieves HOB list pointer from system table |
| `GetSupplyBayString` | Returns descriptive string for supply bay 0 (Left/Inner) or 1 (Right/Outer) |
| `EfiGetSystemConfigurationTable` | Locates a configuration table by GUID |

## Protocols/Dependencies

- **SMBIOS Protocol** - For installing SMBIOS Type 39 records
- **HECI Protocol** - Host Embedded Controller Interface for ME communication
- **PCD Protocol** - Platform Configuration Database
- MM PCI Base Protocol - For reading ME firmware status register (MCHBAR)
- HECI command set (Group ID 0x8A0A) with commands for device name (0x9A), manufacturer (0x99), serial number (0x62), asset tag (0x61), model part number (0x9B), revision level (0xA7), max power capacity (0x78), and power supply status (0x78)

## Platform

Lenovo ThinkSystem HR650X (Purley platform, Intel Xeon Scalable) - Management Engine integration