summaryrefslogtreecommitdiff
path: root/recipes/linux/linux-omap-pm-2.6.29/dss2/0069-DSS2-OMAP3EVM-Added-DSI-powerup-and-powerdown-func.patch
blob: c637c48602cb881c96bb7ae1cc458a7afce33013 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
From b06406f3e5c3958f69185314c969f7c1a3265f71 Mon Sep 17 00:00:00 2001
From: Hardik Shah <hardik.shah@ti.com>
Date: Thu, 14 May 2009 15:04:17 +0530
Subject: [PATCH 69/69] DSS2: OMAP3EVM: Added DSI powerup and powerdown functions

Copied fom 3430sdp implementation.

Signed-off-by: Hardik Shah <hardik.shah@ti.com>
---
 arch/arm/mach-omap2/board-omap3evm.c |   62 +++++++++++++++++++++-------------
 1 files changed, 38 insertions(+), 24 deletions(-)

diff --git a/arch/arm/mach-omap2/board-omap3evm.c b/arch/arm/mach-omap2/board-omap3evm.c
index 6f5a866..57c4fc7 100644
--- a/arch/arm/mach-omap2/board-omap3evm.c
+++ b/arch/arm/mach-omap2/board-omap3evm.c
@@ -237,6 +237,38 @@ static int __init omap3_evm_i2c_init(void)
 static int lcd_enabled;
 static int dvi_enabled;
 
+static void enable_vpll2(int enable)
+{
+	u8 ded_val, grp_val;
+
+	if (enable) {
+		ded_val = ENABLE_VPLL2_DEDICATED;
+		grp_val = ENABLE_VPLL2_DEV_GRP;
+	} else {
+		ded_val = 0;
+		grp_val = 0;
+	}
+
+	twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER,
+			ded_val, TWL4030_VPLL2_DEDICATED);
+	twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER,
+			grp_val, TWL4030_VPLL2_DEV_GRP);
+}
+
+static int omap3evm_dsi_power_up(void)
+{
+	if (omap_rev() > OMAP3430_REV_ES1_0)
+		enable_vpll2(1);
+	return 0;
+}
+
+static void omap3evm_dsi_power_down(void)
+{
+	if (omap_rev() > OMAP3430_REV_ES1_0)
+		enable_vpll2(0);
+}
+
+
 static void __init omap3_evm_display_init(void)
 {
 	int r;
@@ -306,12 +338,7 @@ static int omap3_evm_panel_enable_lcd(struct omap_display *display)
 		printk(KERN_ERR "cannot enable LCD, DVI is enabled\n");
 		return -EINVAL;
 	}
-	if (omap_rev() > OMAP3430_REV_ES1_0) {
-		twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER,
-			ENABLE_VPLL2_DEDICATED, TWL4030_VPLL2_DEDICATED);
-		twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER,
-			ENABLE_VPLL2_DEV_GRP, TWL4030_VPLL2_DEV_GRP);
-	}
+	omap3evm_dsi_power_up();
 	gpio_direction_output(LCD_PANEL_ENABLE_GPIO, 0);
 	lcd_enabled = 1;
 	return 0;
@@ -319,12 +346,7 @@ static int omap3_evm_panel_enable_lcd(struct omap_display *display)
 
 static void omap3_evm_panel_disable_lcd(struct omap_display *display)
 {
-	if (omap_rev() > OMAP3430_REV_ES1_0) {
-		twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, 0x0,
-				TWL4030_VPLL2_DEDICATED);
-		twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, 0x0,
-				TWL4030_VPLL2_DEV_GRP);
-	}
+	omap3evm_dsi_power_down();
 	gpio_direction_output(LCD_PANEL_ENABLE_GPIO, 1);
 	lcd_enabled = 0;
 }
@@ -370,13 +392,8 @@ static int omap3_evm_panel_enable_dvi(struct omap_display *display)
 		printk(KERN_ERR "cannot enable DVI, LCD is enabled\n");
 		return -EINVAL;
 	}
-	if (omap_rev() > OMAP3430_REV_ES1_0) {
-		twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER,
-			ENABLE_VPLL2_DEDICATED, TWL4030_VPLL2_DEDICATED);
-		twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER,
-			ENABLE_VPLL2_DEV_GRP, TWL4030_VPLL2_DEV_GRP);
-	}
 
+	omap3evm_dsi_power_up();
 	twl4030_i2c_write_u8(TWL4030_MODULE_GPIO, 0x80,
 			TWL4030_GPIODATA_IN3);
 	twl4030_i2c_write_u8(TWL4030_MODULE_GPIO, 0x80,
@@ -388,13 +405,8 @@ static int omap3_evm_panel_enable_dvi(struct omap_display *display)
 
 static void omap3_evm_panel_disable_dvi(struct omap_display *display)
 {
-	if (omap_rev() > OMAP3430_REV_ES1_0) {
-		twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, 0x0,
-				TWL4030_VPLL2_DEDICATED);
-		twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, 0x0,
-				TWL4030_VPLL2_DEV_GRP);
-	}
 
+	omap3evm_dsi_power_down();
 	twl4030_i2c_write_u8(TWL4030_MODULE_GPIO, 0x00,
 			TWL4030_GPIODATA_IN3);
 	twl4030_i2c_write_u8(TWL4030_MODULE_GPIO, 0x00,
@@ -413,6 +425,8 @@ static struct omap_dss_display_config omap3_evm_display_data_dvi = {
 };
 
 static struct omap_dss_board_info omap3_evm_dss_data = {
+	.dsi_power_up = omap3evm_dsi_power_up,
+	.dsi_power_down = omap3evm_dsi_power_down,
 	.num_displays = 3,
 	.displays = {
 		&omap3_evm_display_data,
-- 
1.6.2.4