summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra/board-cardhu-panel.c
diff options
context:
space:
mode:
authorJon Mayo <jmayo@nvidia.com>2011-03-10 16:07:26 -0800
committerDan Willemsen <dwillemsen@nvidia.com>2011-11-30 21:52:07 -0800
commitee2c42400237c637c1616016b37a90d2e6e01dd5 (patch)
treecae9571b9b4443b473fdfbc321d66031f94c87ad /arch/arm/mach-tegra/board-cardhu-panel.c
parent1002735c500c8417bf4d23fa76ffbd0f08ab446f (diff)
tegra: cardhu: use earlysuspend for display
trigger display FB_BLANK_POWERDOWN during earlysuspend. Original-Change-Id: I21c75bca28bd599730b93b84d2c5de1dcb40a74e Reviewed-on: http://git-master/r/22472 Reviewed-by: Jonathan Mayo <jmayo@nvidia.com> Tested-by: Jonathan Mayo <jmayo@nvidia.com> Reviewed-by: Aleksandr Frid <afrid@nvidia.com> Tested-by: Aleksandr Frid <afrid@nvidia.com> Reviewed-by: Mayuresh Kulkarni <mkulkarni@nvidia.com> Reviewed-by: Yu-Huan Hsu <yhsu@nvidia.com> Original-Change-Id: I1a9bc8b499ab39cebea0a1435bfe519dba7c55c0 Rebase-Id: R63cbab44f6fb4b09f4396e238ef84f9a810c57b6
Diffstat (limited to 'arch/arm/mach-tegra/board-cardhu-panel.c')
-rw-r--r--arch/arm/mach-tegra/board-cardhu-panel.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/arch/arm/mach-tegra/board-cardhu-panel.c b/arch/arm/mach-tegra/board-cardhu-panel.c
index e5d5d345ad8b..b667fbe2508b 100644
--- a/arch/arm/mach-tegra/board-cardhu-panel.c
+++ b/arch/arm/mach-tegra/board-cardhu-panel.c
@@ -24,6 +24,7 @@
#include <linux/resource.h>
#include <asm/mach-types.h>
#include <linux/platform_device.h>
+#include <linux/earlysuspend.h>
#include <linux/pwm_backlight.h>
#include <asm/atomic.h>
#include <linux/nvhost.h>
@@ -1039,6 +1040,25 @@ static struct platform_device *cardhu_gfx_devices[] __initdata = {
};
+#ifdef CONFIG_HAS_EARLYSUSPEND
+/* put early_suspend/late_resume handlers here for the display in order
+ * to keep the code out of the display driver, keeping it closer to upstream
+ */
+struct early_suspend cardhu_panel_early_suspender;
+
+static void cardhu_panel_early_suspend(struct early_suspend *h)
+{
+ if (num_registered_fb > 0)
+ fb_blank(registered_fb[0], FB_BLANK_POWERDOWN);
+}
+
+static void cardhu_panel_late_resume(struct early_suspend *h)
+{
+ if (num_registered_fb > 0)
+ fb_blank(registered_fb[0], FB_BLANK_UNBLANK);
+}
+#endif
+
int __init cardhu_panel_init(void)
{
int err;
@@ -1122,6 +1142,14 @@ int __init cardhu_panel_init(void)
tegra_gpio_enable(cardhu_hdmi_hpd);
gpio_request(cardhu_hdmi_hpd, "hdmi_hpd");
gpio_direction_input(cardhu_hdmi_hpd);
+
+#ifdef CONFIG_HAS_EARLYSUSPEND
+ cardhu_panel_early_suspender.suspend = cardhu_panel_early_suspend;
+ cardhu_panel_early_suspender.resume = cardhu_panel_late_resume;
+ cardhu_panel_early_suspender.level = EARLY_SUSPEND_LEVEL_DISABLE_FB;
+ register_early_suspend(&cardhu_panel_early_suspender);
+#endif
+
err = platform_add_devices(cardhu_gfx_devices,
ARRAY_SIZE(cardhu_gfx_devices));