Message ID | 1369906493-27538-16-git-send-email-tomi.valkeinen@ti.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Thursday 30 May 2013 03:04 PM, Tomi Valkeinen wrote: > Split regulator and DSI PLL init code to their own functions for > clarity. > > Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com> > --- > drivers/video/omap2/dss/dpi.c | 100 ++++++++++++++++++++++-------------------- > 1 file changed, 53 insertions(+), 47 deletions(-) > > diff --git a/drivers/video/omap2/dss/dpi.c b/drivers/video/omap2/dss/dpi.c > index 43f6b26..66ba9a6 100644 > --- a/drivers/video/omap2/dss/dpi.c > +++ b/drivers/video/omap2/dss/dpi.c > @@ -545,6 +545,53 @@ static int dpi_verify_dsi_pll(struct platform_device *dsidev) > return 0; > } > > +static int dpi_init_regulator(void) > +{ > + struct regulator *vdds_dsi; > + > + if (!dss_has_feature(FEAT_DPI_USES_VDDS_DSI)) > + return 0; > + > + if (dpi.vdds_dsi_reg) > + return 0; > + > + vdds_dsi = dss_get_vdds_dsi(); > + > + if (!IS_ERR(vdds_dsi)) { > + dpi.vdds_dsi_from_core = true; > + dpi.vdds_dsi_reg = vdds_dsi; > + return 0; > + } > + > + vdds_dsi = regulator_get(&dpi.pdev->dev, "vdds_dsi"); > + if (!IS_ERR(vdds_dsi)) { > + dpi.vdds_dsi_from_core = false; > + dpi.vdds_dsi_reg = vdds_dsi; > + return 0; > + } > + > + return PTR_ERR(vdds_dsi); > +} > + > +static void dpi_init_pll(void) > +{ > + struct platform_device *dsidev; > + > + if (dpi.dsidev) > + return; > + > + dsidev = dpi_get_dsidev(dpi.output.dispc_channel); > + if (!dsidev) > + return; > + > + if (dpi_verify_dsi_pll(dsidev)) { > + DSSWARN("DSI PLL not operational\n"); > + return; > + } > + > + dpi.dsidev = dsidev; > +} > + > /* > * Return a hardcoded channel for the DPI output. This should work for > * current use cases, but this can be later expanded to either resolve > @@ -575,46 +622,6 @@ static enum omap_channel dpi_get_channel(void) > } > } > > -static int dpi_init_display(struct omap_dss_device *dssdev) > -{ > - struct platform_device *dsidev; > - > - DSSDBG("init_display\n"); > - > - if (dss_has_feature(FEAT_DPI_USES_VDDS_DSI) && > - dpi.vdds_dsi_reg == NULL) { > - struct regulator *vdds_dsi; > - > - vdds_dsi = dss_get_vdds_dsi(); > - if (IS_ERR(vdds_dsi)) { > - vdds_dsi = regulator_get(&dpi.pdev->dev, "vdds_dsi"); same comment about devm_ usage here, and the next few patches. Archit -- To unsubscribe from this list: send the line "unsubscribe linux-fbdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 07/06/13 09:51, Archit Taneja wrote: >> -static int dpi_init_display(struct omap_dss_device *dssdev) >> -{ >> - struct platform_device *dsidev; >> - >> - DSSDBG("init_display\n"); >> - >> - if (dss_has_feature(FEAT_DPI_USES_VDDS_DSI) && >> - dpi.vdds_dsi_reg == NULL) { >> - struct regulator *vdds_dsi; >> - >> - vdds_dsi = dss_get_vdds_dsi(); >> - if (IS_ERR(vdds_dsi)) { >> - vdds_dsi = regulator_get(&dpi.pdev->dev, "vdds_dsi"); > > same comment about devm_ usage here, and the next few patches. Yes, good point. And that allows us to get rid of the 'vdds_dsi_from_core'. Tomi
diff --git a/drivers/video/omap2/dss/dpi.c b/drivers/video/omap2/dss/dpi.c index 43f6b26..66ba9a6 100644 --- a/drivers/video/omap2/dss/dpi.c +++ b/drivers/video/omap2/dss/dpi.c @@ -545,6 +545,53 @@ static int dpi_verify_dsi_pll(struct platform_device *dsidev) return 0; } +static int dpi_init_regulator(void) +{ + struct regulator *vdds_dsi; + + if (!dss_has_feature(FEAT_DPI_USES_VDDS_DSI)) + return 0; + + if (dpi.vdds_dsi_reg) + return 0; + + vdds_dsi = dss_get_vdds_dsi(); + + if (!IS_ERR(vdds_dsi)) { + dpi.vdds_dsi_from_core = true; + dpi.vdds_dsi_reg = vdds_dsi; + return 0; + } + + vdds_dsi = regulator_get(&dpi.pdev->dev, "vdds_dsi"); + if (!IS_ERR(vdds_dsi)) { + dpi.vdds_dsi_from_core = false; + dpi.vdds_dsi_reg = vdds_dsi; + return 0; + } + + return PTR_ERR(vdds_dsi); +} + +static void dpi_init_pll(void) +{ + struct platform_device *dsidev; + + if (dpi.dsidev) + return; + + dsidev = dpi_get_dsidev(dpi.output.dispc_channel); + if (!dsidev) + return; + + if (dpi_verify_dsi_pll(dsidev)) { + DSSWARN("DSI PLL not operational\n"); + return; + } + + dpi.dsidev = dsidev; +} + /* * Return a hardcoded channel for the DPI output. This should work for * current use cases, but this can be later expanded to either resolve @@ -575,46 +622,6 @@ static enum omap_channel dpi_get_channel(void) } } -static int dpi_init_display(struct omap_dss_device *dssdev) -{ - struct platform_device *dsidev; - - DSSDBG("init_display\n"); - - if (dss_has_feature(FEAT_DPI_USES_VDDS_DSI) && - dpi.vdds_dsi_reg == NULL) { - struct regulator *vdds_dsi; - - vdds_dsi = dss_get_vdds_dsi(); - if (IS_ERR(vdds_dsi)) { - vdds_dsi = regulator_get(&dpi.pdev->dev, "vdds_dsi"); - if (IS_ERR(vdds_dsi)) { - DSSERR("can't get VDDS_DSI regulator\n"); - return PTR_ERR(vdds_dsi); - } - dpi.vdds_dsi_from_core = false; - } else { - dpi.vdds_dsi_from_core = true; - } - - dpi.vdds_dsi_reg = vdds_dsi; - } - - dsidev = dpi_get_dsidev(dpi.output.dispc_channel); - - if (dsidev && dpi_verify_dsi_pll(dsidev)) { - dsidev = NULL; - DSSWARN("DSI PLL not operational\n"); - } - - if (dsidev) - DSSDBG("using DSI PLL for DPI clock\n"); - - dpi.dsidev = dsidev; - - return 0; -} - static struct omap_dss_device *dpi_find_dssdev(struct platform_device *pdev) { struct omap_dss_board_info *pdata = pdev->dev.platform_data; @@ -654,19 +661,18 @@ static int dpi_probe_pdata(struct platform_device *dpidev) if (!plat_dssdev) return 0; + r = dpi_init_regulator(); + if (r) + return r; + + dpi_init_pll(); + dssdev = dss_alloc_and_init_device(&dpidev->dev); if (!dssdev) return -ENOMEM; dss_copy_device_pdata(dssdev, plat_dssdev); - r = dpi_init_display(dssdev); - if (r) { - DSSERR("device %s init failed: %d\n", dssdev->name, r); - dss_put_device(dssdev); - return r; - } - r = omapdss_output_set_device(&dpi.output, dssdev); if (r) { DSSERR("failed to connect output to new device: %s\n",
Split regulator and DSI PLL init code to their own functions for clarity. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com> --- drivers/video/omap2/dss/dpi.c | 100 ++++++++++++++++++++++-------------------- 1 file changed, 53 insertions(+), 47 deletions(-)