* [PATCH] drm/dp: switch drm_dp_downstream_*() helpers to struct drm_edid
@ 2023-10-04 16:21 Jani Nikula
2023-10-04 17:13 ` [Intel-gfx] " Ville Syrjälä
0 siblings, 1 reply; 3+ messages in thread
From: Jani Nikula @ 2023-10-04 16:21 UTC (permalink / raw)
To: dri-devel; +Cc: jani.nikula, intel-gfx
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>
---
drivers/gpu/drm/display/drm_dp_helper.c | 39 ++++++++++---------
.../drm/i915/display/intel_display_debugfs.c | 3 +-
drivers/gpu/drm/i915/display/intel_dp.c | 10 ++---
include/drm/display/drm_dp_helper.h | 12 +++---
4 files changed, 31 insertions(+), 33 deletions(-)
diff --git a/drivers/gpu/drm/display/drm_dp_helper.c b/drivers/gpu/drm/display/drm_dp_helper.c
index 8a1b64c57dfd..f3680f4e6970 100644
--- a/drivers/gpu/drm/display/drm_dp_helper.c
+++ b/drivers/gpu/drm/display/drm_dp_helper.c
@@ -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);
diff --git a/drivers/gpu/drm/i915/display/intel_display_debugfs.c b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
index f6d7c4d45fae..fbe75d47a165 100644
--- a/drivers/gpu/drm/i915/display/intel_display_debugfs.c
+++ b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
@@ -237,14 +237,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,
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index f0f43aeabd21..0ef7cb8134b6 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -5207,14 +5207,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,
@@ -5223,11 +5219,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,
diff --git a/include/drm/display/drm_dp_helper.h b/include/drm/display/drm_dp_helper.h
index 3369104e2d25..3d74b2cec72f 100644
--- a/include/drm/display/drm_dp_helper.h
+++ b/include/drm/display/drm_dp_helper.h
@@ -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],
--
2.39.2
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [Intel-gfx] [PATCH] drm/dp: switch drm_dp_downstream_*() helpers to struct drm_edid
2023-10-04 16:21 [PATCH] drm/dp: switch drm_dp_downstream_*() helpers to struct drm_edid Jani Nikula
@ 2023-10-04 17:13 ` Ville Syrjälä
2023-10-05 14:30 ` Jani Nikula
0 siblings, 1 reply; 3+ messages in thread
From: Ville Syrjälä @ 2023-10-04 17:13 UTC (permalink / raw)
To: Jani Nikula; +Cc: intel-gfx, dri-devel
On Wed, Oct 04, 2023 at 07:21:49PM +0300, Jani Nikula wrote:
> 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>
> ---
> drivers/gpu/drm/display/drm_dp_helper.c | 39 ++++++++++---------
> .../drm/i915/display/intel_display_debugfs.c | 3 +-
> drivers/gpu/drm/i915/display/intel_dp.c | 10 ++---
> include/drm/display/drm_dp_helper.h | 12 +++---
> 4 files changed, 31 insertions(+), 33 deletions(-)
>
> diff --git a/drivers/gpu/drm/display/drm_dp_helper.c b/drivers/gpu/drm/display/drm_dp_helper.c
> index 8a1b64c57dfd..f3680f4e6970 100644
> --- a/drivers/gpu/drm/display/drm_dp_helper.c
> +++ b/drivers/gpu/drm/display/drm_dp_helper.c
> @@ -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);
> diff --git a/drivers/gpu/drm/i915/display/intel_display_debugfs.c b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
> index f6d7c4d45fae..fbe75d47a165 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_debugfs.c
> +++ b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
> @@ -237,14 +237,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,
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
> index f0f43aeabd21..0ef7cb8134b6 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -5207,14 +5207,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,
> @@ -5223,11 +5219,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,
> diff --git a/include/drm/display/drm_dp_helper.h b/include/drm/display/drm_dp_helper.h
> index 3369104e2d25..3d74b2cec72f 100644
> --- a/include/drm/display/drm_dp_helper.h
> +++ b/include/drm/display/drm_dp_helper.h
> @@ -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],
> --
> 2.39.2
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [Intel-gfx] [PATCH] drm/dp: switch drm_dp_downstream_*() helpers to struct drm_edid
2023-10-04 17:13 ` [Intel-gfx] " Ville Syrjälä
@ 2023-10-05 14:30 ` Jani Nikula
0 siblings, 0 replies; 3+ messages in thread
From: Jani Nikula @ 2023-10-05 14:30 UTC (permalink / raw)
To: Ville Syrjälä; +Cc: intel-gfx, dri-devel
On Wed, 04 Oct 2023, Ville Syrjälä <ville.syrjala@linux.intel.com> wrote:
> On Wed, Oct 04, 2023 at 07:21:49PM +0300, Jani Nikula wrote:
>> 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>
Thanks, pushed to drm-misc-next.
BR,
Jani.
>
>> ---
>> drivers/gpu/drm/display/drm_dp_helper.c | 39 ++++++++++---------
>> .../drm/i915/display/intel_display_debugfs.c | 3 +-
>> drivers/gpu/drm/i915/display/intel_dp.c | 10 ++---
>> include/drm/display/drm_dp_helper.h | 12 +++---
>> 4 files changed, 31 insertions(+), 33 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/display/drm_dp_helper.c b/drivers/gpu/drm/display/drm_dp_helper.c
>> index 8a1b64c57dfd..f3680f4e6970 100644
>> --- a/drivers/gpu/drm/display/drm_dp_helper.c
>> +++ b/drivers/gpu/drm/display/drm_dp_helper.c
>> @@ -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);
>> diff --git a/drivers/gpu/drm/i915/display/intel_display_debugfs.c b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
>> index f6d7c4d45fae..fbe75d47a165 100644
>> --- a/drivers/gpu/drm/i915/display/intel_display_debugfs.c
>> +++ b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
>> @@ -237,14 +237,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,
>> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
>> index f0f43aeabd21..0ef7cb8134b6 100644
>> --- a/drivers/gpu/drm/i915/display/intel_dp.c
>> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
>> @@ -5207,14 +5207,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,
>> @@ -5223,11 +5219,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,
>> diff --git a/include/drm/display/drm_dp_helper.h b/include/drm/display/drm_dp_helper.h
>> index 3369104e2d25..3d74b2cec72f 100644
>> --- a/include/drm/display/drm_dp_helper.h
>> +++ b/include/drm/display/drm_dp_helper.h
>> @@ -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],
>> --
>> 2.39.2
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2023-10-05 14:32 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-10-04 16:21 [PATCH] drm/dp: switch drm_dp_downstream_*() helpers to struct drm_edid Jani Nikula
2023-10-04 17:13 ` [Intel-gfx] " Ville Syrjälä
2023-10-05 14:30 ` Jani Nikula
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox