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 physical panels.

* Update UnregisterDisplay API to allow cleanup of token via sde-drm.

* Add support for EDID DRM Property and appropriate blob parsing into
  the connector info for the display.

* Introduce new HW Port ID assignments to newly created displays based
  on available encoders for the display's connector.

* Due to workaround on current chipset, userspace must inject a second DSI
  encoder if one is not reported from the driver due to varying behavior
  on whether single panel use case vs secondary panel use case reports the
  second DSI encoder or not. This injection is required for HW Port ID
  logic to match client requirements.

* Cleanup handling of DRMDisplayToken elements on Free.

Change-Id: I5661f7bc0a5a68cdffa0cad3fe2351baa647012c
CRs-Fixed: 2380873
28 files changed