[edk2-devel] [edk2-platforms] [PATCH V1 0/5] KabylakeOpenBoardPkg: HDMI DDC I2C Bus Debugging

Nate DeSimone posted 5 patches 1 year, 10 months ago
Failed in applying to current master (apply log)
There is a newer version of this series
.../Intel/BoardModulePkg/BoardModulePkg.dsc   |   3 +-
.../BdsSerialPortTerminalLib.c                | 114 +++
.../BdsSerialPortTerminalLib.h                |  53 ++
.../BdsSerialPortTerminalLib.inf              |  49 ++
.../PeiAspireVn7Dash572GInitPreMemLib.c       |   3 +-
.../AspireVn7Dash572G/OpenBoardPkg.dsc        |  11 +-
.../AspireVn7Dash572G/OpenBoardPkgPcd.dsc     |   9 +
.../BoardInitLib/PeiGalagoPro3InitPreMemLib.c |  13 +-
.../GalagoPro3/OpenBoardPkg.dsc               |  88 +-
.../GalagoPro3/OpenBoardPkg.fdf               |   6 +-
.../GalagoPro3/OpenBoardPkgPcd.dsc            |  39 +
.../Include/Library/HdmiDebugGpioInitLib.h    |  26 +
.../PeiKabylakeRvp3InitPreMemLib.c            |  13 +-
.../KabylakeRvp3/OpenBoardPkg.dsc             |  11 +-
.../KabylakeRvp3/OpenBoardPkgPcd.dsc          |   9 +
.../HdmiDebugGpioInitLib.c                    | 221 +++++
.../HdmiDebugGpioInitLib.inf                  |  42 +
.../DxeI2cHdmiDebugSerialPortLib.inf          |  51 ++
.../DxeSmmI2cHdmiDebugSerialPortLib.c         | 161 ++++
.../Library/I2cHdmiDebugSerialPortLib/Gmbus.c | 826 ++++++++++++++++++
.../Library/I2cHdmiDebugSerialPortLib/Gmbus.h | 324 +++++++
.../I2cDebugPortProtocol.c                    | 194 ++++
.../I2cDebugPortProtocol.h                    |  77 ++
.../I2cDebugPortTplDxe.c                      |  44 +
.../I2cDebugPortTplNull.c                     |  36 +
.../I2cHdmiDebugSerialPortLib.c               | 201 +++++
.../I2cHdmiDebugSerialPortLib/IgfxI2c.c       | 112 +++
.../I2cHdmiDebugSerialPortLib/IgfxI2c.h       | 146 ++++
.../PeiI2cHdmiDebugSerialPortLib.c            | 237 +++++
.../PeiI2cHdmiDebugSerialPortLib.inf          |  52 ++
.../SecI2cHdmiDebugSerialPortLib.c            | 134 +++
.../SecI2cHdmiDebugSerialPortLib.inf          |  51 ++
.../SmmI2cHdmiDebugSerialPortLib.inf          |  51 ++
.../SecBoardInitLib/Ia32/SecBoardInit.nasm    |  18 +
.../Library/SecBoardInitLib/SecBoardInitLib.c |  35 +
.../SecBoardInitLib/SecBoardInitLib.inf       |  39 +
.../KabylakeOpenBoardPkg/OpenBoardPkg.dec     |  33 +-
37 files changed, 3498 insertions(+), 34 deletions(-)
create mode 100644 Platform/Intel/BoardModulePkg/Library/BdsSerialPortTerminalLib/BdsSerialPortTerminalLib.c
create mode 100644 Platform/Intel/BoardModulePkg/Library/BdsSerialPortTerminalLib/BdsSerialPortTerminalLib.h
create mode 100644 Platform/Intel/BoardModulePkg/Library/BdsSerialPortTerminalLib/BdsSerialPortTerminalLib.inf
create mode 100644 Platform/Intel/KabylakeOpenBoardPkg/Include/Library/HdmiDebugGpioInitLib.h
create mode 100644 Platform/Intel/KabylakeOpenBoardPkg/Library/HdmiDebugGpioInitLib/HdmiDebugGpioInitLib.c
create mode 100644 Platform/Intel/KabylakeOpenBoardPkg/Library/HdmiDebugGpioInitLib/HdmiDebugGpioInitLib.inf
create mode 100644 Platform/Intel/KabylakeOpenBoardPkg/Library/I2cHdmiDebugSerialPortLib/DxeI2cHdmiDebugSerialPortLib.inf
create mode 100644 Platform/Intel/KabylakeOpenBoardPkg/Library/I2cHdmiDebugSerialPortLib/DxeSmmI2cHdmiDebugSerialPortLib.c
create mode 100644 Platform/Intel/KabylakeOpenBoardPkg/Library/I2cHdmiDebugSerialPortLib/Gmbus.c
create mode 100644 Platform/Intel/KabylakeOpenBoardPkg/Library/I2cHdmiDebugSerialPortLib/Gmbus.h
create mode 100644 Platform/Intel/KabylakeOpenBoardPkg/Library/I2cHdmiDebugSerialPortLib/I2cDebugPortProtocol.c
create mode 100644 Platform/Intel/KabylakeOpenBoardPkg/Library/I2cHdmiDebugSerialPortLib/I2cDebugPortProtocol.h
create mode 100644 Platform/Intel/KabylakeOpenBoardPkg/Library/I2cHdmiDebugSerialPortLib/I2cDebugPortTplDxe.c
create mode 100644 Platform/Intel/KabylakeOpenBoardPkg/Library/I2cHdmiDebugSerialPortLib/I2cDebugPortTplNull.c
create mode 100644 Platform/Intel/KabylakeOpenBoardPkg/Library/I2cHdmiDebugSerialPortLib/I2cHdmiDebugSerialPortLib.c
create mode 100644 Platform/Intel/KabylakeOpenBoardPkg/Library/I2cHdmiDebugSerialPortLib/IgfxI2c.c
create mode 100644 Platform/Intel/KabylakeOpenBoardPkg/Library/I2cHdmiDebugSerialPortLib/IgfxI2c.h
create mode 100644 Platform/Intel/KabylakeOpenBoardPkg/Library/I2cHdmiDebugSerialPortLib/PeiI2cHdmiDebugSerialPortLib.c
create mode 100644 Platform/Intel/KabylakeOpenBoardPkg/Library/I2cHdmiDebugSerialPortLib/PeiI2cHdmiDebugSerialPortLib.inf
create mode 100644 Platform/Intel/KabylakeOpenBoardPkg/Library/I2cHdmiDebugSerialPortLib/SecI2cHdmiDebugSerialPortLib.c
create mode 100644 Platform/Intel/KabylakeOpenBoardPkg/Library/I2cHdmiDebugSerialPortLib/SecI2cHdmiDebugSerialPortLib.inf
create mode 100644 Platform/Intel/KabylakeOpenBoardPkg/Library/I2cHdmiDebugSerialPortLib/SmmI2cHdmiDebugSerialPortLib.inf
create mode 100644 Platform/Intel/KabylakeOpenBoardPkg/Library/SecBoardInitLib/Ia32/SecBoardInit.nasm
create mode 100644 Platform/Intel/KabylakeOpenBoardPkg/Library/SecBoardInitLib/SecBoardInitLib.c
create mode 100644 Platform/Intel/KabylakeOpenBoardPkg/Library/SecBoardInitLib/SecBoardInitLib.inf
[edk2-devel] [edk2-platforms] [PATCH V1 0/5] KabylakeOpenBoardPkg: HDMI DDC I2C Bus Debugging
Posted by Nate DeSimone 1 year, 10 months ago
Normally the HDMI DDC I2C bus is used to read the EDID
data from the monitor. An unintended but useful property
of this interface is that is does not require DMA to
perform I/O. This means that this interface can be used
to perform I/O before DRAM is initialized.

