drm/dp: switch drm_dp_downstream_*() helpers to struct drm_edid
authorJani Nikula <jani.nikula@intel.com>
Wed, 4 Oct 2023 16:21:49 +0000 (19:21 +0300)
committerJani Nikula <jani.nikula@intel.com>
Thu, 5 Oct 2023 13:19:09 +0000 (16:19 +0300)
Prefer struct drm_edid where possible. With limited users for the
drm_dp_downstream_*() helpers, this is fairly straightforward.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20231004162149.2802113-1-jani.nikula@intel.com
drivers/gpu/drm/display/drm_dp_helper.c
drivers/gpu/drm/i915/display/intel_display_debugfs.c
drivers/gpu/drm/i915/display/intel_dp.c
include/drm/display/drm_dp_helper.h

index e6a78fd32380a1e73d58ecd4f5f4221ec5b599db..11104dce42784842e60749abc0a3b17bf89e3b0c 100644 (file)
@@ -746,8 +746,11 @@ int drm_dp_dpcd_read_phy_link_status(struct drm_dp_aux *aux,
 }
 EXPORT_SYMBOL(drm_dp_dpcd_read_phy_link_status);
 
-static bool is_edid_digital_input_dp(const struct edid *edid)
+static bool is_edid_digital_input_dp(const struct drm_edid *drm_edid)
 {
+       /* FIXME: get rid of drm_edid_raw() */
+       const struct edid *edid = drm_edid_raw(drm_edid);
+
        return edid && edid->revision >= 4 &&
                edid->input & DRM_EDID_INPUT_DIGITAL &&
                (edid->input & DRM_EDID_DIGITAL_TYPE_MASK) == DRM_EDID_DIGITAL_TYPE_DP;
@@ -779,13 +782,13 @@ EXPORT_SYMBOL(drm_dp_downstream_is_type);
  * drm_dp_downstream_is_tmds() - is the downstream facing port TMDS?
  * @dpcd: DisplayPort configuration data
  * @port_cap: port capabilities
- * @edid: EDID
+ * @drm_edid: EDID
  *
  * Returns: whether the downstream facing port is TMDS (HDMI/DVI).
  */
 bool drm_dp_downstream_is_tmds(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
                               const u8 port_cap[4],
-                              const struct edid *edid)
+                              const struct drm_edid *drm_edid)
 {
        if (dpcd[DP_DPCD_REV] < 0x11) {
                switch (dpcd[DP_DOWNSTREAMPORT_PRESENT] & DP_DWN_STRM_PORT_TYPE_MASK) {
@@ -798,7 +801,7 @@ bool drm_dp_downstream_is_tmds(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
 
        switch (port_cap[0] & DP_DS_PORT_TYPE_MASK) {
        case DP_DS_PORT_TYPE_DP_DUALMODE:
-               if (is_edid_digital_input_dp(edid))
+               if (is_edid_digital_input_dp(drm_edid))
                        return false;
                fallthrough;
        case DP_DS_PORT_TYPE_DVI:
@@ -1036,14 +1039,14 @@ EXPORT_SYMBOL(drm_dp_downstream_max_dotclock);
  * drm_dp_downstream_max_tmds_clock() - extract downstream facing port max TMDS clock
  * @dpcd: DisplayPort configuration data
  * @port_cap: port capabilities
- * @edid: EDID
+ * @drm_edid: EDID
  *
  * Returns: HDMI/DVI downstream facing port max TMDS clock in kHz on success,
  * or 0 if max TMDS clock not defined
  */
 int drm_dp_downstream_max_tmds_clock(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
                                     const u8 port_cap[4],
-                                    const struct edid *edid)
+                                    const struct drm_edid *drm_edid)
 {
        if (!drm_dp_is_branch(dpcd))
                return 0;
@@ -1059,7 +1062,7 @@ int drm_dp_downstream_max_tmds_clock(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
 
        switch (port_cap[0] & DP_DS_PORT_TYPE_MASK) {
        case DP_DS_PORT_TYPE_DP_DUALMODE:
-               if (is_edid_digital_input_dp(edid))
+               if (is_edid_digital_input_dp(drm_edid))
                        return 0;
                /*
                 * It's left up to the driver to check the
@@ -1101,14 +1104,14 @@ EXPORT_SYMBOL(drm_dp_downstream_max_tmds_clock);
  * drm_dp_downstream_min_tmds_clock() - extract downstream facing port min TMDS clock
  * @dpcd: DisplayPort configuration data
  * @port_cap: port capabilities
- * @edid: EDID
+ * @drm_edid: EDID
  *
  * Returns: HDMI/DVI downstream facing port min TMDS clock in kHz on success,
  * or 0 if max TMDS clock not defined
  */
 int drm_dp_downstream_min_tmds_clock(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
                                     const u8 port_cap[4],
-                                    const struct edid *edid)
+                                    const struct drm_edid *drm_edid)
 {
        if (!drm_dp_is_branch(dpcd))
                return 0;
@@ -1124,7 +1127,7 @@ int drm_dp_downstream_min_tmds_clock(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
 
        switch (port_cap[0] & DP_DS_PORT_TYPE_MASK) {
        case DP_DS_PORT_TYPE_DP_DUALMODE:
-               if (is_edid_digital_input_dp(edid))
+               if (is_edid_digital_input_dp(drm_edid))
                        return 0;
                fallthrough;
        case DP_DS_PORT_TYPE_DVI:
@@ -1145,13 +1148,13 @@ EXPORT_SYMBOL(drm_dp_downstream_min_tmds_clock);
  *                               bits per component
  * @dpcd: DisplayPort configuration data
  * @port_cap: downstream facing port capabilities
- * @edid: EDID
+ * @drm_edid: EDID
  *
  * Returns: Max bpc on success or 0 if max bpc not defined
  */
 int drm_dp_downstream_max_bpc(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
                              const u8 port_cap[4],
-                             const struct edid *edid)
+                             const struct drm_edid *drm_edid)
 {
        if (!drm_dp_is_branch(dpcd))
                return 0;
@@ -1169,7 +1172,7 @@ int drm_dp_downstream_max_bpc(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
        case DP_DS_PORT_TYPE_DP:
                return 0;
        case DP_DS_PORT_TYPE_DP_DUALMODE:
-               if (is_edid_digital_input_dp(edid))
+               if (is_edid_digital_input_dp(drm_edid))
                        return 0;
                fallthrough;
        case DP_DS_PORT_TYPE_HDMI:
@@ -1362,14 +1365,14 @@ EXPORT_SYMBOL(drm_dp_downstream_id);
  * @m: pointer for debugfs file
  * @dpcd: DisplayPort configuration data
  * @port_cap: port capabilities
- * @edid: EDID
+ * @drm_edid: EDID
  * @aux: DisplayPort AUX channel
  *
  */
 void drm_dp_downstream_debug(struct seq_file *m,
                             const u8 dpcd[DP_RECEIVER_CAP_SIZE],
                             const u8 port_cap[4],
-                            const struct edid *edid,
+                            const struct drm_edid *drm_edid,
                             struct drm_dp_aux *aux)
 {
        bool detailed_cap_info = dpcd[DP_DOWNSTREAMPORT_PRESENT] &
@@ -1432,15 +1435,15 @@ void drm_dp_downstream_debug(struct seq_file *m,
                if (clk > 0)
                        seq_printf(m, "\t\tMax dot clock: %d kHz\n", clk);
 
-               clk = drm_dp_downstream_max_tmds_clock(dpcd, port_cap, edid);
+               clk = drm_dp_downstream_max_tmds_clock(dpcd, port_cap, drm_edid);
                if (clk > 0)
                        seq_printf(m, "\t\tMax TMDS clock: %d kHz\n", clk);
 
-               clk = drm_dp_downstream_min_tmds_clock(dpcd, port_cap, edid);
+               clk = drm_dp_downstream_min_tmds_clock(dpcd, port_cap, drm_edid);
                if (clk > 0)
                        seq_printf(m, "\t\tMin TMDS clock: %d kHz\n", clk);
 
-               bpc = drm_dp_downstream_max_bpc(dpcd, port_cap, edid);
+               bpc = drm_dp_downstream_max_bpc(dpcd, port_cap, drm_edid);
 
                if (bpc > 0)
                        seq_printf(m, "\t\tMax bpc: %d\n", bpc);
index 165e2c7e3126a20893dbd93e2da14bba3e1b15c1..a9a4f73db236828eb00b29aa9a07815e62390bc9 100644 (file)
@@ -233,14 +233,13 @@ static void intel_dp_info(struct seq_file *m, struct intel_connector *connector)
 {
        struct intel_encoder *intel_encoder = intel_attached_encoder(connector);
        struct intel_dp *intel_dp = enc_to_intel_dp(intel_encoder);
-       const struct edid *edid = drm_edid_raw(connector->detect_edid);
 
        seq_printf(m, "\tDPCD rev: %x\n", intel_dp->dpcd[DP_DPCD_REV]);
        seq_printf(m, "\taudio support: %s\n",
                   str_yes_no(connector->base.display_info.has_audio));
 
        drm_dp_downstream_debug(m, intel_dp->dpcd, intel_dp->downstream_ports,
-                               edid, &intel_dp->aux);
+                               connector->detect_edid, &intel_dp->aux);
 }
 
 static void intel_dp_mst_info(struct seq_file *m,
index 9f40da20e88d28e6dca7fa3286f3b4d970a34002..391f97de78984ce5965455c4042aa0e3e8d7e033 100644 (file)
@@ -4708,14 +4708,10 @@ intel_dp_update_dfp(struct intel_dp *intel_dp,
 {
        struct drm_i915_private *i915 = dp_to_i915(intel_dp);
        struct intel_connector *connector = intel_dp->attached_connector;
-       const struct edid *edid;
-
-       /* FIXME: Get rid of drm_edid_raw() */
-       edid = drm_edid_raw(drm_edid);
 
        intel_dp->dfp.max_bpc =
                drm_dp_downstream_max_bpc(intel_dp->dpcd,
-                                         intel_dp->downstream_ports, edid);
+                                         intel_dp->downstream_ports, drm_edid);
 
        intel_dp->dfp.max_dotclock =
                drm_dp_downstream_max_dotclock(intel_dp->dpcd,
@@ -4724,11 +4720,11 @@ intel_dp_update_dfp(struct intel_dp *intel_dp,
        intel_dp->dfp.min_tmds_clock =
                drm_dp_downstream_min_tmds_clock(intel_dp->dpcd,
                                                 intel_dp->downstream_ports,
-                                                edid);
+                                                drm_edid);
        intel_dp->dfp.max_tmds_clock =
                drm_dp_downstream_max_tmds_clock(intel_dp->dpcd,
                                                 intel_dp->downstream_ports,
-                                                edid);
+                                                drm_edid);
 
        intel_dp->dfp.pcon_max_frl_bw =
                drm_dp_get_pcon_max_frl_bw(intel_dp->dpcd,
index 86f24a759268ae0ac313a6d7ed7a1a0892e38084..08cd6dfa0fe35dea70c58167457b3a9bb65c7190 100644 (file)
@@ -272,8 +272,8 @@ struct drm_dp_aux_msg {
 };
 
 struct cec_adapter;
-struct edid;
 struct drm_connector;
+struct drm_edid;
 
 /**
  * struct drm_dp_aux_cec - DisplayPort CEC-Tunneling-over-AUX
@@ -507,18 +507,18 @@ bool drm_dp_downstream_is_type(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
                               const u8 port_cap[4], u8 type);
 bool drm_dp_downstream_is_tmds(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
                               const u8 port_cap[4],
-                              const struct edid *edid);
+                              const struct drm_edid *drm_edid);
 int drm_dp_downstream_max_dotclock(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
                                   const u8 port_cap[4]);
 int drm_dp_downstream_max_tmds_clock(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
                                     const u8 port_cap[4],
-                                    const struct edid *edid);
+                                    const struct drm_edid *drm_edid);
 int drm_dp_downstream_min_tmds_clock(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
                                     const u8 port_cap[4],
-                                    const struct edid *edid);
+                                    const struct drm_edid *drm_edid);
 int drm_dp_downstream_max_bpc(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
                              const u8 port_cap[4],
-                             const struct edid *edid);
+                             const struct drm_edid *drm_edid);
 bool drm_dp_downstream_420_passthrough(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
                                       const u8 port_cap[4]);
 bool drm_dp_downstream_444_to_420_conversion(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
@@ -530,7 +530,7 @@ int drm_dp_downstream_id(struct drm_dp_aux *aux, char id[6]);
 void drm_dp_downstream_debug(struct seq_file *m,
                             const u8 dpcd[DP_RECEIVER_CAP_SIZE],
                             const u8 port_cap[4],
-                            const struct edid *edid,
+                            const struct drm_edid *drm_edid,
                             struct drm_dp_aux *aux);
 enum drm_mode_subconnector
 drm_dp_subconnector_type(const u8 dpcd[DP_RECEIVER_CAP_SIZE],