4. SMBus Design Discussion

4.1. Introduction

These sections describe the System Management Bus (SMBus) PEIM-to-PEIM Interfaces (PPIs). This document provides enough material to implement an SMBus Pre-EFI Initialization Module (PEIM) that can control transactions between an SMBus host controller and its slave devices.

The material that is contained in this document is designed to support communication via the SMBus. These extensions are provided in the form of SMBus-specific protocols. This document provides the information that is required to implement an SMBus PEIM in the Pre-EFI Initialization (PEI) portion of system firmware.

A full understanding of the Unified Extensible Firmware Interface Specification (UEFI specification) and the System Management Bus (SMBus) Specification is assumed throughout this document. See Related Information below for the URL for the System Management Bus (SMBus) Specification.

4.2. Target Audience

This document is intended for the following readers:

  • Original equipment manufacturers (OEMs) who will be creating platforms that are intended to boot shrink-wrap operating systems.

  • BIOS developers, either those who create general-purpose BIOS and other firmware products, or those who modify these productss.

  • Operating system developers who will be creating and/or adapting their shrink-wrap operating system products.

4.4. PEI SMBus PPI Overview

The PEI SMBus PPI is used by code, typically other PEIMs, that is running in the PEI environment to access data on an SMBus slave device via the SMBus host controller. In particular, functions for managing devices on SMBus buses are defined in this specification.

The interfaces that are provided in the EFI_PEI_SMBUS2_PPI are for performing basic operations to an SMBus slave device. The system provides abstracted access to basic system resources to allow a PEIM to have a programmatic method to access these basic system resources. The main goal of this PPI is to provide an abstraction that simplifies the writing of PEIMs for SMBus slave devices. This goal is accomplished by providing a standard interface to the SMBus slave devices that does not require detailed knowledge about the particular hardware implementation or protocols of the SMBus.

Certain implentations of the module may omit Arp capabilities. Specifically, a module will either support Execute, ArpDevice, GetArpMap, and Notify; alternatively, a module will support only Execute and return “not supported” for the latter 3 services.

See EFI_PEI_SMBUS2_PPI for the definition of EFI_PEI_SMBUS2_PPI . This PPI is produced by each of the SMBus host controllers in the system.