Merge "drm/edid: add colorimetry block parsing support"
This commit is contained in:
commit
61dac4648d
3 changed files with 59 additions and 0 deletions
|
@ -2716,6 +2716,7 @@ add_detailed_modes(struct drm_connector *connector, struct edid *edid,
|
|||
#define VENDOR_BLOCK 0x03
|
||||
#define SPEAKER_BLOCK 0x04
|
||||
#define HDR_STATIC_METADATA_EXTENDED_DATA_BLOCK 0x06
|
||||
#define COLORIMETRY_EXTENDED_DATA_BLOCK 0x05
|
||||
#define EXTENDED_TAG 0x07
|
||||
#define VIDEO_CAPABILITY_BLOCK 0x07
|
||||
#define Y420_VIDEO_DATA_BLOCK 0x0E
|
||||
|
@ -3594,6 +3595,50 @@ drm_extract_hdr_db(struct drm_connector *connector, const u8 *db)
|
|||
DRM_DEBUG_KMS("min luminance %d\n", connector->hdr_min_luminance);
|
||||
}
|
||||
|
||||
/*
|
||||
* drm_extract_colorimetry_db - Parse the HDMI colorimetry extended block
|
||||
* @connector: connector corresponding to the HDMI sink
|
||||
* @db: start of the HDMI colorimetry extended block
|
||||
*
|
||||
* Parses the HDMI colorimetry block to extract sink info for @connector.
|
||||
*/
|
||||
static void
|
||||
drm_extract_clrmetry_db(struct drm_connector *connector, const u8 *db)
|
||||
{
|
||||
|
||||
if (!db) {
|
||||
DRM_ERROR("invalid db\n");
|
||||
return;
|
||||
}
|
||||
|
||||
/* Bit 0: xvYCC_601 */
|
||||
if (db[2] & BIT(0))
|
||||
connector->color_enc_fmt |= DRM_EDID_COLORIMETRY_xvYCC_601;
|
||||
/* Bit 0: xvYCC_709 */
|
||||
if (db[2] & BIT(1))
|
||||
connector->color_enc_fmt |= DRM_EDID_COLORIMETRY_xvYCC_709;
|
||||
/* Bit 0: sYCC_601 */
|
||||
if (db[2] & BIT(2))
|
||||
connector->color_enc_fmt |= DRM_EDID_COLORIMETRY_sYCC_601;
|
||||
/* Bit 0: ADBYCC_601 */
|
||||
if (db[2] & BIT(3))
|
||||
connector->color_enc_fmt |= DRM_EDID_COLORIMETRY_ADBYCC_601;
|
||||
/* Bit 0: ADB_RGB */
|
||||
if (db[2] & BIT(4))
|
||||
connector->color_enc_fmt |= DRM_EDID_COLORIMETRY_ADB_RGB;
|
||||
/* Bit 0: BT2020_CYCC */
|
||||
if (db[2] & BIT(5))
|
||||
connector->color_enc_fmt |= DRM_EDID_COLORIMETRY_BT2020_CYCC;
|
||||
/* Bit 0: BT2020_YCC */
|
||||
if (db[2] & BIT(6))
|
||||
connector->color_enc_fmt |= DRM_EDID_COLORIMETRY_BT2020_YCC;
|
||||
/* Bit 0: BT2020_RGB */
|
||||
if (db[2] & BIT(7))
|
||||
connector->color_enc_fmt |= DRM_EDID_COLORIMETRY_BT2020_RGB;
|
||||
|
||||
DRM_DEBUG_KMS("colorimetry fmt 0x%x\n", connector->color_enc_fmt);
|
||||
}
|
||||
|
||||
/*
|
||||
* drm_hdmi_extract_extended_blk_info - Parse the HDMI extended tag blocks
|
||||
* @connector: connector corresponding to the HDMI sink
|
||||
|
@ -3626,6 +3671,9 @@ struct edid *edid)
|
|||
case HDR_STATIC_METADATA_EXTENDED_DATA_BLOCK:
|
||||
drm_extract_hdr_db(connector, db);
|
||||
break;
|
||||
case COLORIMETRY_EXTENDED_DATA_BLOCK:
|
||||
drm_extract_clrmetry_db(connector, db);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -652,6 +652,7 @@ struct drm_encoder {
|
|||
* @pt_scan_info: PT scan info obtained from the VCDB of EDID
|
||||
* @it_scan_info: IT scan info obtained from the VCDB of EDID
|
||||
* @ce_scan_info: CE scan info obtained from the VCDB of EDID
|
||||
* @color_enc_fmt: Colorimetry encoding formats of sink
|
||||
* @hdr_eotf: Electro optical transfer function obtained from HDR block
|
||||
* @hdr_metadata_type_one: Metadata type one obtained from HDR block
|
||||
* @hdr_max_luminance: desired max luminance obtained from HDR block
|
||||
|
@ -742,6 +743,7 @@ struct drm_connector {
|
|||
u8 pt_scan_info;
|
||||
u8 it_scan_info;
|
||||
u8 ce_scan_info;
|
||||
u8 color_enc_fmt;
|
||||
u32 hdr_eotf;
|
||||
bool hdr_metadata_type_one;
|
||||
u32 hdr_max_luminance;
|
||||
|
|
|
@ -214,6 +214,15 @@ struct detailed_timing {
|
|||
#define DRM_EDID_YCBCR420_DC_36 (1 << 1)
|
||||
#define DRM_EDID_YCBCR420_DC_30 (1 << 0)
|
||||
|
||||
#define DRM_EDID_COLORIMETRY_xvYCC_601 (1 << 0)
|
||||
#define DRM_EDID_COLORIMETRY_xvYCC_709 (1 << 1)
|
||||
#define DRM_EDID_COLORIMETRY_sYCC_601 (1 << 2)
|
||||
#define DRM_EDID_COLORIMETRY_ADBYCC_601 (1 << 3)
|
||||
#define DRM_EDID_COLORIMETRY_ADB_RGB (1 << 4)
|
||||
#define DRM_EDID_COLORIMETRY_BT2020_CYCC (1 << 5)
|
||||
#define DRM_EDID_COLORIMETRY_BT2020_YCC (1 << 6)
|
||||
#define DRM_EDID_COLORIMETRY_BT2020_RGB (1 << 7)
|
||||
|
||||
/* ELD Header Block */
|
||||
#define DRM_ELD_HEADER_BLOCK_SIZE 4
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue