23.5 EDID Override Protocol Implementation

The UEFI platform firmware may produce EFI_EDID_OVERRIDE_PROTOCOL in a platform specific driver implementation. This implementation of this protocol is not the responsibility of the UEFI Driver that produces the Graphics Output Protocol. If the UEFI platform firmware produces this protocol, then UEFI Driver for a graphics controller must use this information when producing the EDID Active Protocol on the same handle as the Graphics Output Protocol.

The implementation of the EDID Override Protocol is typically found in the file EdidOverride.c. Appendix A contains a template for an EdidOverride.c file for a platform specific UEFI Driver. The list of tasks to implement the EDID Override Protocol is as follows:

  • Add global variable for the EFI_EDID_OVERRIDE_PROTOCOL instance to EdidOverride.c.

  • Implement the GetEdid() service in EdidOverride.c.

  • The implementation of the EDID Override Protocol is typically in a Service Driver. This means that the EDID Override Protocol is typically installed onto a new handle in the Handle Database in the platform specific driver's entry point.

The following example shows the protocol interface structure for the EDID Override Protocol for reference.

Example 235-DID Override Protocol
typedef struct _EFI_EDID_OVERRIDE_PROTOCOL EFI_EDID_OVERRIDE_PROTOCOL;

///
/// This protocol is produced by the platform to allow the platform to provide
/// EDID information to the producer of the Graphics Output protocol.
///
struct _EFI_EDID_OVERRIDE_PROTOCOL {
  EFI_EDID_OVERRIDE_PROTOCOL_GET_EDID GetEdid;
};

extern EFI_GUID gEfiEdidOverrideProtocolGuid;