162306a36Sopenharmony_ci.. SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_ci
362306a36Sopenharmony_ci========
462306a36Sopenharmony_ciOverview
562306a36Sopenharmony_ci========
662306a36Sopenharmony_ci
762306a36Sopenharmony_ciThe Platform Environment Control Interface (PECI) is a communication
862306a36Sopenharmony_ciinterface between Intel processor and management controllers
962306a36Sopenharmony_ci(e.g. Baseboard Management Controller, BMC).
1062306a36Sopenharmony_ciPECI provides services that allow the management controller to
1162306a36Sopenharmony_ciconfigure, monitor and debug platform by accessing various registers.
1262306a36Sopenharmony_ciIt defines a dedicated command protocol, where the management
1362306a36Sopenharmony_cicontroller is acting as a PECI originator and the processor - as
1462306a36Sopenharmony_cia PECI responder.
1562306a36Sopenharmony_ciPECI can be used in both single processor and multiple-processor based
1662306a36Sopenharmony_cisystems.
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ciNOTE:
1962306a36Sopenharmony_ciIntel PECI specification is not released as a dedicated document,
2062306a36Sopenharmony_ciinstead it is a part of External Design Specification (EDS) for given
2162306a36Sopenharmony_ciIntel CPU. External Design Specifications are usually not publicly
2262306a36Sopenharmony_ciavailable.
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ciPECI Wire
2562306a36Sopenharmony_ci---------
2662306a36Sopenharmony_ci
2762306a36Sopenharmony_ciPECI Wire interface uses a single wire for self-clocking and data
2862306a36Sopenharmony_citransfer. It does not require any additional control lines - the
2962306a36Sopenharmony_ciphysical layer is a self-clocked one-wire bus signal that begins each
3062306a36Sopenharmony_cibit with a driven, rising edge from an idle near zero volts. The
3162306a36Sopenharmony_ciduration of the signal driven high allows to determine whether the bit
3262306a36Sopenharmony_civalue is logic '0' or logic '1'. PECI Wire also includes variable data
3362306a36Sopenharmony_cirate established with every message.
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ciFor PECI Wire, each processor package will utilize unique, fixed
3662306a36Sopenharmony_ciaddresses within a defined range and that address should
3762306a36Sopenharmony_cihave a fixed relationship with the processor socket ID - if one of the
3862306a36Sopenharmony_ciprocessors is removed, it does not affect addresses of remaining
3962306a36Sopenharmony_ciprocessors.
4062306a36Sopenharmony_ci
4162306a36Sopenharmony_ciPECI subsystem internals
4262306a36Sopenharmony_ci------------------------
4362306a36Sopenharmony_ci
4462306a36Sopenharmony_ci.. kernel-doc:: include/linux/peci.h
4562306a36Sopenharmony_ci.. kernel-doc:: drivers/peci/internal.h
4662306a36Sopenharmony_ci.. kernel-doc:: drivers/peci/core.c
4762306a36Sopenharmony_ci.. kernel-doc:: drivers/peci/request.c
4862306a36Sopenharmony_ci
4962306a36Sopenharmony_ciPECI CPU Driver API
5062306a36Sopenharmony_ci-------------------
5162306a36Sopenharmony_ci.. kernel-doc:: drivers/peci/cpu.c
52