Re: [v5 1/7] drm/mediatek: move mipi_dsi_host_register to probe

2019-07-17 Thread Ryan Case
On Thu, Jun 27, 2019 at 11:11 PM CK Hu  wrote:
>
> Hi, Jitao:
>
> On Thu, 2019-06-27 at 16:01 +0800, Jitao Shi wrote:
> > DSI panel driver need attach function which is inculde in
> > mipi_dsi_host_ops.
> >
> > If mipi_dsi_host_register is not in probe, dsi panel will
> > probe more delay.
> >
> > So move the mipi_dsi_host_register to probe from bind.
> >
> > Signed-off-by: Jitao Shi 
> > Reviewed-by: CK Hu 
>
> This version is different than v4, so please remove reviewed-by tag when
> this patch change. When I see a reviewed-by tag of mine, I would just
> skip review it again because I assume this patch is the same as previous
> version.
>
> For this version, I give still give it a
>
> Reviewed-by: CK Hu 
>
> > ---
> >  drivers/gpu/drm/mediatek/mtk_dsi.c | 53 +-
> >  1 file changed, 31 insertions(+), 22 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/mediatek/mtk_dsi.c 
> > b/drivers/gpu/drm/mediatek/mtk_dsi.c
> > index b00eb2d2e086..595b3b047c7b 100644
> > --- a/drivers/gpu/drm/mediatek/mtk_dsi.c
> > +++ b/drivers/gpu/drm/mediatek/mtk_dsi.c
> > @@ -528,7 +528,7 @@ static s32 mtk_dsi_switch_to_cmd_mode(struct mtk_dsi 
> > *dsi, u8 irq_flag, u32 t)
> >
> >  static int mtk_dsi_poweron(struct mtk_dsi *dsi)
> >  {
> > - struct device *dev = dsi->dev;
> > + struct device *dev = dsi->->host.dev;

single -> here

> >   int ret;
> >   u64 pixel_clock, total_bits;
> >   u32 htotal, htotal_bits, bit_per_pixel, overhead_cycles, 
> > overhead_bits;
> > @@ -1045,12 +1045,6 @@ static int mtk_dsi_bind(struct device *dev, struct 
> > device *master, void *data)
> >   return ret;
> >   }
> >
> > - ret = mipi_dsi_host_register(&dsi->host);
> > - if (ret < 0) {
> > - dev_err(dev, "failed to register DSI host: %d\n", ret);
> > - goto err_ddp_comp_unregister;
> > - }
> > -
> >   ret = mtk_dsi_create_conn_enc(drm, dsi);
> >   if (ret) {
> >   DRM_ERROR("Encoder create failed with %d\n", ret);
> > @@ -1060,8 +1054,6 @@ static int mtk_dsi_bind(struct device *dev, struct 
> > device *master, void *data)
> >   return 0;
> >
> >  err_unregister:
> > - mipi_dsi_host_unregister(&dsi->host);
> > -err_ddp_comp_unregister:
> >   mtk_ddp_comp_unregister(drm, &dsi->ddp_comp);
> >   return ret;
> >  }
> > @@ -1073,7 +1065,6 @@ static void mtk_dsi_unbind(struct device *dev, struct 
> > device *master,
> >   struct mtk_dsi *dsi = dev_get_drvdata(dev);
> >
> >   mtk_dsi_destroy_conn_enc(dsi);
> > - mipi_dsi_host_unregister(&dsi->host);
> >   mtk_ddp_comp_unregister(drm, &dsi->ddp_comp);
> >  }
> >
> > @@ -1097,31 +1088,36 @@ static int mtk_dsi_probe(struct platform_device 
> > *pdev)
> >
> >   dsi->host.ops = &mtk_dsi_ops;
> >   dsi->host.dev = dev;
> > + ret = mipi_dsi_host_register(&dsi->host);
> > + if (ret < 0) {
> > + dev_err(dev, "failed to register DSI host: %d\n", ret);
> > + return ret;
> > + }
> >
> >   ret = drm_of_find_panel_or_bridge(dev->of_node, 0, 0,
> > &dsi->panel, &dsi->bridge);
> >   if (ret)
> > - return ret;
> > + goto err_unregister_host;
> >
> >   dsi->engine_clk = devm_clk_get(dev, "engine");
> >   if (IS_ERR(dsi->engine_clk)) {
> >   ret = PTR_ERR(dsi->engine_clk);
> >   dev_err(dev, "Failed to get engine clock: %d\n", ret);
> > - return ret;
> > + goto err_unregister_host;
> >   }
> >
> >   dsi->digital_clk = devm_clk_get(dev, "digital");
> >   if (IS_ERR(dsi->digital_clk)) {
> >   ret = PTR_ERR(dsi->digital_clk);
> >   dev_err(dev, "Failed to get digital clock: %d\n", ret);
> > - return ret;
> > + goto err_unregister_host;
> >   }
> >
> >   dsi->hs_clk = devm_clk_get(dev, "hs");
> >   if (IS_ERR(dsi->hs_clk)) {
> >   ret = PTR_ERR(dsi->hs_clk);
> >   dev_err(dev, "Failed to get hs clock: %d\n", ret);
> > - return ret;
> > + goto err_unregister_host;
> >   }
> >
> >   regs = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> > @@ -1129,33 +1125,35 @@ static int mtk_dsi_probe(struct platform_device 
> > *pdev)
> >   if (IS_ERR(dsi->regs)) {
> >   ret = PTR_ERR(dsi->regs);
> >   dev_err(dev, "Failed to ioremap memory: %d\n", ret);
> > - return ret;
> > + goto err_unregister_host;
> >   }
> >
> >   dsi->phy = devm_phy_get(dev, "dphy");
> >   if (IS_ERR(dsi->phy)) {
> >   ret = PTR_ERR(dsi->phy);
> >   dev_err(dev, "Failed to get MIPI-DPHY: %d\n", ret);
> > - return ret;
> > + 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 ali

Re: [v5 1/7] drm/mediatek: move mipi_dsi_host_register to probe

2019-06-27 Thread CK Hu
Hi, Jitao:

On Thu, 2019-06-27 at 16:01 +0800, Jitao Shi wrote:
> DSI panel driver need attach function which is inculde in
> mipi_dsi_host_ops.
> 
> If mipi_dsi_host_register is not in probe, dsi panel will
> probe more delay.
> 
> So move the mipi_dsi_host_register to probe from bind.
> 
> Signed-off-by: Jitao Shi 
> Reviewed-by: CK Hu 

This version is different than v4, so please remove reviewed-by tag when
this patch change. When I see a reviewed-by tag of mine, I would just
skip review it again because I assume this patch is the same as previous
version.

For this version, I give still give it a

Reviewed-by: CK Hu 

> ---
>  drivers/gpu/drm/mediatek/mtk_dsi.c | 53 +-
>  1 file changed, 31 insertions(+), 22 deletions(-)
> 
> diff --git a/drivers/gpu/drm/mediatek/mtk_dsi.c 
> b/drivers/gpu/drm/mediatek/mtk_dsi.c
> index b00eb2d2e086..595b3b047c7b 100644
> --- a/drivers/gpu/drm/mediatek/mtk_dsi.c
> +++ b/drivers/gpu/drm/mediatek/mtk_dsi.c
> @@ -528,7 +528,7 @@ static s32 mtk_dsi_switch_to_cmd_mode(struct mtk_dsi 
> *dsi, u8 irq_flag, u32 t)
>  
>  static int mtk_dsi_poweron(struct mtk_dsi *dsi)
>  {
> - struct device *dev = dsi->dev;
> + struct device *dev = dsi->->host.dev;
>   int ret;
>   u64 pixel_clock, total_bits;
>   u32 htotal, htotal_bits, bit_per_pixel, overhead_cycles, overhead_bits;
> @@ -1045,12 +1045,6 @@ static int mtk_dsi_bind(struct device *dev, struct 
> device *master, void *data)
>   return ret;
>   }
>  
> - ret = mipi_dsi_host_register(&dsi->host);
> - if (ret < 0) {
> - dev_err(dev, "failed to register DSI host: %d\n", ret);
> - goto err_ddp_comp_unregister;
> - }
> -
>   ret = mtk_dsi_create_conn_enc(drm, dsi);
>   if (ret) {
>   DRM_ERROR("Encoder create failed with %d\n", ret);
> @@ -1060,8 +1054,6 @@ static int mtk_dsi_bind(struct device *dev, struct 
> device *master, void *data)
>   return 0;
>  
>  err_unregister:
> - mipi_dsi_host_unregister(&dsi->host);
> -err_ddp_comp_unregister:
>   mtk_ddp_comp_unregister(drm, &dsi->ddp_comp);
>   return ret;
>  }
> @@ -1073,7 +1065,6 @@ static void mtk_dsi_unbind(struct device *dev, struct 
> device *master,
>   struct mtk_dsi *dsi = dev_get_drvdata(dev);
>  
>   mtk_dsi_destroy_conn_enc(dsi);
> - mipi_dsi_host_unregister(&dsi->host);
>   mtk_ddp_comp_unregister(drm, &dsi->ddp_comp);
>  }
>  
> @@ -1097,31 +1088,36 @@ static int mtk_dsi_probe(struct platform_device *pdev)
>  
>   dsi->host.ops = &mtk_dsi_ops;
>   dsi->host.dev = dev;
> + ret = mipi_dsi_host_register(&dsi->host);
> + if (ret < 0) {
> + dev_err(dev, "failed to register DSI host: %d\n", ret);
> + return ret;
> + }
>  
>   ret = drm_of_find_panel_or_bridge(dev->of_node, 0, 0,
> &dsi->panel, &dsi->bridge);
>   if (ret)
> - return ret;
> + goto err_unregister_host;
>  
>   dsi->engine_clk = devm_clk_get(dev, "engine");
>   if (IS_ERR(dsi->engine_clk)) {
>   ret = PTR_ERR(dsi->engine_clk);
>   dev_err(dev, "Failed to get engine clock: %d\n", ret);
> - return ret;
> + goto err_unregister_host;
>   }
>  
>   dsi->digital_clk = devm_clk_get(dev, "digital");
>   if (IS_ERR(dsi->digital_clk)) {
>   ret = PTR_ERR(dsi->digital_clk);
>   dev_err(dev, "Failed to get digital clock: %d\n", ret);
> - return ret;
> + goto err_unregister_host;
>   }
>  
>   dsi->hs_clk = devm_clk_get(dev, "hs");
>   if (IS_ERR(dsi->hs_clk)) {
>   ret = PTR_ERR(dsi->hs_clk);
>   dev_err(dev, "Failed to get hs clock: %d\n", ret);
> - return ret;
> + goto err_unregister_host;
>   }
>  
>   regs = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> @@ -1129,33 +1125,35 @@ static int mtk_dsi_probe(struct platform_device *pdev)
>   if (IS_ERR(dsi->regs)) {
>   ret = PTR_ERR(dsi->regs);
>   dev_err(dev, "Failed to ioremap memory: %d\n", ret);
> - return ret;
> + goto err_unregister_host;
>   }
>  
>   dsi->phy = devm_phy_get(dev, "dphy");
>   if (IS_ERR(dsi->phy)) {
>   ret = PTR_ERR(dsi->phy);
>   dev_err(dev, "Failed to get MIPI-DPHY: %d\n", ret);
> - return ret;
> + 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);
> - return comp_id;
> + ret = comp_id;
> + goto err_unregister_host;
>   }
>  
>   ret = mtk_ddp_comp_init(dev, dev->of_node, &dsi->ddp_comp, comp_id,
>   &mtk_dsi_funcs);
>   if (ret) {
>   dev_err(dev, "Fa