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
next prev parent 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: linkBe 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.