From: Senthilvadivu Guruswamy <svadivu@xxxxxx> VENC init and exit moved to venc probe and remove. regulator used by venc is moved to venc driver alone. Signed-off-by: Senthilvadivu Guruswamy <svadivu@xxxxxx> --- arch/arm/mach-omap2/board-3430sdp.c | 2 +- drivers/video/omap2/dss/core.c | 40 +++++++++------------------------- drivers/video/omap2/dss/venc.c | 19 ++++++++++++++++ 3 files changed, 31 insertions(+), 30 deletions(-) diff --git a/arch/arm/mach-omap2/board-3430sdp.c b/arch/arm/mach-omap2/board-3430sdp.c index 9b721a4..cb66d65 100644 --- a/arch/arm/mach-omap2/board-3430sdp.c +++ b/arch/arm/mach-omap2/board-3430sdp.c @@ -302,7 +302,7 @@ static struct omap_dss_board_info sdp3430_dss_data = { }; static struct regulator_consumer_supply sdp3430_vdda_dac_supply = - REGULATOR_SUPPLY("vdda_dac", "omapdss"); + REGULATOR_SUPPLY("vdda_dac", "dss_venc"); static struct omap_board_config_kernel sdp3430_config[] __initdata = { }; diff --git a/drivers/video/omap2/dss/core.c b/drivers/video/omap2/dss/core.c index a72d2fa..df0cfea 100644 --- a/drivers/video/omap2/dss/core.c +++ b/drivers/video/omap2/dss/core.c @@ -43,7 +43,6 @@ static struct { struct regulator *vdds_dsi_reg; struct regulator *vdds_sdi_reg; - struct regulator *vdda_dac_reg; struct omap_dss_board_info *pdata; } core; @@ -90,19 +89,6 @@ struct regulator *dss_get_vdds_sdi(void) return reg; } -struct regulator *dss_get_vdda_dac(void) -{ - struct regulator *reg; - - if (core.vdda_dac_reg != NULL) - return core.vdda_dac_reg; - - reg = regulator_get(&core.pdev->dev, "vdda_dac"); - if (!IS_ERR(reg)) - core.vdda_dac_reg = reg; - - return reg; -} #if defined(CONFIG_DEBUG_FS) && defined(CONFIG_OMAP2_DSS_DEBUG_SUPPORT) @@ -205,12 +191,6 @@ static int omap_dss_probe(struct platform_device *pdev) goto err_dpi; } - r = venc_init(pdev); - if (r) { - DSSERR("Failed to initialize venc\n"); - goto err_venc; - } - if (cpu_is_omap34xx()) { r = sdi_init(skip_init); if (r) { @@ -260,8 +240,6 @@ err_dsi: if (cpu_is_omap34xx()) sdi_exit(); err_sdi: - venc_exit(); -err_venc: dpi_exit(); err_dpi: dss_clk_disable(DSS_CLK_ICK | DSS_CLK_FCK1 | DSS_CLK_54M); @@ -277,7 +255,6 @@ static int omap_dss_remove(struct platform_device *pdev) dss_uninitialize_debugfs(); - venc_exit(); dpi_exit(); if (cpu_is_omap34xx()) { dsi_exit(); @@ -370,11 +347,21 @@ static int omap_rfbihw_remove(struct platform_device *pdev) /* VENC HW IP initialisation */ static int omap_venchw_probe(struct platform_device *pdev) { - return 0; + int r; + dss_clk_enable(DSS_CLK_ICK | DSS_CLK_FCK1 | DSS_CLK_54M); + r = venc_init(pdev); + if (r) { + DSSERR("Failed to initialize venc\n"); + goto err_venc; + } +err_venc: + dss_clk_disable(DSS_CLK_ICK | DSS_CLK_FCK1 | DSS_CLK_54M); + return r; } static int omap_venchw_remove(struct platform_device *pdev) { + venc_exit(); return 0; } @@ -684,11 +671,6 @@ static void __exit omap_dss_exit(void) core.vdds_sdi_reg = NULL; } - if (core.vdda_dac_reg != NULL) { - regulator_put(core.vdda_dac_reg); - core.vdda_dac_reg = NULL; - } - platform_driver_unregister(&omap_dss_driver); omap_dss_bus_unregister(); diff --git a/drivers/video/omap2/dss/venc.c b/drivers/video/omap2/dss/venc.c index eff3505..576f0df 100644 --- a/drivers/video/omap2/dss/venc.c +++ b/drivers/video/omap2/dss/venc.c @@ -293,6 +293,7 @@ static struct { struct mutex venc_lock; u32 wss_data; struct regulator *vdda_dac_reg; + struct platform_device *pdev; } venc; static inline void venc_write_reg(int idx, u32 val) @@ -641,7 +642,19 @@ static struct omap_dss_driver venc_driver = { }; /* driver end */ +struct regulator *dss_get_vdda_dac(void) +{ + struct regulator *reg; + + if (venc.vdda_dac_reg != NULL) + return venc.vdda_dac_reg; + + reg = regulator_get(&venc.pdev->dev, "vdda_dac"); + if (!IS_ERR(reg)) + venc.vdda_dac_reg = reg; + return reg; +} int venc_init(struct platform_device *pdev) { @@ -649,6 +662,7 @@ int venc_init(struct platform_device *pdev) mutex_init(&venc.venc_lock); + venc.pdev = pdev; venc.wss_data = 0; venc.base = ioremap(VENC_BASE, SZ_1K); @@ -676,6 +690,11 @@ int venc_init(struct platform_device *pdev) void venc_exit(void) { + if (venc.vdda_dac_reg != NULL) { + regulator_put(venc.vdda_dac_reg); + venc.vdda_dac_reg = NULL; + } + omap_dss_unregister_driver(&venc_driver); iounmap(venc.base); -- 1.6.3.3 -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html