Skip to content

Commit c0486e8

Browse files
UPSTREAM: drm/edid: detect SCDC support in HF-VSDB
This patch does following: - Adds a new structure (drm_hdmi_info) in drm_display_info. This structure will be used to save and indicate if sink supports advanced HDMI 2.0 features - Adds another structure drm_scdc within drm_hdmi_info, to reflect scdc support and capabilities in connected HDMI 2.0 sink. - Checks the HF-VSDB block for presence of SCDC, and marks it in scdc structure - If SCDC is present, checks if sink is capable of generating SCDC read request, and marks it in scdc structure. V2: Addressed review comments Thierry: - Fix typos in commit message and make abbreviation consistent across the commit message. - Change structure object name from hdmi_info -> hdmi - Fix typos and abbreviations in description of structure drm_hdmi_info end the description with a full stop. - Create a structure drm_scdc, and keep all information related to SCDC register set (supported, read request supported) etc in it. Ville: - Change rr -> read_request - Call drm_detect_scrambling function drm_parse_hf_vsdb so that all of HF-VSDB parsing can be kept in same function, in incremental patches. V3: Rebase. V4: Rebase. V5: Rebase. V6: Rebase. V7: Added R-B from Jose. V8: Rebase. V9: Rebase. V10: Rebase. Change-Id: I93cd26ee5c51c3714eb702e8a1bd1b335385f26e Signed-off-by: Shashank Sharma <shashank.sharma@intel.com> Reviewed-by: Thierry Reding <treding@nvidia.com> Reviewed-by: Jose Abreu <joabreu@synopsys.com> Signed-off-by: Jani Nikula <jani.nikula@intel.com> Link: http://patchwork.freedesktop.org/patch/msgid/1489404244-16608-4-git-send-email-shashank.sharma@intel.com Signed-off-by: Zheng Yang <zhengyang@rock-chips.com> (cherry picked from commit afa1c76)
1 parent ac24bfd commit c0486e8

2 files changed

Lines changed: 47 additions & 0 deletions

File tree

drivers/gpu/drm/drm_edid.c

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4084,6 +4084,18 @@ bool drm_rgb_quant_range_selectable(struct edid *edid)
40844084
}
40854085
EXPORT_SYMBOL(drm_rgb_quant_range_selectable);
40864086

4087+
static void drm_parse_hdmi_forum_vsdb(struct drm_connector *connector,
4088+
const u8 *hf_vsdb)
4089+
{
4090+
struct drm_hdmi_info *hdmi = &connector->display_info.hdmi;
4091+
4092+
if (hf_vsdb[6] & 0x80) {
4093+
hdmi->scdc.supported = true;
4094+
if (hf_vsdb[6] & 0x40)
4095+
hdmi->scdc.read_request = true;
4096+
}
4097+
}
4098+
40874099
static void drm_parse_hdmi_deep_color_info(struct drm_connector *connector,
40884100
const u8 *hdmi)
40894101
{
@@ -4197,6 +4209,8 @@ static void drm_parse_cea_ext(struct drm_connector *connector,
41974209

41984210
if (cea_db_is_hdmi_vsdb(db))
41994211
drm_parse_hdmi_vsdb_video(connector, db);
4212+
if (cea_db_is_hdmi_forum_vsdb(db))
4213+
drm_parse_hdmi_forum_vsdb(connector, db);
42004214
}
42014215
}
42024216

include/drm/drm_crtc.h

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,34 @@ enum subpixel_order {
117117
SubPixelVerticalRGB,
118118
SubPixelVerticalBGR,
119119
SubPixelNone,
120+
121+
};
122+
123+
/*
124+
* struct drm_scdc - Information about scdc capabilities of a HDMI 2.0 sink
125+
*
126+
* Provides SCDC register support and capabilities related information on a
127+
* HDMI 2.0 sink. In case of a HDMI 1.4 sink, all parameter must be 0.
128+
*/
129+
struct drm_scdc {
130+
/**
131+
* @supported: status control & data channel present.
132+
*/
133+
bool supported;
134+
/**
135+
* @read_request: sink is capable of generating scdc read request.
136+
*/
137+
bool read_request;
138+
};
139+
140+
/**
141+
* struct drm_hdmi_info - runtime information about the connected HDMI sink
142+
*
143+
* Describes if a given display supports advanced HDMI 2.0 features.
144+
* This information is available in CEA-861-F extension blocks (like HF-VSDB).
145+
*/
146+
struct drm_hdmi_info {
147+
struct drm_scdc scdc;
120148
};
121149

122150
#define DRM_COLOR_FORMAT_RGB444 (1<<0)
@@ -159,6 +187,11 @@ struct drm_display_info {
159187
u8 edid_hdmi_dc_modes;
160188

161189
u8 cea_rev;
190+
191+
/**
192+
* @hdmi: advance features of a HDMI sink.
193+
*/
194+
struct drm_hdmi_info hdmi;
162195
};
163196

164197
/* data corresponds to displayid vend/prod/serial */

0 commit comments

Comments
 (0)