HDMI video output is a common feature of many laptops.
This makes the HDMI DDC bus the only I/O interface
that is often exposed outside of the laptop chassis
while simultaneously capable of being used in Pre-Memory.
Oddly... this makes it an ideal and novel way to perform
closed chassis debug.

This patch series adds a implementation of using the HDMI
DDC I2C Bus as a "poor man's" UART. This is accomplished
using the GMBUS that is part of the Intel HD Graphics
device. Accordingly, this implementation will only work
on systems with the HDMI port routed to the Intel
graphics device, and will not work on systems with HDMI
routed to a discrete GPU.

In order to use this implementation, one will also need
a BusPirate programmed with Nate's Custom Bus Pirate FW
for I2C Serial Debug. This firmware is available from:

https://github.com/nate-desimone/Bus_Pirate

This firmware interfaces with the I2C Bus and forwards
traffic from it to the FTDI USB Serial Adapter that is
integrated with the BusPirate. In combination, this
results in the HDMI port appearing to function as a
regular UART to the user.

If you would like to see this in action, I made a short
YouTube video:

https://www.youtube.com/watch?v=xe7cFhRsr80

Cc: Chasel Chiu <chasel.chiu@intel.com>
Cc: Sai Chaganty <rangasai.v.chaganty@intel.com>
Cc: Isaac Oram <isaac.w.oram@intel.com>
Cc: Eric Dong <eric.dong@intel.com>
Cc: Liming Gao <gaoliming@byosoft.com.cn>
Cc: Benjamin Doron <benjamin.doron00@gmail.com>
Cc: Michael Kubacki <michael.kubacki@microsoft.com>
Cc: Jeremy Soller <jeremy@system76.com>
Signed-off-by: Nate DeSimone <nathaniel.l.desimone@intel.com>

