* [PATCH v2 1/1] drm/bridge: anx7625: Tune K value for IVO panel
@ 2021-08-06 9:35 ` Xin Ji
0 siblings, 0 replies; 7+ messages in thread
From: Xin Ji @ 2021-08-06 9:35 UTC (permalink / raw)
To: Robert Foss, Nicolas Boichat, Andrzej Hajda, Sam Ravnborg
Cc: Neil Armstrong, Laurent Pinchart, Jonas Karlman, Dan Carpenter,
David Airlie, Daniel Vetter, Boris Brezillon, Hsin-Yi Wang,
Torsten Duwe, Vasily Khoruzhick, Marek Szyprowski, Bernie Liang,
Qilin Wen, dri-devel, linux-kernel, devel
IVO panel require less input video clock variation than video clock
variation in DP CTS spec.
This patch decreases the K value of ANX7625 which will shrink eDP Tx
video clock variation to meet IVO panel's requirement.
Acked-by: Sam Ravnborg <sam@ravnborg.org>
Signed-off-by: Xin Ji <xji@analogixsemi.com>
---
drivers/gpu/drm/bridge/analogix/anx7625.c | 24 ++++++++++++++++++++---
drivers/gpu/drm/bridge/analogix/anx7625.h | 4 +++-
2 files changed, 24 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.c b/drivers/gpu/drm/bridge/analogix/anx7625.c
index a3d82377066b..9b9e3984dd38 100644
--- a/drivers/gpu/drm/bridge/analogix/anx7625.c
+++ b/drivers/gpu/drm/bridge/analogix/anx7625.c
@@ -384,6 +384,25 @@ static int anx7625_odfc_config(struct anx7625_data *ctx,
return ret;
}
+/*
+ * The MIPI source video data exist large variation (e.g. 59Hz ~ 61Hz),
+ * anx7625 defined K ratio for matching MIPI input video clock and
+ * DP output video clock. Increase K value can match bigger video data
+ * variation. IVO panel has small variation than DP CTS spec, need
+ * decrease the K value.
+ */
+static int anx7625_set_k_value(struct anx7625_data *ctx)
+{
+ struct edid *edid = (struct edid *)ctx->slimport_edid_p.edid_raw_data;
+
+ if (edid->mfg_id[0] == IVO_MID0 && edid->mfg_id[1] == IVO_MID1)
+ return anx7625_reg_write(ctx, ctx->i2c.rx_p1_client,
+ MIPI_DIGITAL_ADJ_1, 0x3B);
+
+ return anx7625_reg_write(ctx, ctx->i2c.rx_p1_client,
+ MIPI_DIGITAL_ADJ_1, 0x3D);
+}
+
static int anx7625_dsi_video_timing_config(struct anx7625_data *ctx)
{
struct device *dev = &ctx->client->dev;
@@ -470,9 +489,8 @@ static int anx7625_dsi_video_timing_config(struct anx7625_data *ctx)
MIPI_PLL_N_NUM_15_8, (n >> 8) & 0xff);
ret |= anx7625_reg_write(ctx, ctx->i2c.rx_p1_client, MIPI_PLL_N_NUM_7_0,
(n & 0xff));
- /* Diff */
- ret |= anx7625_reg_write(ctx, ctx->i2c.rx_p1_client,
- MIPI_DIGITAL_ADJ_1, 0x3D);
+
+ anx7625_set_k_value(ctx);
ret |= anx7625_odfc_config(ctx, post_divider - 1);
diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.h b/drivers/gpu/drm/bridge/analogix/anx7625.h
index 034c3840028f..6dcf64c703f9 100644
--- a/drivers/gpu/drm/bridge/analogix/anx7625.h
+++ b/drivers/gpu/drm/bridge/analogix/anx7625.h
@@ -210,7 +210,9 @@
#define MIPI_VIDEO_STABLE_CNT 0x0A
#define MIPI_LANE_CTRL_10 0x0F
-#define MIPI_DIGITAL_ADJ_1 0x1B
+#define MIPI_DIGITAL_ADJ_1 0x1B
+#define IVO_MID0 0x26
+#define IVO_MID1 0xCF
#define MIPI_PLL_M_NUM_23_16 0x1E
#define MIPI_PLL_M_NUM_15_8 0x1F
--
2.25.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v2 1/1] drm/bridge: anx7625: Tune K value for IVO panel
@ 2021-08-06 9:35 ` Xin Ji
0 siblings, 0 replies; 7+ messages in thread
From: Xin Ji @ 2021-08-06 9:35 UTC (permalink / raw)
To: Robert Foss, Nicolas Boichat, Andrzej Hajda, Sam Ravnborg
Cc: devel, Jonas Karlman, David Airlie, Qilin Wen, Neil Armstrong,
linux-kernel, dri-devel, Vasily Khoruzhick, Boris Brezillon,
Torsten Duwe, Laurent Pinchart, Daniel Vetter, Hsin-Yi Wang,
Bernie Liang, Dan Carpenter, Marek Szyprowski
IVO panel require less input video clock variation than video clock
variation in DP CTS spec.
This patch decreases the K value of ANX7625 which will shrink eDP Tx
video clock variation to meet IVO panel's requirement.
Acked-by: Sam Ravnborg <sam@ravnborg.org>
Signed-off-by: Xin Ji <xji@analogixsemi.com>
---
drivers/gpu/drm/bridge/analogix/anx7625.c | 24 ++++++++++++++++++++---
drivers/gpu/drm/bridge/analogix/anx7625.h | 4 +++-
2 files changed, 24 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.c b/drivers/gpu/drm/bridge/analogix/anx7625.c
index a3d82377066b..9b9e3984dd38 100644
--- a/drivers/gpu/drm/bridge/analogix/anx7625.c
+++ b/drivers/gpu/drm/bridge/analogix/anx7625.c
@@ -384,6 +384,25 @@ static int anx7625_odfc_config(struct anx7625_data *ctx,
return ret;
}
+/*
+ * The MIPI source video data exist large variation (e.g. 59Hz ~ 61Hz),
+ * anx7625 defined K ratio for matching MIPI input video clock and
+ * DP output video clock. Increase K value can match bigger video data
+ * variation. IVO panel has small variation than DP CTS spec, need
+ * decrease the K value.
+ */
+static int anx7625_set_k_value(struct anx7625_data *ctx)
+{
+ struct edid *edid = (struct edid *)ctx->slimport_edid_p.edid_raw_data;
+
+ if (edid->mfg_id[0] == IVO_MID0 && edid->mfg_id[1] == IVO_MID1)
+ return anx7625_reg_write(ctx, ctx->i2c.rx_p1_client,
+ MIPI_DIGITAL_ADJ_1, 0x3B);
+
+ return anx7625_reg_write(ctx, ctx->i2c.rx_p1_client,
+ MIPI_DIGITAL_ADJ_1, 0x3D);
+}
+
static int anx7625_dsi_video_timing_config(struct anx7625_data *ctx)
{
struct device *dev = &ctx->client->dev;
@@ -470,9 +489,8 @@ static int anx7625_dsi_video_timing_config(struct anx7625_data *ctx)
MIPI_PLL_N_NUM_15_8, (n >> 8) & 0xff);
ret |= anx7625_reg_write(ctx, ctx->i2c.rx_p1_client, MIPI_PLL_N_NUM_7_0,
(n & 0xff));
- /* Diff */
- ret |= anx7625_reg_write(ctx, ctx->i2c.rx_p1_client,
- MIPI_DIGITAL_ADJ_1, 0x3D);
+
+ anx7625_set_k_value(ctx);
ret |= anx7625_odfc_config(ctx, post_divider - 1);
diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.h b/drivers/gpu/drm/bridge/analogix/anx7625.h
index 034c3840028f..6dcf64c703f9 100644
--- a/drivers/gpu/drm/bridge/analogix/anx7625.h
+++ b/drivers/gpu/drm/bridge/analogix/anx7625.h
@@ -210,7 +210,9 @@
#define MIPI_VIDEO_STABLE_CNT 0x0A
#define MIPI_LANE_CTRL_10 0x0F
-#define MIPI_DIGITAL_ADJ_1 0x1B
+#define MIPI_DIGITAL_ADJ_1 0x1B
+#define IVO_MID0 0x26
+#define IVO_MID1 0xCF
#define MIPI_PLL_M_NUM_23_16 0x1E
#define MIPI_PLL_M_NUM_15_8 0x1F
--
2.25.1
_______________________________________________
devel mailing list
devel@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v2 1/1] drm/bridge: anx7625: Tune K value for IVO panel
2021-08-06 9:35 ` Xin Ji
(?)
@ 2021-08-06 9:42 ` Robert Foss
-1 siblings, 0 replies; 7+ messages in thread
From: Robert Foss @ 2021-08-06 9:42 UTC (permalink / raw)
To: Xin Ji
Cc: Nicolas Boichat, Andrzej Hajda, Sam Ravnborg, Neil Armstrong,
Laurent Pinchart, Jonas Karlman, Dan Carpenter, David Airlie,
Daniel Vetter, Boris Brezillon, Hsin-Yi Wang, Torsten Duwe,
Vasily Khoruzhick, Marek Szyprowski, Bernie Liang, Qilin Wen,
dri-devel, linux-kernel, devel
Hey Xin,
Thanks for implementing the suggestion so quickly.
Can you send this version of the patch out as v2? Versioning is
important and both tools and processes break if different versions
aren't submitted in different emails.
On Fri, 6 Aug 2021 at 11:35, Xin Ji <xji@analogixsemi.com> wrote:
>
> IVO panel require less input video clock variation than video clock
> variation in DP CTS spec.
>
> This patch decreases the K value of ANX7625 which will shrink eDP Tx
> video clock variation to meet IVO panel's requirement.
>
> Acked-by: Sam Ravnborg <sam@ravnborg.org>
> Signed-off-by: Xin Ji <xji@analogixsemi.com>
> ---
> drivers/gpu/drm/bridge/analogix/anx7625.c | 24 ++++++++++++++++++++---
> drivers/gpu/drm/bridge/analogix/anx7625.h | 4 +++-
> 2 files changed, 24 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.c b/drivers/gpu/drm/bridge/analogix/anx7625.c
> index a3d82377066b..9b9e3984dd38 100644
> --- a/drivers/gpu/drm/bridge/analogix/anx7625.c
> +++ b/drivers/gpu/drm/bridge/analogix/anx7625.c
> @@ -384,6 +384,25 @@ static int anx7625_odfc_config(struct anx7625_data *ctx,
> return ret;
> }
>
> +/*
> + * The MIPI source video data exist large variation (e.g. 59Hz ~ 61Hz),
> + * anx7625 defined K ratio for matching MIPI input video clock and
> + * DP output video clock. Increase K value can match bigger video data
> + * variation. IVO panel has small variation than DP CTS spec, need
> + * decrease the K value.
> + */
> +static int anx7625_set_k_value(struct anx7625_data *ctx)
> +{
> + struct edid *edid = (struct edid *)ctx->slimport_edid_p.edid_raw_data;
> +
> + if (edid->mfg_id[0] == IVO_MID0 && edid->mfg_id[1] == IVO_MID1)
> + return anx7625_reg_write(ctx, ctx->i2c.rx_p1_client,
> + MIPI_DIGITAL_ADJ_1, 0x3B);
> +
> + return anx7625_reg_write(ctx, ctx->i2c.rx_p1_client,
> + MIPI_DIGITAL_ADJ_1, 0x3D);
> +}
> +
> static int anx7625_dsi_video_timing_config(struct anx7625_data *ctx)
> {
> struct device *dev = &ctx->client->dev;
> @@ -470,9 +489,8 @@ static int anx7625_dsi_video_timing_config(struct anx7625_data *ctx)
> MIPI_PLL_N_NUM_15_8, (n >> 8) & 0xff);
> ret |= anx7625_reg_write(ctx, ctx->i2c.rx_p1_client, MIPI_PLL_N_NUM_7_0,
> (n & 0xff));
> - /* Diff */
> - ret |= anx7625_reg_write(ctx, ctx->i2c.rx_p1_client,
> - MIPI_DIGITAL_ADJ_1, 0x3D);
> +
> + anx7625_set_k_value(ctx);
>
> ret |= anx7625_odfc_config(ctx, post_divider - 1);
>
> diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.h b/drivers/gpu/drm/bridge/analogix/anx7625.h
> index 034c3840028f..6dcf64c703f9 100644
> --- a/drivers/gpu/drm/bridge/analogix/anx7625.h
> +++ b/drivers/gpu/drm/bridge/analogix/anx7625.h
> @@ -210,7 +210,9 @@
> #define MIPI_VIDEO_STABLE_CNT 0x0A
>
> #define MIPI_LANE_CTRL_10 0x0F
> -#define MIPI_DIGITAL_ADJ_1 0x1B
> +#define MIPI_DIGITAL_ADJ_1 0x1B
> +#define IVO_MID0 0x26
> +#define IVO_MID1 0xCF
>
> #define MIPI_PLL_M_NUM_23_16 0x1E
> #define MIPI_PLL_M_NUM_15_8 0x1F
> --
> 2.25.1
>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 1/1] drm/bridge: anx7625: Tune K value for IVO panel
@ 2021-08-06 9:42 ` Robert Foss
0 siblings, 0 replies; 7+ messages in thread
From: Robert Foss @ 2021-08-06 9:42 UTC (permalink / raw)
To: Xin Ji
Cc: devel, Nicolas Boichat, Jonas Karlman, David Airlie,
Bernie Liang, Qilin Wen, Neil Armstrong, linux-kernel, dri-devel,
Vasily Khoruzhick, Andrzej Hajda, Boris Brezillon, Torsten Duwe,
Laurent Pinchart, Daniel Vetter, Hsin-Yi Wang, Sam Ravnborg,
Dan Carpenter, Marek Szyprowski
Hey Xin,
Thanks for implementing the suggestion so quickly.
Can you send this version of the patch out as v2? Versioning is
important and both tools and processes break if different versions
aren't submitted in different emails.
On Fri, 6 Aug 2021 at 11:35, Xin Ji <xji@analogixsemi.com> wrote:
>
> IVO panel require less input video clock variation than video clock
> variation in DP CTS spec.
>
> This patch decreases the K value of ANX7625 which will shrink eDP Tx
> video clock variation to meet IVO panel's requirement.
>
> Acked-by: Sam Ravnborg <sam@ravnborg.org>
> Signed-off-by: Xin Ji <xji@analogixsemi.com>
> ---
> drivers/gpu/drm/bridge/analogix/anx7625.c | 24 ++++++++++++++++++++---
> drivers/gpu/drm/bridge/analogix/anx7625.h | 4 +++-
> 2 files changed, 24 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.c b/drivers/gpu/drm/bridge/analogix/anx7625.c
> index a3d82377066b..9b9e3984dd38 100644
> --- a/drivers/gpu/drm/bridge/analogix/anx7625.c
> +++ b/drivers/gpu/drm/bridge/analogix/anx7625.c
> @@ -384,6 +384,25 @@ static int anx7625_odfc_config(struct anx7625_data *ctx,
> return ret;
> }
>
> +/*
> + * The MIPI source video data exist large variation (e.g. 59Hz ~ 61Hz),
> + * anx7625 defined K ratio for matching MIPI input video clock and
> + * DP output video clock. Increase K value can match bigger video data
> + * variation. IVO panel has small variation than DP CTS spec, need
> + * decrease the K value.
> + */
> +static int anx7625_set_k_value(struct anx7625_data *ctx)
> +{
> + struct edid *edid = (struct edid *)ctx->slimport_edid_p.edid_raw_data;
> +
> + if (edid->mfg_id[0] == IVO_MID0 && edid->mfg_id[1] == IVO_MID1)
> + return anx7625_reg_write(ctx, ctx->i2c.rx_p1_client,
> + MIPI_DIGITAL_ADJ_1, 0x3B);
> +
> + return anx7625_reg_write(ctx, ctx->i2c.rx_p1_client,
> + MIPI_DIGITAL_ADJ_1, 0x3D);
> +}
> +
> static int anx7625_dsi_video_timing_config(struct anx7625_data *ctx)
> {
> struct device *dev = &ctx->client->dev;
> @@ -470,9 +489,8 @@ static int anx7625_dsi_video_timing_config(struct anx7625_data *ctx)
> MIPI_PLL_N_NUM_15_8, (n >> 8) & 0xff);
> ret |= anx7625_reg_write(ctx, ctx->i2c.rx_p1_client, MIPI_PLL_N_NUM_7_0,
> (n & 0xff));
> - /* Diff */
> - ret |= anx7625_reg_write(ctx, ctx->i2c.rx_p1_client,
> - MIPI_DIGITAL_ADJ_1, 0x3D);
> +
> + anx7625_set_k_value(ctx);
>
> ret |= anx7625_odfc_config(ctx, post_divider - 1);
>
> diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.h b/drivers/gpu/drm/bridge/analogix/anx7625.h
> index 034c3840028f..6dcf64c703f9 100644
> --- a/drivers/gpu/drm/bridge/analogix/anx7625.h
> +++ b/drivers/gpu/drm/bridge/analogix/anx7625.h
> @@ -210,7 +210,9 @@
> #define MIPI_VIDEO_STABLE_CNT 0x0A
>
> #define MIPI_LANE_CTRL_10 0x0F
> -#define MIPI_DIGITAL_ADJ_1 0x1B
> +#define MIPI_DIGITAL_ADJ_1 0x1B
> +#define IVO_MID0 0x26
> +#define IVO_MID1 0xCF
>
> #define MIPI_PLL_M_NUM_23_16 0x1E
> #define MIPI_PLL_M_NUM_15_8 0x1F
> --
> 2.25.1
>
_______________________________________________
devel mailing list
devel@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 1/1] drm/bridge: anx7625: Tune K value for IVO panel
@ 2021-08-06 9:42 ` Robert Foss
0 siblings, 0 replies; 7+ messages in thread
From: Robert Foss @ 2021-08-06 9:42 UTC (permalink / raw)
To: Xin Ji
Cc: Nicolas Boichat, Andrzej Hajda, Sam Ravnborg, Neil Armstrong,
Laurent Pinchart, Jonas Karlman, Dan Carpenter, David Airlie,
Daniel Vetter, Boris Brezillon, Hsin-Yi Wang, Torsten Duwe,
Vasily Khoruzhick, Marek Szyprowski, Bernie Liang, Qilin Wen,
dri-devel, linux-kernel, devel
Hey Xin,
Thanks for implementing the suggestion so quickly.
Can you send this version of the patch out as v2? Versioning is
important and both tools and processes break if different versions
aren't submitted in different emails.
On Fri, 6 Aug 2021 at 11:35, Xin Ji <xji@analogixsemi.com> wrote:
>
> IVO panel require less input video clock variation than video clock
> variation in DP CTS spec.
>
> This patch decreases the K value of ANX7625 which will shrink eDP Tx
> video clock variation to meet IVO panel's requirement.
>
> Acked-by: Sam Ravnborg <sam@ravnborg.org>
> Signed-off-by: Xin Ji <xji@analogixsemi.com>
> ---
> drivers/gpu/drm/bridge/analogix/anx7625.c | 24 ++++++++++++++++++++---
> drivers/gpu/drm/bridge/analogix/anx7625.h | 4 +++-
> 2 files changed, 24 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.c b/drivers/gpu/drm/bridge/analogix/anx7625.c
> index a3d82377066b..9b9e3984dd38 100644
> --- a/drivers/gpu/drm/bridge/analogix/anx7625.c
> +++ b/drivers/gpu/drm/bridge/analogix/anx7625.c
> @@ -384,6 +384,25 @@ static int anx7625_odfc_config(struct anx7625_data *ctx,
> return ret;
> }
>
> +/*
> + * The MIPI source video data exist large variation (e.g. 59Hz ~ 61Hz),
> + * anx7625 defined K ratio for matching MIPI input video clock and
> + * DP output video clock. Increase K value can match bigger video data
> + * variation. IVO panel has small variation than DP CTS spec, need
> + * decrease the K value.
> + */
> +static int anx7625_set_k_value(struct anx7625_data *ctx)
> +{
> + struct edid *edid = (struct edid *)ctx->slimport_edid_p.edid_raw_data;
> +
> + if (edid->mfg_id[0] == IVO_MID0 && edid->mfg_id[1] == IVO_MID1)
> + return anx7625_reg_write(ctx, ctx->i2c.rx_p1_client,
> + MIPI_DIGITAL_ADJ_1, 0x3B);
> +
> + return anx7625_reg_write(ctx, ctx->i2c.rx_p1_client,
> + MIPI_DIGITAL_ADJ_1, 0x3D);
> +}
> +
> static int anx7625_dsi_video_timing_config(struct anx7625_data *ctx)
> {
> struct device *dev = &ctx->client->dev;
> @@ -470,9 +489,8 @@ static int anx7625_dsi_video_timing_config(struct anx7625_data *ctx)
> MIPI_PLL_N_NUM_15_8, (n >> 8) & 0xff);
> ret |= anx7625_reg_write(ctx, ctx->i2c.rx_p1_client, MIPI_PLL_N_NUM_7_0,
> (n & 0xff));
> - /* Diff */
> - ret |= anx7625_reg_write(ctx, ctx->i2c.rx_p1_client,
> - MIPI_DIGITAL_ADJ_1, 0x3D);
> +
> + anx7625_set_k_value(ctx);
>
> ret |= anx7625_odfc_config(ctx, post_divider - 1);
>
> diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.h b/drivers/gpu/drm/bridge/analogix/anx7625.h
> index 034c3840028f..6dcf64c703f9 100644
> --- a/drivers/gpu/drm/bridge/analogix/anx7625.h
> +++ b/drivers/gpu/drm/bridge/analogix/anx7625.h
> @@ -210,7 +210,9 @@
> #define MIPI_VIDEO_STABLE_CNT 0x0A
>
> #define MIPI_LANE_CTRL_10 0x0F
> -#define MIPI_DIGITAL_ADJ_1 0x1B
> +#define MIPI_DIGITAL_ADJ_1 0x1B
> +#define IVO_MID0 0x26
> +#define IVO_MID1 0xCF
>
> #define MIPI_PLL_M_NUM_23_16 0x1E
> #define MIPI_PLL_M_NUM_15_8 0x1F
> --
> 2.25.1
>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 1/1] drm/bridge: anx7625: Tune K value for IVO panel
2021-08-06 9:42 ` Robert Foss
@ 2021-08-06 10:06 ` Xin Ji
-1 siblings, 0 replies; 7+ messages in thread
From: Xin Ji @ 2021-08-06 10:06 UTC (permalink / raw)
To: Robert Foss
Cc: Nicolas Boichat, Andrzej Hajda, Neil Armstrong, Laurent Pinchart,
Jonas Karlman, Dan Carpenter, David Airlie, Daniel Vetter,
Boris Brezillon, Sam Ravnborg, Hsin-Yi Wang, Torsten Duwe,
Vasily Khoruzhick, Marek Szyprowski, Bernie Liang, Qilin Wen,
dri-devel, linux-kernel, devel
On Fri, Aug 06, 2021 at 11:42:26AM +0200, Robert Foss wrote:
> Hey Xin,
>
> Thanks for implementing the suggestion so quickly.
>
> Can you send this version of the patch out as v2? Versioning is
> important and both tools and processes break if different versions
> aren't submitted in different emails.
Hi Robert Foss, OK, thanks.
Xin
>
> On Fri, 6 Aug 2021 at 11:35, Xin Ji <xji@analogixsemi.com> wrote:
> >
> > IVO panel require less input video clock variation than video clock
> > variation in DP CTS spec.
> >
> > This patch decreases the K value of ANX7625 which will shrink eDP Tx
> > video clock variation to meet IVO panel's requirement.
> >
> > Acked-by: Sam Ravnborg <sam@ravnborg.org>
> > Signed-off-by: Xin Ji <xji@analogixsemi.com>
> > ---
> > drivers/gpu/drm/bridge/analogix/anx7625.c | 24 ++++++++++++++++++++---
> > drivers/gpu/drm/bridge/analogix/anx7625.h | 4 +++-
> > 2 files changed, 24 insertions(+), 4 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.c b/drivers/gpu/drm/bridge/analogix/anx7625.c
> > index a3d82377066b..9b9e3984dd38 100644
> > --- a/drivers/gpu/drm/bridge/analogix/anx7625.c
> > +++ b/drivers/gpu/drm/bridge/analogix/anx7625.c
> > @@ -384,6 +384,25 @@ static int anx7625_odfc_config(struct anx7625_data *ctx,
> > return ret;
> > }
> >
> > +/*
> > + * The MIPI source video data exist large variation (e.g. 59Hz ~ 61Hz),
> > + * anx7625 defined K ratio for matching MIPI input video clock and
> > + * DP output video clock. Increase K value can match bigger video data
> > + * variation. IVO panel has small variation than DP CTS spec, need
> > + * decrease the K value.
> > + */
> > +static int anx7625_set_k_value(struct anx7625_data *ctx)
> > +{
> > + struct edid *edid = (struct edid *)ctx->slimport_edid_p.edid_raw_data;
> > +
> > + if (edid->mfg_id[0] == IVO_MID0 && edid->mfg_id[1] == IVO_MID1)
> > + return anx7625_reg_write(ctx, ctx->i2c.rx_p1_client,
> > + MIPI_DIGITAL_ADJ_1, 0x3B);
> > +
> > + return anx7625_reg_write(ctx, ctx->i2c.rx_p1_client,
> > + MIPI_DIGITAL_ADJ_1, 0x3D);
> > +}
> > +
> > static int anx7625_dsi_video_timing_config(struct anx7625_data *ctx)
> > {
> > struct device *dev = &ctx->client->dev;
> > @@ -470,9 +489,8 @@ static int anx7625_dsi_video_timing_config(struct anx7625_data *ctx)
> > MIPI_PLL_N_NUM_15_8, (n >> 8) & 0xff);
> > ret |= anx7625_reg_write(ctx, ctx->i2c.rx_p1_client, MIPI_PLL_N_NUM_7_0,
> > (n & 0xff));
> > - /* Diff */
> > - ret |= anx7625_reg_write(ctx, ctx->i2c.rx_p1_client,
> > - MIPI_DIGITAL_ADJ_1, 0x3D);
> > +
> > + anx7625_set_k_value(ctx);
> >
> > ret |= anx7625_odfc_config(ctx, post_divider - 1);
> >
> > diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.h b/drivers/gpu/drm/bridge/analogix/anx7625.h
> > index 034c3840028f..6dcf64c703f9 100644
> > --- a/drivers/gpu/drm/bridge/analogix/anx7625.h
> > +++ b/drivers/gpu/drm/bridge/analogix/anx7625.h
> > @@ -210,7 +210,9 @@
> > #define MIPI_VIDEO_STABLE_CNT 0x0A
> >
> > #define MIPI_LANE_CTRL_10 0x0F
> > -#define MIPI_DIGITAL_ADJ_1 0x1B
> > +#define MIPI_DIGITAL_ADJ_1 0x1B
> > +#define IVO_MID0 0x26
> > +#define IVO_MID1 0xCF
> >
> > #define MIPI_PLL_M_NUM_23_16 0x1E
> > #define MIPI_PLL_M_NUM_15_8 0x1F
> > --
> > 2.25.1
> >
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 1/1] drm/bridge: anx7625: Tune K value for IVO panel
@ 2021-08-06 10:06 ` Xin Ji
0 siblings, 0 replies; 7+ messages in thread
From: Xin Ji @ 2021-08-06 10:06 UTC (permalink / raw)
To: Robert Foss
Cc: devel, Nicolas Boichat, Jonas Karlman, David Airlie,
Bernie Liang, Qilin Wen, Neil Armstrong, linux-kernel, dri-devel,
Vasily Khoruzhick, Andrzej Hajda, Boris Brezillon, Torsten Duwe,
Laurent Pinchart, Daniel Vetter, Hsin-Yi Wang, Sam Ravnborg,
Dan Carpenter, Marek Szyprowski
On Fri, Aug 06, 2021 at 11:42:26AM +0200, Robert Foss wrote:
> Hey Xin,
>
> Thanks for implementing the suggestion so quickly.
>
> Can you send this version of the patch out as v2? Versioning is
> important and both tools and processes break if different versions
> aren't submitted in different emails.
Hi Robert Foss, OK, thanks.
Xin
>
> On Fri, 6 Aug 2021 at 11:35, Xin Ji <xji@analogixsemi.com> wrote:
> >
> > IVO panel require less input video clock variation than video clock
> > variation in DP CTS spec.
> >
> > This patch decreases the K value of ANX7625 which will shrink eDP Tx
> > video clock variation to meet IVO panel's requirement.
> >
> > Acked-by: Sam Ravnborg <sam@ravnborg.org>
> > Signed-off-by: Xin Ji <xji@analogixsemi.com>
> > ---
> > drivers/gpu/drm/bridge/analogix/anx7625.c | 24 ++++++++++++++++++++---
> > drivers/gpu/drm/bridge/analogix/anx7625.h | 4 +++-
> > 2 files changed, 24 insertions(+), 4 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.c b/drivers/gpu/drm/bridge/analogix/anx7625.c
> > index a3d82377066b..9b9e3984dd38 100644
> > --- a/drivers/gpu/drm/bridge/analogix/anx7625.c
> > +++ b/drivers/gpu/drm/bridge/analogix/anx7625.c
> > @@ -384,6 +384,25 @@ static int anx7625_odfc_config(struct anx7625_data *ctx,
> > return ret;
> > }
> >
> > +/*
> > + * The MIPI source video data exist large variation (e.g. 59Hz ~ 61Hz),
> > + * anx7625 defined K ratio for matching MIPI input video clock and
> > + * DP output video clock. Increase K value can match bigger video data
> > + * variation. IVO panel has small variation than DP CTS spec, need
> > + * decrease the K value.
> > + */
> > +static int anx7625_set_k_value(struct anx7625_data *ctx)
> > +{
> > + struct edid *edid = (struct edid *)ctx->slimport_edid_p.edid_raw_data;
> > +
> > + if (edid->mfg_id[0] == IVO_MID0 && edid->mfg_id[1] == IVO_MID1)
> > + return anx7625_reg_write(ctx, ctx->i2c.rx_p1_client,
> > + MIPI_DIGITAL_ADJ_1, 0x3B);
> > +
> > + return anx7625_reg_write(ctx, ctx->i2c.rx_p1_client,
> > + MIPI_DIGITAL_ADJ_1, 0x3D);
> > +}
> > +
> > static int anx7625_dsi_video_timing_config(struct anx7625_data *ctx)
> > {
> > struct device *dev = &ctx->client->dev;
> > @@ -470,9 +489,8 @@ static int anx7625_dsi_video_timing_config(struct anx7625_data *ctx)
> > MIPI_PLL_N_NUM_15_8, (n >> 8) & 0xff);
> > ret |= anx7625_reg_write(ctx, ctx->i2c.rx_p1_client, MIPI_PLL_N_NUM_7_0,
> > (n & 0xff));
> > - /* Diff */
> > - ret |= anx7625_reg_write(ctx, ctx->i2c.rx_p1_client,
> > - MIPI_DIGITAL_ADJ_1, 0x3D);
> > +
> > + anx7625_set_k_value(ctx);
> >
> > ret |= anx7625_odfc_config(ctx, post_divider - 1);
> >
> > diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.h b/drivers/gpu/drm/bridge/analogix/anx7625.h
> > index 034c3840028f..6dcf64c703f9 100644
> > --- a/drivers/gpu/drm/bridge/analogix/anx7625.h
> > +++ b/drivers/gpu/drm/bridge/analogix/anx7625.h
> > @@ -210,7 +210,9 @@
> > #define MIPI_VIDEO_STABLE_CNT 0x0A
> >
> > #define MIPI_LANE_CTRL_10 0x0F
> > -#define MIPI_DIGITAL_ADJ_1 0x1B
> > +#define MIPI_DIGITAL_ADJ_1 0x1B
> > +#define IVO_MID0 0x26
> > +#define IVO_MID1 0xCF
> >
> > #define MIPI_PLL_M_NUM_23_16 0x1E
> > #define MIPI_PLL_M_NUM_15_8 0x1F
> > --
> > 2.25.1
> >
_______________________________________________
devel mailing list
devel@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2021-08-06 10:06 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-06 9:35 [PATCH v2 1/1] drm/bridge: anx7625: Tune K value for IVO panel Xin Ji
2021-08-06 9:35 ` Xin Ji
2021-08-06 9:42 ` Robert Foss
2021-08-06 9:42 ` Robert Foss
2021-08-06 9:42 ` Robert Foss
2021-08-06 10:06 ` Xin Ji
2021-08-06 10:06 ` Xin Ji
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.