All of lore.kernel.org
 help / color / mirror / Atom feed
From: Rex-BC Chen <rex-bc.chen@mediatek.com>
To: CK Hu <ck.hu@mediatek.com>
Cc: <chunkuang.hu@kernel.org>, <matthias.bgg@gmail.com>,
	<devicetree@vger.kernel.org>,
	<linux-arm-kernel@lists.infradead.org>,
	<linux-mediatek@lists.infradead.org>,
	<linux-kernel@vger.kernel.org>,
	<Project_Global_Chrome_Upstream_Group@mediatek.com>,
	Jitao Shi <jitao.shi@mediatek.com>
Subject: Re: [SPAM]Re: [SPAM][v2,PATCH 3/3] drm/mediatek: dpi: add bus format negotiation
Date: Thu, 29 Apr 2021 10:27:58 +0800	[thread overview]
Message-ID: <737326fb9699de6dcff3e655e8a1127a137f4750.camel@mediatek.com> (raw)
In-Reply-To: <1618907471.11505.2.camel@mtksdaap41>

On Tue, 2021-04-20 at 16:31 +0800, CK Hu wrote:
> Hi, Rex:
> 
> On Thu, 2021-04-15 at 14:14 +0800, Rex-BC Chen wrote:
> > On Thu, 2021-04-15 at 09:09 +0800, CK Hu wrote:
> > Hello CK,
> > > Hi, Rex:
> > > 
> > > On Wed, 2021-04-14 at 21:35 +0800, Rex-BC Chen wrote:
> > > > Add the atomic_get_output_bus_fmts, atomic_get_input_bus_fmts
> > > > to negotiate
> > > > the possible output and input formats for the current mode and
> > > > monitor,
> > > > and use the negotiated formats in a basic atomic_check
> > > > callback.
> > > > 
> > > > Signed-off-by: Jitao Shi <jitao.shi@mediatek.com>
> > > > Signed-off-by: Rex-BC Chen <rex-bc.chen@mediatek.com>
> > > > ---
> > > >  drivers/gpu/drm/mediatek/mtk_dpi.c | 89
> > > > ++++++++++++++++++++++++++++--
> > > >  1 file changed, 84 insertions(+), 5 deletions(-)
> > > > 
> > > > diff --git a/drivers/gpu/drm/mediatek/mtk_dpi.c
> > > > b/drivers/gpu/drm/mediatek/mtk_dpi.c
> > > > index 76431fe849b8..b4e9c6c8d706 100644
> > > > --- a/drivers/gpu/drm/mediatek/mtk_dpi.c
> > > > +++ b/drivers/gpu/drm/mediatek/mtk_dpi.c
> > > > @@ -536,6 +536,87 @@ static int mtk_dpi_set_display_mode(struct
> > > > mtk_dpi *dpi,
> > > >  	return 0;
> > > >  }
> > > >  
> > > > +#define MAX_OUTPUT_SEL_FORMATS	2
> > > > +
> > > > +static u32 *mtk_dpi_bridge_atomic_get_output_bus_fmts(struct
> > > > drm_bridge *bridge,
> > > > +					struct drm_bridge_state
> > > > *bridge_state,
> > > > +					struct drm_crtc_state
> > > > *crtc_state,
> > > > +					struct
> > > > drm_connector_state *conn_state,
> > > > +					unsigned int
> > > > *num_output_fmts)
> > > > +{
> > > > +	struct drm_display_mode *mode = &crtc_state->mode;
> > > > +	u32 *output_fmts;
> > > > +	struct mtk_dpi *dpi = bridge_to_dpi(bridge);
> > > > +
> > > > +	*num_output_fmts = 0;
> > > > +
> > > > +	output_fmts = kcalloc(MAX_OUTPUT_SEL_FORMATS,
> > > > sizeof(*output_fmts),
> > > > +			      GFP_KERNEL);
> > > > +	if (!output_fmts)
> > > > +		return NULL;
> > > > +
> > > > +	/* Default 8bit RGB fallback */
> > > > +	if (dpi->conf->dual_edge) {
> > > > +		output_fmts[0] =  MEDIA_BUS_FMT_RGB888_2X12_LE;
> > > > +		output_fmts[1] =  MEDIA_BUS_FMT_RGB888_2X12_BE;
> > > 
> > > MT8183 does not support MEDIA_BUS_FMT_RGB888_1X24?
> > > 
> > > Regards,
> > > CK
> > > 
> > 
> > Yes, MT8183 only support MEDIA_BUS_FMT_RGB888_1X24
> 
> I'm confused with this answer. dpi->conf->dual_edge is true only in
> mt8183, but you say 'MT8183 only support MEDIA_BUS_FMT_RGB888_1X24',
> your answer looks conflict with these code.
> 
> Regards,
> CK
> 
Hello CK,

Sorry for my typo.

Input format for DPI in MT8183 only supports MEDIA_BUS_FMT_RGB888_1X24.
Output format for DPI in MT8183 only supports
MEDIA_BUS_FMT_RGB888_2x12.

dpi->conf->dual_edge means output format.
So MT8183 only support
MEDIA_BUS_FMT_RGB888_2x12.

BRs,
Rex-BC
> > 
> > BRs,
> > Rex-BC
> > > > +		*num_output_fmts = 2;
> > > > +	} else {
> > > > +		output_fmts[0] =  MEDIA_BUS_FMT_RGB888_1X24;
> > > > +		*num_output_fmts = 1;
> > > > +	}
> > > > +
> > > > +	return output_fmts;
> > > > +}
> > > > +
> > > > +#define MAX_INPUT_SEL_FORMATS	1
> > > > +
> > > > +static u32 *mtk_dpi_bridge_atomic_get_input_bus_fmts(struct
> > > > drm_bridge *bridge,
> > > > +					struct drm_bridge_state
> > > > *bridge_state,
> > > > +					struct drm_crtc_state
> > > > *crtc_state,
> > > > +					struct
> > > > drm_connector_state *conn_state,
> > > > +					u32 output_fmt,
> > > > +					unsigned int
> > > > *num_input_fmts)
> > > > +{
> > > > +	u32 *input_fmts;
> > > > +
> > > > +	*num_input_fmts = 0;
> > > > +
> > > > +	input_fmts = kcalloc(MAX_INPUT_SEL_FORMATS,
> > > > sizeof(*input_fmts),
> > > > +			     GFP_KERNEL);
> > > > +	if (!input_fmts)
> > > > +		return NULL;
> > > > +
> > > > +	*num_input_fmts = 1;
> > > > +	input_fmts[0] = MEDIA_BUS_FMT_RGB888_1X24;
> > > > +
> > > > +	return input_fmts;
> > > > +}
> > > > +
> > > > +static int mtk_dpi_bridge_atomic_check(struct drm_bridge
> > > > *bridge,
> > > > +				       struct drm_bridge_state
> > > > *bridge_state,
> > > > +				       struct drm_crtc_state
> > > > *crtc_state,
> > > > +				       struct
> > > > drm_connector_state *conn_state)
> > > > +{
> > > > +	struct mtk_dpi *dpi = bridge->driver_private;
> > > > +	unsigned int out_bus_format;
> > > > +
> > > > +	out_bus_format = bridge_state->output_bus_cfg.format;
> > > > +
> > > > +	dev_dbg(dpi->dev, "input format 0x%04x, output format
> > > > 0x%04x\n",
> > > > +		bridge_state->input_bus_cfg.format,
> > > > +		bridge_state->output_bus_cfg.format);
> > > > +
> > > > +	dpi->ddr_edge_sel = (out_bus_format ==
> > > > MEDIA_BUS_FMT_RGB888_2X12_LE) ?
> > > > +		 		true : false;
> > > > +
> > > > +	dpi->bit_num = MTK_DPI_OUT_BIT_NUM_8BITS;
> > > > +	dpi->channel_swap = MTK_DPI_OUT_CHANNEL_SWAP_RGB;
> > > > +	dpi->yc_map = MTK_DPI_OUT_YC_MAP_RGB;
> > > > +	dpi->color_format = MTK_DPI_COLOR_FORMAT_RGB;
> > > > +
> > > > +	return 0;
> > > > +}
> > > > +
> > > >  static int mtk_dpi_bridge_attach(struct drm_bridge *bridge,
> > > >  				 enum drm_bridge_attach_flags
> > > > flags)
> > > >  {
> > > > @@ -574,6 +655,9 @@ static const struct drm_bridge_funcs
> > > > mtk_dpi_bridge_funcs = {
> > > >  	.mode_set = mtk_dpi_bridge_mode_set,
> > > >  	.disable = mtk_dpi_bridge_disable,
> > > >  	.enable = mtk_dpi_bridge_enable,
> > > > +	.atomic_check = mtk_dpi_bridge_atomic_check,
> > > > +	.atomic_get_output_bus_fmts =
> > > > mtk_dpi_bridge_atomic_get_output_bus_fmts,
> > > > +	.atomic_get_input_bus_fmts =
> > > > mtk_dpi_bridge_atomic_get_input_bus_fmts,
> > > >  };
> > > >  
> > > >  void mtk_dpi_start(struct device *dev)
> > > > @@ -620,11 +704,6 @@ static int mtk_dpi_bind(struct device
> > > > *dev, struct device *master, void *data)
> > > >  	}
> > > >  	drm_connector_attach_encoder(dpi->connector, &dpi-
> > > > >encoder);
> > > >  
> > > > -	dpi->bit_num = MTK_DPI_OUT_BIT_NUM_8BITS;
> > > > -	dpi->channel_swap = MTK_DPI_OUT_CHANNEL_SWAP_RGB;
> > > > -	dpi->yc_map = MTK_DPI_OUT_YC_MAP_RGB;
> > > > -	dpi->color_format = MTK_DPI_COLOR_FORMAT_RGB;
> > > > -
> > > >  	return 0;
> > > >  
> > > >  err_cleanup:
> > > 
> > > 
> > 
> > _______________________________________________
> > Linux-mediatek mailing list
> > Linux-mediatek@lists.infradead.org
> > 
https://urldefense.com/v3/__http://lists.infradead.org/mailman/listinfo/linux-mediatek__;!!CTRNKA9wMg0ARbw!wSbSRrRV87zBpi29W3qMJC0hPE5QwMj2oVUgPcq4538Poo-n0KFyM14woxJZbA$
> >  
> 
> 
_______________________________________________
Linux-mediatek mailing list
Linux-mediatek@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-mediatek

