e567ed70d7bccd6689d533bd4701c168d85c2f7d
[openembedded.git] /
1 From ba573a248dc8c33ff21fc4efbfea0ca85cdbc5d0 Mon Sep 17 00:00:00 2001
2 From: Ranjith Lohithakshan <ranjithl@ti.com>
3 Date: Tue, 7 Sep 2010 10:05:11 +0530
4 Subject: [PATCH 8/9] OMAP3EVM: Set minimum throughput requirement for DSS
5
6 GFX_FIFO_UNDERFLOW has been observed when the L3 rate is lowered
7 below 100MHz or so. Once this underflow happens the display stops
8 working.
9
10 This patch puts a minimum bus throughput requirement when lcd, tv
11 or dvi displays are enabled. The throughput is calculated in such
12 a manner that it will translate into a minimum L3 rate of 100MHz.
13
14 Signed-off-by: Ranjith Lohithakshan <ranjithl@ti.com>
15 ---
16  arch/arm/mach-omap2/board-omap3evm.c |    8 ++++++++
17  1 files changed, 8 insertions(+), 0 deletions(-)
18
19 diff --git a/arch/arm/mach-omap2/board-omap3evm.c b/arch/arm/mach-omap2/board-omap3evm.c
20 index eb7ad1c..710a25d 100644
21 --- a/arch/arm/mach-omap2/board-omap3evm.c
22 +++ b/arch/arm/mach-omap2/board-omap3evm.c
23 @@ -422,12 +422,15 @@ static int omap3_evm_enable_lcd(struct omap_dss_device *dssdev)
24         else
25                 gpio_set_value(OMAP3EVM_LCD_PANEL_BKLIGHT_GPIO, 1);
26  
27 +       omap_pm_set_min_bus_tput(&dssdev->dev, OCP_INITIATOR_AGENT, 400000);
28 +
29         lcd_enabled = 1;
30         return 0;
31  }
32  
33  static void omap3_evm_disable_lcd(struct omap_dss_device *dssdev)
34  {
35 +       omap_pm_set_min_bus_tput(&dssdev->dev, OCP_INITIATOR_AGENT, 0);
36         gpio_set_value(OMAP3EVM_LCD_PANEL_ENVDD, 1);
37  
38         if (get_omap3_evm_rev() >= OMAP3EVM_BOARD_GEN_2)
39 @@ -449,11 +452,13 @@ static struct omap_dss_device omap3_evm_lcd_device = {
40  
41  static int omap3_evm_enable_tv(struct omap_dss_device *dssdev)
42  {
43 +       omap_pm_set_min_bus_tput(&dssdev->dev, OCP_INITIATOR_AGENT, 400000);
44         return 0;
45  }
46  
47  static void omap3_evm_disable_tv(struct omap_dss_device *dssdev)
48  {
49 +       omap_pm_set_min_bus_tput(&dssdev->dev, OCP_INITIATOR_AGENT, 0);
50  }
51  
52  static struct omap_dss_device omap3_evm_tv_device = {
53 @@ -488,12 +493,15 @@ static int omap3_evm_enable_dvi(struct omap_dss_device *dssdev)
54                 omap_mux_set_gpio(OMAP_MUX_MODE3, 3);
55         }
56  
57 +       omap_pm_set_min_bus_tput(&dssdev->dev, OCP_INITIATOR_AGENT, 400000);
58 +
59         dvi_enabled = 1;
60         return 0;
61  }
62  
63  static void omap3_evm_disable_dvi(struct omap_dss_device *dssdev)
64  {
65 +       omap_pm_set_min_bus_tput(&dssdev->dev, OCP_INITIATOR_AGENT, 0);
66         gpio_set_value(OMAP3EVM_DVI_PANEL_EN_GPIO, 0);
67  
68         dvi_enabled = 0;
69 -- 
70 1.6.2.4
71