sdm: Implement getDisplayIdentificationData
* Implement call flow from client to display interface.
* Use display interface to query EDID blob from Connector information
and return to client alongside pre-established port information from
sde-drm during display creation.
* Create EDID blob for Null Display (QMAA) to represent a 1920x1080
60fps display with panel name "Null Display" and port corresponding to
either builtin or external, depending on DisplayNull class instantiated.
* Introduce kErrorDriverData as a display interface error to represent
situations in which expected data from the driver is missing.
Currently this applied to EDID blob for all physical panels.
* Update UnregisterDisplay API to allow cleanup of token via sde-drm.
Change-Id: I5661f7bc0a5a68cdffa0cad3fe2351baa647012c
CRs-Fixed: 2380873
diff --git a/libdrmutils/drm_interface.h b/libdrmutils/drm_interface.h
index 4a47469..d0f1b81 100644
--- a/libdrmutils/drm_interface.h
+++ b/libdrmutils/drm_interface.h
@@ -612,6 +612,7 @@
bool is_wb_ubwc_supported;
uint32_t topology_control;
bool dyn_bitclk_support;
+ std::vector<uint8_t> edid;
};
// All DRM Connectors as map<Connector_id , connector_info>
@@ -631,6 +632,7 @@
uint32_t crtc_id;
uint32_t crtc_index;
uint32_t encoder_id;
+ uint8_t hw_port;
};
enum DRMPPFeatureID {
@@ -922,12 +924,12 @@
* [output]: DRMDisplayToken - CRTC and Connector id's for the display.
* [return]: 0 on success, a negative error value otherwise.
*/
- virtual int RegisterDisplay(int32_t display_id, DRMDisplayToken *tok) = 0;
+ virtual int RegisterDisplay(int32_t display_id, DRMDisplayToken *token) = 0;
/* Client should invoke this interface on display disconnect.
* [input]: DRMDisplayToken - identifier for the display.
*/
- virtual void UnregisterDisplay(const DRMDisplayToken &token) = 0;
+ virtual void UnregisterDisplay(DRMDisplayToken *token) = 0;
/*
* Creates and returns an instance of DRMAtomicReqInterface corresponding to a display token