WARNING: multiple messages have this Message-ID (diff)
From: Rex-BC Chen <rex-bc.chen@mediatek.com>
To: CK Hu <ck.hu@mediatek.com>
Cc: <chunkuang.hu@kernel.org>, <matthias.bgg@gmail.com>,
	<devicetree@vger.kernel.org>,
	<linux-arm-kernel@lists.infradead.org>,
	<linux-mediatek@lists.infradead.org>,
	<linux-kernel@vger.kernel.org>,
	<Project_Global_Chrome_Upstream_Group@mediatek.com>,
	Jitao Shi <jitao.shi@mediatek.com>
Subject: Re: [SPAM]Re: [SPAM][v2,PATCH 3/3] drm/mediatek: dpi: add bus format negotiation
Date: Thu, 29 Apr 2021 10:27:58 +0800	[thread overview]
Message-ID: <737326fb9699de6dcff3e655e8a1127a137f4750.camel@mediatek.com> (raw)
In-Reply-To: <1618907471.11505.2.camel@mtksdaap41>

On Tue, 2021-04-20 at 16:31 +0800, CK Hu wrote:
> Hi, Rex:
> 
> On Thu, 2021-04-15 at 14:14 +0800, Rex-BC Chen wrote:
> > On Thu, 2021-04-15 at 09:09 +0800, CK Hu wrote:
> > Hello CK,
> > > Hi, Rex:
> > > 
> > > On Wed, 2021-04-14 at 21:35 +0800, Rex-BC Chen wrote:
> > > > Add the atomic_get_output_bus_fmts, atomic_get_input_bus_fmts
> > > > to negotiate
> > > > the possible output and input formats for the current mode and
> > > > monitor,
> > > > and use the negotiated formats in a basic atomic_check
> > > > callback.
> > > > 
> > > > Signed-off-by: Jitao Shi <jitao.shi@mediatek.com>
> > > > Signed-off-by: Rex-BC Chen <rex-bc.chen@mediatek.com>
> > > > ---
> > > >  drivers/gpu/drm/mediatek/mtk_dpi.c | 89
> > > > ++++++++++++++++++++++++++++--
> > > >  1 file changed, 84 insertions(+), 5 deletions(-)
> > > > 
> > > > diff --git a/drivers/gpu/drm/mediatek/mtk_dpi.c
> > > > b/drivers/gpu/drm/mediatek/mtk_dpi.c
> > > > index 76431fe849b8..b4e9c6c8d706 100644
> > > > --- a/drivers/gpu/drm/mediatek/mtk_dpi.c
> > > > +++ b/drivers/gpu/drm/mediatek/mtk_dpi.c
> > > > @@ -536,6 +536,87 @@ static int mtk_dpi_set_display_mode(struct
> > > > mtk_dpi *dpi,
> > > >  	return 0;
> > > >  }
> > > >  
> > > > +#define MAX_OUTPUT_SEL_FORMATS	2
> > > > +
> > > > +static u32 *mtk_dpi_bridge_atomic_get_output_bus_fmts(struct
> > > > drm_bridge *bridge,
> > > > +					struct drm_bridge_state
> > > > *bridge_state,
> > > > +					struct drm_crtc_state
> > > > *crtc_state,
> > > > +					struct
> > > > drm_connector_state *conn_state,
> > > > +					unsigned int
> > > > *num_output_fmts)
> > > > +{
> > > > +	struct drm_display_mode *mode = &crtc_state->mode;
> > > > +	u32 *output_fmts;
> > > > +	struct mtk_dpi *dpi = bridge_to_dpi(bridge);
> > > > +
> > > > +	*num_output_fmts = 0;
> > > > +
> > > > +	output_fmts = kcalloc(MAX_OUTPUT_SEL_FORMATS,
> > > > sizeof(*output_fmts),
> > > > +			      GFP_KERNEL);
> > > > +	if (!output_fmts)
> > > > +		return NULL;
> > > > +
> > > > +	/* Default 8bit RGB fallback */
> > > > +	if (dpi->conf->dual_edge) {
> > > > +		output_fmts[0] =  MEDIA_BUS_FMT_RGB888_2X12_LE;
> > > > +		output_fmts[1] =  MEDIA_BUS_FMT_RGB888_2X12_BE;
> > > 
> > > MT8183 does not support MEDIA_BUS_FMT_RGB888_1X24?
> > > 
> > > Regards,
> > > CK
> > > 
> > 
> > Yes, MT8183 only support MEDIA_BUS_FMT_RGB888_1X24
> 
> I'm confused with this answer. dpi->conf->dual_edge is true only in
> mt8183, but you say 'MT8183 only support MEDIA_BUS_FMT_RGB888_1X24',
> your answer looks conflict with these code.
> 
> Regards,
> CK
> 
Hello CK,

Sorry for my typo.

Input format for DPI in MT8183 only supports MEDIA_BUS_FMT_RGB888_1X24.
Output format for DPI in MT8183 only supports
MEDIA_BUS_FMT_RGB888_2x12.

dpi->conf->dual_edge means output format.
So MT8183 only support
MEDIA_BUS_FMT_RGB888_2x12.

BRs,
Rex-BC
> > 
> > BRs,
> > Rex-BC
> > > > +		*num_output_fmts = 2;
> > > > +	} else {
> > > > +		output_fmts[0] =  MEDIA_BUS_FMT_RGB888_1X24;
> > > > +		*num_output_fmts = 1;
> > > > +	}
> > > > +
> > > > +	return output_fmts;
> > > > +}
> > > > +
> > > > +#define MAX_INPUT_SEL_FORMATS	1
> > > > +
> > > > +static u32 *mtk_dpi_bridge_atomic_get_input_bus_fmts(struct
> > > > drm_bridge *bridge,
> > > > +					struct drm_bridge_state
> > > > *bridge_state,
> > > > +					struct drm_crtc_state
> > > > *crtc_state,
> > > > +					struct
> > > > drm_connector_state *conn_state,
> > > > +					u32 output_fmt,
> > > > +					unsigned int
> > > > *num_input_fmts)
> > > > +{
> > > > +	u32 *input_fmts;
> > > > +
> > > > +	*num_input_fmts = 0;
> > > > +
> > > > +	input_fmts = kcalloc(MAX_INPUT_SEL_FORMATS,
> > > > sizeof(*input_fmts),
> > > > +			     GFP_KERNEL);
> > > > +	if (!input_fmts)
> > > > +		return NULL;
> > > > +
> > > > +	*num_input_fmts = 1;
> > > > +	input_fmts[0] = MEDIA_BUS_FMT_RGB888_1X24;
> > > > +
> > > > +	return input_fmts;
> > > > +}
> > > > +
> > > > +static int mtk_dpi_bridge_atomic_check(struct drm_bridge
> > > > *bridge,
> > > > +				       struct drm_bridge_state
> > > > *bridge_state,
> > > > +				       struct drm_crtc_state
> > > > *crtc_state,
> > > > +				       struct
> > > > drm_connector_state *conn_state)
> > > > +{
> > > > +	struct mtk_dpi *dpi = bridge->driver_private;
> > > > +	unsigned int out_bus_format;
> > > > +
> > > > +	out_bus_format = bridge_state->output_bus_cfg.format;
> > > > +
> > > > +	dev_dbg(dpi->dev, "input format 0x%04x, output format
> > > > 0x%04x\n",
> > > > +		bridge_state->input_bus_cfg.format,
> > > > +		bridge_state->output_bus_cfg.format);
> > > > +
> > > > +	dpi->ddr_edge_sel = (out_bus_format ==
> > > > MEDIA_BUS_FMT_RGB888_2X12_LE) ?
> > > > +		 		true : false;
> > > > +
> > > > +	dpi->bit_num = MTK_DPI_OUT_BIT_NUM_8BITS;
> > > > +	dpi->channel_swap = MTK_DPI_OUT_CHANNEL_SWAP_RGB;
> > > > +	dpi->yc_map = MTK_DPI_OUT_YC_MAP_RGB;
> > > > +	dpi->color_format = MTK_DPI_COLOR_FORMAT_RGB;
> > > > +
> > > > +	return 0;
> > > > +}
> > > > +
> > > >  static int mtk_dpi_bridge_attach(struct drm_bridge *bridge,
> > > >  				 enum drm_bridge_attach_flags
> > > > flags)
> > > >  {
> > > > @@ -574,6 +655,9 @@ static const struct drm_bridge_funcs
> > > > mtk_dpi_bridge_funcs = {
> > > >  	.mode_set = mtk_dpi_bridge_mode_set,
> > > >  	.disable = mtk_dpi_bridge_disable,
> > > >  	.enable = mtk_dpi_bridge_enable,
> > > > +	.atomic_check = mtk_dpi_bridge_atomic_check,
> > > > +	.atomic_get_output_bus_fmts =
> > > > mtk_dpi_bridge_atomic_get_output_bus_fmts,
> > > > +	.atomic_get_input_bus_fmts =
> > > > mtk_dpi_bridge_atomic_get_input_bus_fmts,
> > > >  };
> > > >  
> > > >  void mtk_dpi_start(struct device *dev)
> > > > @@ -620,11 +704,6 @@ static int mtk_dpi_bind(struct device
> > > > *dev, struct device *master, void *data)
> > > >  	}
> > > >  	drm_connector_attach_encoder(dpi->connector, &dpi-
> > > > >encoder);
> > > >  
> > > > -	dpi->bit_num = MTK_DPI_OUT_BIT_NUM_8BITS;
> > > > -	dpi->channel_swap = MTK_DPI_OUT_CHANNEL_SWAP_RGB;
> > > > -	dpi->yc_map = MTK_DPI_OUT_YC_MAP_RGB;
> > > > -	dpi->color_format = MTK_DPI_COLOR_FORMAT_RGB;
> > > > -
> > > >  	return 0;
> > > >  
> > > >  err_cleanup:
> > > 
> > > 
> > 
> > _______________________________________________
> > Linux-mediatek mailing list
> > Linux-mediatek@lists.infradead.org
> > 
https://urldefense.com/v3/__http://lists.infradead.org/mailman/listinfo/linux-mediatek__;!!CTRNKA9wMg0ARbw!wSbSRrRV87zBpi29W3qMJC0hPE5QwMj2oVUgPcq4538Poo-n0KFyM14woxJZbA$
> >  
> 
> 
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2021-04-29  2:30 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-14 13:35 [v2,PATCH 0/3] mt8183 dpi supports dual edge Rex-BC Chen
2021-04-14 13:35 ` Rex-BC Chen
2021-04-14 13:35 ` Rex-BC Chen
2021-04-14 13:35 ` [v2,PATCH 1/3] drm/mediatek: dpi dual edge sample mode support Rex-BC Chen
2021-04-14 13:35   ` Rex-BC Chen
2021-04-14 13:35   ` Rex-BC Chen
2021-04-19  7:36   ` Neil Armstrong
2021-04-19  7:36     ` Neil Armstrong
2021-04-19  7:36     ` Neil Armstrong
2021-04-29  2:23     ` Rex-BC Chen
2021-04-29  2:23       ` Rex-BC Chen
2021-04-29  2:23       ` Rex-BC Chen
2021-04-14 13:35 ` [v2,PATCH 2/3] drm/mediatek: config mt8183 driver data to support dual edge sample Rex-BC Chen
2021-04-14 13:35   ` [v2, PATCH " Rex-BC Chen
2021-04-14 13:35   ` Rex-BC Chen
2021-04-14 13:35 ` [v2,PATCH 3/3] drm/mediatek: dpi: add bus format negotiation Rex-BC Chen
2021-04-14 13:35   ` Rex-BC Chen
2021-04-14 13:35   ` Rex-BC Chen
2021-04-15  1:09   ` [SPAM][v2,PATCH " CK Hu
2021-04-15  1:09     ` CK Hu
2021-04-15  6:14     ` Rex-BC Chen
2021-04-15  6:14       ` Rex-BC Chen
2021-04-20  8:31       ` [SPAM]Re: " CK Hu
2021-04-20  8:31         ` CK Hu
2021-04-29  2:27         ` Rex-BC Chen [this message]
2021-04-29  2:27           ` Rex-BC Chen
2021-04-19  7:38   ` [v2,PATCH " Neil Armstrong

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=737326fb9699de6dcff3e655e8a1127a137f4750.camel@mediatek.com \
    --to=rex-bc.chen@mediatek.com \
    --cc=Project_Global_Chrome_Upstream_Group@mediatek.com \
    --cc=chunkuang.hu@kernel.org \
    --cc=ck.hu@mediatek.com \
    --cc=devicetree@vger.kernel.org \
    --cc=jitao.shi@mediatek.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mediatek@lists.infradead.org \
    --cc=matthias.bgg@gmail.com \
    /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.