From 155af66b8ea338782dae00ac5fa220f70901c118 Mon Sep 17 00:00:00 2001 From: Marcel Tunnissen Date: Thu, 21 Apr 2011 13:51:39 +0200 Subject: video: mcde: improve display configuration Makes it possible to configure both AB8500 and AV8100 displays as long as the MCDE channels are available. Also fixes build problems if main display is not configured or if no display is configured, and fixes configuration problems with TV out through AB8500. Depends-On: Id9dac8b436a6013e5bf3a775ef93d99705663fb2 ST-Ericsson ID: 269500 ST-Ericsson Linux next: Not tested, ER 282779 ST-Ericsson FOSS-OUT ID: Trivial Change-Id: I57ad75c81ade899c3063033dfe0c81c644fc41c6 Signed-off-by: Marcel Tunnissen Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/21817 Tested-by: Marcel TUNNISSEN Reviewed-by: Jimmy RUBIN Reviewed-by: QATOOLS Reviewed-by: Marcel TUNNISSEN Reviewed-by: Per PERSSON Reviewed-by: Jonas ABERG fixmr to merge with video: mcde: improve display configuration 8d74729c8d5f7308ae7ca81f56ddd8811c3435ee --- arch/arm/mach-ux500/Kconfig | 2 +- arch/arm/mach-ux500/Kconfig-arch | 2 +- arch/arm/mach-ux500/board-mop500-mcde.c | 26 +++++++++++++++----------- arch/arm/mach-ux500/board-mop500-stuib.c | 20 ++++++++++++++++---- arch/arm/mach-ux500/board-u5500-mcde.c | 17 ++++++++++------- arch/arm/mach-ux500/board-u5500.c | 3 ++- 6 files changed, 45 insertions(+), 25 deletions(-) (limited to 'arch/arm/mach-ux500') diff --git a/arch/arm/mach-ux500/Kconfig b/arch/arm/mach-ux500/Kconfig index 9a805655e78..384e3b45bfa 100644 --- a/arch/arm/mach-ux500/Kconfig +++ b/arch/arm/mach-ux500/Kconfig @@ -127,7 +127,7 @@ config U5500_MODEM_IRQ config TEE_UX500 bool "Trusted Execution Environment (TEE) ux500 hardware support" - depends on (TEE_SUPPORT && MACH_U8500_MOP) + depends on (TEE_SUPPORT && MACH_U8500) default y help Adds TEE hardware support for ux500 platforms. diff --git a/arch/arm/mach-ux500/Kconfig-arch b/arch/arm/mach-ux500/Kconfig-arch index d16bf788392..580566baf99 100644 --- a/arch/arm/mach-ux500/Kconfig-arch +++ b/arch/arm/mach-ux500/Kconfig-arch @@ -138,7 +138,7 @@ config DISPLAY_AB8500_TERTIARY config DISPLAY_AV8100_TERTIARY bool "AV8100 HDMI/CVBS display support" - depends on (MACH_U8500_MOP || MACH_U5500) + depends on (MACH_U8500 || MACH_U5500) select MCDE_DISPLAY_AV8100 help Say yes here if HDMI output support diff --git a/arch/arm/mach-ux500/board-mop500-mcde.c b/arch/arm/mach-ux500/board-mop500-mcde.c index bf4045f3965..56201ccfffc 100644 --- a/arch/arm/mach-ux500/board-mop500-mcde.c +++ b/arch/arm/mach-ux500/board-mop500-mcde.c @@ -29,10 +29,6 @@ #define DSI_UNIT_INTERVAL_1 0x9 #define DSI_UNIT_INTERVAL_2 0x5 -#define PRIMARY_DISPLAY_ID 0 -#define SECONDARY_DISPLAY_ID 1 -#define TERTIARY_DISPLAY_ID 2 - #ifdef CONFIG_FB_MCDE /* The initialization of hdmi disp driver must be delayed in order to @@ -42,7 +38,13 @@ static struct delayed_work work_dispreg_hdmi; #define DISPREG_HDMI_DELAY 6000 #endif -#define MCDE_NR_OF_DISPLAYS 3 +enum { + PRIMARY_DISPLAY_ID, + SECONDARY_DISPLAY_ID, + AV8100_DISPLAY_ID, + AB8500_DISPLAY_ID, + MCDE_NR_OF_DISPLAYS +}; static int display_initialized_during_boot; static int __init startup_graphics_setup(char *str) @@ -327,7 +329,7 @@ failed: struct mcde_display_device tvout_ab8500_display = { .name = "mcde_tv_ab8500", - .id = TERTIARY_DISPLAY_ID, + .id = AB8500_DISPLAY_ID, .port = &port_tvout1, .chnl_id = MCDE_CHNL_B, .fifo = MCDE_FIFO_B, @@ -399,7 +401,7 @@ static struct mcde_display_hdmi_platform_data av8100_hdmi_pdata = { static struct mcde_display_device av8100_hdmi = { .name = "av8100_hdmi", - .id = TERTIARY_DISPLAY_ID, + .id = AV8100_DISPLAY_ID, .port = &port2, .chnl_id = MCDE_CHNL_B, .fifo = MCDE_FIFO_B, @@ -465,22 +467,24 @@ 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 defined(CONFIG_DISPLAY_GENERIC_DSI_PRIMARY) && \ + defined(CONFIG_DISPLAY_GENERIC_DSI_PRIMARY_AUTO_SYNC) if (ddev->id == PRIMARY_DISPLAY_ID) virtual_height = height; #endif -#ifdef CONFIG_DISPLAY_GENERIC_DSI_SECONDARY_AUTO_SYNC +#if defined(CONFIG_DISPLAY_GENERIC_DSI_SECONDARY) && \ + defined(CONFIG_DISPLAY_GENERIC_DSI_SECONDARY_AUTO_SYNC) if (ddev->id == SECONDARY_DISPLAY_ID) virtual_height = height; #endif #ifdef CONFIG_DISPLAY_AV8100_TRIPPLE_BUFFER - if (ddev->id == TERTIARY_DISPLAY_ID) + if (ddev->id == AV8100_DISPLAY_ID) virtual_height = height * 3; #endif - if (ddev->id == TERTIARY_DISPLAY_ID) { + if (ddev->id == AV8100_DISPLAY_ID) { #ifdef CONFIG_MCDE_DISPLAY_HDMI_FB_AUTO_CREATE hdmi_fb_onoff(ddev, 1, 0, 0); #endif /* CONFIG_MCDE_DISPLAY_HDMI_FB_AUTO_CREATE */ diff --git a/arch/arm/mach-ux500/board-mop500-stuib.c b/arch/arm/mach-ux500/board-mop500-stuib.c index c3e42c61cac..fc0fad94052 100644 --- a/arch/arm/mach-ux500/board-mop500-stuib.c +++ b/arch/arm/mach-ux500/board-mop500-stuib.c @@ -247,8 +247,14 @@ static struct bu21013_platform_device tsc_plat_device = { .touch_x_max = TOUCH_XMAX, .touch_y_max = TOUCH_YMAX, .has_ext_clk = false, - .x_flip = false, - .y_flip = true, +#if defined(CONFIG_DISPLAY_GENERIC_DSI_PRIMARY_ROTATION_ANGLE) && \ + CONFIG_DISPLAY_GENERIC_DSI_PRIMARY_ROTATION_ANGLE == 270 + .x_flip = true, + .y_flip = false, +#else + .x_flip = false, + .y_flip = true, +#endif }; static struct bu21013_platform_device tsc_plat2_device = { @@ -259,8 +265,14 @@ static struct bu21013_platform_device tsc_plat2_device = { .touch_x_max = TOUCH_XMAX, .touch_y_max = TOUCH_YMAX, .has_ext_clk = false, - .x_flip = false, - .y_flip = true, +#if defined(CONFIG_DISPLAY_GENERIC_DSI_PRIMARY_ROTATION_ANGLE) && \ + CONFIG_DISPLAY_GENERIC_DSI_PRIMARY_ROTATION_ANGLE == 270 + .x_flip = true, + .y_flip = false, +#else + .x_flip = false, + .y_flip = true, +#endif }; static struct i2c_board_info __initdata u8500_i2c3_devices_stuib[] = { diff --git a/arch/arm/mach-ux500/board-u5500-mcde.c b/arch/arm/mach-ux500/board-u5500-mcde.c index d1a49297965..7394058881d 100644 --- a/arch/arm/mach-ux500/board-u5500-mcde.c +++ b/arch/arm/mach-ux500/board-u5500-mcde.c @@ -22,7 +22,7 @@ #define DSI_UNIT_INTERVAL_2 0x5 #define PRIMARY_DISPLAY_ID 0 -#define TERTIARY_DISPLAY_ID 1 +#define AV8100_DISPLAY_ID 2 #ifdef CONFIG_FB_MCDE @@ -63,7 +63,8 @@ static struct mcde_port port0 = { .pixel_format = MCDE_PORTPIXFMT_DSI_24BPP, .ifc = DSI_VIDEO_MODE, .link = 0, -#ifdef CONFIG_DISPLAY_GENERIC_DSI_PRIMARY_AUTO_SYNC +#if defined(CONFIG_DISPLAY_GENERIC_DSI_PRIMARY) && \ + defined(CONFIG_DISPLAY_GENERIC_DSI_PRIMARY_AUTO_SYNC) .sync_src = MCDE_SYNCSRC_OFF, .update_auto_trig = true, #else @@ -169,7 +170,7 @@ static struct mcde_display_hdmi_platform_data av8100_hdmi_pdata = { static struct mcde_display_device av8100_hdmi = { .name = "av8100_hdmi", - .id = TERTIARY_DISPLAY_ID, + .id = AV8100_DISPLAY_ID, .port = &port2, .chnl_id = MCDE_CHNL_B, .fifo = MCDE_FIFO_B, @@ -235,17 +236,18 @@ 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 defined(CONFIG_DISPLAY_GENERIC_DSI_PRIMARY) && \ + defined(CONFIG_DISPLAY_GENERIC_DSI_PRIMARY_AUTO_SYNC) if (ddev->id == PRIMARY_DISPLAY_ID) virtual_height = height; #endif #ifdef CONFIG_DISPLAY_AV8100_TRIPPLE_BUFFER - if (ddev->id == TERTIARY_DISPLAY_ID) + if (ddev->id == AV8100_DISPLAY_ID) virtual_height = height * 3; #endif - if (ddev->id == TERTIARY_DISPLAY_ID) { + if (ddev->id == AV8100_DISPLAY_ID) { #ifdef CONFIG_MCDE_DISPLAY_HDMI_FB_AUTO_CREATE hdmi_fb_onoff(ddev, 1, 0, 0); #endif /* CONFIG_MCDE_DISPLAY_HDMI_FB_AUTO_CREATE */ @@ -283,7 +285,8 @@ static struct notifier_block display_nb = { * The main display will not be updated if startup graphics is displayed * from u-boot. */ -#ifdef CONFIG_DISPLAY_GENERIC_DSI_PRIMARY_AUTO_SYNC +#if defined(CONFIG_DISPLAY_GENERIC_DSI_PRIMARY) && \ + defined(CONFIG_DISPLAY_GENERIC_DSI_PRIMARY_AUTO_SYNC) static int framebuffer_postregistered_callback(struct notifier_block *nb, unsigned long event, void *data) { diff --git a/arch/arm/mach-ux500/board-u5500.c b/arch/arm/mach-ux500/board-u5500.c index 537e4d6c8a0..cb2eedd7baa 100644 --- a/arch/arm/mach-ux500/board-u5500.c +++ b/arch/arm/mach-ux500/board-u5500.c @@ -59,7 +59,8 @@ static struct lsm303dlh_platform_data __initdata lsm303dlh_pdata = { static struct synaptics_rmi4_platform_data rmi4_i2c_platformdata = { .irq_number = NOMADIK_GPIO_TO_IRQ(179), .irq_type = (IRQF_TRIGGER_FALLING | IRQF_SHARED), -#if CONFIG_DISPLAY_GENERIC_DSI_PRIMARY_ROTATION_ANGLE == 270 +#if defined(CONFIG_DISPLAY_GENERIC_DSI_PRIMARY_ROTATION_ANGLE) && \ + CONFIG_DISPLAY_GENERIC_DSI_PRIMARY_ROTATION_ANGLE == 270 .x_flip = true, .y_flip = false, #else -- cgit v1.2.3