summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcel Tunnissen <Marcel.Tuennissen@stericsson.com>2011-04-21 13:51:39 +0200
committerUlf Hansson <ulf.hansson@stericsson.com>2011-09-19 15:15:30 +0200
commit155af66b8ea338782dae00ac5fa220f70901c118 (patch)
tree545f393478e60f0f4b9fec30069431460812b1de
parent2de30da7fdbcdf75ddf3f6d0130fee008905902a (diff)
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 <Marcel.Tuennissen@stericsson.com> Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/21817 Tested-by: Marcel TUNNISSEN <marcel.tuennissen@stericsson.com> Reviewed-by: Jimmy RUBIN <jimmy.rubin@stericsson.com> Reviewed-by: QATOOLS Reviewed-by: Marcel TUNNISSEN <marcel.tuennissen@stericsson.com> Reviewed-by: Per PERSSON <per.xb.persson@stericsson.com> Reviewed-by: Jonas ABERG <jonas.aberg@stericsson.com> fixmr to merge with video: mcde: improve display configuration 8d74729c8d5f7308ae7ca81f56ddd8811c3435ee
-rw-r--r--arch/arm/mach-ux500/Kconfig2
-rw-r--r--arch/arm/mach-ux500/Kconfig-arch2
-rw-r--r--arch/arm/mach-ux500/board-mop500-mcde.c26
-rw-r--r--arch/arm/mach-ux500/board-mop500-stuib.c20
-rw-r--r--arch/arm/mach-ux500/board-u5500-mcde.c17
-rw-r--r--arch/arm/mach-ux500/board-u5500.c3
6 files changed, 45 insertions, 25 deletions
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