static int omap_dss_remove(struct platform_device *pdev) { uninitialize_sysfs(&pdev->dev); #ifdef CONFIG_OMAP2_DSS_VENC venc_exit(); #endif dispc_exit(); dpi_exit(); #ifdef CONFIG_OMAP2_DSS_RFBI rfbi_exit(); #endif if (cpu_is_omap34xx()) { #ifdef CONFIG_OMAP2_DSS_DSI dsi_exit(); #endif #ifdef CONFIG_OMAP2_DSS_SDI sdi_exit(); #endif } dss_exit(); return 0; }
static int rfbi_display_suspend(struct omap_dss_device *dssdev) { DSSDBG("rfbi_display_suspend\n"); if (dssdev->state != OMAP_DSS_DISPLAY_ACTIVE) return -EINVAL; dssdev->state = OMAP_DSS_DISPLAY_SUSPENDED; wait_for_completion(&rfbi.update_done); rfbi_enable_clocks(1); /* Bypass mode must be enabled to allow the RFBI module to idle */ REG_FLD_MOD(RFBI_CONTROL, 1, 1, 1); rfbi_display_disable(dssdev); rfbi_exit(); rfbi_enable_clocks(0); return 0; }
static int omap_dss_remove(struct platform_device *pdev) { struct omap_dss_board_info *pdata = pdev->dev.platform_data; int i; int c; #if defined(CONFIG_DEBUG_FS) && defined(CONFIG_OMAP2_DSS_DEBUG_SUPPORT) dss_uninitialize_debugfs(); #endif #ifdef CONFIG_OMAP2_DSS_VENC venc_exit(); #endif #ifdef CONFIG_OMAP2_DSS_HDMI hdmi_exit(); #endif dispc_exit(); dpi_exit(); #ifdef CONFIG_OMAP2_DSS_RFBI rfbi_exit(); #endif if (cpu_is_omap34xx()) { #ifdef CONFIG_OMAP2_DSS_DSI dsi_exit(); #endif #ifdef CONFIG_OMAP2_DSS_SDI sdi_exit(); #endif #ifdef CONFIG_SIL9022 hdmi_exit(); #endif } dss_exit(); /* these should be removed at some point */ c = core.dss_ick->usecount; if (c > 0) { DSSERR("warning: dss_ick usecount %d, disabling\n", c); while (c-- > 0) clk_disable(core.dss_ick); } c = core.dss1_fck->usecount; if (c > 0) { DSSERR("warning: dss1_fck usecount %d, disabling\n", c); while (c-- > 0) clk_disable(core.dss1_fck); } c = core.dss2_fck->usecount; if (c > 0) { DSSERR("warning: dss2_fck usecount %d, disabling\n", c); while (c-- > 0) clk_disable(core.dss2_fck); } c = core.dss_54m_fck->usecount; if (c > 0) { DSSERR("warning: dss_54m_fck usecount %d, disabling\n", c); while (c-- > 0) clk_disable(core.dss_54m_fck); } if (core.dss_96m_fck) { c = core.dss_96m_fck->usecount; if (c > 0) { DSSERR("warning: dss_96m_fck usecount %d, disabling\n", c); while (c-- > 0) clk_disable(core.dss_96m_fck); } } dss_put_clocks(); dss_uninit_overlays(pdev); dss_uninit_overlay_managers(pdev); for (i = 0; i < pdata->num_devices; ++i) omap_dss_unregister_device(pdata->devices[i]); return 0; }
/* PLATFORM DEVICE */ static int omap_dss_probe(struct platform_device *pdev) { struct omap_dss_board_info *pdata = pdev->dev.platform_data; int r = 0; int i; core.pdev = pdev; dss_init_overlay_managers(pdev); dss_init_overlays(pdev); #ifdef CONFIG_HAS_EARLYSUSPEND omap_pm_set_min_bus_tput(&pdev->dev, OCP_INITIATOR_AGENT, 166 * 1000 * 4); #endif if (cpu_is_omap44xx()) dss_init_writeback(pdev); /*Write back init*/ #ifdef HWMOD if (!cpu_is_omap44xx()) { r = dss_get_clocks(); if (r) goto err_clocks; } core.ctx_id = dss_get_ctx_id(); DSSDBG("initial ctx id %u\n", core.ctx_id); r = dss_init(pdev); if (r) { DSSERR("Failed to initialize DSS\n"); goto err_dss; } r = rfbi_init(); if (r) { DSSERR("Failed to initialize rfbi\n"); goto err_rfbi; } r = dpi_init(pdev); if (r) { DSSERR("Failed to initialize dpi\n"); goto err_dpi; } r = dispc_init(pdev); if (r) { DSSERR("Failed to initialize dispc\n"); goto err_dispc; } 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) { DSSERR("Failed to initialize SDI\n"); goto err_sdi; } } if (!cpu_is_omap24xx()) { r = dsi_init(pdev); if (r) { DSSERR("Failed to initialize DSI\n"); goto err_dsi1; } if (cpu_is_omap44xx()) { r = dsi2_init(pdev); if (r) { DSSERR("Failed to initialize DSI2\n"); goto err_dsi2; } } } #ifdef CONFIG_OMAP2_DSS_HDMI r = hdmi_init(pdev); if (r) { DSSERR("Failed to initialize hdmi\n"); goto err_hdmi; } #endif #endif r = dss_initialize_debugfs(); if (r) goto err_debugfs; for (i = 0; i < pdata->num_devices; ++i) { struct omap_dss_device *dssdev = pdata->devices[i]; r = omap_dss_register_device(dssdev); if (r) { DSSERR("device %d %s register failed %d\n", i, dssdev->name ?: "unnamed", r); while (--i >= 0) omap_dss_unregister_device(pdata->devices[i]); goto err_register; } if (def_disp_name && strcmp(def_disp_name, dssdev->name) == 0) pdata->default_device = dssdev; } #ifdef HWMOD dss_clk_disable_all(); #endif return 0; err_register: dss_uninitialize_debugfs(); err_debugfs: #ifdef HWMOD #ifdef CONFIG_OMAP2_DSS_HDMI hdmi_exit(); err_hdmi: #endif if (cpu_is_omap44xx()) dsi2_exit(); err_dsi2: if (!cpu_is_omap24xx()) dsi_exit(); err_dsi1: if (cpu_is_omap34xx()) sdi_exit(); err_sdi: venc_exit(); err_venc: dispc_exit(); err_dispc: dpi_exit(); err_dpi: rfbi_exit(); err_rfbi: dss_exit(); err_dss: dss_clk_disable_all_no_ctx(); dss_put_clocks(); err_clocks: #endif return r; }
/* PLATFORM DEVICE */ static int omap_dss_probe(struct platform_device *pdev) { struct omap_dss_board_info *pdata = pdev->dev.platform_data; int r = 0; int i; core.pdev = pdev; core.pdata = pdev->dev.platform_data; dss_init_overlay_managers(pdev); dss_init_overlays(pdev); if (cpu_is_omap44xx()) dss_init_writeback(pdev); /*Write back init*/ #ifdef HWMOD if (!cpu_is_omap44xx()) { r = dss_get_clocks(); if (r) goto err_clocks; } core.ctx_id = dss_get_ctx_id(); DSSDBG("initial ctx id %u\n", core.ctx_id); r = dss_init(pdev); if (r) { DSSERR("Failed to initialize DSS\n"); goto err_dss; } r = rfbi_init(); if (r) { DSSERR("Failed to initialize rfbi\n"); goto err_rfbi; } r = dpi_init(pdev); if (r) { DSSERR("Failed to initialize dpi\n"); goto err_dpi; } r = dispc_init(pdev); if (r) { DSSERR("Failed to initialize dispc\n"); goto err_dispc; } 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) { DSSERR("Failed to initialize SDI\n"); goto err_sdi; } } if (!cpu_is_omap24xx()) { r = dsi_init(pdev); if (r) { DSSERR("Failed to initialize DSI\n"); goto err_dsi1; } if (cpu_is_omap44xx()) { r = dsi2_init(pdev); if (r) { DSSERR("Failed to initialize DSI2\n"); goto err_dsi2; } } } // == 2011.05.31 === [email protected] START #ifdef CONFIG_OMAP2_DSS_HDMI // TEDCHO_HDMI #if defined(CONFIG_PRODUCT_LGE_HUB) || defined(CONFIG_PRODUCT_LGE_JUSTIN) #else r = hdmi_init(pdev, hdmi_code, hdmi_mode); if (r) { DSSERR("Failed to initialize hdmi\n"); goto err_hdmi; } #endif #endif #endif // == 2011.05.31 === [email protected] END r = dss_initialize_debugfs(); if (r) goto err_debugfs; for (i = 0; i < pdata->num_devices; ++i) { struct omap_dss_device *dssdev = pdata->devices[i]; r = omap_dss_register_device(dssdev); if (r) { DSSERR("device %d %s register failed %d\n", i, dssdev->name ?: "unnamed", r); while (--i >= 0) omap_dss_unregister_device(pdata->devices[i]); goto err_register; } if (def_disp_name && strcmp(def_disp_name, dssdev->name) == 0) pdata->default_device = dssdev; } #ifdef HWMOD dss_clk_disable_all(); #endif return 0; err_register: dss_uninitialize_debugfs(); err_debugfs: #ifdef HWMOD #ifdef CONFIG_OMAP2_DSS_HDMI hdmi_exit(); err_hdmi: #endif if (cpu_is_omap44xx()) dsi2_exit(); err_dsi2: if (!cpu_is_omap24xx()) dsi_exit(); err_dsi1: if (cpu_is_omap34xx()) sdi_exit(); err_sdi: venc_exit(); err_venc: dispc_exit(); err_dispc: dpi_exit(); err_dpi: rfbi_exit(); err_rfbi: dss_exit(); err_dss: dss_clk_disable_all_no_ctx(); dss_put_clocks(); err_clocks: #endif return r; }