Decouple Mediatek DRM sub driver
Subsystems (3)
Chun-Kuang Hu
maintainercover Decouple Mediatek DRM sub driver
mtk ccorr is controlled by DRM and MDP [1]. In order to share mtk_ccorr driver for DRM and MDP, decouple Mediatek DRM sub driver which include mtk_ccorr, so MDP could use this decoupled mtk_ccorr.
[1] https://patchwork.kernel.org/patch/11140751/
CK Hu (9):
drm/mediatek: Move clk info from struct mtk_ddp_comp to sub driver
private data
drm/mediatek: Move regs info from struct mtk_ddp_comp to sub driver
private data
drm/mediatek: Remove irq in struct mtk_ddp_comp drm/mediatek: Use struct cmdq_client_reg to gather cmdq variable drm/mediatek: Move cmdq_reg info from struct mtk_ddp_comp to sub
driver private data
drm/mediatek: Change sub driver interface from mtk_ddp_comp to device drm/mediatek: Register vblank callback function drm/mediatek: DRM driver directly refer to sub driver's function drm/mediatek: Move mtk_ddp_comp_init() from sub driver to DRM driver
Chun-Kuang Hu (2):
drm/mediatek: Get CMDQ client register for all ddp component drm/mediatek: Use correct device pointer to get CMDQ client register
drivers/gpu/drm/mediatek/mtk_disp_color.c | 86 ++--- drivers/gpu/drm/mediatek/mtk_disp_drv.h | 69 ++++ drivers/gpu/drm/mediatek/mtk_disp_ovl.c | 215 ++++++----- drivers/gpu/drm/mediatek/mtk_disp_rdma.c | 169 +++++---- drivers/gpu/drm/mediatek/mtk_dpi.c | 44 +-- drivers/gpu/drm/mediatek/mtk_drm_crtc.c | 75 ++-- drivers/gpu/drm/mediatek/mtk_drm_crtc.h | 1 - drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c | 389 ++++++++++++-------- drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.h | 100 ++--- drivers/gpu/drm/mediatek/mtk_drm_drv.c | 30 +- drivers/gpu/drm/mediatek/mtk_drm_drv.h | 2 +- drivers/gpu/drm/mediatek/mtk_dsi.c | 47 +-- 12 files changed, 658 insertions(+), 569 deletions(-) create mode 100644 drivers/gpu/drm/mediatek/mtk_disp_drv.h
Signature · 1 line
2.17.1
Chun-Kuang Hu
maintainerPATCH 1/11 drm/mediatek: Get CMDQ client register for all ddp component
Only OVL, RDMA,and WDMA get CMDQ client register information, but all ddp component should work with CMDQ, so get this information for all ddp component.
--- drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c | 28 ++++++++++----------- 1 file changed, 14 insertions(+), 14 deletions(-)
drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c +14 -14
@@ -506,6 +506,20 @@ int mtk_ddp_comp_init(struct device *dev, struct device_node *node,if (IS_ERR (comp->clk))return PTR_ERR (comp->clk); +#if IS_REACHABLE (CONFIG_MTK_CMDQ ) +if (of_address_to_resource (node,0 , &res) !=0 ) { +dev_err (dev,"Missing reg in %s node\n" , node->full_name); +return -EINVAL ; + } + comp->regs_pa = res.start; + + ret =cmdq_dev_get_client_reg (dev, &cmdq_reg,0 ); +if (ret) +dev_dbg (dev,"get mediatek,gce-client-reg fail!\n" ); +else + comp->subsys = cmdq_reg.subsys; +#endif +/* Only DMA capable components need the LARB property */ comp->larb_dev =NULL ; if (type != MTK_DISP_OVL &&
@@ -531,20 +545,6 @@ int mtk_ddp_comp_init(struct device *dev, struct device_node *node, comp->larb_dev = &larb_pdev->dev; -#if IS_REACHABLE (CONFIG_MTK_CMDQ ) -if (of_address_to_resource (node,0 , &res) !=0 ) { -dev_err (dev,"Missing reg in %s node\n" , node->full_name); -put_device (&larb_pdev->dev); -return -EINVAL ; - } - comp->regs_pa = res.start; - - ret =cmdq_dev_get_client_reg (dev, &cmdq_reg,0 ); -if (ret) -dev_dbg (dev,"get mediatek,gce-client-reg fail!\n" ); -else - comp->subsys = cmdq_reg.subsys; -#endif return 0 ; }
Signature · 6 lines
2.17.1 _______________________________________________ dri-devel mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/dri-devel
Chun-Kuang Hu
maintainerPATCH 2/11 drm/mediatek: Use correct device pointer to get CMDQ client register
In reply to Chun-Kuang HuSome ddp component use mmsys device pointer to get CMDQ client register, this would get mmsys' CMDQ client register, so use each ddp component's device pointer to get.
--- drivers/gpu/drm/mediatek/mtk_disp_color.c | 2 +- drivers/gpu/drm/mediatek/mtk_disp_ovl.c | 2 +- drivers/gpu/drm/mediatek/mtk_disp_rdma.c | 2 +- drivers/gpu/drm/mediatek/mtk_dpi.c | 2 +- drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c | 14 +++++++++++--- drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.h | 5 ++--- drivers/gpu/drm/mediatek/mtk_drm_drv.c | 2 +- drivers/gpu/drm/mediatek/mtk_dsi.c | 2 +- 8 files changed, 19 insertions(+), 12 deletions(-)
drivers/gpu/drm/mediatek/mtk_disp_color.c +1 -1
@@ -116,7 +116,7 @@ static int mtk_disp_color_probe(struct platform_device *pdev)return comp_id; } - ret =mtk_ddp_comp_init (dev, dev->of_node, &priv->ddp_comp, comp_id, + ret =mtk_ddp_comp_init (dev->of_node, &priv->ddp_comp, comp_id, &mtk_disp_color_funcs);if (ret) {if (ret != -EPROBE_DEFER )
drivers/gpu/drm/mediatek/mtk_disp_ovl.c +1 -1
@@ -383,7 +383,7 @@ static int mtk_disp_ovl_probe(struct platform_device *pdev)return comp_id; } - ret =mtk_ddp_comp_init (dev, dev->of_node, &priv->ddp_comp, comp_id, + ret =mtk_ddp_comp_init (dev->of_node, &priv->ddp_comp, comp_id, &mtk_disp_ovl_funcs);if (ret) {if (ret != -EPROBE_DEFER )
drivers/gpu/drm/mediatek/mtk_disp_rdma.c +1 -1
@@ -291,7 +291,7 @@ static int mtk_disp_rdma_probe(struct platform_device *pdev)return comp_id; } - ret =mtk_ddp_comp_init (dev, dev->of_node, &priv->ddp_comp, comp_id, + ret =mtk_ddp_comp_init (dev->of_node, &priv->ddp_comp, comp_id, &mtk_disp_rdma_funcs);if (ret) {if (ret != -EPROBE_DEFER )
drivers/gpu/drm/mediatek/mtk_dpi.c +1 -1
@@ -784,7 +784,7 @@ static int mtk_dpi_probe(struct platform_device *pdev)return comp_id; } - ret =mtk_ddp_comp_init (dev, dev->of_node, &dpi->ddp_comp, comp_id, + ret =mtk_ddp_comp_init (dev->of_node, &dpi->ddp_comp, comp_id, &mtk_dpi_funcs);if (ret) {dev_err (dev,"Failed to initialize component: %d\n" , ret);
drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c +11 -3
@@ -465,10 +465,11 @@ unsigned int mtk_drm_find_possible_crtc_by_comp(struct drm_device *drm,return ret; } -int mtk_ddp_comp_init (struct device *dev,struct device_node *node, -struct mtk_ddp_comp *comp,enum mtk_ddp_comp_id comp_id, -const struct mtk_ddp_comp_funcs *funcs) +int mtk_ddp_comp_init (struct device_node *node,struct mtk_ddp_comp *comp, +enum mtk_ddp_comp_id comp_id,const struct mtk_ddp_comp_funcs *funcs) { +struct platform_device *comp_pdev; +struct device *dev;enum mtk_ddp_comp_type type;struct device_node *larb_node;struct platform_device *larb_pdev;
@@ -506,6 +507,13 @@ int mtk_ddp_comp_init(struct device *dev, struct device_node *node,if (IS_ERR (comp->clk))return PTR_ERR (comp->clk); + comp_pdev =of_find_device_by_node (node); +if (!comp_pdev) { +DRM_INFO ("Waiting for device %s\n" , node->full_name); +return -EPROBE_DEFER ; + } + dev = &comp_pdev->dev; +#if IS_REACHABLE (CONFIG_MTK_CMDQ )if (of_address_to_resource (node,0 , &res) !=0 ) {dev_err (dev,"Missing reg in %s node\n" , node->full_name);
drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.h +2 -3
@@ -204,9 +204,8 @@ int mtk_ddp_comp_get_id(struct device_node *node, enum mtk_ddp_comp_type comp_type);unsigned int mtk_drm_find_possible_crtc_by_comp (struct drm_device *drm,struct mtk_ddp_comp ddp_comp); -int mtk_ddp_comp_init (struct device *dev,struct device_node *comp_node, -struct mtk_ddp_comp *comp,enum mtk_ddp_comp_id comp_id, -const struct mtk_ddp_comp_funcs *funcs); +int mtk_ddp_comp_init (struct device_node *comp_node,struct mtk_ddp_comp *comp, +enum mtk_ddp_comp_id comp_id,const struct mtk_ddp_comp_funcs *funcs);int mtk_ddp_comp_register (struct drm_device *drm,struct mtk_ddp_comp *comp);void mtk_ddp_comp_unregister (struct drm_device *drm,struct mtk_ddp_comp *comp); void mtk_dither_set(struct mtk_ddp_comp *comp, unsigned int bpc,
drivers/gpu/drm/mediatek/mtk_drm_drv.c +1 -1
@@ -538,7 +538,7 @@ static int mtk_drm_probe(struct platform_device *pdev) goto err_node; } - ret =mtk_ddp_comp_init (dev->parent, node, comp, + ret =mtk_ddp_comp_init (node, comp, comp_id,NULL );if (ret) {of_node_put (node);
drivers/gpu/drm/mediatek/mtk_dsi.c +1 -1
@@ -1114,7 +1114,7 @@ static int mtk_dsi_probe(struct platform_device *pdev) goto err_unregister_host; } - ret =mtk_ddp_comp_init (dev, dev->of_node, &dsi->ddp_comp, comp_id, + ret =mtk_ddp_comp_init (dev->of_node, &dsi->ddp_comp, comp_id, &mtk_dsi_funcs);if (ret) {dev_err (dev,"Failed to initialize component: %d\n" , ret);
Signature · 6 lines
2.17.1 _______________________________________________ dri-devel mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/dri-devel
Chun-Kuang Hu
maintainerPATCH 3/11 drm/mediatek: Move clk info from struct mtk_ddp_comp to sub driver private data
In reply to Chun-Kuang HuFrom: CK Hu <[email protected]>
Some ddp component exist in both display path and other path, so data belonged to sub driver should be moved into sub driver private data so it could be used for multiple path. clk info is one of sub driver data, so move it.
--- drivers/gpu/drm/mediatek/mtk_disp_color.c | 23 +++++++ drivers/gpu/drm/mediatek/mtk_disp_ovl.c | 23 +++++++ drivers/gpu/drm/mediatek/mtk_disp_rdma.c | 23 +++++++ drivers/gpu/drm/mediatek/mtk_drm_crtc.c | 6 +- drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c | 70 +++++++++++++++++---- drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.h | 18 +++++- 6 files changed, 147 insertions(+), 16 deletions(-)
drivers/gpu/drm/mediatek/mtk_disp_color.c +23 -0
@@ -36,6 +36,7 @@ struct mtk_disp_color_data {struct mtk_disp_color {struct mtk_ddp_comp ddp_comp;struct drm_crtc *crtc; +struct clk *clk;const struct mtk_disp_color_data *data; };
@@ -44,6 +45,20 @@ static inline struct mtk_disp_color *comp_to_color(struct mtk_ddp_comp *comp) return container_of(comp, struct mtk_disp_color, ddp_comp); } +static int mtk_color_clk_enable (struct device *dev) +{ +struct mtk_disp_color *color =dev_get_drvdata (dev); + +return clk_prepare_enable (color->clk); +} + +static void mtk_color_clk_disable (struct device *dev) +{ +struct mtk_disp_color *color =dev_get_drvdata (dev); + +clk_disable_unprepare (color->clk); +} +static void mtk_color_config (struct mtk_ddp_comp *comp,unsigned int w,unsigned int h,unsigned int vrefresh,unsigned int bpc,struct cmdq_pkt *cmdq_pkt)
@@ -64,6 +79,8 @@ static void mtk_color_start(struct mtk_ddp_comp *comp) }static const struct mtk_ddp_comp_funcs mtk_disp_color_funcs = { + .clk_enable = mtk_color_clk_enable, + .clk_disable = mtk_color_clk_disable, .config = mtk_color_config, .start = mtk_color_start, };
@@ -110,6 +127,12 @@ static int mtk_disp_color_probe(struct platform_device *pdev)if (!priv)return -ENOMEM ; + priv->clk =devm_clk_get (dev,NULL ); +if (IS_ERR (priv->clk)) { +dev_err (dev,"failed to get color clk\n" ); +return PTR_ERR (priv->clk); + } + comp_id =mtk_ddp_comp_get_id (dev->of_node,MTK_DISP_COLOR );if (comp_id <0 ) {dev_err (dev,"Failed to identify by alias: %d\n" , comp_id);
drivers/gpu/drm/mediatek/mtk_disp_ovl.c +23 -0
@@ -71,6 +71,7 @@ struct mtk_disp_ovl_data {struct mtk_disp_ovl {struct mtk_ddp_comp ddp_comp;struct drm_crtc *crtc; +struct clk *clk;const struct mtk_disp_ovl_data *data; };
@@ -113,6 +114,20 @@ static void mtk_ovl_disable_vblank(struct mtk_ddp_comp *comp)writel_relaxed (0x0 , comp->regs +DISP_REG_OVL_INTEN ); } +static int mtk_ovl_clk_enable (struct device *dev) +{ +struct mtk_disp_ovl *ovl =dev_get_drvdata (dev); + +return clk_prepare_enable (ovl->clk); +} + +static void mtk_ovl_clk_disable (struct device *dev) +{ +struct mtk_disp_ovl *ovl =dev_get_drvdata (dev); + +clk_disable_unprepare (ovl->clk); +} +static void mtk_ovl_start (struct mtk_ddp_comp *comp) {writel_relaxed (0x1 , comp->regs +DISP_REG_OVL_EN );
@@ -312,6 +327,8 @@ static void mtk_ovl_bgclr_in_off(struct mtk_ddp_comp *comp) }static const struct mtk_ddp_comp_funcs mtk_disp_ovl_funcs = { + .clk_enable = mtk_ovl_clk_enable, + .clk_disable = mtk_ovl_clk_disable, .config = mtk_ovl_config, .start = mtk_ovl_start, .stop = mtk_ovl_stop,
@@ -372,6 +389,12 @@ static int mtk_disp_ovl_probe(struct platform_device *pdev)if (irq <0 )return irq; + priv->clk =devm_clk_get (dev,NULL ); +if (IS_ERR (priv->clk)) { +dev_err (dev,"failed to get ovl clk\n" ); +return PTR_ERR (priv->clk); + } + priv->data =of_device_get_match_data (dev); comp_id = mtk_ddp_comp_get_id(dev->of_node,
drivers/gpu/drm/mediatek/mtk_disp_rdma.c +23 -0
@@ -62,6 +62,7 @@ struct mtk_disp_rdma_data {struct mtk_disp_rdma {struct mtk_ddp_comp ddp_comp;struct drm_crtc *crtc; +struct clk *clk;const struct mtk_disp_rdma_data *data; };
@@ -113,6 +114,20 @@ static void mtk_rdma_disable_vblank(struct mtk_ddp_comp *comp)rdma_update_bits (comp,DISP_REG_RDMA_INT_ENABLE ,RDMA_FRAME_END_INT ,0 ); } +static int mtk_rdma_clk_enable (struct device *dev) +{ +struct mtk_disp_rdma *rdma =dev_get_drvdata (dev); + +return clk_prepare_enable (rdma->clk); +} + +static void mtk_rdma_clk_disable (struct device *dev) +{ +struct mtk_disp_rdma *rdma =dev_get_drvdata (dev); + +clk_disable_unprepare (rdma->clk); +} +static void mtk_rdma_start (struct mtk_ddp_comp *comp) { rdma_update_bits(comp, DISP_REG_RDMA_GLOBAL_CON, RDMA_ENGINE_EN,
@@ -228,6 +243,8 @@ static void mtk_rdma_layer_config(struct mtk_ddp_comp *comp, unsigned int idx, }static const struct mtk_ddp_comp_funcs mtk_disp_rdma_funcs = { + .clk_enable = mtk_rdma_clk_enable, + .clk_disable = mtk_rdma_clk_disable, .config = mtk_rdma_config, .start = mtk_rdma_start, .stop = mtk_rdma_stop,
@@ -285,6 +302,12 @@ static int mtk_disp_rdma_probe(struct platform_device *pdev)if (irq <0 )return irq; + priv->clk =devm_clk_get (dev,NULL ); +if (IS_ERR (priv->clk)) { +dev_err (dev,"failed to get rdma clk\n" ); +return PTR_ERR (priv->clk); + } + comp_id =mtk_ddp_comp_get_id (dev->of_node,MTK_DISP_RDMA );if (comp_id <0 ) {dev_err (dev,"Failed to identify by alias: %d\n" , comp_id);
drivers/gpu/drm/mediatek/mtk_drm_crtc.c +3 -3
@@ -190,7 +190,7 @@ static int mtk_crtc_ddp_clk_enable(struct mtk_drm_crtc *mtk_crtc)int i;for (i =0 ; i < mtk_crtc->ddp_comp_nr; i++) { - ret =clk_prepare_enable (mtk_crtc->ddp_comp[i]->clk); + ret =mtk_ddp_comp_clk_enable (mtk_crtc->ddp_comp[i]);if (ret) {DRM_ERROR ("Failed to enable clock %d: %d\n" , i, ret); goto err;
@@ -200,7 +200,7 @@ static int mtk_crtc_ddp_clk_enable(struct mtk_drm_crtc *mtk_crtc)return 0 ; err:while (--i >=0 ) -clk_disable_unprepare (mtk_crtc->ddp_comp[i]->clk); +mtk_ddp_comp_clk_disable (mtk_crtc->ddp_comp[i]);return ret; }
@@ -209,7 +209,7 @@ static void mtk_crtc_ddp_clk_disable(struct mtk_drm_crtc *mtk_crtc)int i;for (i =0 ; i < mtk_crtc->ddp_comp_nr; i++) -clk_disable_unprepare (mtk_crtc->ddp_comp[i]->clk); +mtk_ddp_comp_clk_disable (mtk_crtc->ddp_comp[i]); } static
drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c +58 -12
167 lines not on this page · raw message
drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.h +17 -1
@@ -71,6 +71,8 @@ enum mtk_ddp_comp_id {struct mtk_ddp_comp ;struct cmdq_pkt ;struct mtk_ddp_comp_funcs { +int (*clk_enable)(struct device *dev); +void (*clk_disable)(struct device *dev);void (*config)(struct mtk_ddp_comp *comp,unsigned int w,unsigned int h,unsigned int vrefresh,unsigned int bpc,struct cmdq_pkt *cmdq_pkt);
@@ -95,7 +97,7 @@ struct mtk_ddp_comp_funcs { };struct mtk_ddp_comp { -struct clk *clk; +struct device *dev;void __iomem *regs;int irq;struct device *larb_dev;
@@ -105,6 +107,20 @@ struct mtk_ddp_comp {u8 subsys; }; +static inline int mtk_ddp_comp_clk_enable (struct mtk_ddp_comp *comp) +{ +if (comp->funcs && comp->funcs->clk_enable) +return comp->funcs->clk_enable (comp->dev); + +return 0 ; +} + +static inline void mtk_ddp_comp_clk_disable (struct mtk_ddp_comp *comp) +{ +if (comp->funcs && comp->funcs->clk_disable) + comp->funcs->clk_disable (comp->dev); +} + static inline void mtk_ddp_comp_config(struct mtk_ddp_comp *comp, unsigned int w, unsigned int h, unsigned int vrefresh, unsigned int bpc,
Signature · 6 lines
2.17.1 _______________________________________________ dri-devel mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/dri-devel
Chun-Kuang Hu
maintainerPATCH 4/11 drm/mediatek: Move regs info from struct mtk_ddp_comp to sub driver private data
In reply to Chun-Kuang HuFrom: CK Hu <[email protected]>
Some ddp component exist in both display path and other path, so data belonged to sub driver should be moved into sub driver private data so it could be used for multiple path. regs info is one of sub driver data, so move it.
--- drivers/gpu/drm/mediatek/mtk_disp_color.c | 17 ++- drivers/gpu/drm/mediatek/mtk_disp_ovl.c | 67 +++++++---- drivers/gpu/drm/mediatek/mtk_disp_rdma.c | 42 ++++--- drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c | 121 +++++++++++++------- drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.h | 11 +- 5 files changed, 165 insertions(+), 93 deletions(-)
drivers/gpu/drm/mediatek/mtk_disp_color.c +13 -4
@@ -37,6 +37,7 @@ struct mtk_disp_color {struct mtk_ddp_comp ddp_comp;struct drm_crtc *crtc;struct clk *clk; +void __iomem *regs;const struct mtk_disp_color_data *data; };
@@ -65,8 +66,8 @@ static void mtk_color_config(struct mtk_ddp_comp *comp, unsigned int w, {struct mtk_disp_color *color =comp_to_color (comp); -mtk_ddp_write (cmdq_pkt, w, comp,DISP_COLOR_WIDTH (color)); -mtk_ddp_write (cmdq_pkt, h, comp,DISP_COLOR_HEIGHT (color)); +mtk_ddp_write (cmdq_pkt, w, comp, color->regs,DISP_COLOR_WIDTH (color)); +mtk_ddp_write (cmdq_pkt, h, comp, color->regs,DISP_COLOR_HEIGHT (color)); }static void mtk_color_start (struct mtk_ddp_comp *comp)
@@ -74,8 +75,8 @@ static void mtk_color_start(struct mtk_ddp_comp *comp)struct mtk_disp_color *color =comp_to_color (comp);writel (COLOR_BYPASS_ALL |COLOR_SEQ_SEL , - comp->regs +DISP_COLOR_CFG_MAIN ); -writel (0x1 , comp->regs +DISP_COLOR_START (color)); + color->regs +DISP_COLOR_CFG_MAIN ); +writel (0x1 , color->regs +DISP_COLOR_START (color)); }static const struct mtk_ddp_comp_funcs mtk_disp_color_funcs = {
@@ -120,6 +121,7 @@ static int mtk_disp_color_probe(struct platform_device *pdev) {struct device *dev = &pdev->dev;struct mtk_disp_color *priv; +struct resource *res;int comp_id;int ret;
@@ -133,6 +135,13 @@ static int mtk_disp_color_probe(struct platform_device *pdev)return PTR_ERR (priv->clk); } + res =platform_get_resource (pdev,IORESOURCE_MEM ,0 ); + priv->regs =devm_ioremap_resource (dev, res); +if (IS_ERR (priv->regs)) { +dev_err (dev,"failed to ioremap color\n" ); +return PTR_ERR (priv->regs); + } + comp_id =mtk_ddp_comp_get_id (dev->of_node,MTK_DISP_COLOR );if (comp_id <0 ) {dev_err (dev,"Failed to identify by alias: %d\n" , comp_id);
drivers/gpu/drm/mediatek/mtk_disp_ovl.c +43 -24
167 lines not on this page · raw message
drivers/gpu/drm/mediatek/mtk_disp_rdma.c +26 -16
110 lines not on this page · raw message
drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c +77 -44
291 lines not on this page · raw message
drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.h +6 -5
@@ -98,7 +98,6 @@ struct mtk_ddp_comp_funcs {struct mtk_ddp_comp {struct device *dev; -void __iomem *regs;int irq;struct device *larb_dev;enum mtk_ddp_comp_id id;
@@ -228,10 +227,12 @@ void mtk_dither_set(struct mtk_ddp_comp *comp, unsigned int bpc, unsigned int CFG, struct cmdq_pkt *cmdq_pkt);enum mtk_ddp_comp_type mtk_ddp_comp_get_type (enum mtk_ddp_comp_id comp_id);void mtk_ddp_write (struct cmdq_pkt *cmdq_pkt,unsigned int value, -struct mtk_ddp_comp *comp,unsigned int offset); +struct mtk_ddp_comp *comp,void __iomem *regs, +unsigned int offset);void mtk_ddp_write_relaxed (struct cmdq_pkt *cmdq_pkt,unsigned int value, -struct mtk_ddp_comp *comp,unsigned int offset); +struct mtk_ddp_comp *comp,void __iomem *regs, +unsigned int offset);void mtk_ddp_write_mask (struct cmdq_pkt *cmdq_pkt,unsigned int value, -struct mtk_ddp_comp *comp,unsigned int offset, -unsigned int mask); +struct mtk_ddp_comp *comp,void __iomem *regs, +unsigned int offset,unsigned int mask);#endif /* MTK_DRM_DDP_COMP_H */
Signature · 6 lines
2.17.1 _______________________________________________ dri-devel mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/dri-devel
Chun-Kuang Hu
maintainerPATCH 5/11 drm/mediatek: Remove irq in struct mtk_ddp_comp
In reply to Chun-Kuang HuFrom: CK Hu <[email protected]>
irq in struct mtk_ddp_comp is useless, so remove it.
--- drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c | 3 --- 1 file changed, 3 deletions(-)
drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c +0 -3
@@ -9,7 +9,6 @@#include <linux/clk.h> #include <linux/of.h> #include <linux/of_address.h> -#include <linux/of_irq.h> #include <linux/of_platform.h> #include <linux/platform_device.h> #include <linux/soc/mediatek/mtk-cmdq.h>
@@ -559,11 +558,9 @@ int mtk_ddp_comp_init(struct device_node *node, struct mtk_ddp_comp *comp, comp_id == DDP_COMPONENT_DSI2 || comp_id == DDP_COMPONENT_DSI3 || comp_id == DDP_COMPONENT_PWM0) { - comp->irq = 0;return 0 ; } - comp->irq =of_irq_get (node,0 ); comp_pdev =of_find_device_by_node (node);if (!comp_pdev) {DRM_INFO ("Waiting for device %s\n" , node->full_name);
Signature · 6 lines
2.17.1 _______________________________________________ dri-devel mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/dri-devel
Chun-Kuang Hu
maintainerPATCH 6/11 drm/mediatek: Use struct cmdq_client_reg to gather cmdq variable
In reply to Chun-Kuang HuFrom: CK Hu <[email protected]>
struct cmdq_client_reg include subsys and offset, so use it to replace these two variable.
--- drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c | 24 ++++++--------------- drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.h | 4 ++-- 2 files changed, 9 insertions(+), 19 deletions(-)
drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c +7 -17
@@ -96,8 +96,8 @@ void mtk_ddp_write(struct cmdq_pkt *cmdq_pkt, unsigned int value, {#if IS_REACHABLE (CONFIG_MTK_CMDQ )if (cmdq_pkt) -cmdq_pkt_write (cmdq_pkt, comp->subsys, - comp->regs_pa + offset, value); +cmdq_pkt_write (cmdq_pkt, comp->cmdq_reg.subsys, + comp->cmdq_reg.offset + offset, value); else#endif writel (value, regs + offset);
@@ -109,8 +109,8 @@ void mtk_ddp_write_relaxed(struct cmdq_pkt *cmdq_pkt, unsigned int value, {#if IS_REACHABLE (CONFIG_MTK_CMDQ )if (cmdq_pkt) -cmdq_pkt_write (cmdq_pkt, comp->subsys, - comp->regs_pa + offset, value); +cmdq_pkt_write (cmdq_pkt, comp->cmdq_reg.subsys, + comp->cmdq_reg.offset + offset, value); else#endif writel_relaxed (value, regs + offset);
@@ -122,8 +122,8 @@ void mtk_ddp_write_mask(struct cmdq_pkt *cmdq_pkt, unsigned int value, {#if IS_REACHABLE (CONFIG_MTK_CMDQ )if (cmdq_pkt) { -cmdq_pkt_write_mask (cmdq_pkt, comp->subsys, - comp->regs_pa + offset, value, mask); +cmdq_pkt_write_mask (cmdq_pkt, comp->cmdq_reg.subsys, + comp->cmdq_reg.offset + offset, value, mask); }else {#endif u32 tmp =readl (regs + offset);
@@ -537,8 +537,6 @@ int mtk_ddp_comp_init(struct device_node *node, struct mtk_ddp_comp *comp,struct platform_device *larb_pdev;struct mtk_ddp_comp_dev *priv;#if IS_REACHABLE (CONFIG_MTK_CMDQ ) -struct resource res; -struct cmdq_client_reg cmdq_reg;int ret;#endif
@@ -569,17 +567,9 @@ int mtk_ddp_comp_init(struct device_node *node, struct mtk_ddp_comp *comp, comp->dev = &comp_pdev->dev;#if IS_REACHABLE (CONFIG_MTK_CMDQ ) -if (of_address_to_resource (node,0 , &res) !=0 ) { -dev_err (comp->dev,"Missing reg in %s node\n" , node->full_name); -return -EINVAL ; - } - comp->regs_pa = res.start; - - ret =cmdq_dev_get_client_reg (comp->dev, &cmdq_reg,0 ); + ret =cmdq_dev_get_client_reg (comp->dev, &comp->cmdq_reg,0 );if (ret)dev_dbg (comp->dev,"get mediatek,gce-client-reg fail!\n" ); -else - comp->subsys = cmdq_reg.subsys;#endif if (comp_id == DDP_COMPONENT_COLOR0 ||
drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.h +2 -2
@@ -7,6 +7,7 @@#define MTK_DRM_DDP_COMP_H #include <linux/io.h> +#include <linux/soc/mediatek/mtk-cmdq.h> struct device ;struct device_node ;
@@ -102,8 +103,7 @@ struct mtk_ddp_comp {struct device *larb_dev;enum mtk_ddp_comp_id id;const struct mtk_ddp_comp_funcs *funcs; -resource_size_t regs_pa; -u8 subsys; +struct cmdq_client_reg cmdq_reg; };static inline int mtk_ddp_comp_clk_enable (struct mtk_ddp_comp *comp)
Signature · 6 lines
2.17.1 _______________________________________________ dri-devel mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/dri-devel
Chun-Kuang Hu
maintainerPATCH 7/11 drm/mediatek: Move cmdq_reg info from struct mtk_ddp_comp to sub driver private data
In reply to Chun-Kuang HuFrom: CK Hu <[email protected]>
Some ddp component exist in both display path and other path, so data belonged to sub driver should be moved into sub driver private data so it could be used for multiple path. cmdq_reg info is one of sub driver data, so move it.
--- drivers/gpu/drm/mediatek/mtk_disp_color.c | 10 ++- drivers/gpu/drm/mediatek/mtk_disp_ovl.c | 34 ++++++----- drivers/gpu/drm/mediatek/mtk_disp_rdma.c | 30 +++++---- drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c | 67 +++++++++++---------- drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.h | 7 +-- 5 files changed, 84 insertions(+), 64 deletions(-)
drivers/gpu/drm/mediatek/mtk_disp_color.c +8 -2
@@ -38,6 +38,7 @@ struct mtk_disp_color {struct drm_crtc *crtc;struct clk *clk;void __iomem *regs; +struct cmdq_client_reg cmdq_reg;const struct mtk_disp_color_data *data; };
@@ -66,8 +67,8 @@ static void mtk_color_config(struct mtk_ddp_comp *comp, unsigned int w, {struct mtk_disp_color *color =comp_to_color (comp); -mtk_ddp_write (cmdq_pkt, w, comp, color->regs,DISP_COLOR_WIDTH (color)); -mtk_ddp_write (cmdq_pkt, h, comp, color->regs,DISP_COLOR_HEIGHT (color)); +mtk_ddp_write (cmdq_pkt, w, &color->cmdq_reg, color->regs,DISP_COLOR_WIDTH (color)); +mtk_ddp_write (cmdq_pkt, h, &color->cmdq_reg, color->regs,DISP_COLOR_HEIGHT (color)); }static void mtk_color_start (struct mtk_ddp_comp *comp)
@@ -141,6 +142,11 @@ static int mtk_disp_color_probe(struct platform_device *pdev)dev_err (dev,"failed to ioremap color\n" );return PTR_ERR (priv->regs); } +#if IS_REACHABLE (CONFIG_MTK_CMDQ ) + ret =cmdq_dev_get_client_reg (dev, &priv->cmdq_reg,0 ); +if (ret) +dev_dbg (dev,"get mediatek,gce-client-reg fail!\n" ); +#endif comp_id =mtk_ddp_comp_get_id (dev->of_node,MTK_DISP_COLOR );if (comp_id <0 ) {
drivers/gpu/drm/mediatek/mtk_disp_ovl.c +20 -14
@@ -73,6 +73,7 @@ struct mtk_disp_ovl {struct drm_crtc *crtc;struct clk *clk;void __iomem *regs; +struct cmdq_client_reg cmdq_reg;const struct mtk_disp_ovl_data *data; };
@@ -150,12 +151,12 @@ static void mtk_ovl_config(struct mtk_ddp_comp *comp, unsigned int w,struct mtk_disp_ovl *ovl =dev_get_drvdata (comp->dev);if (w !=0 && h !=0 ) -mtk_ddp_write_relaxed (cmdq_pkt, h <<16 | w, comp, ovl->regs, +mtk_ddp_write_relaxed (cmdq_pkt, h <<16 | w, &ovl->cmdq_reg, ovl->regs,DISP_REG_OVL_ROI_SIZE ); -mtk_ddp_write_relaxed (cmdq_pkt,0x0 , comp, ovl->regs,DISP_REG_OVL_ROI_BGCLR ); +mtk_ddp_write_relaxed (cmdq_pkt,0x0 , &ovl->cmdq_reg, ovl->regs,DISP_REG_OVL_ROI_BGCLR ); -mtk_ddp_write (cmdq_pkt,0x1 , comp, ovl->regs,DISP_REG_OVL_RST ); -mtk_ddp_write (cmdq_pkt,0x0 , comp, ovl->regs,DISP_REG_OVL_RST ); +mtk_ddp_write (cmdq_pkt,0x1 , &ovl->cmdq_reg, ovl->regs,DISP_REG_OVL_RST ); +mtk_ddp_write (cmdq_pkt,0x0 , &ovl->cmdq_reg, ovl->regs,DISP_REG_OVL_RST ); }static unsigned int mtk_ovl_layer_nr (struct mtk_ddp_comp *comp)
@@ -207,7 +208,7 @@ static void mtk_ovl_layer_on(struct mtk_ddp_comp *comp, unsigned int idx,unsigned int gmc_value;struct mtk_disp_ovl *ovl =comp_to_ovl (comp); -mtk_ddp_write (cmdq_pkt,0x1 , comp, ovl->regs, +mtk_ddp_write (cmdq_pkt,0x1 , &ovl->cmdq_reg, ovl->regs,DISP_REG_OVL_RDMA_CTRL (idx)); gmc_thrshd_l =GMC_THRESHOLD_LOW >> (GMC_THRESHOLD_BITS - ovl->data->gmc_bits);
@@ -219,8 +220,8 @@ static void mtk_ovl_layer_on(struct mtk_ddp_comp *comp, unsigned int idx, gmc_value = gmc_thrshd_l | gmc_thrshd_l <<8 | gmc_thrshd_h <<16 | gmc_thrshd_h <<24 ;mtk_ddp_write (cmdq_pkt, gmc_value, - comp, ovl->regs,DISP_REG_OVL_RDMA_GMC (idx)); -mtk_ddp_write_mask (cmdq_pkt,BIT (idx), comp, ovl->regs, + &ovl->cmdq_reg, ovl->regs,DISP_REG_OVL_RDMA_GMC (idx)); +mtk_ddp_write_mask (cmdq_pkt,BIT (idx), &ovl->cmdq_reg, ovl->regs,DISP_REG_OVL_SRC_CON ,BIT (idx)); }
@@ -229,9 +230,9 @@ static void mtk_ovl_layer_off(struct mtk_ddp_comp *comp, unsigned int idx, {struct mtk_disp_ovl *ovl =dev_get_drvdata (comp->dev); -mtk_ddp_write_mask (cmdq_pkt,0 , comp, ovl->regs, +mtk_ddp_write_mask (cmdq_pkt,0 , &ovl->cmdq_reg, ovl->regs,DISP_REG_OVL_SRC_CON ,BIT (idx)); -mtk_ddp_write (cmdq_pkt,0 , comp, ovl->regs, +mtk_ddp_write (cmdq_pkt,0 , &ovl->cmdq_reg, ovl->regs,DISP_REG_OVL_RDMA_CTRL (idx)); }
@@ -303,15 +304,15 @@ static void mtk_ovl_layer_config(struct mtk_ddp_comp *comp, unsigned int idx, addr += pending->pitch -1 ; } -mtk_ddp_write_relaxed (cmdq_pkt, con, comp, ovl->regs, +mtk_ddp_write_relaxed (cmdq_pkt, con, &ovl->cmdq_reg, ovl->regs,DISP_REG_OVL_CON (idx)); -mtk_ddp_write_relaxed (cmdq_pkt, pitch, comp, ovl->regs, +mtk_ddp_write_relaxed (cmdq_pkt, pitch, &ovl->cmdq_reg, ovl->regs,DISP_REG_OVL_PITCH (idx)); -mtk_ddp_write_relaxed (cmdq_pkt, src_size, comp, ovl->regs, +mtk_ddp_write_relaxed (cmdq_pkt, src_size, &ovl->cmdq_reg, ovl->regs,DISP_REG_OVL_SRC_SIZE (idx)); -mtk_ddp_write_relaxed (cmdq_pkt, offset, comp, ovl->regs, +mtk_ddp_write_relaxed (cmdq_pkt, offset, &ovl->cmdq_reg, ovl->regs,DISP_REG_OVL_OFFSET (idx)); -mtk_ddp_write_relaxed (cmdq_pkt, addr, comp, ovl->regs, +mtk_ddp_write_relaxed (cmdq_pkt, addr, &ovl->cmdq_reg, ovl->regs,DISP_REG_OVL_ADDR (ovl, idx));mtk_ovl_layer_on (comp, idx, cmdq_pkt);
@@ -413,6 +414,11 @@ static int mtk_disp_ovl_probe(struct platform_device *pdev)dev_err (dev,"failed to ioremap ovl\n" );return PTR_ERR (priv->regs); } +#if IS_REACHABLE (CONFIG_MTK_CMDQ ) + ret =cmdq_dev_get_client_reg (dev, &priv->cmdq_reg,0 ); +if (ret) +dev_dbg (dev,"get mediatek,gce-client-reg fail!\n" ); +#endif priv->data =of_device_get_match_data (dev);
drivers/gpu/drm/mediatek/mtk_disp_rdma.c +19 -11
@@ -64,6 +64,7 @@ struct mtk_disp_rdma {struct drm_crtc *crtc;struct clk *clk;void __iomem *regs; +struct cmdq_client_reg cmdq_reg;const struct mtk_disp_rdma_data *data; };
@@ -149,9 +150,9 @@ static void mtk_rdma_config(struct mtk_ddp_comp *comp, unsigned int width,unsigned int reg;struct mtk_disp_rdma *rdma =comp_to_rdma (comp); -mtk_ddp_write_mask (cmdq_pkt, width, comp, rdma->regs, +mtk_ddp_write_mask (cmdq_pkt, width, &rdma->cmdq_reg, rdma->regs,DISP_REG_RDMA_SIZE_CON_0 ,0xfff ); -mtk_ddp_write_mask (cmdq_pkt, height, comp, rdma->regs, +mtk_ddp_write_mask (cmdq_pkt, height, &rdma->cmdq_reg, rdma->regs,DISP_REG_RDMA_SIZE_CON_1 ,0xfffff );/*
@@ -164,7 +165,7 @@ static void mtk_rdma_config(struct mtk_ddp_comp *comp, unsigned int width, reg =RDMA_FIFO_UNDERFLOW_EN |RDMA_FIFO_PSEUDO_SIZE (RDMA_FIFO_SIZE (rdma)) |RDMA_OUTPUT_VALID_FIFO_THRESHOLD (threshold); -mtk_ddp_write (cmdq_pkt, reg, comp, rdma->regs,DISP_REG_RDMA_FIFO_CON ); +mtk_ddp_write (cmdq_pkt, reg, &rdma->cmdq_reg, rdma->regs,DISP_REG_RDMA_FIFO_CON ); } static unsigned int rdma_fmt_convert(struct mtk_disp_rdma *rdma,
@@ -221,25 +222,27 @@ static void mtk_rdma_layer_config(struct mtk_ddp_comp *comp, unsigned int idx,unsigned int con; con =rdma_fmt_convert (rdma, fmt); -mtk_ddp_write_relaxed (cmdq_pkt, con, comp, rdma->regs,DISP_RDMA_MEM_CON ); +mtk_ddp_write_relaxed (cmdq_pkt, con, &rdma->cmdq_reg, rdma->regs,DISP_RDMA_MEM_CON );if (fmt ==DRM_FORMAT_UYVY || fmt ==DRM_FORMAT_YUYV ) { -mtk_ddp_write_mask (cmdq_pkt,RDMA_MATRIX_ENABLE , comp, rdma->regs, +mtk_ddp_write_mask (cmdq_pkt,RDMA_MATRIX_ENABLE , &rdma->cmdq_reg, rdma->regs,DISP_REG_RDMA_SIZE_CON_0 ,RDMA_MATRIX_ENABLE );mtk_ddp_write_mask (cmdq_pkt, RDMA_MATRIX_INT_MTX_BT601_to_RGB, - comp, rdma->regs,DISP_REG_RDMA_SIZE_CON_0 , + &rdma->cmdq_reg, rdma->regs,DISP_REG_RDMA_SIZE_CON_0 ,RDMA_MATRIX_INT_MTX_SEL ); }else { -mtk_ddp_write_mask (cmdq_pkt,0 , comp, rdma->regs, +mtk_ddp_write_mask (cmdq_pkt,0 , &rdma->cmdq_reg, rdma->regs,DISP_REG_RDMA_SIZE_CON_0 ,RDMA_MATRIX_ENABLE ); } -mtk_ddp_write_relaxed (cmdq_pkt, addr, comp, rdma->regs,DISP_RDMA_MEM_START_ADDR ); -mtk_ddp_write_relaxed (cmdq_pkt, pitch, comp, rdma->regs,DISP_RDMA_MEM_SRC_PITCH ); -mtk_ddp_write (cmdq_pkt,RDMA_MEM_GMC , comp, rdma->regs, +mtk_ddp_write_relaxed (cmdq_pkt, addr, &rdma->cmdq_reg, rdma->regs, +DISP_RDMA_MEM_START_ADDR ); +mtk_ddp_write_relaxed (cmdq_pkt, pitch, &rdma->cmdq_reg, rdma->regs, +DISP_RDMA_MEM_SRC_PITCH ); +mtk_ddp_write (cmdq_pkt,RDMA_MEM_GMC , &rdma->cmdq_reg, rdma->regs,DISP_RDMA_MEM_GMC_SETTING_0 ); -mtk_ddp_write_mask (cmdq_pkt,RDMA_MODE_MEMORY , comp, rdma->regs, +mtk_ddp_write_mask (cmdq_pkt,RDMA_MODE_MEMORY , &rdma->cmdq_reg, rdma->regs,DISP_REG_RDMA_GLOBAL_CON ,RDMA_MODE_MEMORY ); }
@@ -317,6 +320,11 @@ static int mtk_disp_rdma_probe(struct platform_device *pdev)dev_err (dev,"failed to ioremap rdma\n" );return PTR_ERR (priv->regs); } +#if IS_REACHABLE (CONFIG_MTK_CMDQ ) + ret =cmdq_dev_get_client_reg (dev, &priv->cmdq_reg,0 ); +if (ret) +dev_dbg (dev,"get mediatek,gce-client-reg fail!\n" ); +#endif comp_id =mtk_ddp_comp_get_id (dev->of_node,MTK_DISP_RDMA );if (comp_id <0 ) {
drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c +34 -33
167 lines not on this page · raw message
drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.h +3 -4
@@ -103,7 +103,6 @@ struct mtk_ddp_comp {struct device *larb_dev;enum mtk_ddp_comp_id id;const struct mtk_ddp_comp_funcs *funcs; -struct cmdq_client_reg cmdq_reg; };static inline int mtk_ddp_comp_clk_enable (struct mtk_ddp_comp *comp)
@@ -227,12 +226,12 @@ void mtk_dither_set(struct mtk_ddp_comp *comp, unsigned int bpc, unsigned int CFG, struct cmdq_pkt *cmdq_pkt);enum mtk_ddp_comp_type mtk_ddp_comp_get_type (enum mtk_ddp_comp_id comp_id);void mtk_ddp_write (struct cmdq_pkt *cmdq_pkt,unsigned int value, -struct mtk_ddp_comp *comp,void __iomem *regs, +struct cmdq_client_reg *cmdq_reg,void __iomem *regs,unsigned int offset);void mtk_ddp_write_relaxed (struct cmdq_pkt *cmdq_pkt,unsigned int value, -struct mtk_ddp_comp *comp,void __iomem *regs, +struct cmdq_client_reg *cmdq_reg,void __iomem *regs,unsigned int offset);void mtk_ddp_write_mask (struct cmdq_pkt *cmdq_pkt,unsigned int value, -struct mtk_ddp_comp *comp,void __iomem *regs, +struct cmdq_client_reg *cmdq_reg,void __iomem *regs,unsigned int offset,unsigned int mask);#endif /* MTK_DRM_DDP_COMP_H */
Signature · 6 lines
2.17.1 _______________________________________________ dri-devel mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/dri-devel
Chun-Kuang Hu
maintainerPATCH 8/11 drm/mediatek: Change sub driver interface from mtk_ddp_comp to device
In reply to Chun-Kuang HuFrom: CK Hu <[email protected]>
Some ddp component exist in both display path and other path, so sub driver interface should get rid of display info. Using device instead of mtk_ddp_comp make interface general.
--- drivers/gpu/drm/mediatek/mtk_disp_color.c | 13 +-- drivers/gpu/drm/mediatek/mtk_disp_ovl.c | 57 +++++------ drivers/gpu/drm/mediatek/mtk_disp_rdma.c | 39 ++++---- drivers/gpu/drm/mediatek/mtk_dpi.c | 8 +- drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c | 100 ++++++++++---------- drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.h | 54 +++++------ drivers/gpu/drm/mediatek/mtk_dsi.c | 8 +- 7 files changed, 129 insertions(+), 150 deletions(-)
drivers/gpu/drm/mediatek/mtk_disp_color.c +4 -9
@@ -42,11 +42,6 @@ struct mtk_disp_color {const struct mtk_disp_color_data *data; }; -static inline struct mtk_disp_color *comp_to_color (struct mtk_ddp_comp *comp) -{ - return container_of(comp, struct mtk_disp_color, ddp_comp); -} -static int mtk_color_clk_enable (struct device *dev) {struct mtk_disp_color *color =dev_get_drvdata (dev);
@@ -61,19 +56,19 @@ static void mtk_color_clk_disable(struct device *dev)clk_disable_unprepare (color->clk); } -static void mtk_color_config (struct mtk_ddp_comp *comp,unsigned int w, +static void mtk_color_config (struct device *dev,unsigned int w,unsigned int h,unsigned int vrefresh,unsigned int bpc,struct cmdq_pkt *cmdq_pkt) { -struct mtk_disp_color *color =comp_to_color (comp); +struct mtk_disp_color *color =dev_get_drvdata (dev);mtk_ddp_write (cmdq_pkt, w, &color->cmdq_reg, color->regs,DISP_COLOR_WIDTH (color));mtk_ddp_write (cmdq_pkt, h, &color->cmdq_reg, color->regs,DISP_COLOR_HEIGHT (color)); } -static void mtk_color_start (struct mtk_ddp_comp *comp) +static void mtk_color_start (struct device *dev) { -struct mtk_disp_color *color =comp_to_color (comp); +struct mtk_disp_color *color =dev_get_drvdata (dev);writel (COLOR_BYPASS_ALL |COLOR_SEQ_SEL , color->regs +DISP_COLOR_CFG_MAIN );
drivers/gpu/drm/mediatek/mtk_disp_ovl.c +26 -31
163 lines not on this page · raw message
drivers/gpu/drm/mediatek/mtk_disp_rdma.c +17 -22
@@ -68,11 +68,6 @@ struct mtk_disp_rdma {const struct mtk_disp_rdma_data *data; }; -static inline struct mtk_disp_rdma *comp_to_rdma (struct mtk_ddp_comp *comp) -{ - return container_of(comp, struct mtk_disp_rdma, ddp_comp); -} -static irqreturn_t mtk_disp_rdma_irq_handler (int irq,void *dev_id) {struct mtk_disp_rdma *priv = dev_id;
@@ -89,32 +84,32 @@ static irqreturn_t mtk_disp_rdma_irq_handler(int irq, void *dev_id)return IRQ_HANDLED ; } -static void rdma_update_bits (struct mtk_ddp_comp *comp,unsigned int reg, +static void rdma_update_bits (struct device *dev,unsigned int reg,unsigned int mask,unsigned int val) { -struct mtk_disp_rdma *rdma =dev_get_drvdata (comp->dev); +struct mtk_disp_rdma *rdma =dev_get_drvdata (dev);unsigned int tmp =readl (rdma->regs + reg); tmp = (tmp & ~mask) | (val & mask);writel (tmp, rdma->regs + reg); } -static void mtk_rdma_enable_vblank (struct mtk_ddp_comp *comp, +static void mtk_rdma_enable_vblank (struct device *dev,struct drm_crtc *crtc) { -struct mtk_disp_rdma *rdma =comp_to_rdma (comp); +struct mtk_disp_rdma *rdma =dev_get_drvdata (dev); rdma->crtc = crtc; -rdma_update_bits (comp,DISP_REG_RDMA_INT_ENABLE ,RDMA_FRAME_END_INT , +rdma_update_bits (dev,DISP_REG_RDMA_INT_ENABLE ,RDMA_FRAME_END_INT ,RDMA_FRAME_END_INT ); } -static void mtk_rdma_disable_vblank (struct mtk_ddp_comp *comp) +static void mtk_rdma_disable_vblank (struct device *dev) { -struct mtk_disp_rdma *rdma =comp_to_rdma (comp); +struct mtk_disp_rdma *rdma =dev_get_drvdata (dev); rdma->crtc =NULL ; -rdma_update_bits (comp,DISP_REG_RDMA_INT_ENABLE ,RDMA_FRAME_END_INT ,0 ); +rdma_update_bits (dev,DISP_REG_RDMA_INT_ENABLE ,RDMA_FRAME_END_INT ,0 ); }static int mtk_rdma_clk_enable (struct device *dev)
@@ -131,24 +126,24 @@ static void mtk_rdma_clk_disable(struct device *dev)clk_disable_unprepare (rdma->clk); } -static void mtk_rdma_start (struct mtk_ddp_comp *comp) +static void mtk_rdma_start (struct device *dev) { -rdma_update_bits (comp,DISP_REG_RDMA_GLOBAL_CON ,RDMA_ENGINE_EN , +rdma_update_bits (dev,DISP_REG_RDMA_GLOBAL_CON ,RDMA_ENGINE_EN ,RDMA_ENGINE_EN ); } -static void mtk_rdma_stop (struct mtk_ddp_comp *comp) +static void mtk_rdma_stop (struct device *dev) { -rdma_update_bits (comp,DISP_REG_RDMA_GLOBAL_CON ,RDMA_ENGINE_EN ,0 ); +rdma_update_bits (dev,DISP_REG_RDMA_GLOBAL_CON ,RDMA_ENGINE_EN ,0 ); } -static void mtk_rdma_config (struct mtk_ddp_comp *comp,unsigned int width, +static void mtk_rdma_config (struct device *dev,unsigned int width,unsigned int height,unsigned int vrefresh,unsigned int bpc,struct cmdq_pkt *cmdq_pkt) {unsigned int threshold;unsigned int reg; -struct mtk_disp_rdma *rdma =comp_to_rdma (comp); +struct mtk_disp_rdma *rdma =dev_get_drvdata (dev);mtk_ddp_write_mask (cmdq_pkt, width, &rdma->cmdq_reg, rdma->regs,DISP_REG_RDMA_SIZE_CON_0 ,0xfff );
@@ -205,16 +200,16 @@ static unsigned int rdma_fmt_convert(struct mtk_disp_rdma *rdma, } } -static unsigned int mtk_rdma_layer_nr (struct mtk_ddp_comp *comp) +static unsigned int mtk_rdma_layer_nr (struct device *dev) {return 1 ; } -static void mtk_rdma_layer_config (struct mtk_ddp_comp *comp,unsigned int idx, +static void mtk_rdma_layer_config (struct device *dev,unsigned int idx,struct mtk_plane_state *state,struct cmdq_pkt *cmdq_pkt) { -struct mtk_disp_rdma *rdma =comp_to_rdma (comp); +struct mtk_disp_rdma *rdma =dev_get_drvdata (dev);struct mtk_plane_pending_state *pending = &state->pending;unsigned int addr = pending->addr;unsigned int pitch = pending->pitch &0xffff ;
drivers/gpu/drm/mediatek/mtk_dpi.c +4 -4
@@ -571,16 +571,16 @@ static const struct drm_bridge_funcs mtk_dpi_bridge_funcs = { .enable = mtk_dpi_bridge_enable, }; -static void mtk_dpi_start (struct mtk_ddp_comp *comp) +static void mtk_dpi_start (struct device *dev) { - struct mtk_dpi *dpi = container_of(comp, struct mtk_dpi, ddp_comp); +struct mtk_dpi *dpi =dev_get_drvdata (dev);mtk_dpi_power_on (dpi); } -static void mtk_dpi_stop (struct mtk_ddp_comp *comp) +static void mtk_dpi_stop (struct device *dev) { - struct mtk_dpi *dpi = container_of(comp, struct mtk_dpi, ddp_comp); +struct mtk_dpi *dpi =dev_get_drvdata (dev);mtk_dpi_power_off (dpi); }
drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c +48 -52
230 lines not on this page · raw message
drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.h +26 -28
146 lines not on this page · raw message
drivers/gpu/drm/mediatek/mtk_dsi.c +4 -4
@@ -784,16 +784,16 @@ static const struct drm_bridge_funcs mtk_dsi_bridge_funcs = { .mode_set = mtk_dsi_bridge_mode_set, }; -static void mtk_dsi_ddp_start (struct mtk_ddp_comp *comp) +static void mtk_dsi_ddp_start (struct device *dev) { - struct mtk_dsi *dsi = container_of(comp, struct mtk_dsi, ddp_comp); +struct mtk_dsi *dsi =dev_get_drvdata (dev);mtk_dsi_poweron (dsi); } -static void mtk_dsi_ddp_stop (struct mtk_ddp_comp *comp) +static void mtk_dsi_ddp_stop (struct device *dev) { - struct mtk_dsi *dsi = container_of(comp, struct mtk_dsi, ddp_comp); +struct mtk_dsi *dsi =dev_get_drvdata (dev);mtk_dsi_poweroff (dsi); }
Signature · 6 lines
2.17.1 _______________________________________________ dri-devel mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/dri-devel
Chun-Kuang Hu
maintainerPATCH 9/11 drm/mediatek: Register vblank callback function
In reply to Chun-Kuang HuFrom: CK Hu <[email protected]>
Some ddp component exist in both display path and other path, so sub driver should not directly call crtc function. crtc register callback function to sub driver to prevent sub driver directly call crtc function.
--- drivers/gpu/drm/mediatek/mtk_disp_ovl.c | 16 +++-- drivers/gpu/drm/mediatek/mtk_disp_rdma.c | 17 +++--- drivers/gpu/drm/mediatek/mtk_drm_crtc.c | 67 +++++++++++---------- drivers/gpu/drm/mediatek/mtk_drm_crtc.h | 1 - drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.h | 9 ++- 5 files changed, 60 insertions(+), 50 deletions(-)
drivers/gpu/drm/mediatek/mtk_disp_ovl.c +10 -6
@@ -75,30 +75,33 @@ struct mtk_disp_ovl {void __iomem *regs;struct cmdq_client_reg cmdq_reg;const struct mtk_disp_ovl_data *data; +void (*vblank_cb)(void *data); +void *vblank_cb_data; };static irqreturn_t mtk_disp_ovl_irq_handler (int irq,void *dev_id) {struct mtk_disp_ovl *priv = dev_id; -struct mtk_ddp_comp *ovl = &priv->ddp_comp;/* Clear frame completion interrupt */ writel (0x0 , priv->regs +DISP_REG_OVL_INTSTA ); -if (!priv->crtc) +if (!priv->vblank_cb)return IRQ_NONE ; -mtk_crtc_ddp_irq (priv->crtc, ovl); + priv->vblank_cb (priv->vblank_cb_data);return IRQ_HANDLED ; }static void mtk_ovl_enable_vblank (struct device *dev, -struct drm_crtc *crtc) +void (*vblank_cb)(void *), +void *vblank_cb_data) {struct mtk_disp_ovl *ovl =dev_get_drvdata (dev); - ovl->crtc = crtc; + ovl->vblank_cb = vblank_cb; + ovl->vblank_cb_data = vblank_cb_data;writel (0x0 , ovl->regs +DISP_REG_OVL_INTSTA );writel_relaxed (OVL_FME_CPL_INT , ovl->regs +DISP_REG_OVL_INTEN ); }
@@ -107,7 +110,8 @@ static void mtk_ovl_disable_vblank(struct device *dev) {struct mtk_disp_ovl *ovl =dev_get_drvdata (dev); - ovl->crtc =NULL ; + ovl->vblank_cb =NULL ; + ovl->vblank_cb_data =NULL ;writel_relaxed (0x0 , ovl->regs +DISP_REG_OVL_INTEN ); }
drivers/gpu/drm/mediatek/mtk_disp_rdma.c +10 -7
@@ -61,25 +61,25 @@ struct mtk_disp_rdma_data {*/ struct mtk_disp_rdma {struct mtk_ddp_comp ddp_comp; -struct drm_crtc *crtc;struct clk *clk;void __iomem *regs;struct cmdq_client_reg cmdq_reg;const struct mtk_disp_rdma_data *data; +void (*vblank_cb)(void *data); +void *vblank_cb_data; };static irqreturn_t mtk_disp_rdma_irq_handler (int irq,void *dev_id) {struct mtk_disp_rdma *priv = dev_id; -struct mtk_ddp_comp *rdma = &priv->ddp_comp;/* Clear frame completion interrupt */ writel (0x0 , priv->regs +DISP_REG_RDMA_INT_STATUS ); -if (!priv->crtc) +if (!priv->vblank_cb)return IRQ_NONE ; -mtk_crtc_ddp_irq (priv->crtc, rdma); + priv->vblank_cb (priv->vblank_cb_data);return IRQ_HANDLED ; }
@@ -95,11 +95,13 @@ static void rdma_update_bits(struct device *dev, unsigned int reg, }static void mtk_rdma_enable_vblank (struct device *dev, -struct drm_crtc *crtc) +void (*vblank_cb)(void *), +void *vblank_cb_data) {struct mtk_disp_rdma *rdma =dev_get_drvdata (dev); - rdma->crtc = crtc; + rdma->vblank_cb = vblank_cb; + rdma->vblank_cb_data = vblank_cb_data;rdma_update_bits (dev,DISP_REG_RDMA_INT_ENABLE ,RDMA_FRAME_END_INT ,RDMA_FRAME_END_INT ); }
@@ -108,7 +110,8 @@ static void mtk_rdma_disable_vblank(struct device *dev) {struct mtk_disp_rdma *rdma =dev_get_drvdata (dev); - rdma->crtc =NULL ; + rdma->vblank_cb =NULL ; + rdma->vblank_cb_data =NULL ;rdma_update_bits (dev,DISP_REG_RDMA_INT_ENABLE ,RDMA_FRAME_END_INT ,0 ); }
drivers/gpu/drm/mediatek/mtk_drm_crtc.c +34 -33
85 lines not on this page · raw message
drivers/gpu/drm/mediatek/mtk_drm_crtc.h +0 -1
@@ -15,7 +15,6 @@#define MTK_MIN_BPC 3void mtk_drm_crtc_commit (struct drm_crtc *crtc); -void mtk_crtc_ddp_irq (struct drm_crtc *crtc,struct mtk_ddp_comp *comp);int mtk_drm_crtc_create (struct drm_device *drm_dev,const enum mtk_ddp_comp_id *path,unsigned int path_len);
drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.h +6 -3
@@ -79,7 +79,9 @@ struct mtk_ddp_comp_funcs { unsigned int bpc, struct cmdq_pkt *cmdq_pkt);void (*start)(struct device *dev);void (*stop)(struct device *dev); -void (*enable_vblank)(struct device *dev,struct drm_crtc *crtc); +void (*enable_vblank)(struct device *dev, +void (*vblank_cb)(void *), +void *vblank_cb_data);void (*disable_vblank)(struct device *dev);unsigned int (*supported_rotations)(struct device *dev);unsigned int (*layer_nr)(struct device *dev);
@@ -141,10 +143,11 @@ static inline void mtk_ddp_comp_stop(struct mtk_ddp_comp *comp) }static inline void mtk_ddp_comp_enable_vblank (struct mtk_ddp_comp *comp, -struct drm_crtc *crtc) +void (*vblank_cb)(void *), +void *vblank_cb_data) {if (comp->funcs && comp->funcs->enable_vblank) - comp->funcs->enable_vblank (comp->dev, crtc); + comp->funcs->enable_vblank (comp->dev, vblank_cb, vblank_cb_data); }static inline void mtk_ddp_comp_disable_vblank (struct mtk_ddp_comp *comp)
Signature · 6 lines
2.17.1 _______________________________________________ dri-devel mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/dri-devel
Chun-Kuang Hu
maintainerPATCH 10/11 drm/mediatek: DRM driver directly refer to sub driver's function
In reply to Chun-Kuang HuFrom: CK Hu <[email protected]>
Some ddp component exist in both display path and other path, so sub driver should not directly call DRM driver's function. Let DRM driver directly refer to sub driver's function so that sub driver need not register these function to DRM driver.
--- drivers/gpu/drm/mediatek/mtk_disp_color.c | 23 +++--- drivers/gpu/drm/mediatek/mtk_disp_drv.h | 69 ++++++++++++++++++ drivers/gpu/drm/mediatek/mtk_disp_ovl.c | 68 +++++++----------- drivers/gpu/drm/mediatek/mtk_disp_rdma.c | 46 +++++------- drivers/gpu/drm/mediatek/mtk_dpi.c | 13 ++-- drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c | 80 ++++++++++++++++----- drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.h | 2 +- drivers/gpu/drm/mediatek/mtk_drm_drv.c | 3 +- drivers/gpu/drm/mediatek/mtk_dsi.c | 13 ++-- 9 files changed, 193 insertions(+), 124 deletions(-) create mode 100644 drivers/gpu/drm/mediatek/mtk_disp_drv.h
drivers/gpu/drm/mediatek/mtk_disp_color.c +8 -15
@@ -11,6 +11,7 @@#include <linux/platform_device.h> #include <linux/soc/mediatek/mtk-cmdq.h> +#include "mtk_disp_drv.h" #include "mtk_drm_crtc.h" #include "mtk_drm_ddp_comp.h"
@@ -42,23 +43,23 @@ struct mtk_disp_color {const struct mtk_disp_color_data *data; }; -static int mtk_color_clk_enable (struct device *dev) +int mtk_color_clk_enable (struct device *dev) {struct mtk_disp_color *color =dev_get_drvdata (dev);return clk_prepare_enable (color->clk); } -static void mtk_color_clk_disable (struct device *dev) +void mtk_color_clk_disable (struct device *dev) {struct mtk_disp_color *color =dev_get_drvdata (dev);clk_disable_unprepare (color->clk); } -static void mtk_color_config (struct device *dev,unsigned int w, -unsigned int h,unsigned int vrefresh, -unsigned int bpc,struct cmdq_pkt *cmdq_pkt) +void mtk_color_config (struct device *dev,unsigned int w, +unsigned int h,unsigned int vrefresh, +unsigned int bpc,struct cmdq_pkt *cmdq_pkt) {struct mtk_disp_color *color =dev_get_drvdata (dev);
@@ -66,7 +67,7 @@ static void mtk_color_config(struct device *dev, unsigned int w,mtk_ddp_write (cmdq_pkt, h, &color->cmdq_reg, color->regs,DISP_COLOR_HEIGHT (color)); } -static void mtk_color_start (struct device *dev) +void mtk_color_start (struct device *dev) {struct mtk_disp_color *color =dev_get_drvdata (dev);
@@ -75,13 +76,6 @@ static void mtk_color_start(struct device *dev)writel (0x1 , color->regs +DISP_COLOR_START (color)); } -static const struct mtk_ddp_comp_funcs mtk_disp_color_funcs = { - .clk_enable = mtk_color_clk_enable, - .clk_disable = mtk_color_clk_disable, - .config = mtk_color_config, - .start = mtk_color_start, -}; -static int mtk_disp_color_bind (struct device *dev,struct device *master,void *data) {
@@ -149,8 +143,7 @@ static int mtk_disp_color_probe(struct platform_device *pdev)return comp_id; } - ret =mtk_ddp_comp_init (dev->of_node, &priv->ddp_comp, comp_id, - &mtk_disp_color_funcs); + ret =mtk_ddp_comp_init (dev->of_node, &priv->ddp_comp, comp_id);if (ret) {if (ret != -EPROBE_DEFER ) dev_err(dev, "Failed to initialize component: %d\n",
drivers/gpu/drm/mediatek/mtk_disp_drv.h new file +69 -0
69 lines not on this page · raw message
drivers/gpu/drm/mediatek/mtk_disp_ovl.c +26 -42
175 lines not on this page · raw message
drivers/gpu/drm/mediatek/mtk_disp_rdma.c +17 -29
113 lines not on this page · raw message
drivers/gpu/drm/mediatek/mtk_dpi.c +4 -9
@@ -24,6 +24,7 @@#include <drm/drm_of.h> #include <drm/drm_simple_kms_helper.h> +#include "mtk_disp_drv.h" #include "mtk_dpi_regs.h" #include "mtk_drm_ddp_comp.h"
@@ -571,25 +572,20 @@ static const struct drm_bridge_funcs mtk_dpi_bridge_funcs = { .enable = mtk_dpi_bridge_enable, }; -static void mtk_dpi_start (struct device *dev) +void mtk_dpi_start (struct device *dev) {struct mtk_dpi *dpi =dev_get_drvdata (dev);mtk_dpi_power_on (dpi); } -static void mtk_dpi_stop (struct device *dev) +void mtk_dpi_stop (struct device *dev) {struct mtk_dpi *dpi =dev_get_drvdata (dev);mtk_dpi_power_off (dpi); } -static const struct mtk_ddp_comp_funcs mtk_dpi_funcs = { - .start = mtk_dpi_start, - .stop = mtk_dpi_stop, -}; -static int mtk_dpi_bind (struct device *dev,struct device *master,void *data) {struct mtk_dpi *dpi =dev_get_drvdata (dev);
@@ -784,8 +780,7 @@ static int mtk_dpi_probe(struct platform_device *pdev)return comp_id; } - ret =mtk_ddp_comp_init (dev->of_node, &dpi->ddp_comp, comp_id, - &mtk_dpi_funcs); + ret =mtk_ddp_comp_init (dev->of_node, &dpi->ddp_comp, comp_id);if (ret) {dev_err (dev,"Failed to initialize component: %d\n" , ret);return ret;
drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c +63 -17
129 lines not on this page · raw message
drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.h +1 -1
@@ -222,7 +222,7 @@ int mtk_ddp_comp_get_id(struct device_node *node,unsigned int mtk_drm_find_possible_crtc_by_comp (struct drm_device *drm,struct mtk_ddp_comp ddp_comp);int mtk_ddp_comp_init (struct device_node *comp_node,struct mtk_ddp_comp *comp, -enum mtk_ddp_comp_id comp_id,const struct mtk_ddp_comp_funcs *funcs); +enum mtk_ddp_comp_id comp_id);int mtk_ddp_comp_register (struct drm_device *drm,struct mtk_ddp_comp *comp);void mtk_ddp_comp_unregister (struct drm_device *drm,struct mtk_ddp_comp *comp);enum mtk_ddp_comp_type mtk_ddp_comp_get_type (enum mtk_ddp_comp_id comp_id);
drivers/gpu/drm/mediatek/mtk_drm_drv.c +1 -2
@@ -538,8 +538,7 @@ static int mtk_drm_probe(struct platform_device *pdev) goto err_node; } - ret =mtk_ddp_comp_init (node, comp, - comp_id,NULL ); + ret =mtk_ddp_comp_init (node, comp, comp_id);if (ret) {of_node_put (node); goto err_node;
drivers/gpu/drm/mediatek/mtk_dsi.c +4 -9
@@ -25,6 +25,7 @@#include <drm/drm_probe_helper.h> #include <drm/drm_simple_kms_helper.h> +#include "mtk_disp_drv.h" #include "mtk_drm_ddp_comp.h" #define DSI_START 0x00
@@ -784,25 +785,20 @@ static const struct drm_bridge_funcs mtk_dsi_bridge_funcs = { .mode_set = mtk_dsi_bridge_mode_set, }; -static void mtk_dsi_ddp_start (struct device *dev) +void mtk_dsi_ddp_start (struct device *dev) {struct mtk_dsi *dsi =dev_get_drvdata (dev);mtk_dsi_poweron (dsi); } -static void mtk_dsi_ddp_stop (struct device *dev) +void mtk_dsi_ddp_stop (struct device *dev) {struct mtk_dsi *dsi =dev_get_drvdata (dev);mtk_dsi_poweroff (dsi); } -static const struct mtk_ddp_comp_funcs mtk_dsi_funcs = { - .start = mtk_dsi_ddp_start, - .stop = mtk_dsi_ddp_stop, -}; -static int mtk_dsi_host_attach (struct mipi_dsi_host *host,struct mipi_dsi_device *device) {
@@ -1114,8 +1110,7 @@ static int mtk_dsi_probe(struct platform_device *pdev) goto err_unregister_host; } - ret =mtk_ddp_comp_init (dev->of_node, &dsi->ddp_comp, comp_id, - &mtk_dsi_funcs); + ret =mtk_ddp_comp_init (dev->of_node, &dsi->ddp_comp, comp_id);if (ret) {dev_err (dev,"Failed to initialize component: %d\n" , ret); goto err_unregister_host;
Signature · 6 lines
2.17.1 _______________________________________________ dri-devel mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/dri-devel
Chun-Kuang Hu
maintainerPATCH 11/11 drm/mediatek: Move mtk_ddp_comp_init() from sub driver to DRM driver
In reply to Chun-Kuang HuFrom: CK Hu <[email protected]>
Some ddp component exist in both display path and other path, so sub driver should not directly call DRM driver's function. Moving mtk_ddp_comp_init() from sub driver to DRM driver to achieve this.
--- drivers/gpu/drm/mediatek/mtk_disp_color.c | 32 ----------------- drivers/gpu/drm/mediatek/mtk_disp_ovl.c | 36 ------------------- drivers/gpu/drm/mediatek/mtk_disp_rdma.c | 32 ----------------- drivers/gpu/drm/mediatek/mtk_dpi.c | 29 ++-------------- drivers/gpu/drm/mediatek/mtk_drm_crtc.c | 2 +- drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c | 38 ++++++--------------- drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.h | 4 +-- drivers/gpu/drm/mediatek/mtk_drm_drv.c | 29 +++++----------- drivers/gpu/drm/mediatek/mtk_drm_drv.h | 2 +- drivers/gpu/drm/mediatek/mtk_dsi.c | 32 +---------------- 10 files changed, 25 insertions(+), 211 deletions(-)
drivers/gpu/drm/mediatek/mtk_disp_color.c +0 -32
@@ -35,7 +35,6 @@ struct mtk_disp_color_data {* @crtc - associated crtc to report irq events to */ struct mtk_disp_color { -struct mtk_ddp_comp ddp_comp;struct drm_crtc *crtc;struct clk *clk;void __iomem *regs;
@@ -79,27 +78,12 @@ void mtk_color_start(struct device *dev)static int mtk_disp_color_bind (struct device *dev,struct device *master,void *data) { -struct mtk_disp_color *priv =dev_get_drvdata (dev); -struct drm_device *drm_dev = data; -int ret; - - ret =mtk_ddp_comp_register (drm_dev, &priv->ddp_comp); -if (ret <0 ) { -dev_err (dev,"Failed to register component %pOF: %d\n" , - dev->of_node, ret); -return ret; - } -return 0 ; }static void mtk_disp_color_unbind (struct device *dev,struct device *master,void *data) { -struct mtk_disp_color *priv =dev_get_drvdata (dev); -struct drm_device *drm_dev = data; - -mtk_ddp_comp_unregister (drm_dev, &priv->ddp_comp); }static const struct component_ops mtk_disp_color_component_ops = {
@@ -112,7 +96,6 @@ static int mtk_disp_color_probe(struct platform_device *pdev)struct device *dev = &pdev->dev;struct mtk_disp_color *priv;struct resource *res; -int comp_id;int ret; priv =devm_kzalloc (dev,sizeof (*priv),GFP_KERNEL );
@@ -137,21 +120,6 @@ static int mtk_disp_color_probe(struct platform_device *pdev)dev_dbg (dev,"get mediatek,gce-client-reg fail!\n" );#endif - comp_id =mtk_ddp_comp_get_id (dev->of_node,MTK_DISP_COLOR ); -if (comp_id <0 ) { -dev_err (dev,"Failed to identify by alias: %d\n" , comp_id); -return comp_id; - } - - ret =mtk_ddp_comp_init (dev->of_node, &priv->ddp_comp, comp_id); -if (ret) { -if (ret != -EPROBE_DEFER ) -dev_err (dev,"Failed to initialize component: %d\n" , - ret); - -return ret; - } - priv->data =of_device_get_match_data (dev);platform_set_drvdata (pdev, priv);
drivers/gpu/drm/mediatek/mtk_disp_ovl.c +0 -36
@@ -70,7 +70,6 @@ struct mtk_disp_ovl_data {* @crtc - associated crtc to report vblank events to */ struct mtk_disp_ovl { -struct mtk_ddp_comp ddp_comp;struct drm_crtc *crtc;struct clk *clk;void __iomem *regs;
@@ -341,27 +340,12 @@ void mtk_ovl_bgclr_in_off(struct device *dev)static int mtk_disp_ovl_bind (struct device *dev,struct device *master,void *data) { -struct mtk_disp_ovl *priv =dev_get_drvdata (dev); -struct drm_device *drm_dev = data; -int ret; - - ret =mtk_ddp_comp_register (drm_dev, &priv->ddp_comp); -if (ret <0 ) { -dev_err (dev,"Failed to register component %pOF: %d\n" , - dev->of_node, ret); -return ret; - } -return 0 ; }static void mtk_disp_ovl_unbind (struct device *dev,struct device *master,void *data) { -struct mtk_disp_ovl *priv =dev_get_drvdata (dev); -struct drm_device *drm_dev = data; - -mtk_ddp_comp_unregister (drm_dev, &priv->ddp_comp); }static const struct component_ops mtk_disp_ovl_component_ops = {
@@ -374,7 +358,6 @@ static int mtk_disp_ovl_probe(struct platform_device *pdev)struct device *dev = &pdev->dev;struct mtk_disp_ovl *priv;struct resource *res; -int comp_id;int irq;int ret;
@@ -405,25 +388,6 @@ static int mtk_disp_ovl_probe(struct platform_device *pdev)#endif priv->data =of_device_get_match_data (dev); - - comp_id =mtk_ddp_comp_get_id (dev->of_node, - priv->data->layer_nr ==4 ? -MTK_DISP_OVL : -MTK_DISP_OVL_2L ); -if (comp_id <0 ) { -dev_err (dev,"Failed to identify by alias: %d\n" , comp_id); -return comp_id; - } - - ret =mtk_ddp_comp_init (dev->of_node, &priv->ddp_comp, comp_id); -if (ret) { -if (ret != -EPROBE_DEFER ) -dev_err (dev,"Failed to initialize component: %d\n" , - ret); - -return ret; - } -platform_set_drvdata (pdev, priv); ret = devm_request_irq(dev, irq, mtk_disp_ovl_irq_handler,
drivers/gpu/drm/mediatek/mtk_disp_rdma.c +0 -32
@@ -61,7 +61,6 @@ struct mtk_disp_rdma_data {* @crtc - associated crtc to report irq events to */ struct mtk_disp_rdma { -struct mtk_ddp_comp ddp_comp;struct clk *clk;void __iomem *regs;struct cmdq_client_reg cmdq_reg;
@@ -249,17 +248,6 @@ void mtk_rdma_layer_config(struct device *dev, unsigned int idx,static int mtk_disp_rdma_bind (struct device *dev,struct device *master,void *data) { -struct mtk_disp_rdma *priv =dev_get_drvdata (dev); -struct drm_device *drm_dev = data; -int ret; - - ret =mtk_ddp_comp_register (drm_dev, &priv->ddp_comp); -if (ret <0 ) { -dev_err (dev,"Failed to register component %pOF: %d\n" , - dev->of_node, ret); -return ret; - } -return 0 ; }
@@ -267,10 +255,6 @@ static int mtk_disp_rdma_bind(struct device *dev, struct device *master,static void mtk_disp_rdma_unbind (struct device *dev,struct device *master,void *data) { -struct mtk_disp_rdma *priv =dev_get_drvdata (dev); -struct drm_device *drm_dev = data; - -mtk_ddp_comp_unregister (drm_dev, &priv->ddp_comp); }static const struct component_ops mtk_disp_rdma_component_ops = {
@@ -283,7 +267,6 @@ static int mtk_disp_rdma_probe(struct platform_device *pdev)struct device *dev = &pdev->dev;struct mtk_disp_rdma *priv;struct resource *res; -int comp_id;int irq;int ret;
@@ -313,21 +296,6 @@ static int mtk_disp_rdma_probe(struct platform_device *pdev)dev_dbg (dev,"get mediatek,gce-client-reg fail!\n" );#endif - comp_id =mtk_ddp_comp_get_id (dev->of_node,MTK_DISP_RDMA ); -if (comp_id <0 ) { -dev_err (dev,"Failed to identify by alias: %d\n" , comp_id); -return comp_id; - } - - ret =mtk_ddp_comp_init (dev->of_node, &priv->ddp_comp, comp_id); -if (ret) { -if (ret != -EPROBE_DEFER ) -dev_err (dev,"Failed to initialize component: %d\n" , - ret); - -return ret; - } -/* Disable and clear pending interrupts */ writel (0x0 , priv->regs +DISP_REG_RDMA_INT_ENABLE );writel (0x0 , priv->regs +DISP_REG_RDMA_INT_STATUS );
drivers/gpu/drm/mediatek/mtk_dpi.c +2 -27
@@ -63,7 +63,6 @@ enum mtk_dpi_out_color_format { };struct mtk_dpi { -struct mtk_ddp_comp ddp_comp;struct drm_encoder encoder;struct drm_bridge bridge;struct drm_bridge *next_bridge;
@@ -592,21 +591,14 @@ static int mtk_dpi_bind(struct device *dev, struct device *master, void *data)struct drm_device *drm_dev = data;int ret; - ret =mtk_ddp_comp_register (drm_dev, &dpi->ddp_comp); -if (ret <0 ) { -dev_err (dev,"Failed to register component %pOF: %d\n" , - dev->of_node, ret); -return ret; - } - ret =drm_simple_encoder_init (drm_dev, &dpi->encoder,DRM_MODE_ENCODER_TMDS );if (ret) {dev_err (dev,"Failed to initialize decoder: %d\n" , ret); - goto err_unregister; +return ret; } - dpi->encoder.possible_crtcs =mtk_drm_find_possible_crtc_by_comp (drm_dev, dpi->ddp_comp); + dpi->encoder.possible_crtcs =mtk_drm_find_possible_crtc_by_comp (drm_dev, dpi->dev); ret =drm_bridge_attach (&dpi->encoder, &dpi->bridge,NULL ,0 );if (ret) {
@@ -623,8 +615,6 @@ static int mtk_dpi_bind(struct device *dev, struct device *master, void *data) err_cleanup:drm_encoder_cleanup (&dpi->encoder); -err_unregister: -mtk_ddp_comp_unregister (drm_dev, &dpi->ddp_comp);return ret; }
@@ -632,10 +622,8 @@ static void mtk_dpi_unbind(struct device *dev, struct device *master, void *data) {struct mtk_dpi *dpi =dev_get_drvdata (dev); -struct drm_device *drm_dev = data;drm_encoder_cleanup (&dpi->encoder); -mtk_ddp_comp_unregister (drm_dev, &dpi->ddp_comp); }static const struct component_ops mtk_dpi_component_ops = {
@@ -696,7 +684,6 @@ static int mtk_dpi_probe(struct platform_device *pdev)struct device *dev = &pdev->dev;struct mtk_dpi *dpi;struct resource *mem; -int comp_id;int ret; dpi =devm_kzalloc (dev,sizeof (*dpi),GFP_KERNEL );
@@ -774,18 +761,6 @@ static int mtk_dpi_probe(struct platform_device *pdev)dev_info (dev,"Found bridge node: %pOF\n" , dpi->next_bridge->of_node); - comp_id =mtk_ddp_comp_get_id (dev->of_node,MTK_DPI ); -if (comp_id <0 ) { -dev_err (dev,"Failed to identify by alias: %d\n" , comp_id); -return comp_id; - } - - ret =mtk_ddp_comp_init (dev->of_node, &dpi->ddp_comp, comp_id); -if (ret) { -dev_err (dev,"Failed to initialize component: %d\n" , ret); -return ret; - } -platform_set_drvdata (pdev, dpi); dpi->bridge.funcs = &mtk_dpi_bridge_funcs;
drivers/gpu/drm/mediatek/mtk_drm_crtc.c +1 -1
@@ -781,7 +781,7 @@ int mtk_drm_crtc_create(struct drm_device *drm_dev,struct device_node *node; node = priv->comp_node[comp_id]; - comp = priv->ddp_comp[comp_id]; + comp = &priv->ddp_comp[comp_id];if (!comp) {dev_err (dev,"Component %pOF not initialized\n" , node); ret = -ENODEV ;
drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c +11 -27
@@ -524,9 +524,10 @@ static const struct mtk_ddp_comp_match mtk_ddp_matches[DDP_COMPONENT_ID_MAX] = { [DDP_COMPONENT_WDMA1] = { MTK_DISP_WDMA, 1, NULL }, }; -static bool mtk_drm_find_comp_in_ddp (struct mtk_ddp_comp ddp_comp, +static bool mtk_drm_find_comp_in_ddp (struct device *dev,const enum mtk_ddp_comp_id *path, -unsigned int path_len) +unsigned int path_len, +struct mtk_ddp_comp *ddp_comp) {unsigned int i;
@@ -534,7 +535,7 @@ static bool mtk_drm_find_comp_in_ddp(struct mtk_ddp_comp ddp_comp,return false;for (i =0U ; i < path_len; i++) -if (ddp_comp.id == path[i]) +if (dev == ddp_comp[path[i]].dev)return true;return false;
@@ -556,18 +557,19 @@ int mtk_ddp_comp_get_id(struct device_node *node, }unsigned int mtk_drm_find_possible_crtc_by_comp (struct drm_device *drm, -struct mtk_ddp_comp ddp_comp) +struct device *dev) {struct mtk_drm_private *private = drm->dev_private;unsigned int ret =0 ; -if (mtk_drm_find_comp_in_ddp (ddp_comp, private->data->main_path, private->data->main_len)) +if (mtk_drm_find_comp_in_ddp (dev, private->data->main_path, private->data->main_len, + private->ddp_comp)) ret =BIT (0 ); -else if (mtk_drm_find_comp_in_ddp (ddp_comp, private->data->ext_path, - private->data->ext_len)) +else if (mtk_drm_find_comp_in_ddp (dev, private->data->ext_path, + private->data->ext_len, private->ddp_comp)) ret =BIT (1 ); -else if (mtk_drm_find_comp_in_ddp (ddp_comp, private->data->third_path, - private->data->third_len)) +else if (mtk_drm_find_comp_in_ddp (dev, private->data->third_path, + private->data->third_len, private->ddp_comp)) ret =BIT (2 );else DRM_INFO ("Failed to find comp in ddp table\n" );
@@ -664,21 +666,3 @@ int mtk_ddp_comp_init(struct device_node *node, struct mtk_ddp_comp *comp,return 0 ; } - -int mtk_ddp_comp_register (struct drm_device *drm,struct mtk_ddp_comp *comp) -{ -struct mtk_drm_private *private = drm->dev_private; - -if (private->ddp_comp[comp->id]) -return -EBUSY ; - - private->ddp_comp[comp->id] = comp; -return 0 ; -} - -void mtk_ddp_comp_unregister (struct drm_device *drm,struct mtk_ddp_comp *comp) -{ -struct mtk_drm_private *private = drm->dev_private; - - private->ddp_comp[comp->id] =NULL ; -}
drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.h +1 -3
@@ -220,11 +220,9 @@ static inline void mtk_ddp_ctm_set(struct mtk_ddp_comp *comp,int mtk_ddp_comp_get_id (struct device_node *node,enum mtk_ddp_comp_type comp_type);unsigned int mtk_drm_find_possible_crtc_by_comp (struct drm_device *drm, -struct mtk_ddp_comp ddp_comp); +struct device *dev);int mtk_ddp_comp_init (struct device_node *comp_node,struct mtk_ddp_comp *comp,enum mtk_ddp_comp_id comp_id); -int mtk_ddp_comp_register (struct drm_device *drm,struct mtk_ddp_comp *comp); -void mtk_ddp_comp_unregister (struct drm_device *drm,struct mtk_ddp_comp *comp);enum mtk_ddp_comp_type mtk_ddp_comp_get_type (enum mtk_ddp_comp_id comp_id); void mtk_ddp_write(struct cmdq_pkt *cmdq_pkt, unsigned int value, struct cmdq_client_reg *cmdq_reg, void __iomem *regs,
drivers/gpu/drm/mediatek/mtk_drm_drv.c +8 -21
@@ -528,23 +528,12 @@ static int mtk_drm_probe(struct platform_device *pdev) node);drm_of_component_match_add (dev, &match, compare_of, node); - }else { -struct mtk_ddp_comp *comp; - - comp =devm_kzalloc (dev,sizeof (*comp),GFP_KERNEL ); -if (!comp) { - ret = -ENOMEM ; -of_node_put (node); - goto err_node; - } - - ret =mtk_ddp_comp_init (node, comp, comp_id); -if (ret) { -of_node_put (node); - goto err_node; - } - - private->ddp_comp[comp_id] = comp; + } + + ret =mtk_ddp_comp_init (node, &private->ddp_comp[comp_id], comp_id); +if (ret) { +of_node_put (node); + goto err_node; } }
@@ -570,10 +559,8 @@ static int mtk_drm_probe(struct platform_device *pdev)of_node_put (private->mutex_node);for (i =0 ; i <DDP_COMPONENT_ID_MAX ; i++) {of_node_put (private->comp_node[i]); -if (private->ddp_comp[i]) { -put_device (private->ddp_comp[i]->larb_dev); - private->ddp_comp[i] =NULL ; - } +if (private->ddp_comp[i].larb_dev) +put_device (private->ddp_comp[i].larb_dev); }return ret; }
drivers/gpu/drm/mediatek/mtk_drm_drv.h +1 -1
@@ -41,7 +41,7 @@ struct mtk_drm_private {struct device *mutex_dev;struct device *mmsys_dev;struct device_node *comp_node[DDP_COMPONENT_ID_MAX ]; -struct mtk_ddp_comp *ddp_comp[DDP_COMPONENT_ID_MAX ]; +struct mtk_ddp_comp ddp_comp[DDP_COMPONENT_ID_MAX ];const struct mtk_mmsys_driver_data *data;struct drm_atomic_state *suspend_state;
drivers/gpu/drm/mediatek/mtk_dsi.c +1 -31
@@ -179,7 +179,6 @@ struct mtk_dsi_driver_data { };struct mtk_dsi { -struct mtk_ddp_comp ddp_comp;struct device *dev;struct mipi_dsi_host host;struct drm_encoder encoder;
@@ -965,7 +964,7 @@ static int mtk_dsi_encoder_init(struct drm_device *drm, struct mtk_dsi *dsi)return ret; } - dsi->encoder.possible_crtcs =mtk_drm_find_possible_crtc_by_comp (drm, dsi->ddp_comp); + dsi->encoder.possible_crtcs =mtk_drm_find_possible_crtc_by_comp (drm, dsi->dev); ret =drm_bridge_attach (&dsi->encoder, &dsi->bridge,NULL ,DRM_BRIDGE_ATTACH_NO_CONNECTOR );
@@ -993,32 +992,17 @@ static int mtk_dsi_bind(struct device *dev, struct device *master, void *data)struct drm_device *drm = data;struct mtk_dsi *dsi =dev_get_drvdata (dev); - ret =mtk_ddp_comp_register (drm, &dsi->ddp_comp); -if (ret <0 ) { -dev_err (dev,"Failed to register component %pOF: %d\n" , - dev->of_node, ret); -return ret; - } - ret =mtk_dsi_encoder_init (drm, dsi); -if (ret) - goto err_unregister; - -return 0 ; -err_unregister: -mtk_ddp_comp_unregister (drm, &dsi->ddp_comp);return ret; }static void mtk_dsi_unbind (struct device *dev,struct device *master,void *data) { -struct drm_device *drm = data;struct mtk_dsi *dsi =dev_get_drvdata (dev);drm_encoder_cleanup (&dsi->encoder); -mtk_ddp_comp_unregister (drm, &dsi->ddp_comp); }static const struct component_ops mtk_dsi_component_ops = {
@@ -1033,7 +1017,6 @@ static int mtk_dsi_probe(struct platform_device *pdev)struct drm_panel *panel;struct resource *regs;int irq_num; -int comp_id;int ret; dsi =devm_kzalloc (dev,sizeof (*dsi),GFP_KERNEL );
@@ -1103,19 +1086,6 @@ static int mtk_dsi_probe(struct platform_device *pdev) goto err_unregister_host; } - comp_id =mtk_ddp_comp_get_id (dev->of_node,MTK_DSI ); -if (comp_id <0 ) { -dev_err (dev,"Failed to identify by alias: %d\n" , comp_id); - ret = comp_id; - goto err_unregister_host; - } - - ret =mtk_ddp_comp_init (dev->of_node, &dsi->ddp_comp, comp_id); -if (ret) { -dev_err (dev,"Failed to initialize component: %d\n" , ret); - goto err_unregister_host; - } - irq_num =platform_get_irq (pdev,0 );if (irq_num <0 ) {dev_err (&pdev->dev,"failed to get dsi irq_num: %d\n" , irq_num);
Signature · 6 lines
2.17.1 _______________________________________________ dri-devel mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/dri-devel
Chun-Kuang Hu
maintainerChun-Kuang Hu <[email protected]> 於 2020年11月3日 週二 上午8:34寫道:
Quoted 4 lines
mtk ccorr is controlled by DRM and MDP [1]. In order to share
mtk_ccorrdriver for DRM and MDP, decouple Mediatek DRM sub driver which includemtk_ccorr, so MDP could use this decoupledmtk_ccorr.
Applied the whole series into mediatek-drm-next [1].
[1] https://git.kernel.org/pub/scm/linux/kernel/git/chunkuang.hu/linux.git/log/?h=mediatek-drm-next
Regards,
Chun-Kuang.
Quoted 36 lines
[1] https://patchwork.kernel.org/patch/11140751/
CK Hu (9):
drm/mediatek: Move clk info from structmtk_ddp_compto sub driver
private data
drm/mediatek: Move regs info from structmtk_ddp_compto sub driver
private data
drm/mediatek: Remove irq in structmtk_ddp_compdrm/mediatek: Use structcmdq_client_regto gather cmdq variable drm/mediatek: Movecmdq_reginfo from structmtk_ddp_compto sub
driver private data
drm/mediatek: Change sub driver interface frommtk_ddp_compto device drm/mediatek: Register vblank callback function drm/mediatek: DRM driver directly refer to sub driver's function drm/mediatek: Movemtk_ddp_comp_init()from sub driver to DRM driverChun-Kuang Hu (2):
drm/mediatek: Get CMDQ client register for all ddp component drm/mediatek: Use correct device pointer to get CMDQ client registerdrivers/gpu/drm/mediatek/mtk_disp_color.c | 86 ++--- drivers/gpu/drm/mediatek/mtk_disp_drv.h | 69 ++++ drivers/gpu/drm/mediatek/mtk_disp_ovl.c | 215 ++++++----- drivers/gpu/drm/mediatek/mtk_disp_rdma.c | 169 +++++---- drivers/gpu/drm/mediatek/mtk_dpi.c | 44 +-- drivers/gpu/drm/mediatek/mtk_drm_crtc.c | 75 ++-- drivers/gpu/drm/mediatek/mtk_drm_crtc.h | 1 - drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c | 389 ++++++++++++-------- drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.h | 100 ++--- drivers/gpu/drm/mediatek/mtk_drm_drv.c | 30 +- drivers/gpu/drm/mediatek/mtk_drm_drv.h | 2 +- drivers/gpu/drm/mediatek/mtk_dsi.c | 47 +-- 12 files changed, 658 insertions(+), 569 deletions(-) create mode 100644 drivers/gpu/drm/mediatek/mtk_disp_drv.h
Quoted 3 lines
--
2.17.1
_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel
Chun-Kuang Hu
maintainerChun-Kuang Hu <[email protected]> 於 2020年11月16日 週一 上午7:33寫道:
Quoted 11 lines
Chun-Kuang Hu <[email protected]> 於 2020年11月3日 週二 上午8:34寫道:
Quoted 4 lines
mtk ccorr is controlled by DRM and MDP [1]. In order to share
mtk_ccorrdriver for DRM and MDP, decouple Mediatek DRM sub driver which includemtk_ccorr, so MDP could use this decoupledmtk_ccorr.Applied the whole series into mediatek-drm-next [1].
[1] https://git.kernel.org/pub/scm/linux/kernel/git/chunkuang.hu/linux.git/log/?h=mediatek-drm-next
Sorry, because of iommu larb problem, I drop this series from mediatek-drm-next.
Regards,
Chun-Kuang.
Quoted 42 lines
Regards,
Chun-Kuang.Quoted 39 lines
[1] https://patchwork.kernel.org/patch/11140751/
CK Hu (9):
drm/mediatek: Move clk info from structmtk_ddp_compto sub driver
private data
drm/mediatek: Move regs info from structmtk_ddp_compto sub driver
private data
drm/mediatek: Remove irq in structmtk_ddp_compdrm/mediatek: Use structcmdq_client_regto gather cmdq variable drm/mediatek: Movecmdq_reginfo from structmtk_ddp_compto sub
driver private data
drm/mediatek: Change sub driver interface frommtk_ddp_compto device drm/mediatek: Register vblank callback function drm/mediatek: DRM driver directly refer to sub driver's function drm/mediatek: Movemtk_ddp_comp_init()from sub driver to DRM driverChun-Kuang Hu (2):
drm/mediatek: Get CMDQ client register for all ddp component drm/mediatek: Use correct device pointer to get CMDQ client registerdrivers/gpu/drm/mediatek/mtk_disp_color.c | 86 ++--- drivers/gpu/drm/mediatek/mtk_disp_drv.h | 69 ++++ drivers/gpu/drm/mediatek/mtk_disp_ovl.c | 215 ++++++----- drivers/gpu/drm/mediatek/mtk_disp_rdma.c | 169 +++++---- drivers/gpu/drm/mediatek/mtk_dpi.c | 44 +-- drivers/gpu/drm/mediatek/mtk_drm_crtc.c | 75 ++-- drivers/gpu/drm/mediatek/mtk_drm_crtc.h | 1 - drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c | 389 ++++++++++++-------- drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.h | 100 ++--- drivers/gpu/drm/mediatek/mtk_drm_drv.c | 30 +- drivers/gpu/drm/mediatek/mtk_drm_drv.h | 2 +- drivers/gpu/drm/mediatek/mtk_dsi.c | 47 +-- 12 files changed, 658 insertions(+), 569 deletions(-) create mode 100644 drivers/gpu/drm/mediatek/mtk_disp_drv.h--
2.17.1
_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel