Merge dfcbf74486 on remote branch

Change-Id: I96fff508d542c4c14459f122b4cfd1e1b5ea174e
This commit is contained in:
Linux Build Service Account 2024-07-21 23:15:43 -07:00
commit 110735449b
3 changed files with 34 additions and 7 deletions

View File

@ -1,6 +1,6 @@
// SPDX-License-Identifier: GPL-2.0-only
/*
* Copyright (c) 2022-2023, Qualcomm Innovation Center, Inc. All rights reserved.
* Copyright (c) 2022-2024, Qualcomm Innovation Center, Inc. All rights reserved.
* Copyright (c) 2012-2021, The Linux Foundation. All rights reserved.
*/
@ -1576,6 +1576,8 @@ static int dp_panel_read_dpcd(struct dp_panel *dp_panel, bool multi_func)
struct dp_panel_private *panel;
struct drm_dp_link *link_info;
struct drm_dp_aux *drm_aux;
struct drm_connector *connector;
struct sde_connector *sde_conn;
u8 *dpcd, rx_feature, temp;
u32 dfp_count = 0, offset = DP_DPCD_REV;
@ -1596,6 +1598,8 @@ static int dp_panel_read_dpcd(struct dp_panel *dp_panel, bool multi_func)
panel->vscext_supported = false;
panel->vscext_chaining_supported = false;
connector = dp_panel->connector;
sde_conn = to_sde_connector(connector);
rlen = drm_dp_dpcd_read(drm_aux, DP_TRAINING_AUX_RD_INTERVAL, &temp, 1);
if (rlen != 1) {
DP_ERR("error reading DP_TRAINING_AUX_RD_INTERVAL\n");
@ -1637,6 +1641,7 @@ static int dp_panel_read_dpcd(struct dp_panel *dp_panel, bool multi_func)
panel->vscext_chaining_supported = !!(rx_feature &
VSC_EXT_VESA_SDP_CHAINING_SUPPORTED);
sde_conn->hdr_supported = panel->vsc_supported;
DP_DEBUG("vsc=%d, vscext=%d, vscext_chaining=%d\n",
panel->vsc_supported, panel->vscext_supported,
panel->vscext_chaining_supported);

View File

@ -33,22 +33,39 @@ int _sde_vm_validate_sgl(struct gh_sgl_desc *expected,
{
u32 idx;
sort(assigned->sgl_entries, assigned->n_sgl_entries,
sizeof(assigned->sgl_entries[0]), __sgl_cmp, NULL);
/*
* fragmented address spaces are not supported.
* So the number of sgl entries is expected to be the same.
*/
if (expected->n_sgl_entries != assigned->n_sgl_entries)
return -E2BIG;
if (expected->n_sgl_entries != assigned->n_sgl_entries) {
SDE_ERROR("expected sgl entries = %d, assigned sgl entries = %d\n",
expected->n_sgl_entries, assigned->n_sgl_entries);
sort(assigned->sgl_entries, assigned->n_sgl_entries,
sizeof(assigned->sgl_entries[0]), __sgl_cmp, NULL);
for (idx = 0; idx < expected->n_sgl_entries; idx++) {
struct gh_sgl_entry *e = &expected->sgl_entries[idx];
SDE_ERROR("expected sgl entry: (0x%llx - %llx)\n",
e->ipa_base, e->size);
}
for (idx = 0; idx < assigned->n_sgl_entries; idx++) {
struct gh_sgl_entry *a = &assigned->sgl_entries[idx];
SDE_ERROR("assigned sgl entry: (0x%llx - %llx)\n",
a->ipa_base, a->size);
}
return -E2BIG;
}
for (idx = 0; idx < expected->n_sgl_entries; idx++) {
struct gh_sgl_entry *e = &expected->sgl_entries[idx];
struct gh_sgl_entry *a = &assigned->sgl_entries[idx];
if ((e->ipa_base != a->ipa_base) || (e->size != a->size)) {
SDE_DEBUG("sgl mismatch: (%llu - %llu) vs (%llu - %llu)\n",
SDE_ERROR("sgl mismatch: (%llu - %llu) vs (%llu - %llu)\n",
e->ipa_base, e->size, a->ipa_base, a->size);
return -EINVAL;
}

View File

@ -1,6 +1,6 @@
// SPDX-License-Identifier: GPL-2.0-only
/*
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
* Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All rights reserved.
* Copyright (c) 2017-2021, The Linux Foundation. All rights reserved.
*/
@ -255,6 +255,11 @@ sde_edid_parse_hdr_db(struct drm_connector *connector, const u8 *db)
if (!db)
return;
if (!c_conn->hdr_supported) {
SDE_INFO("connected receiver does not support HDR\n");
return;
}
len = db[0] & 0x1f;
/* Byte 3: Electro-Optical Transfer Functions */
c_conn->hdr_eotf = db[2] & 0x3F;