2019-02-20 07:53:15

by Jonas Karlman

[permalink] [raw]
Subject: [PATCH] drm: bridge: dw-hdmi: Fix overflow workaround for Rockchip SoCs

The Rockchip RK3288 SoC (v2.00a) and RK3328/RK3399 SoCs (v2.11a) have
also been identified as needing this workaround with a single iteration.

Fixes: be41fc55f1aa ("drm: bridge: dw-hdmi: Handle overflow workaround based on device version")
Signed-off-by: Jonas Karlman <[email protected]>
---
drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 4 ++++
1 file changed, 4 insertions(+)

diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
index 64c3cf027518..14223c0ee784 100644
--- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
+++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
@@ -1655,6 +1655,8 @@ static void dw_hdmi_clear_overflow(struct dw_hdmi *hdmi)
* iteration for others.
* The Amlogic Meson GX SoCs (v2.01a) have been identified as needing
* the workaround with a single iteration.
+ * The Rockchip RK3288 SoC (v2.00a) and RK3328/RK3399 SoCs (v2.11a) have
+ * been identified as needing the workaround with a single iteration.
*/

switch (hdmi->version) {
@@ -1663,7 +1665,9 @@ static void dw_hdmi_clear_overflow(struct dw_hdmi *hdmi)
break;
case 0x131a:
case 0x132a:
+ case 0x200a:
case 0x201a:
+ case 0x211a:
case 0x212a:
count = 1;
break;
--
2.17.1



2019-02-22 12:29:06

by Laurent Pinchart

[permalink] [raw]
Subject: Re: [PATCH] drm: bridge: dw-hdmi: Fix overflow workaround for Rockchip SoCs

Hi Jonas,

Thank you for the patch.

On Wed, Feb 20, 2019 at 07:52:31AM +0000, Jonas Karlman wrote:
> The Rockchip RK3288 SoC (v2.00a) and RK3328/RK3399 SoCs (v2.11a) have
> also been identified as needing this workaround with a single iteration.
>
> Fixes: be41fc55f1aa ("drm: bridge: dw-hdmi: Handle overflow workaround based on device version")
> Signed-off-by: Jonas Karlman <[email protected]>

This makes me wonder if we have any device at all that doesn't need the
workaround... The HDMI encoder in R-Car SoCs doesn't seem to require it,
but it reports the same version number as on other SoCs that require the
workaround, and enabling it doesn't seem to affect R-Car adversely.
Should we thus enable it unconditionally ? Input from Synopsys would be
useful.

> ---
> drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
> index 64c3cf027518..14223c0ee784 100644
> --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
> +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
> @@ -1655,6 +1655,8 @@ static void dw_hdmi_clear_overflow(struct dw_hdmi *hdmi)
> * iteration for others.
> * The Amlogic Meson GX SoCs (v2.01a) have been identified as needing
> * the workaround with a single iteration.
> + * The Rockchip RK3288 SoC (v2.00a) and RK3328/RK3399 SoCs (v2.11a) have
> + * been identified as needing the workaround with a single iteration.
> */
>
> switch (hdmi->version) {
> @@ -1663,7 +1665,9 @@ static void dw_hdmi_clear_overflow(struct dw_hdmi *hdmi)
> break;
> case 0x131a:
> case 0x132a:
> + case 0x200a:
> case 0x201a:
> + case 0x211a:
> case 0x212a:
> count = 1;
> break;

--
Regards,

Laurent Pinchart

2019-03-30 09:26:09

by Heiko Stuebner

[permalink] [raw]
Subject: Re: [PATCH] drm: bridge: dw-hdmi: Fix overflow workaround for Rockchip SoCs

Am Mittwoch, 20. Februar 2019, 08:52:31 CET schrieb Jonas Karlman:
> The Rockchip RK3288 SoC (v2.00a) and RK3328/RK3399 SoCs (v2.11a) have
> also been identified as needing this workaround with a single iteration.
>
> Fixes: be41fc55f1aa ("drm: bridge: dw-hdmi: Handle overflow workaround based on device version")
> Signed-off-by: Jonas Karlman <[email protected]>

On rk3328 and rk3288
Tested-by: Heiko Stueber <[email protected]>

If I remember correctly, this should remove the pink line that shows up
sometimes. With this patch I couldn't see it anymore during multiple
reboots.

Heiko

> ---
> drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
> index 64c3cf027518..14223c0ee784 100644
> --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
> +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
> @@ -1655,6 +1655,8 @@ static void dw_hdmi_clear_overflow(struct dw_hdmi *hdmi)
> * iteration for others.
> * The Amlogic Meson GX SoCs (v2.01a) have been identified as needing
> * the workaround with a single iteration.
> + * The Rockchip RK3288 SoC (v2.00a) and RK3328/RK3399 SoCs (v2.11a) have
> + * been identified as needing the workaround with a single iteration.
> */
>
> switch (hdmi->version) {
> @@ -1663,7 +1665,9 @@ static void dw_hdmi_clear_overflow(struct dw_hdmi *hdmi)
> break;
> case 0x131a:
> case 0x132a:
> + case 0x200a:
> case 0x201a:
> + case 0x211a:
> case 0x212a:
> count = 1;
> break;
>





2019-04-12 06:27:45

by Andrzej Hajda

[permalink] [raw]
Subject: Re: [PATCH] drm: bridge: dw-hdmi: Fix overflow workaround for Rockchip SoCs

On 20.02.2019 08:52, Jonas Karlman wrote:
> The Rockchip RK3288 SoC (v2.00a) and RK3328/RK3399 SoCs (v2.11a) have
> also been identified as needing this workaround with a single iteration.
>
> Fixes: be41fc55f1aa ("drm: bridge: dw-hdmi: Handle overflow workaround based on device version")
> Signed-off-by: Jonas Karlman <[email protected]>


Queued to drm-misc-fixes.

--
Regards
Andrzej


> ---
> drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
> index 64c3cf027518..14223c0ee784 100644
> --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
> +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
> @@ -1655,6 +1655,8 @@ static void dw_hdmi_clear_overflow(struct dw_hdmi *hdmi)
> * iteration for others.
> * The Amlogic Meson GX SoCs (v2.01a) have been identified as needing
> * the workaround with a single iteration.
> + * The Rockchip RK3288 SoC (v2.00a) and RK3328/RK3399 SoCs (v2.11a) have
> + * been identified as needing the workaround with a single iteration.
> */
>
> switch (hdmi->version) {
> @@ -1663,7 +1665,9 @@ static void dw_hdmi_clear_overflow(struct dw_hdmi *hdmi)
> break;
> case 0x131a:
> case 0x132a:
> + case 0x200a:
> case 0x201a:
> + case 0x211a:
> case 0x212a:
> count = 1;
> break;