drm/msm/dp: Replace open-coded drm_dp_read_dpcd_caps()
authorStephen Boyd <swboyd@chromium.org>
Tue, 29 Aug 2023 18:47:26 +0000 (11:47 -0700)
committerDmitry Baryshkov <dmitry.baryshkov@linaro.org>
Mon, 9 Oct 2023 09:17:46 +0000 (12:17 +0300)
This function duplicates the common function drm_dp_read_dpcd_caps().
The array of DPCD registers filled in is one size larger than the
function takes, but from what I can tell that extra byte was never used.
Resize the array and use the common function to reduce the code here.

Cc: Vinod Polimera <quic_vpolimer@quicinc.com>
Cc: Kuogee Hsieh <quic_khsieh@quicinc.com>
Signed-off-by: Stephen Boyd <swboyd@chromium.org>
Tested-by: Kuogee Hsieh <quic_khsieh@quicinc.com>
Reviewed-by: Kuogee Hsieh <quic_khsieh@quicinc.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Patchwork: https://patchwork.freedesktop.org/patch/554981/
Link: https://lore.kernel.org/r/20230829184735.2841739-2-swboyd@chromium.org
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
drivers/gpu/drm/msm/dp/dp_panel.c
drivers/gpu/drm/msm/dp/dp_panel.h

index 42d52510ffd4ab7bc35af5c7de725efd2965247f..09d4f6c38ef8d3c6c19ac46e92baba5598bcd3fa 100644 (file)
@@ -48,47 +48,15 @@ static int dp_panel_read_dpcd(struct dp_panel *dp_panel)
        ssize_t rlen;
        struct dp_panel_private *panel;
        struct dp_link_info *link_info;
-       u8 *dpcd, major = 0, minor = 0, temp;
-       u32 offset = DP_DPCD_REV;
+       u8 *dpcd, major, minor;
 
+       panel = container_of(dp_panel, struct dp_panel_private, dp_panel);
        dpcd = dp_panel->dpcd;
+       rc = drm_dp_read_dpcd_caps(panel->aux, dpcd);
+       if (rc)
+               return rc;
 
-       panel = container_of(dp_panel, struct dp_panel_private, dp_panel);
        link_info = &dp_panel->link_info;
-
-       rlen = drm_dp_dpcd_read(panel->aux, offset,
-                       dpcd, (DP_RECEIVER_CAP_SIZE + 1));
-       if (rlen < (DP_RECEIVER_CAP_SIZE + 1)) {
-               DRM_ERROR("dpcd read failed, rlen=%zd\n", rlen);
-               if (rlen == -ETIMEDOUT)
-                       rc = rlen;
-               else
-                       rc = -EINVAL;
-
-               goto end;
-       }
-
-       temp = dpcd[DP_TRAINING_AUX_RD_INTERVAL];
-
-       /* check for EXTENDED_RECEIVER_CAPABILITY_FIELD_PRESENT */
-       if (temp & BIT(7)) {
-               drm_dbg_dp(panel->drm_dev,
-                               "using EXTENDED_RECEIVER_CAPABILITY_FIELD\n");
-               offset = DPRX_EXTENDED_DPCD_FIELD;
-       }
-
-       rlen = drm_dp_dpcd_read(panel->aux, offset,
-               dpcd, (DP_RECEIVER_CAP_SIZE + 1));
-       if (rlen < (DP_RECEIVER_CAP_SIZE + 1)) {
-               DRM_ERROR("dpcd read failed, rlen=%zd\n", rlen);
-               if (rlen == -ETIMEDOUT)
-                       rc = rlen;
-               else
-                       rc = -EINVAL;
-
-               goto end;
-       }
-
        link_info->revision = dpcd[DP_DPCD_REV];
        major = (link_info->revision >> 4) & 0x0f;
        minor = link_info->revision & 0x0f;
index ed1030e17e1b89bd2e6be18f3d1a832efb986cfa..6d733480a62dee7c7052b974b226f18f9584edf4 100644 (file)
@@ -13,8 +13,6 @@
 
 struct edid;
 
-#define DPRX_EXTENDED_DPCD_FIELD       0x2200
-
 #define DP_DOWNSTREAM_PORTS            4
 #define DP_DOWNSTREAM_CAP_SIZE         4
 
@@ -40,7 +38,7 @@ struct dp_panel_psr {
 
 struct dp_panel {
        /* dpcd raw data */
-       u8 dpcd[DP_RECEIVER_CAP_SIZE + 1];
+       u8 dpcd[DP_RECEIVER_CAP_SIZE];
        u8 ds_cap_info[DP_DOWNSTREAM_PORTS * DP_DOWNSTREAM_CAP_SIZE];
        u32 ds_port_cnt;
        u32 dfp_present;