aboutsummaryrefslogtreecommitdiffstats
path: root/recipes/linux/linux-omap-psp-2.6.32/pending/0008-OMAP3EVM-Set-minimum-throughput-requirement-for-DSS.patch
blob: e567ed70d7bccd6689d533bd4701c168d85c2f7d (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
From ba573a248dc8c33ff21fc4efbfea0ca85cdbc5d0 Mon Sep 17 00:00:00 2001
From: Ranjith Lohithakshan <ranjithl@ti.com>
Date: Tue, 7 Sep 2010 10:05:11 +0530
Subject: [PATCH 8/9] OMAP3EVM: Set minimum throughput requirement for DSS

GFX_FIFO_UNDERFLOW has been observed when the L3 rate is lowered
below 100MHz or so. Once this underflow happens the display stops
working.

This patch puts a minimum bus throughput requirement when lcd, tv
or dvi displays are enabled. The throughput is calculated in such
a manner that it will translate into a minimum L3 rate of 100MHz.

Signed-off-by: Ranjith Lohithakshan <ranjithl@ti.com>
---
 arch/arm/mach-omap2/board-omap3evm.c |    8 ++++++++
 1 files changed, 8 insertions(+), 0 deletions(-)

diff --git a/arch/arm/mach-omap2/board-omap3evm.c b/arch/arm/mach-omap2/board-omap3evm.c
index eb7ad1c..710a25d 100644
--- a/arch/arm/mach-omap2/board-omap3evm.c
+++ b/arch/arm/mach-omap2/board-omap3evm.c
@@ -422,12 +422,15 @@ static int omap3_evm_enable_lcd(struct omap_dss_device *dssdev)
 	else
 		gpio_set_value(OMAP3EVM_LCD_PANEL_BKLIGHT_GPIO, 1);
 
+	omap_pm_set_min_bus_tput(&dssdev->dev, OCP_INITIATOR_AGENT, 400000);
+
 	lcd_enabled = 1;
 	return 0;
 }
 
 static void omap3_evm_disable_lcd(struct omap_dss_device *dssdev)
 {
+	omap_pm_set_min_bus_tput(&dssdev->dev, OCP_INITIATOR_AGENT, 0);
 	gpio_set_value(OMAP3EVM_LCD_PANEL_ENVDD, 1);
 
 	if (get_omap3_evm_rev() >= OMAP3EVM_BOARD_GEN_2)
@@ -449,11 +452,13 @@ static struct omap_dss_device omap3_evm_lcd_device = {
 
 static int omap3_evm_enable_tv(struct omap_dss_device *dssdev)
 {
+	omap_pm_set_min_bus_tput(&dssdev->dev, OCP_INITIATOR_AGENT, 400000);
 	return 0;
 }
 
 static void omap3_evm_disable_tv(struct omap_dss_device *dssdev)
 {
+	omap_pm_set_min_bus_tput(&dssdev->dev, OCP_INITIATOR_AGENT, 0);
 }
 
 static struct omap_dss_device omap3_evm_tv_device = {
@@ -488,12 +493,15 @@ static int omap3_evm_enable_dvi(struct omap_dss_device *dssdev)
 		omap_mux_set_gpio(OMAP_MUX_MODE3, 3);
 	}
 
+	omap_pm_set_min_bus_tput(&dssdev->dev, OCP_INITIATOR_AGENT, 400000);
+
 	dvi_enabled = 1;
 	return 0;
 }
 
 static void omap3_evm_disable_dvi(struct omap_dss_device *dssdev)
 {
+	omap_pm_set_min_bus_tput(&dssdev->dev, OCP_INITIATOR_AGENT, 0);
 	gpio_set_value(OMAP3EVM_DVI_PANEL_EN_GPIO, 0);
 
 	dvi_enabled = 0;
-- 
1.6.2.4