drm/edid: add drm_edid_get_product_id()

Add a struct drm_edid based function to get the vendor and product ID
from an EDID. Add a separate struct for defining this part of the EDID,
with defined byte order for manufacturer name, product code and serial
number.

v2: Define manufacturer_name as __be16 instead of u8[2] (Ville)

Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Acked-by: Melissa Wen <mwen@igalia.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/df0e7dedbf7f2c190039d6e6eae3e126eba113c9.1712655867.git.jani.nikula@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
This commit is contained in:
Jani Nikula
2024-04-09 12:46:09 +03:00
parent a57e191ebb
commit 3ddbd34553
2 changed files with 35 additions and 5 deletions

View File

@@ -2756,6 +2756,21 @@ const struct drm_edid *drm_edid_read(struct drm_connector *connector)
}
EXPORT_SYMBOL(drm_edid_read);
/**
* drm_edid_get_product_id - Get the vendor and product identification
* @drm_edid: EDID
* @id: Where to place the product id
*/
void drm_edid_get_product_id(const struct drm_edid *drm_edid,
struct drm_edid_product_id *id)
{
if (drm_edid && drm_edid->edid && drm_edid->size >= EDID_LENGTH)
memcpy(id, &drm_edid->edid->product_id, sizeof(*id));
else
memset(id, 0, sizeof(*id));
}
EXPORT_SYMBOL(drm_edid_get_product_id);
/**
* drm_edid_get_panel_id - Get a panel's ID from EDID
* @drm_edid: EDID that contains panel ID.