return hdmi_id == HDMI_IEEE_OUI;
}
-static bool cea_db_is_hdmi_hf_vsdb(const u8 *db)
-{
- int hdmi_id;
-
- if (cea_db_tag(db) != VENDOR_BLOCK)
- return false;
-
- if (cea_db_payload_len(db) < 7)
- return false;
-
- hdmi_id = db[1] | (db[2] << 8) | (db[3] << 16);
-
- return hdmi_id == HDMI_IEEE_OUI_HF;
-}
-
static bool cea_db_is_hdmi_vdb420(const u8 *db)
{
if (cea_db_tag(db) != VIDEO_CAPABILITY_BLOCK)
connector->audio_latency[1]);
}
-static void
-parse_hdmi_hf_vsdb(struct drm_connector *connector, const u8 *db)
-{
- u8 len = cea_db_payload_len(db);
-
- if (len < 7)
- return;
-
- if (db[4] != 1)
- return; /* invalid version */
-
- connector->max_tmds_char = db[5] * 5;
- connector->scdc_present = db[6] & (1 << 7);
- connector->rr_capable = db[6] & (1 << 6);
- connector->flags_3d = db[6] & 0x7;
- connector->lte_340mcsc_scramble = db[6] & (1 << 3);
-
- DRM_DEBUG_KMS("HDMI v2: max TMDS clock %d, "
- "scdc %s, "
- "rr %s, "
- "3D flags 0x%x, "
- "scramble %s\n",
- connector->max_tmds_char,
- connector->scdc_present ? "available" : "not available",
- connector->rr_capable ? "capable" : "not capable",
- connector->flags_3d,
- connector->lte_340mcsc_scramble ?
- "supported" : "not supported");
-}
-
static void
monitor_name(struct detailed_timing *t, void *data)
{
/* HDMI Vendor-Specific Data Block */
if (cea_db_is_hdmi_vsdb(db))
drm_parse_hdmi_vsdb_audio(connector, db);
- /* HDMI Forum Vendor-Specific Data Block */
- else if (cea_db_is_hdmi_hf_vsdb(db))
- parse_hdmi_hf_vsdb(connector, db);
break;
default:
break;
* @audio_latency: audio latency info from ELD, if found
* @null_edid_counter: track sinks that give us all zeros for the EDID
* @bad_edid_counter: track sinks that give us an EDID with invalid checksum
- * @max_tmds_char: indicates the maximum TMDS Character Rate supported
- * @scdc_present: when set the sink supports SCDC functionality
- * @rr_capable: when set the sink is capable of initiating an SCDC read request
- * @lte_340mcsc_scramble: when set the sink supports less than 340Mcsc scramble
- * @flags_3d: 3D view(s) supported by the sink, see drm_edid.h (DRM_EDID_3D_*)
* @edid_corrupt: indicates whether the last read EDID was corrupt
* @debugfs_entry: debugfs directory for this connector
* @state: current atomic state for this connector
int null_edid_counter; /* needed to workaround some HW bugs where we get all 0s */
unsigned bad_edid_counter;
- /* EDID bits HDMI 2.0 */
- int max_tmds_char; /* in Mcsc */
- bool scdc_present;
- bool rr_capable;
- bool lte_340mcsc_scramble;
- int flags_3d;
-
/* Flag for raw EDID header corruption - used in Displayport
* compliance testing - * Displayport Link CTS Core 1.2 rev1.1 4.2.2.6
*/