From 02e940233cc1aa34f43b6f302249a38290ee4116 Mon Sep 17 00:00:00 2001 From: Dan Johansson Date: Wed, 6 Apr 2011 10:18:21 +0200 Subject: video: mcde: Add tripple buffer support This patch adds tripple buffer support to the mcde driver. Useful for video mode devices (e.g. HDMI) where a missed v-sync leads to half frame rate (the client has to wait for the next v-sync). Tripple buffering solves this problem since there are two back buffers the client can use. Tripple buffering for HDMI is activated in menuconfig by enabling: System Type -> Display selection -> Enable tripple buffer for HDMI display ST-Ericsson ID: 335004 ST-Ericsson Linux next: Not tested, ER 282779 ST-Ericsson FOSS-OUT ID: Trivial Change-Id: Ice1f936a8a00e2fbc8fdf7e8c6621c539efe0ac4 Signed-off-by: Jimmy Rubin Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/21839 Reviewed-by: QATOOLS Reviewed-by: Per PERSSON Reviewed-by: QATEST Reviewed-by: Marcel TUNNISSEN --- arch/arm/configs/u8500_defconfig | 1 + arch/arm/mach-ux500/Kconfig-arch | 6 ++++++ arch/arm/mach-ux500/board-mop500-mcde.c | 6 ++++++ 3 files changed, 13 insertions(+) (limited to 'arch/arm') diff --git a/arch/arm/configs/u8500_defconfig b/arch/arm/configs/u8500_defconfig index 20204613d42..2b1bcd0cb25 100755 --- a/arch/arm/configs/u8500_defconfig +++ b/arch/arm/configs/u8500_defconfig @@ -308,6 +308,7 @@ CONFIG_DISPLAY_GENERIC_DSI_PRIMARY_VSYNC=y # CONFIG_DISPLAY_GENERIC_DSI_SECONDARY is not set # CONFIG_DISPLAY_AB8500_TERTIARY is not set # CONFIG_DISPLAY_AV8100_TERTIARY is not set +# CONFIG_DISPLAY_AV8100_TRIPPLE_BUFFER is not set CONFIG_U8500_CPUFREQ=y CONFIG_U8500_CPUIDLE=y CONFIG_U8500_CPUIDLE_DEEPEST_STATE=4 diff --git a/arch/arm/mach-ux500/Kconfig-arch b/arch/arm/mach-ux500/Kconfig-arch index a845bc59757..04b90f366e3 100644 --- a/arch/arm/mach-ux500/Kconfig-arch +++ b/arch/arm/mach-ux500/Kconfig-arch @@ -149,6 +149,12 @@ config DISPLAY_AV8100_TERTIARY help Say yes here if HDMI output support +config DISPLAY_AV8100_TRIPPLE_BUFFER + bool "Enable tripple buffer for HDMI display" + depends on DISPLAY_AV8100_TERTIARY + help + Say yes to enable tripple buffer. You'll get double buffer otherwise + endmenu endif diff --git a/arch/arm/mach-ux500/board-mop500-mcde.c b/arch/arm/mach-ux500/board-mop500-mcde.c index 53e88150139..0139fb7034a 100644 --- a/arch/arm/mach-ux500/board-mop500-mcde.c +++ b/arch/arm/mach-ux500/board-mop500-mcde.c @@ -462,6 +462,7 @@ static int display_postregistered_callback(struct notifier_block *nb, virtual_width = width; virtual_height = height * 2; + #ifdef CONFIG_DISPLAY_GENERIC_DSI_PRIMARY_AUTO_SYNC if (ddev->id == PRIMARY_DISPLAY_ID) virtual_height = height; @@ -472,6 +473,11 @@ static int display_postregistered_callback(struct notifier_block *nb, virtual_height = height; #endif +#ifdef CONFIG_DISPLAY_AV8100_TRIPPLE_BUFFER + if (ddev->id == TERTIARY_DISPLAY_ID) + virtual_height = height * 3; +#endif + if (ddev->id == TERTIARY_DISPLAY_ID) { #ifdef CONFIG_MCDE_DISPLAY_HDMI_FB_AUTO_CREATE hdmi_fb_onoff(ddev, 1, 0, 0); -- cgit v1.2.3