All of lore.kernel.org
 help / color / mirror / Atom feed
From: Abhinav Kumar <quic_abhinavk@quicinc.com>
To: Vinod Koul <vkoul@kernel.org>, Rob Clark <robdclark@gmail.com>
Cc: Jonathan Marek <jonathan@marek.ca>,
	David Airlie <airlied@linux.ie>, <linux-arm-msm@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>,
	"Abhinav Kumar" <abhinavk@codeaurora.org>,
	Bjorn Andersson <bjorn.andersson@linaro.org>,
	<dri-devel@lists.freedesktop.org>,
	"Dmitry Baryshkov" <dmitry.baryshkov@linaro.org>,
	<freedreno@lists.freedesktop.org>
Subject: Re: [REPOST PATCH v4 12/13] drm/msm/dsi: add mode valid callback for dsi_mgr
Date: Wed, 16 Feb 2022 19:17:23 -0800	[thread overview]
Message-ID: <f7c3f941-2fb8-e10a-bd5a-6031e6a52171@quicinc.com> (raw)
In-Reply-To: <20220210103423.271016-13-vkoul@kernel.org>



On 2/10/2022 2:34 AM, Vinod Koul wrote:
> Add a mode valid callback for dsi_mgr for checking mode being valid in
> case of DSC. For DSC the height and width needs to be multiple of slice,
> so we check that here
> 
> Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
> Signed-off-by: Vinod Koul <vkoul@kernel.org>
Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
> ---
>   drivers/gpu/drm/msm/dsi/dsi.h         |  2 ++
>   drivers/gpu/drm/msm/dsi/dsi_host.c    | 26 ++++++++++++++++++++++++++
>   drivers/gpu/drm/msm/dsi/dsi_manager.c | 12 ++++++++++++
>   3 files changed, 40 insertions(+)
> 
> diff --git a/drivers/gpu/drm/msm/dsi/dsi.h b/drivers/gpu/drm/msm/dsi/dsi.h
> index 16cd9b2fce86..580a1e6358bf 100644
> --- a/drivers/gpu/drm/msm/dsi/dsi.h
> +++ b/drivers/gpu/drm/msm/dsi/dsi.h
> @@ -114,6 +114,8 @@ int msm_dsi_host_power_on(struct mipi_dsi_host *host,
>   int msm_dsi_host_power_off(struct mipi_dsi_host *host);
>   int msm_dsi_host_set_display_mode(struct mipi_dsi_host *host,
>   				  const struct drm_display_mode *mode);
> +enum drm_mode_status msm_dsi_host_check_dsc(struct mipi_dsi_host *host,
> +					    const struct drm_display_mode *mode);
>   struct drm_panel *msm_dsi_host_get_panel(struct mipi_dsi_host *host);
>   unsigned long msm_dsi_host_get_mode_flags(struct mipi_dsi_host *host);
>   struct drm_bridge *msm_dsi_host_get_bridge(struct mipi_dsi_host *host);
> diff --git a/drivers/gpu/drm/msm/dsi/dsi_host.c b/drivers/gpu/drm/msm/dsi/dsi_host.c
> index 7e9913eff724..438c80750682 100644
> --- a/drivers/gpu/drm/msm/dsi/dsi_host.c
> +++ b/drivers/gpu/drm/msm/dsi/dsi_host.c
> @@ -2552,6 +2552,32 @@ int msm_dsi_host_set_display_mode(struct mipi_dsi_host *host,
>   	return 0;
>   }
>   
> +enum drm_mode_status msm_dsi_host_check_dsc(struct mipi_dsi_host *host,
> +					    const struct drm_display_mode *mode)
> +{
> +	struct msm_dsi_host *msm_host = to_msm_dsi_host(host);
> +	struct msm_display_dsc_config *dsc = msm_host->dsc;
> +	int pic_width = mode->hdisplay;
> +	int pic_height = mode->vdisplay;
> +
> +	if (!msm_host->dsc)
> +		return MODE_OK;
> +
> +	if (pic_width % dsc->drm->slice_width) {
> +		pr_err("DSI: pic_width %d has to be multiple of slice %d\n",
> +		       pic_width, dsc->drm->slice_width);
> +		return MODE_H_ILLEGAL;
> +	}
> +
> +	if (pic_height % dsc->drm->slice_height) {
> +		pr_err("DSI: pic_height %d has to be multiple of slice %d\n",
> +		       pic_height, dsc->drm->slice_height);
> +		return MODE_V_ILLEGAL;
> +	}
> +
> +	return MODE_OK;
> +}
> +
>   struct drm_panel *msm_dsi_host_get_panel(struct mipi_dsi_host *host)
>   {
>   	return of_drm_find_panel(to_msm_dsi_host(host)->device_node);
> diff --git a/drivers/gpu/drm/msm/dsi/dsi_manager.c b/drivers/gpu/drm/msm/dsi/dsi_manager.c
> index f19bae475c96..e7f6cc88f7a4 100644
> --- a/drivers/gpu/drm/msm/dsi/dsi_manager.c
> +++ b/drivers/gpu/drm/msm/dsi/dsi_manager.c
> @@ -575,6 +575,17 @@ static void dsi_mgr_bridge_mode_set(struct drm_bridge *bridge,
>   		msm_dsi_host_set_display_mode(other_dsi->host, adjusted_mode);
>   }
>   
> +static enum drm_mode_status dsi_mgr_bridge_mode_valid(struct drm_bridge *bridge,
> +						      const struct drm_display_info *info,
> +						      const struct drm_display_mode *mode)
> +{
> +	int id = dsi_mgr_bridge_get_id(bridge);
> +	struct msm_dsi *msm_dsi = dsi_mgr_get_dsi(id);
> +	struct mipi_dsi_host *host = msm_dsi->host;
> +
> +	return msm_dsi_host_check_dsc(host, mode);
> +}
> +
>   static const struct drm_connector_funcs dsi_mgr_connector_funcs = {
>   	.detect = dsi_mgr_connector_detect,
>   	.fill_modes = drm_helper_probe_single_connector_modes,
> @@ -596,6 +607,7 @@ static const struct drm_bridge_funcs dsi_mgr_bridge_funcs = {
>   	.disable = dsi_mgr_bridge_disable,
>   	.post_disable = dsi_mgr_bridge_post_disable,
>   	.mode_set = dsi_mgr_bridge_mode_set,
> +	.mode_valid = dsi_mgr_bridge_mode_valid,
>   };
>   
>   /* initialize connector when we're connected to a drm_panel */

WARNING: multiple messages have this Message-ID (diff)
From: Abhinav Kumar <quic_abhinavk@quicinc.com>
To: Vinod Koul <vkoul@kernel.org>, Rob Clark <robdclark@gmail.com>
Cc: Jonathan Marek <jonathan@marek.ca>,
	David Airlie <airlied@linux.ie>,
	linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org,
	Abhinav Kumar <abhinavk@codeaurora.org>,
	Bjorn Andersson <bjorn.andersson@linaro.org>,
	dri-devel@lists.freedesktop.org,
	Dmitry Baryshkov <dmitry.baryshkov@linaro.org>,
	freedreno@lists.freedesktop.org
Subject: Re: [REPOST PATCH v4 12/13] drm/msm/dsi: add mode valid callback for dsi_mgr
Date: Wed, 16 Feb 2022 19:17:23 -0800	[thread overview]
Message-ID: <f7c3f941-2fb8-e10a-bd5a-6031e6a52171@quicinc.com> (raw)
In-Reply-To: <20220210103423.271016-13-vkoul@kernel.org>



On 2/10/2022 2:34 AM, Vinod Koul wrote:
> Add a mode valid callback for dsi_mgr for checking mode being valid in
> case of DSC. For DSC the height and width needs to be multiple of slice,
> so we check that here
> 
> Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
> Signed-off-by: Vinod Koul <vkoul@kernel.org>
Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
> ---
>   drivers/gpu/drm/msm/dsi/dsi.h         |  2 ++
>   drivers/gpu/drm/msm/dsi/dsi_host.c    | 26 ++++++++++++++++++++++++++
>   drivers/gpu/drm/msm/dsi/dsi_manager.c | 12 ++++++++++++
>   3 files changed, 40 insertions(+)
> 
> diff --git a/drivers/gpu/drm/msm/dsi/dsi.h b/drivers/gpu/drm/msm/dsi/dsi.h
> index 16cd9b2fce86..580a1e6358bf 100644
> --- a/drivers/gpu/drm/msm/dsi/dsi.h
> +++ b/drivers/gpu/drm/msm/dsi/dsi.h
> @@ -114,6 +114,8 @@ int msm_dsi_host_power_on(struct mipi_dsi_host *host,
>   int msm_dsi_host_power_off(struct mipi_dsi_host *host);
>   int msm_dsi_host_set_display_mode(struct mipi_dsi_host *host,
>   				  const struct drm_display_mode *mode);
> +enum drm_mode_status msm_dsi_host_check_dsc(struct mipi_dsi_host *host,
> +					    const struct drm_display_mode *mode);
>   struct drm_panel *msm_dsi_host_get_panel(struct mipi_dsi_host *host);
>   unsigned long msm_dsi_host_get_mode_flags(struct mipi_dsi_host *host);
>   struct drm_bridge *msm_dsi_host_get_bridge(struct mipi_dsi_host *host);
> diff --git a/drivers/gpu/drm/msm/dsi/dsi_host.c b/drivers/gpu/drm/msm/dsi/dsi_host.c
> index 7e9913eff724..438c80750682 100644
> --- a/drivers/gpu/drm/msm/dsi/dsi_host.c
> +++ b/drivers/gpu/drm/msm/dsi/dsi_host.c
> @@ -2552,6 +2552,32 @@ int msm_dsi_host_set_display_mode(struct mipi_dsi_host *host,
>   	return 0;
>   }
>   
> +enum drm_mode_status msm_dsi_host_check_dsc(struct mipi_dsi_host *host,
> +					    const struct drm_display_mode *mode)
> +{
> +	struct msm_dsi_host *msm_host = to_msm_dsi_host(host);
> +	struct msm_display_dsc_config *dsc = msm_host->dsc;
> +	int pic_width = mode->hdisplay;
> +	int pic_height = mode->vdisplay;
> +
> +	if (!msm_host->dsc)
> +		return MODE_OK;
> +
> +	if (pic_width % dsc->drm->slice_width) {
> +		pr_err("DSI: pic_width %d has to be multiple of slice %d\n",
> +		       pic_width, dsc->drm->slice_width);
> +		return MODE_H_ILLEGAL;
> +	}
> +
> +	if (pic_height % dsc->drm->slice_height) {
> +		pr_err("DSI: pic_height %d has to be multiple of slice %d\n",
> +		       pic_height, dsc->drm->slice_height);
> +		return MODE_V_ILLEGAL;
> +	}
> +
> +	return MODE_OK;
> +}
> +
>   struct drm_panel *msm_dsi_host_get_panel(struct mipi_dsi_host *host)
>   {
>   	return of_drm_find_panel(to_msm_dsi_host(host)->device_node);
> diff --git a/drivers/gpu/drm/msm/dsi/dsi_manager.c b/drivers/gpu/drm/msm/dsi/dsi_manager.c
> index f19bae475c96..e7f6cc88f7a4 100644
> --- a/drivers/gpu/drm/msm/dsi/dsi_manager.c
> +++ b/drivers/gpu/drm/msm/dsi/dsi_manager.c
> @@ -575,6 +575,17 @@ static void dsi_mgr_bridge_mode_set(struct drm_bridge *bridge,
>   		msm_dsi_host_set_display_mode(other_dsi->host, adjusted_mode);
>   }
>   
> +static enum drm_mode_status dsi_mgr_bridge_mode_valid(struct drm_bridge *bridge,
> +						      const struct drm_display_info *info,
> +						      const struct drm_display_mode *mode)
> +{
> +	int id = dsi_mgr_bridge_get_id(bridge);
> +	struct msm_dsi *msm_dsi = dsi_mgr_get_dsi(id);
> +	struct mipi_dsi_host *host = msm_dsi->host;
> +
> +	return msm_dsi_host_check_dsc(host, mode);
> +}
> +
>   static const struct drm_connector_funcs dsi_mgr_connector_funcs = {
>   	.detect = dsi_mgr_connector_detect,
>   	.fill_modes = drm_helper_probe_single_connector_modes,
> @@ -596,6 +607,7 @@ static const struct drm_bridge_funcs dsi_mgr_bridge_funcs = {
>   	.disable = dsi_mgr_bridge_disable,
>   	.post_disable = dsi_mgr_bridge_post_disable,
>   	.mode_set = dsi_mgr_bridge_mode_set,
> +	.mode_valid = dsi_mgr_bridge_mode_valid,
>   };
>   
>   /* initialize connector when we're connected to a drm_panel */

  reply	other threads:[~2022-02-17  3:17 UTC|newest]

Thread overview: 127+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-02-10 10:34 [REPOST PATCH v4 00/13] drm/msm: Add Display Stream Compression Support Vinod Koul
2022-02-10 10:34 ` Vinod Koul
2022-02-10 10:34 ` [REPOST PATCH v4 01/13] drm/msm/dsi: add support for dsc data Vinod Koul
2022-02-10 10:34   ` Vinod Koul
2022-02-10 11:07   ` Dmitry Baryshkov
2022-02-10 11:07     ` Dmitry Baryshkov
2022-02-17 20:06   ` Abhinav Kumar
2022-02-17 20:06     ` Abhinav Kumar
2022-02-21  2:17   ` Dmitry Baryshkov
2022-02-21  2:17     ` Dmitry Baryshkov
2022-02-10 10:34 ` [REPOST PATCH v4 02/13] drm/msm/dsi: Pass DSC params to drm_panel Vinod Koul
2022-02-10 10:34   ` Vinod Koul
2022-02-10 10:43   ` Dmitry Baryshkov
2022-02-10 10:43     ` Dmitry Baryshkov
2022-02-17  0:27   ` Abhinav Kumar
2022-02-17  0:27     ` Abhinav Kumar
2022-02-21 12:37   ` Dmitry Baryshkov
2022-02-21 12:37     ` Dmitry Baryshkov
2022-03-03 19:08     ` Abhinav Kumar
2022-03-03 19:08       ` Abhinav Kumar
2022-02-10 10:34 ` [REPOST PATCH v4 03/13] drm/msm/disp/dpu1: Add support for DSC Vinod Koul
2022-02-10 10:34   ` Vinod Koul
2022-02-16 18:57   ` Abhinav Kumar
2022-02-16 18:57     ` Abhinav Kumar
2022-02-16 19:46     ` Dmitry Baryshkov
2022-02-17  4:20       ` Vinod Koul
2022-02-17  4:20         ` Vinod Koul
2022-02-10 10:34 ` [REPOST PATCH v4 04/13] drm/msm/disp/dpu1: Add support for DSC in pingpong block Vinod Koul
2022-02-10 10:34   ` Vinod Koul
2022-02-16 19:49   ` Abhinav Kumar
2022-02-16 19:49     ` Abhinav Kumar
2022-02-17  4:21     ` Vinod Koul
2022-02-17  4:21       ` Vinod Koul
2022-02-10 10:34 ` [REPOST PATCH v4 05/13] drm/msm/disp/dpu1: Add DSC for SDM845 to hw_catalog Vinod Koul
2022-02-10 10:34   ` Vinod Koul
2022-02-16 19:42   ` [Freedreno] " Abhinav Kumar
2022-02-16 19:42     ` Abhinav Kumar
2022-02-10 10:34 ` [REPOST PATCH v4 06/13] drm/msm/disp/dpu1: Add DSC support in hw_ctl Vinod Koul
2022-02-10 10:34   ` Vinod Koul
2022-02-16 19:52   ` [Freedreno] " Abhinav Kumar
2022-02-16 19:52     ` Abhinav Kumar
2022-02-17 22:20   ` Marijn Suijten
2022-02-17 22:20     ` Marijn Suijten
2022-03-24 16:24     ` Vinod Koul
2022-03-24 16:24       ` Vinod Koul
2022-02-10 10:34 ` [REPOST PATCH v4 07/13] drm/msm/disp/dpu1: Add support for DSC in encoder Vinod Koul
2022-02-10 10:34   ` Vinod Koul
2022-02-10 11:13   ` Dmitry Baryshkov
2022-02-10 11:13     ` Dmitry Baryshkov
2022-02-16 19:54   ` [Freedreno] " Abhinav Kumar
2022-02-16 19:54     ` Abhinav Kumar
2022-02-17  6:08     ` Vinod Koul
2022-02-17  6:08       ` Vinod Koul
2022-02-17 22:32   ` Marijn Suijten
2022-02-17 22:32     ` Marijn Suijten
2022-03-23 14:40     ` Vinod Koul
2022-03-23 14:40       ` Vinod Koul
2022-03-24 15:41       ` Vinod Koul
2022-03-24 15:41         ` Vinod Koul
2022-02-21  1:41   ` Dmitry Baryshkov
2022-02-21  1:41     ` Dmitry Baryshkov
2022-02-10 10:34 ` [REPOST PATCH v4 08/13] drm/msm/disp/dpu1: Don't use DSC with mode_3d Vinod Koul
2022-02-10 10:34   ` Vinod Koul
2022-02-10 10:55   ` Dmitry Baryshkov
2022-02-10 10:55     ` Dmitry Baryshkov
2022-02-17  3:11   ` Abhinav Kumar
2022-02-17  3:11     ` Abhinav Kumar
2022-02-17  6:10     ` Vinod Koul
2022-02-17  6:10       ` Vinod Koul
2022-02-17  6:33       ` Abhinav Kumar
2022-02-17  6:33         ` Abhinav Kumar
2022-02-17  7:12         ` Dmitry Baryshkov
2022-02-17  7:12           ` Dmitry Baryshkov
2022-02-18 20:46           ` Abhinav Kumar
2022-02-18 20:46             ` Abhinav Kumar
2022-02-18 21:21             ` Dmitry Baryshkov
2022-02-18 21:21               ` Dmitry Baryshkov
2022-02-18 21:29               ` [Freedreno] " Abhinav Kumar
2022-02-18 21:29                 ` Abhinav Kumar
2022-02-18 21:36                 ` Dmitry Baryshkov
2022-02-18 21:36                   ` Dmitry Baryshkov
2022-02-10 10:34 ` [REPOST PATCH v4 09/13] drm/msm: Add missing structure documentation Vinod Koul
2022-02-10 10:34   ` Vinod Koul
2022-02-10 10:39   ` Dmitry Baryshkov
2022-02-10 10:39     ` Dmitry Baryshkov
2022-02-17  3:12   ` Abhinav Kumar
2022-02-17  3:12     ` Abhinav Kumar
2022-02-17 22:34   ` Marijn Suijten
2022-02-17 22:34     ` Marijn Suijten
2022-02-10 10:34 ` [REPOST PATCH v4 10/13] drm/msm/disp/dpu1: Add support for DSC in topology Vinod Koul
2022-02-10 10:34   ` Vinod Koul
2022-02-10 10:47   ` Dmitry Baryshkov
2022-02-10 10:47     ` Dmitry Baryshkov
2022-02-17 21:44   ` Marijn Suijten
2022-02-17 21:44     ` Marijn Suijten
2022-03-23 11:38     ` [Freedreno] " Vinod Koul
2022-03-23 11:38       ` Vinod Koul
2022-02-17 22:37   ` Marijn Suijten
2022-02-17 22:37     ` Marijn Suijten
2022-03-23 11:39     ` Vinod Koul
2022-03-23 11:39       ` Vinod Koul
2022-02-10 10:34 ` [REPOST PATCH v4 11/13] drm/msm/disp/dpu1: Add DSC support in RM Vinod Koul
2022-02-10 10:34   ` Vinod Koul
2022-02-17  3:14   ` Abhinav Kumar
2022-02-17  3:14     ` Abhinav Kumar
2022-02-17  3:21   ` Abhinav Kumar
2022-02-17  3:21     ` Abhinav Kumar
2022-02-10 10:34 ` [REPOST PATCH v4 12/13] drm/msm/dsi: add mode valid callback for dsi_mgr Vinod Koul
2022-02-10 10:34   ` Vinod Koul
2022-02-17  3:17   ` Abhinav Kumar [this message]
2022-02-17  3:17     ` Abhinav Kumar
2022-02-10 10:34 ` [REPOST PATCH v4 13/13] drm/msm/dsi: Add support for DSC configuration Vinod Koul
2022-02-10 10:34   ` Vinod Koul
2022-02-17  3:44   ` [Freedreno] " Abhinav Kumar
2022-02-17  3:44     ` Abhinav Kumar
2022-02-17  6:19     ` Vinod Koul
2022-02-17  6:19       ` Vinod Koul
2022-02-17  9:27   ` Marijn Suijten
2022-02-17  9:27     ` Marijn Suijten
2022-02-17 10:51     ` [Freedreno] " Vinod Koul
2022-02-17 10:51       ` Vinod Koul
2022-02-17 14:38       ` Marijn Suijten
2022-02-17 14:38         ` Marijn Suijten
2022-02-21  2:11   ` Dmitry Baryshkov
2022-02-21  2:11     ` Dmitry Baryshkov
2022-03-24 15:45     ` Vinod Koul
2022-03-24 15:45       ` Vinod Koul

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=f7c3f941-2fb8-e10a-bd5a-6031e6a52171@quicinc.com \
    --to=quic_abhinavk@quicinc.com \
    --cc=abhinavk@codeaurora.org \
    --cc=airlied@linux.ie \
    --cc=bjorn.andersson@linaro.org \
    --cc=dmitry.baryshkov@linaro.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=freedreno@lists.freedesktop.org \
    --cc=jonathan@marek.ca \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=robdclark@gmail.com \
    --cc=vkoul@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.