* [PATCH 0/2] Add dpi output format control for MT8186 @ 2022-07-01 3:15 xinlei.lee 2022-07-01 3:15 ` [PATCH 1/2] soc: mediatek: Add mmsys func to adapt to dpi output " xinlei.lee 2022-07-01 3:15 ` [PATCH 2/2] drm: mediatek: Adjust the dpi output format to MT8186 xinlei.lee 0 siblings, 2 replies; 5+ messages in thread From: xinlei.lee @ 2022-07-01 3:15 UTC (permalink / raw) To: chunkuang.hu, p.zabel, airlied, daniel, matthias.bgg, yongqiang.niu, enric.balletbo Cc: dri-devel, linux-mediatek, linux-arm-kernel, linux-kernel, Project_Global_Chrome_Upstream_Group, jitao.shi, Xinlei Lee From: Xinlei Lee <xinlei.lee@mediatek.com> Base on the branch of Linux-next/master. This series are based on the following patch: [1] Add MediaTek SoC(vdosys1) support for mt8195 https://patchwork.kernel.org/project/linux-mediatek/cover/20220622130824.29143-1-nancy.lin@mediatek.com/ When MT8186 outputs dpi signal, it is necessary to add dual edge output format control in mmsys. Xinlei Lee (2): soc: mediatek: Add mmsys func to adapt to dpi output for MT8186 drm: mediatek: Adjust the dpi output format to MT8186 drivers/gpu/drm/mediatek/mtk_dpi.c | 21 +++++++++++++++++++++ drivers/gpu/drm/mediatek/mtk_dpi_regs.h | 5 +++++ drivers/soc/mediatek/mt8186-mmsys.h | 1 + drivers/soc/mediatek/mtk-mmsys.c | 8 ++++++++ include/linux/soc/mediatek/mtk-mmsys.h | 2 ++ 5 files changed, 37 insertions(+) -- 2.18.0 ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 1/2] soc: mediatek: Add mmsys func to adapt to dpi output for MT8186 2022-07-01 3:15 [PATCH 0/2] Add dpi output format control for MT8186 xinlei.lee @ 2022-07-01 3:15 ` xinlei.lee 2022-07-06 14:20 ` Matthias Brugger 2022-07-01 3:15 ` [PATCH 2/2] drm: mediatek: Adjust the dpi output format to MT8186 xinlei.lee 1 sibling, 1 reply; 5+ messages in thread From: xinlei.lee @ 2022-07-01 3:15 UTC (permalink / raw) To: chunkuang.hu, p.zabel, airlied, daniel, matthias.bgg, yongqiang.niu, enric.balletbo Cc: dri-devel, linux-mediatek, linux-arm-kernel, linux-kernel, Project_Global_Chrome_Upstream_Group, jitao.shi, Xinlei Lee From: Xinlei Lee <xinlei.lee@mediatek.com> Add mmsys func to manipulate dpi output format config for MT8186. Signed-off-by: Jitao Shi <jitao.shi@mediatek.com> Signed-off-by: Xinlei Lee <xinlei.lee@mediatek.com> --- drivers/soc/mediatek/mt8186-mmsys.h | 1 + drivers/soc/mediatek/mtk-mmsys.c | 8 ++++++++ include/linux/soc/mediatek/mtk-mmsys.h | 2 ++ 3 files changed, 11 insertions(+) diff --git a/drivers/soc/mediatek/mt8186-mmsys.h b/drivers/soc/mediatek/mt8186-mmsys.h index eb1ad9c37a9c..0b450b00b829 100644 --- a/drivers/soc/mediatek/mt8186-mmsys.h +++ b/drivers/soc/mediatek/mt8186-mmsys.h @@ -3,6 +3,7 @@ #ifndef __SOC_MEDIATEK_MT8186_MMSYS_H #define __SOC_MEDIATEK_MT8186_MMSYS_H +#define MT8186_MMSYS_DUMMY0 0X400 #define MT8186_MMSYS_OVL_CON 0xF04 #define MT8186_MMSYS_OVL0_CON_MASK 0x3 #define MT8186_MMSYS_OVL0_2L_CON_MASK 0xC diff --git a/drivers/soc/mediatek/mtk-mmsys.c b/drivers/soc/mediatek/mtk-mmsys.c index 2b0b805c65dd..de3f11cb931f 100644 --- a/drivers/soc/mediatek/mtk-mmsys.c +++ b/drivers/soc/mediatek/mtk-mmsys.c @@ -252,6 +252,14 @@ void mtk_mmsys_ddp_disconnect(struct device *dev, } EXPORT_SYMBOL_GPL(mtk_mmsys_ddp_disconnect); +void mtk_mmsys_ddp_dpi_confing(struct device *dev, u32 mask, u32 val, + struct cmdq_pkt *cmdq_pkt) +{ + mtk_mmsys_update_bits(dev_get_drvdata(dev), MT8186_MMSYS_DUMMY0, mask, + val, cmdq_pkt); +} +EXPORT_SYMBOL_GPL(mtk_mmsys_ddp_dpi_confing); + void mtk_mmsys_merge_async_config(struct device *dev, int idx, int width, int height, struct cmdq_pkt *cmdq_pkt) { diff --git a/include/linux/soc/mediatek/mtk-mmsys.h b/include/linux/soc/mediatek/mtk-mmsys.h index 343e093f0fc3..40c538c0664b 100644 --- a/include/linux/soc/mediatek/mtk-mmsys.h +++ b/include/linux/soc/mediatek/mtk-mmsys.h @@ -90,4 +90,6 @@ void mtk_mmsys_mixer_in_config(struct device *dev, int idx, bool alpha_sel, u16 void mtk_mmsys_mixer_in_channel_swap(struct device *dev, int idx, bool channel_swap, struct cmdq_pkt *cmdq_pkt); +void mtk_mmsys_ddp_dpi_confing(struct device *dev, u32 mask, u32 val, + struct cmdq_pkt *cmdq_pkt); #endif /* __MTK_MMSYS_H */ -- 2.18.0 ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 1/2] soc: mediatek: Add mmsys func to adapt to dpi output for MT8186 2022-07-01 3:15 ` [PATCH 1/2] soc: mediatek: Add mmsys func to adapt to dpi output " xinlei.lee @ 2022-07-06 14:20 ` Matthias Brugger 0 siblings, 0 replies; 5+ messages in thread From: Matthias Brugger @ 2022-07-06 14:20 UTC (permalink / raw) To: xinlei.lee, chunkuang.hu, p.zabel, airlied, daniel, yongqiang.niu, enric.balletbo Cc: dri-devel, linux-mediatek, linux-arm-kernel, linux-kernel, Project_Global_Chrome_Upstream_Group, jitao.shi On 01/07/2022 05:15, xinlei.lee@mediatek.com wrote: > From: Xinlei Lee <xinlei.lee@mediatek.com> > > Add mmsys func to manipulate dpi output format config for MT8186. > > Signed-off-by: Jitao Shi <jitao.shi@mediatek.com> > Signed-off-by: Xinlei Lee <xinlei.lee@mediatek.com> > --- > drivers/soc/mediatek/mt8186-mmsys.h | 1 + > drivers/soc/mediatek/mtk-mmsys.c | 8 ++++++++ > include/linux/soc/mediatek/mtk-mmsys.h | 2 ++ > 3 files changed, 11 insertions(+) > > diff --git a/drivers/soc/mediatek/mt8186-mmsys.h b/drivers/soc/mediatek/mt8186-mmsys.h > index eb1ad9c37a9c..0b450b00b829 100644 > --- a/drivers/soc/mediatek/mt8186-mmsys.h > +++ b/drivers/soc/mediatek/mt8186-mmsys.h > @@ -3,6 +3,7 @@ > #ifndef __SOC_MEDIATEK_MT8186_MMSYS_H > #define __SOC_MEDIATEK_MT8186_MMSYS_H > > +#define MT8186_MMSYS_DUMMY0 0X400 I don't have access to the datasheet, but I really wonder if it's really called dummy0. If so, you would need to explain in more detail in the commit message. Regards, Matthias > #define MT8186_MMSYS_OVL_CON 0xF04 > #define MT8186_MMSYS_OVL0_CON_MASK 0x3 > #define MT8186_MMSYS_OVL0_2L_CON_MASK 0xC > diff --git a/drivers/soc/mediatek/mtk-mmsys.c b/drivers/soc/mediatek/mtk-mmsys.c > index 2b0b805c65dd..de3f11cb931f 100644 > --- a/drivers/soc/mediatek/mtk-mmsys.c > +++ b/drivers/soc/mediatek/mtk-mmsys.c > @@ -252,6 +252,14 @@ void mtk_mmsys_ddp_disconnect(struct device *dev, > } > EXPORT_SYMBOL_GPL(mtk_mmsys_ddp_disconnect); > > +void mtk_mmsys_ddp_dpi_confing(struct device *dev, u32 mask, u32 val, > + struct cmdq_pkt *cmdq_pkt) > +{ > + mtk_mmsys_update_bits(dev_get_drvdata(dev), MT8186_MMSYS_DUMMY0, mask, > + val, cmdq_pkt); > +} > +EXPORT_SYMBOL_GPL(mtk_mmsys_ddp_dpi_confing); > + > void mtk_mmsys_merge_async_config(struct device *dev, int idx, int width, int height, > struct cmdq_pkt *cmdq_pkt) > { > diff --git a/include/linux/soc/mediatek/mtk-mmsys.h b/include/linux/soc/mediatek/mtk-mmsys.h > index 343e093f0fc3..40c538c0664b 100644 > --- a/include/linux/soc/mediatek/mtk-mmsys.h > +++ b/include/linux/soc/mediatek/mtk-mmsys.h > @@ -90,4 +90,6 @@ void mtk_mmsys_mixer_in_config(struct device *dev, int idx, bool alpha_sel, u16 > void mtk_mmsys_mixer_in_channel_swap(struct device *dev, int idx, bool channel_swap, > struct cmdq_pkt *cmdq_pkt); > > +void mtk_mmsys_ddp_dpi_confing(struct device *dev, u32 mask, u32 val, > + struct cmdq_pkt *cmdq_pkt); > #endif /* __MTK_MMSYS_H */ ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 2/2] drm: mediatek: Adjust the dpi output format to MT8186 2022-07-01 3:15 [PATCH 0/2] Add dpi output format control for MT8186 xinlei.lee 2022-07-01 3:15 ` [PATCH 1/2] soc: mediatek: Add mmsys func to adapt to dpi output " xinlei.lee @ 2022-07-01 3:15 ` xinlei.lee 2022-07-01 6:33 ` Rex-BC Chen 1 sibling, 1 reply; 5+ messages in thread From: xinlei.lee @ 2022-07-01 3:15 UTC (permalink / raw) To: chunkuang.hu, p.zabel, airlied, daniel, matthias.bgg, yongqiang.niu, enric.balletbo Cc: dri-devel, linux-mediatek, linux-arm-kernel, linux-kernel, Project_Global_Chrome_Upstream_Group, jitao.shi, Xinlei Lee From: Xinlei Lee <xinlei.lee@mediatek.com> Dpi output needs to adjust the output format to dual edge for MT8186. Signed-off-by: Jitao Shi <jitao.shi@mediatek.com> Signed-off-by: Xinlei Lee <xinlei.lee@mediatek.com> --- drivers/gpu/drm/mediatek/mtk_dpi.c | 21 +++++++++++++++++++++ drivers/gpu/drm/mediatek/mtk_dpi_regs.h | 5 +++++ 2 files changed, 26 insertions(+) diff --git a/drivers/gpu/drm/mediatek/mtk_dpi.c b/drivers/gpu/drm/mediatek/mtk_dpi.c index e61cd67b978f..82a5209a1dd8 100644 --- a/drivers/gpu/drm/mediatek/mtk_dpi.c +++ b/drivers/gpu/drm/mediatek/mtk_dpi.c @@ -15,6 +15,7 @@ #include <linux/pinctrl/consumer.h> #include <linux/platform_device.h> #include <linux/types.h> +#include <linux/soc/mediatek/mtk-mmsys.h> #include <video/videomode.h> @@ -28,6 +29,7 @@ #include "mtk_disp_drv.h" #include "mtk_dpi_regs.h" #include "mtk_drm_ddp_comp.h" +#include "mtk_drm_drv.h" enum mtk_dpi_out_bit_num { MTK_DPI_OUT_BIT_NUM_8BITS, @@ -85,6 +87,7 @@ struct mtk_dpi { struct pinctrl_state *pins_dpi; u32 output_fmt; int refcount; + struct device *mmsys_dev; }; static inline struct mtk_dpi *bridge_to_dpi(struct drm_bridge *b) @@ -125,6 +128,7 @@ struct mtk_dpi_conf { bool edge_sel_en; const u32 *output_fmts; u32 num_output_fmts; + bool rgb888_dual_enable; }; static void mtk_dpi_mask(struct mtk_dpi *dpi, u32 offset, u32 val, u32 mask) @@ -393,6 +397,9 @@ static void mtk_dpi_dual_edge(struct mtk_dpi *dpi) mtk_dpi_mask(dpi, DPI_OUTPUT_SETTING, dpi->output_fmt == MEDIA_BUS_FMT_RGB888_2X12_LE ? EDGE_SEL : 0, EDGE_SEL); + if (dpi->conf->rgb888_dual_enable) + mtk_mmsys_ddp_dpi_confing(dpi->mmsys_dev, DPI_RGB888_DDR_CON, + DPI_FORMAT_MASK, NULL); } else { mtk_dpi_mask(dpi, DPI_DDR_SETTING, DDR_EN | DDR_4PHASE, 0); } @@ -705,8 +712,10 @@ static int mtk_dpi_bind(struct device *dev, struct device *master, void *data) { struct mtk_dpi *dpi = dev_get_drvdata(dev); struct drm_device *drm_dev = data; + struct mtk_drm_private *priv = drm_dev->dev_private; int ret; + dpi->mmsys_dev = priv->mmsys_dev; ret = drm_simple_encoder_init(drm_dev, &dpi->encoder, DRM_MODE_ENCODER_TMDS); if (ret) { @@ -823,6 +832,15 @@ static const struct mtk_dpi_conf mt8192_conf = { .num_output_fmts = ARRAY_SIZE(mt8183_output_fmts), }; +static const struct mtk_dpi_conf mt8186_conf = { + .cal_factor = mt8183_calculate_factor, + .reg_h_fre_con = 0xe0, + .max_clock_khz = 150000, + .output_fmts = mt8183_output_fmts, + .num_output_fmts = ARRAY_SIZE(mt8183_output_fmts), + .rgb888_dual_enable = true, +}; + static int mtk_dpi_probe(struct platform_device *pdev) { struct device *dev = &pdev->dev; @@ -945,6 +963,9 @@ static const struct of_device_id mtk_dpi_of_ids[] = { { .compatible = "mediatek,mt8192-dpi", .data = &mt8192_conf, }, + { .compatible = "mediatek,mt8186-dpi", + .data = &mt8186_conf, + }, { }, }; MODULE_DEVICE_TABLE(of, mtk_dpi_of_ids); diff --git a/drivers/gpu/drm/mediatek/mtk_dpi_regs.h b/drivers/gpu/drm/mediatek/mtk_dpi_regs.h index 3a02fabe1662..24d4cdf3696b 100644 --- a/drivers/gpu/drm/mediatek/mtk_dpi_regs.h +++ b/drivers/gpu/drm/mediatek/mtk_dpi_regs.h @@ -217,4 +217,9 @@ #define EDGE_SEL_EN BIT(5) #define H_FRE_2N BIT(25) + +#define DPI_FORMAT_MASK 0x1 +#define DPI_RGB888_DDR_CON BIT(0) +#define DPI_RGB565_SDR_CON BIT(1) + #endif /* __MTK_DPI_REGS_H */ -- 2.18.0 ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 2/2] drm: mediatek: Adjust the dpi output format to MT8186 2022-07-01 3:15 ` [PATCH 2/2] drm: mediatek: Adjust the dpi output format to MT8186 xinlei.lee @ 2022-07-01 6:33 ` Rex-BC Chen 0 siblings, 0 replies; 5+ messages in thread From: Rex-BC Chen @ 2022-07-01 6:33 UTC (permalink / raw) To: xinlei.lee, chunkuang.hu, p.zabel, airlied, daniel, matthias.bgg, yongqiang.niu, enric.balletbo Cc: dri-devel, linux-mediatek, linux-arm-kernel, linux-kernel, Project_Global_Chrome_Upstream_Group, jitao.shi On Fri, 2022-07-01 at 11:15 +0800, xinlei.lee@mediatek.com wrote: > From: Xinlei Lee <xinlei.lee@mediatek.com> > > Dpi output needs to adjust the output format to dual edge for MT8186. > > Signed-off-by: Jitao Shi <jitao.shi@mediatek.com> > Signed-off-by: Xinlei Lee <xinlei.lee@mediatek.com> > --- > drivers/gpu/drm/mediatek/mtk_dpi.c | 21 +++++++++++++++++++++ > drivers/gpu/drm/mediatek/mtk_dpi_regs.h | 5 +++++ > 2 files changed, 26 insertions(+) > > diff --git a/drivers/gpu/drm/mediatek/mtk_dpi.c > b/drivers/gpu/drm/mediatek/mtk_dpi.c > index e61cd67b978f..82a5209a1dd8 100644 > --- a/drivers/gpu/drm/mediatek/mtk_dpi.c > +++ b/drivers/gpu/drm/mediatek/mtk_dpi.c > @@ -15,6 +15,7 @@ > #include <linux/pinctrl/consumer.h> > #include <linux/platform_device.h> > #include <linux/types.h> > +#include <linux/soc/mediatek/mtk-mmsys.h> > Please reorder this. > #include <video/videomode.h> > > @@ -28,6 +29,7 @@ > #include "mtk_disp_drv.h" > #include "mtk_dpi_regs.h" > #include "mtk_drm_ddp_comp.h" > +#include "mtk_drm_drv.h" > > enum mtk_dpi_out_bit_num { > MTK_DPI_OUT_BIT_NUM_8BITS, > @@ -85,6 +87,7 @@ struct mtk_dpi { > struct pinctrl_state *pins_dpi; > u32 output_fmt; > int refcount; > + struct device *mmsys_dev; > }; > > static inline struct mtk_dpi *bridge_to_dpi(struct drm_bridge *b) > @@ -125,6 +128,7 @@ struct mtk_dpi_conf { > bool edge_sel_en; > const u32 *output_fmts; > u32 num_output_fmts; > + bool rgb888_dual_enable; > }; > > static void mtk_dpi_mask(struct mtk_dpi *dpi, u32 offset, u32 val, > u32 mask) > @@ -393,6 +397,9 @@ static void mtk_dpi_dual_edge(struct mtk_dpi > *dpi) > mtk_dpi_mask(dpi, DPI_OUTPUT_SETTING, > dpi->output_fmt == > MEDIA_BUS_FMT_RGB888_2X12_LE ? > EDGE_SEL : 0, EDGE_SEL); > + if (dpi->conf->rgb888_dual_enable) > + mtk_mmsys_ddp_dpi_confing(dpi->mmsys_dev, > DPI_RGB888_DDR_CON, > + DPI_FORMAT_MASK, NULL); > } else { > mtk_dpi_mask(dpi, DPI_DDR_SETTING, DDR_EN | DDR_4PHASE, > 0); > } > @@ -705,8 +712,10 @@ static int mtk_dpi_bind(struct device *dev, > struct device *master, void *data) > { > struct mtk_dpi *dpi = dev_get_drvdata(dev); > struct drm_device *drm_dev = data; > + struct mtk_drm_private *priv = drm_dev->dev_private; > int ret; > > + dpi->mmsys_dev = priv->mmsys_dev; > ret = drm_simple_encoder_init(drm_dev, &dpi->encoder, > DRM_MODE_ENCODER_TMDS); > if (ret) { > @@ -823,6 +832,15 @@ static const struct mtk_dpi_conf mt8192_conf = { > .num_output_fmts = ARRAY_SIZE(mt8183_output_fmts), > }; > > +static const struct mtk_dpi_conf mt8186_conf = { > + .cal_factor = mt8183_calculate_factor, > + .reg_h_fre_con = 0xe0, > + .max_clock_khz = 150000, > + .output_fmts = mt8183_output_fmts, > + .num_output_fmts = ARRAY_SIZE(mt8183_output_fmts), > + .rgb888_dual_enable = true, > +}; > + please put this between 8183 and 8192. > static int mtk_dpi_probe(struct platform_device *pdev) > { > struct device *dev = &pdev->dev; > @@ -945,6 +963,9 @@ static const struct of_device_id mtk_dpi_of_ids[] > = { > { .compatible = "mediatek,mt8192-dpi", > .data = &mt8192_conf, > }, > + { .compatible = "mediatek,mt8186-dpi", > + .data = &mt8186_conf, > + }, ditto > { }, > }; > MODULE_DEVICE_TABLE(of, mtk_dpi_of_ids); > diff --git a/drivers/gpu/drm/mediatek/mtk_dpi_regs.h > b/drivers/gpu/drm/mediatek/mtk_dpi_regs.h > index 3a02fabe1662..24d4cdf3696b 100644 > --- a/drivers/gpu/drm/mediatek/mtk_dpi_regs.h > +++ b/drivers/gpu/drm/mediatek/mtk_dpi_regs.h > @@ -217,4 +217,9 @@ > > #define EDGE_SEL_EN BIT(5) > #define H_FRE_2N BIT(25) > + > +#define DPI_FORMAT_MASK 0x1 > +#define DPI_RGB888_DDR_CON BIT(0) > +#define DPI_RGB565_SDR_CON BIT(1) > + > #endif /* __MTK_DPI_REGS_H */ ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2022-07-06 14:20 UTC | newest] Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2022-07-01 3:15 [PATCH 0/2] Add dpi output format control for MT8186 xinlei.lee 2022-07-01 3:15 ` [PATCH 1/2] soc: mediatek: Add mmsys func to adapt to dpi output " xinlei.lee 2022-07-06 14:20 ` Matthias Brugger 2022-07-01 3:15 ` [PATCH 2/2] drm: mediatek: Adjust the dpi output format to MT8186 xinlei.lee 2022-07-01 6:33 ` Rex-BC Chen
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®