Nate DeSimone (5):
  KabylakeOpenBoardPkg: Add I2cHdmiDebugSerialPortLib
  KabylakeOpenBoardPkg: Add HdmiDebugGpioInitLib
  KabylakeOpenBoardPkg: Add SecBoardInitLib
  BoardModulePkg: Add BdsSerialPortTerminalLib
  KabylakeOpenBoardPkg/GalagoPro3: Enable HDMI DDC Debug Port

 .../Intel/BoardModulePkg/BoardModulePkg.dsc   |   3 +-
 .../BdsSerialPortTerminalLib.c                | 114 +++
 .../BdsSerialPortTerminalLib.h                |  53 ++
 .../BdsSerialPortTerminalLib.inf              |  49 ++
 .../PeiAspireVn7Dash572GInitPreMemLib.c       |   3 +-
 .../AspireVn7Dash572G/OpenBoardPkg.dsc        |  11 +-
 .../AspireVn7Dash572G/OpenBoardPkgPcd.dsc     |   9 +
 .../BoardInitLib/PeiGalagoPro3InitPreMemLib.c |  13 +-
 .../GalagoPro3/OpenBoardPkg.dsc               |  88 +-
 .../GalagoPro3/OpenBoardPkg.fdf               |   6 +-
 .../GalagoPro3/OpenBoardPkgPcd.dsc            |  39 +
 .../Include/Library/HdmiDebugGpioInitLib.h    |  26 +
 .../PeiKabylakeRvp3InitPreMemLib.c            |  13 +-
 .../KabylakeRvp3/OpenBoardPkg.dsc             |  11 +-
 .../KabylakeRvp3/OpenBoardPkgPcd.dsc          |   9 +
 .../HdmiDebugGpioInitLib.c                    | 221 +++++
 .../HdmiDebugGpioInitLib.inf                  |  42 +
 .../DxeI2cHdmiDebugSerialPortLib.inf          |  51 ++
 .../DxeSmmI2cHdmiDebugSerialPortLib.c         | 161 ++++
 .../Library/I2cHdmiDebugSerialPortLib/Gmbus.c | 826 ++++++++++++++++++
 .../Library/I2cHdmiDebugSerialPortLib/Gmbus.h | 324 +++++++
 .../I2cDebugPortProtocol.c                    | 194 ++++
 .../I2cDebugPortProtocol.h                    |  77 ++
 .../I2cDebugPortTplDxe.c                      |  44 +
 .../I2cDebugPortTplNull.c                     |  36 +
 .../I2cHdmiDebugSerialPortLib.c               | 201 +++++
 .../I2cHdmiDebugSerialPortLib/IgfxI2c.c       | 112 +++
 .../I2cHdmiDebugSerialPortLib/IgfxI2c.h       | 146 ++++
 .../PeiI2cHdmiDebugSerialPortLib.c            | 237 +++++
 .../PeiI2cHdmiDebugSerialPortLib.inf          |  52 ++
 .../SecI2cHdmiDebugSerialPortLib.c            | 134 +++
 .../SecI2cHdmiDebugSerialPortLib.inf          |  51 ++
 .../SmmI2cHdmiDebugSerialPortLib.inf          |  51 ++
 .../SecBoardInitLib/Ia32/SecBoardInit.nasm    |  18 +
 .../Library/SecBoardInitLib/SecBoardInitLib.c |  35 +
 .../SecBoardInitLib/SecBoardInitLib.inf       |  39 +
 .../KabylakeOpenBoardPkg/OpenBoardPkg.dec     |  33 +-
 37 files changed, 3498 insertions(+), 34 deletions(-)
 create mode 100644 Platform/Intel/BoardModulePkg/Library/BdsSerialPortTerminalLib/BdsSerialPortTerminalLib.c
 create mode 100644 Platform/Intel/BoardModulePkg/Library/BdsSerialPortTerminalLib/BdsSerialPortTerminalLib.h
 create mode 100644 Platform/Intel/BoardModulePkg/Library/BdsSerialPortTerminalLib/BdsSerialPortTerminalLib.inf
 create mode 100644 Platform/Intel/KabylakeOpenBoardPkg/Include/Library/HdmiDebugGpioInitLib.h
 create mode 100644 Platform/Intel/KabylakeOpenBoardPkg/Library/HdmiDebugGpioInitLib/HdmiDebugGpioInitLib.c
 create mode 100644 Platform/Intel/KabylakeOpenBoardPkg/Library/HdmiDebugGpioInitLib/HdmiDebugGpioInitLib.inf
 create mode 100644 Platform/Intel/KabylakeOpenBoardPkg/Library/I2cHdmiDebugSerialPortLib/DxeI2cHdmiDebugSerialPortLib.inf
 create mode 100644 Platform/Intel/KabylakeOpenBoardPkg/Library/I2cHdmiDebugSerialPortLib/DxeSmmI2cHdmiDebugSerialPortLib.c
 create mode 100644 Platform/Intel/KabylakeOpenBoardPkg/Library/I2cHdmiDebugSerialPortLib/Gmbus.c
 create mode 100644 Platform/Intel/KabylakeOpenBoardPkg/Library/I2cHdmiDebugSerialPortLib/Gmbus.h
 create mode 100644 Platform/Intel/KabylakeOpenBoardPkg/Library/I2cHdmiDebugSerialPortLib/I2cDebugPortProtocol.c
 create mode 100644 Platform/Intel/KabylakeOpenBoardPkg/Library/I2cHdmiDebugSerialPortLib/I2cDebugPortProtocol.h
 create mode 100644 Platform/Intel/KabylakeOpenBoardPkg/Library/I2cHdmiDebugSerialPortLib/I2cDebugPortTplDxe.c
 create mode 100644 Platform/Intel/KabylakeOpenBoardPkg/Library/I2cHdmiDebugSerialPortLib/I2cDebugPortTplNull.c
 create mode 100644 Platform/Intel/KabylakeOpenBoardPkg/Library/I2cHdmiDebugSerialPortLib/I2cHdmiDebugSerialPortLib.c
 create mode 100644 Platform/Intel/KabylakeOpenBoardPkg/Library/I2cHdmiDebugSerialPortLib/IgfxI2c.c
 create mode 100644 Platform/Intel/KabylakeOpenBoardPkg/Library/I2cHdmiDebugSerialPortLib/IgfxI2c.h
 create mode 100644 Platform/Intel/KabylakeOpenBoardPkg/Library/I2cHdmiDebugSerialPortLib/PeiI2cHdmiDebugSerialPortLib.c
 create mode 100644 Platform/Intel/KabylakeOpenBoardPkg/Library/I2cHdmiDebugSerialPortLib/PeiI2cHdmiDebugSerialPortLib.inf
 create mode 100644 Platform/Intel/KabylakeOpenBoardPkg/Library/I2cHdmiDebugSerialPortLib/SecI2cHdmiDebugSerialPortLib.c
 create mode 100644 Platform/Intel/KabylakeOpenBoardPkg/Library/I2cHdmiDebugSerialPortLib/SecI2cHdmiDebugSerialPortLib.inf
 create mode 100644 Platform/Intel/KabylakeOpenBoardPkg/Library/I2cHdmiDebugSerialPortLib/SmmI2cHdmiDebugSerialPortLib.inf
 create mode 100644 Platform/Intel/KabylakeOpenBoardPkg/Library/SecBoardInitLib/Ia32/SecBoardInit.nasm
 create mode 100644 Platform/Intel/KabylakeOpenBoardPkg/Library/SecBoardInitLib/SecBoardInitLib.c
 create mode 100644 Platform/Intel/KabylakeOpenBoardPkg/Library/SecBoardInitLib/SecBoardInitLib.inf

-- 
2.27.0.windows.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#90591): https://edk2.groups.io/g/devel/message/90591
Mute This Topic: https://groups.io/mt/91835972/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-