diff options
author | Hyongbin Kim <hyongbink@nvidia.com> | 2013-09-12 17:39:56 +0900 |
---|---|---|
committer | Gabby Lee <galee@nvidia.com> | 2013-09-30 01:01:02 -0700 |
commit | e6ca0e21fa04b4ac0e7b1d72563736bbbff60ccd (patch) | |
tree | 2fddb5a05f7b074190ba50a0fc4bbe80579554fa | |
parent | 5d675fa37bbf2f68a80314902f1b502c15b8166e (diff) |
ARM: TT: Skip hdmi init in charger boot
To save charger boot mode boot time, skip hdmi init code.
Bug 1367030
Change-Id: I34ab00a1fa06c0d0819bb76e557860920f78892d
Signed-off-by: Hyongbin Kim <hyongbink@nvidia.com>
Reviewed-on: http://git-master/r/273601
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Min-wuk Lee <mlee@nvidia.com>
GVS: Gerrit_Virtual_Submit
Reviewed-by: Gabby Lee <galee@nvidia.com>
Tested-by: Gabby Lee <galee@nvidia.com>
-rw-r--r-- | arch/arm/mach-tegra/board-tegratab-panel.c | 62 |
1 files changed, 41 insertions, 21 deletions
diff --git a/arch/arm/mach-tegra/board-tegratab-panel.c b/arch/arm/mach-tegra/board-tegratab-panel.c index 1a01612dd449..67c1ec860d6a 100644 --- a/arch/arm/mach-tegra/board-tegratab-panel.c +++ b/arch/arm/mach-tegra/board-tegratab-panel.c @@ -445,6 +445,43 @@ static void fb2_copy_or_clear(void) tegra_clear_framebuffer(tegra_fb2_start, tegra_fb2_size); } +int tegratab_init_hdmi(struct platform_device *pdev, + struct platform_device *phost1x) +{ + int err = 0; + struct resource __maybe_unused *res; + +#ifdef CONFIG_ANDROID + /* In charger mode, don't need to copy or clear fb2 */ + if (get_androidboot_mode() == BOOTMODE_CHARGER) + return 0; +#endif + + if (!of_have_populated_dt()) { + fb2_copy_or_clear(); + res = platform_get_resource_byname(pdev, + IORESOURCE_MEM, "fbmem"); + res->start = tegra_fb2_start; + res->end = tegra_fb2_start + tegra_fb2_size - 1; + + pdev->dev.parent = &phost1x->dev; + err = platform_device_register(pdev); + if (err) { + pr_err("disp2 device registration failed\n"); + return err; + } + } else { +#ifdef CONFIG_OF + struct device_node *hdmi_node = NULL; + + hdmi_node = of_find_node_by_path("/host1x/hdmi"); + if (hdmi_node && of_device_is_available(hdmi_node)) +#endif + fb2_copy_or_clear(); + } + return 0; +} + int __init tegratab_panel_init(void) { int err = 0; @@ -496,35 +533,18 @@ int __init tegratab_panel_init(void) min(tegra_fb_size, tegra_bootloader_fb_size)); if (!of_have_populated_dt()) { - fb2_copy_or_clear(); - res = platform_get_resource_byname(&tegratab_disp2_device, - IORESOURCE_MEM, "fbmem"); - res->start = tegra_fb2_start; - res->end = tegra_fb2_start + tegra_fb2_size - 1; - tegratab_disp1_device.dev.parent = &phost1x->dev; err = platform_device_register(&tegratab_disp1_device); if (err) { pr_err("disp1 device registration failed\n"); return err; } - - tegratab_disp2_device.dev.parent = &phost1x->dev; - err = platform_device_register(&tegratab_disp2_device); - if (err) { - pr_err("disp2 device registration failed\n"); - return err; - } - } else { -#ifdef CONFIG_OF - struct device_node *hdmi_node = NULL; - - hdmi_node = of_find_node_by_path("/host1x/hdmi"); - if (hdmi_node && of_device_is_available(hdmi_node)) -#endif - fb2_copy_or_clear(); } + err = tegratab_init_hdmi(&tegratab_disp2_device, phost1x); + if (err) + return err; + #ifdef CONFIG_TEGRA_NVAVP nvavp_device.dev.parent = &phost1x->dev; err = platform_device_register(&nvavp_device); |