summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHyongbin Kim <hyongbink@nvidia.com>2013-09-12 17:39:56 +0900
committerGabby Lee <galee@nvidia.com>2013-09-30 01:01:02 -0700
commite6ca0e21fa04b4ac0e7b1d72563736bbbff60ccd (patch)
tree2fddb5a05f7b074190ba50a0fc4bbe80579554fa
parent5d675fa37bbf2f68a80314902f1b502c15b8166e (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.c62
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);