Re: [PATCH v12 06/10] drm/mediatek: Add MT8195 External DisplayPort support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Il 27/06/22 10:03, Bo-Chen Chen ha scritto:
From: Guillaume Ranquet <granquet@xxxxxxxxxxxx>

This patch adds External DisplayPort support to the mt8195 eDP driver.

Signed-off-by: Guillaume Ranquet <granquet@xxxxxxxxxxxx>
[Bo-Chen: Move some dp features here and modify for reviewers' comments.]
Signed-off-by: Bo-Chen Chen <rex-bc.chen@xxxxxxxxxxxx>
---
  drivers/gpu/drm/mediatek/mtk_dp.c | 217 ++++++++++++++++++++++++------
  1 file changed, 174 insertions(+), 43 deletions(-)

diff --git a/drivers/gpu/drm/mediatek/mtk_dp.c b/drivers/gpu/drm/mediatek/mtk_dp.c
index 9e9b516409e2..1697c61462b7 100644
--- a/drivers/gpu/drm/mediatek/mtk_dp.c
+++ b/drivers/gpu/drm/mediatek/mtk_dp.c
@@ -111,6 +111,7 @@ struct mtk_dp {
  	struct regmap *regs;
bool enabled;
+	bool has_fec;
struct drm_connector *conn;
  };
@@ -123,6 +124,11 @@ static struct regmap_config mtk_dp_regmap_config = {
  	.name = "mtk-dp-registers",
  };
+static bool mtk_dp_is_edp(struct mtk_dp *mtk_dp)
+{
+	return mtk_dp->next_bridge;
+}
+
  static struct mtk_dp *mtk_dp_from_bridge(struct drm_bridge *b)
  {
  	return container_of(b, struct mtk_dp, bridge);
@@ -401,6 +407,20 @@ static bool mtk_dp_plug_state(struct mtk_dp *mtk_dp)
  		  HPD_DB_DP_TRANS_P0_MASK);
  }
+static bool mtk_dp_plug_state_avoid_pulse(struct mtk_dp *mtk_dp)
+{
+	int wait;
+
+	for (wait = 7; !mtk_dp_plug_state(mtk_dp) && wait > 0; --wait)
+		/* Avoid short pulses on the HPD isr */
+		usleep_range(1000, 5000);
+
+	if (wait == 0)
+		return false;
+

You can as well use existing APIs for that:

static bool mtk_dp_plug_state_avoid_pulse(struct mtk_dp *mtk_dp)
{
	int ret;

	return !!(readx_poll_timeout(mtk_dp_plug_state, mtk_dp, ret, ret,
				     4000, (7 * 4000)));
}

P.S.: I've used 4000 instead of 5000 on purpose, check the definition of
      readx_poll_timeout for more information.

All the rest of this commit looks good to me.

Cheers,
Angelo



[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux