arm: tegra: cardhu: Fix the issue of boot screen corruption.
Kevin Huang [Wed, 6 Jul 2011 01:27:43 +0000 (18:27 -0700)]
- The issue is due to the corruption of bootloader fb during kernel
initialization. This change reserves the bootloader fb and then
frees it until bootloader fb is copied to fb for Cardhu, Ventana,
Whistler, Enterprise and Aruba.
- Change color depth of Cardhu and Harmony to 32-bit.

Bug 828271
Bug 832016

Original-Change-Id: I05ef5930ee68dcbd672a5cb59b4568a2c88a2e55
Reviewed-on: http://git-master/r/34966
Reviewed-by: Varun Colbert <vcolbert@nvidia.com>
Tested-by: Varun Colbert <vcolbert@nvidia.com>

Rebase-Id: Rbfa743091c70c050523ce1c4a49aab198d4ae1a4

arch/arm/mach-tegra/board-enterprise-panel.c
arch/arm/mach-tegra/board-enterprise.c

index c2c31ba..e64a031 100644 (file)
@@ -309,7 +309,8 @@ static struct tegra_fb_data enterprise_hdmi_fb_data = {
        .win            = 0,
        .xres           = 1366,
        .yres           = 768,
-       .bits_per_pixel = 16,
+       .bits_per_pixel = 32,
+       .flags          = TEGRA_FB_FLIP_ON_PROBE,
 };
 
 static struct tegra_dc_out enterprise_disp2_out = {
@@ -499,6 +500,7 @@ static struct tegra_fb_data enterprise_dsi_fb_data = {
        .xres           = 540,
        .yres           = 960,
        .bits_per_pixel = 32,
+       .flags          = TEGRA_FB_FLIP_ON_PROBE,
 };
 
 
@@ -611,6 +613,10 @@ int __init enterprise_panel_init(void)
        res->start = tegra_fb_start;
        res->end = tegra_fb_start + tegra_fb_size - 1;
 
+       /* Copy the bootloader fb to the fb. */
+       tegra_move_framebuffer(tegra_fb_start, tegra_bootloader_fb_start,
+               min(tegra_fb_size, tegra_bootloader_fb_size));
+
        if (!err)
                err = nvhost_device_register(&enterprise_disp1_device);
 
index 981bbdb..23a13a9 100644 (file)
@@ -422,6 +422,7 @@ static void __init tegra_enterprise_init(void)
        enterprise_emc_init();
        enterprise_sensors_init();
        enterprise_suspend_init();
+       tegra_release_bootloader_fb();
 }
 
 static void __init tegra_enterprise_reserve(void)