[PATCH] drm: imx: ipuv3-plane: fix HDMI cannot work for odd screen resolutions

Paul Pu posted 1 patch 1 year, 3 months ago
drivers/gpu/drm/imx/ipuv3/ipuv3-plane.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] drm: imx: ipuv3-plane: fix HDMI cannot work for odd screen resolutions
Posted by Paul Pu 1 year, 3 months ago
This changes the judgement of if needing to round up the width or not,
from using the `dp_flow` to the plane's type.

The `dp_flow` can be -22(-EINVAL) even the plane is a PRIMARY one.
See `client_reg[]` in `ipu-common.c`.

[    0.605141] [drm:ipu_plane_init] channel 28, dp flow -22, possible_crtcs=0x0

Per the commit message in commit: 71f9fd5bcf09, using the plane type for
judging if rounding up is needed is correct.

Fixes: 71f9fd5bcf09 ("drm/imx: ipuv3-plane: Fix overlay plane width")
Cc: stable@vger.kernel.org

Signed-off-by: Paul Pu <hui.pu@gehealthcare.com>
---
 drivers/gpu/drm/imx/ipuv3/ipuv3-plane.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/imx/ipuv3/ipuv3-plane.c b/drivers/gpu/drm/imx/ipuv3/ipuv3-plane.c
index 704c549750f9..cee83ac70ada 100644
--- a/drivers/gpu/drm/imx/ipuv3/ipuv3-plane.c
+++ b/drivers/gpu/drm/imx/ipuv3/ipuv3-plane.c
@@ -614,7 +614,7 @@ static void ipu_plane_atomic_update(struct drm_plane *plane,
 		break;
 	}
 
-	if (ipu_plane->dp_flow == IPU_DP_FLOW_SYNC_BG)
+	if (ipu_plane->base.type == DRM_PLANE_TYPE_PRIMARY)
 		width = ipu_src_rect_width(new_state);
 	else
 		width = drm_rect_width(&new_state->src) >> 16;

base-commit: 431c1646e1f86b949fa3685efc50b660a364c2b6
-- 
2.39.2
Re: [PATCH] drm: imx: ipuv3-plane: fix HDMI cannot work for odd screen resolutions
Posted by Greg KH 1 year, 3 months ago
On Wed, Sep 04, 2024 at 05:43:15AM +0300, Paul Pu wrote:
> This changes the judgement of if needing to round up the width or not,
> from using the `dp_flow` to the plane's type.
> 
> The `dp_flow` can be -22(-EINVAL) even the plane is a PRIMARY one.
> See `client_reg[]` in `ipu-common.c`.
> 
> [    0.605141] [drm:ipu_plane_init] channel 28, dp flow -22, possible_crtcs=0x0
> 
> Per the commit message in commit: 71f9fd5bcf09, using the plane type for
> judging if rounding up is needed is correct.
> 
> Fixes: 71f9fd5bcf09 ("drm/imx: ipuv3-plane: Fix overlay plane width")

That id is not in Linus's tree :(

> Cc: stable@vger.kernel.org
> 
> Signed-off-by: Paul Pu <hui.pu@gehealthcare.com>

No need for the blank line before this.

thanks,

greg k-h
Re: [PATCH] drm: imx: ipuv3-plane: fix HDMI cannot work for odd screen resolutions
Posted by Liu Ying 1 year, 3 months ago
Hi Paul,

Thanks for your patch.

On 09/04/2024, Paul Pu wrote:
> This changes the judgement of if needing to round up the width or not,
> from using the `dp_flow` to the plane's type.
> 
> The `dp_flow` can be -22(-EINVAL) even the plane is a PRIMARY one.

s/even/even if/

> See `client_reg[]` in `ipu-common.c`.
> 
> [    0.605141] [drm:ipu_plane_init] channel 28, dp flow -22, possible_crtcs=0x0
> 
> Per the commit message in commit: 71f9fd5bcf09, using the plane type for

Commit 71f9fd5bcf09 is a commit that only exists in downstream kernel.

> judging if rounding up is needed is correct.
> 
> Fixes: 71f9fd5bcf09 ("drm/imx: ipuv3-plane: Fix overlay plane width")

Commit 4333472f8d7b is the one to fix in upstream kernel.

s/71f9fd5bcf09/4333472f8d7b/

> Cc: stable@vger.kernel.org

Better to mark the versions for backporting the fix.
Cc: stable@vger.kernel.org # 6.3+

> 

No blank line between tags.

> Signed-off-by: Paul Pu <hui.pu@gehealthcare.com>
> ---
>  drivers/gpu/drm/imx/ipuv3/ipuv3-plane.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

Maybe, the patch subject can be something like:
drm/imx/ipuv3: ipuv3-plane: Round up plane width for IPUV3_CHANNEL_MEM_DC_SYNC

You may find example patch subject prefixes by looking at previous commits
which touch the same file, like
commit 71e3657cb126 ("drm/imx/ipuv3: ipuv3-plane: reuse local variable height
in atomic_update")

You may specify those fixed odd screen resolutions of your "HDMI" case in commit
message.

> 
> diff --git a/drivers/gpu/drm/imx/ipuv3/ipuv3-plane.c b/drivers/gpu/drm/imx/ipuv3/ipuv3-plane.c
> index 704c549750f9..cee83ac70ada 100644
> --- a/drivers/gpu/drm/imx/ipuv3/ipuv3-plane.c
> +++ b/drivers/gpu/drm/imx/ipuv3/ipuv3-plane.c
> @@ -614,7 +614,7 @@ static void ipu_plane_atomic_update(struct drm_plane *plane,
>  		break;
>  	}
>  
> -	if (ipu_plane->dp_flow == IPU_DP_FLOW_SYNC_BG)
> +	if (ipu_plane->base.type == DRM_PLANE_TYPE_PRIMARY)

plane->type is more readable. 

>  		width = ipu_src_rect_width(new_state);
>  	else
>  		width = drm_rect_width(&new_state->src) >> 16;
> 
> base-commit: 431c1646e1f86b949fa3685efc50b660a364c2b6

-- 
Regards,
Liu Ying
[PATCH v2] drm/imx/ipuv3: ipuv3-plane: Round up plane width for IPUV3_CHANNEL_MEM_DC_SYNC
Posted by Paul Pu 1 year, 3 months ago
This changes the judgement of if needing to round up the width or not,
from using the `dp_flow` to the plane's type.

The `dp_flow` can be -22(-EINVAL) even if the plane is a PRIMARY one.
See `client_reg[]` in `ipu-common.c`.

[    0.605141] [drm:ipu_plane_init] channel 28, dp flow -22, possible_crtcs=0x0

Per the commit message in commit: 4333472f8d7b, using the plane type for
judging if rounding up is needed is correct.

This fixes HDMI cannot work for odd screen resolutions, e.g. 1366x768.

Fixes: 4333472f8d7b ("drm/imx: ipuv3-plane: Fix overlay plane width")
Cc: stable@vger.kernel.org # 5.15+
Signed-off-by: Paul Pu <hui.pu@gehealthcare.com>
---
v1 -> v2: Fixed addressed review comments
---
 drivers/gpu/drm/imx/ipuv3/ipuv3-plane.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/imx/ipuv3/ipuv3-plane.c b/drivers/gpu/drm/imx/ipuv3/ipuv3-plane.c
index 704c549750f9..3ef8ad7ab2a1 100644
--- a/drivers/gpu/drm/imx/ipuv3/ipuv3-plane.c
+++ b/drivers/gpu/drm/imx/ipuv3/ipuv3-plane.c
@@ -614,7 +614,7 @@ static void ipu_plane_atomic_update(struct drm_plane *plane,
 		break;
 	}
 
-	if (ipu_plane->dp_flow == IPU_DP_FLOW_SYNC_BG)
+	if (plane->type == DRM_PLANE_TYPE_PRIMARY)
 		width = ipu_src_rect_width(new_state);
 	else
 		width = drm_rect_width(&new_state->src) >> 16;

base-commit: 431c1646e1f86b949fa3685efc50b660a364c2b6
-- 
2.39.2
Re: [PATCH v2] drm/imx/ipuv3: ipuv3-plane: Round up plane width for IPUV3_CHANNEL_MEM_DC_SYNC
Posted by Liu Ying 1 year, 3 months ago
On 09/04/2024, Paul Pu wrote:
> Cc: stable@vger.kernel.org # 5.15+

Why 5.15+ ?

I think it should be 6.3+ because below commit introduced in v6.3
moves ipuv3-plane.c from one directory to another, which makes
this patch not being applicable to v6.2.
commit 4b6cb2b67da8 ("drm/imx: move IPUv3 driver into separate subdirectory")

Or, it could be 6.2+ because the culprit commit 4333472f8d7b was
introduced in v6.2.

-- 
Regards,
Liu Ying
Re: [PATCH v2] drm/imx/ipuv3: ipuv3-plane: Round up plane width for IPUV3_CHANNEL_MEM_DC_SYNC
Posted by Greg KH 1 year, 3 months ago
On Wed, Sep 04, 2024 at 04:48:51PM +0800, Liu Ying wrote:
> On 09/04/2024, Paul Pu wrote:
> > Cc: stable@vger.kernel.org # 5.15+
> 
> Why 5.15+ ?

Because the commit referenced in Fixes: was backported there.

If you want to be picky, just drop the "# 5.15+" and our tools will rely
on the Fixes: tag and everyone will be happy.

thanks,

greg k-h
Re: [PATCH v2] drm/imx/ipuv3: ipuv3-plane: Round up plane width for IPUV3_CHANNEL_MEM_DC_SYNC
Posted by Liu Ying 1 year, 3 months ago
On 09/04/2024, Greg KH wrote:
> On Wed, Sep 04, 2024 at 04:48:51PM +0800, Liu Ying wrote:
>> On 09/04/2024, Paul Pu wrote:
>>> Cc: stable@vger.kernel.org # 5.15+
>>
>> Why 5.15+ ?
> 
> Because the commit referenced in Fixes: was backported there.

Sorry, really?  It doesn't seem to be backported.

> 
> If you want to be picky, just drop the "# 5.15+" and our tools will rely
> on the Fixes: tag and everyone will be happy.

Great, thanks for pointing this out.

With the "# 5.15+" dropped,
Acked-by: Liu Ying <victor.liu@nxp.com>

> 
> thanks,
> 
> greg k-h

-- 
Regards,
Liu Ying
Re: [PATCH v2] drm/imx/ipuv3: ipuv3-plane: Round up plane width for IPUV3_CHANNEL_MEM_DC_SYNC
Posted by Philipp Zabel 1 year, 3 months ago
On Mi, 2024-09-04 at 10:54 +0300, Paul Pu wrote:
> This changes the judgement of if needing to round up the width or not,
> from using the `dp_flow` to the plane's type.
> 
> The `dp_flow` can be -22(-EINVAL) even if the plane is a PRIMARY one.
> See `client_reg[]` in `ipu-common.c`.
> 
> [    0.605141] [drm:ipu_plane_init] channel 28, dp flow -22, possible_crtcs=0x0
> 
> Per the commit message in commit: 4333472f8d7b, using the plane type for
> judging if rounding up is needed is correct.
> 
> This fixes HDMI cannot work for odd screen resolutions, e.g. 1366x768.
> 
> Fixes: 4333472f8d7b ("drm/imx: ipuv3-plane: Fix overlay plane width")
> Cc: stable@vger.kernel.org # 5.15+
> Signed-off-by: Paul Pu <hui.pu@gehealthcare.com>
> ---
> v1 -> v2: Fixed addressed review comments
> ---
>  drivers/gpu/drm/imx/ipuv3/ipuv3-plane.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/imx/ipuv3/ipuv3-plane.c b/drivers/gpu/drm/imx/ipuv3/ipuv3-plane.c
> index 704c549750f9..3ef8ad7ab2a1 100644
> --- a/drivers/gpu/drm/imx/ipuv3/ipuv3-plane.c
> +++ b/drivers/gpu/drm/imx/ipuv3/ipuv3-plane.c
> @@ -614,7 +614,7 @@ static void ipu_plane_atomic_update(struct drm_plane *plane,
>  		break;
>  	}
>  
> -	if (ipu_plane->dp_flow == IPU_DP_FLOW_SYNC_BG)
> +	if (plane->type == DRM_PLANE_TYPE_PRIMARY)
>  		width = ipu_src_rect_width(new_state);
>  	else
>  		width = drm_rect_width(&new_state->src) >> 16;
> 
> base-commit: 431c1646e1f86b949fa3685efc50b660a364c2b6

Thank you,

Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>

regards
Philipp