c637c48602cb881c96bb7ae1cc458a7afce33013
[openembedded.git] /
1 From b06406f3e5c3958f69185314c969f7c1a3265f71 Mon Sep 17 00:00:00 2001
2 From: Hardik Shah <hardik.shah@ti.com>
3 Date: Thu, 14 May 2009 15:04:17 +0530
4 Subject: [PATCH 69/69] DSS2: OMAP3EVM: Added DSI powerup and powerdown functions
5
6 Copied fom 3430sdp implementation.
7
8 Signed-off-by: Hardik Shah <hardik.shah@ti.com>
9 ---
10  arch/arm/mach-omap2/board-omap3evm.c |   62 +++++++++++++++++++++-------------
11  1 files changed, 38 insertions(+), 24 deletions(-)
12
13 diff --git a/arch/arm/mach-omap2/board-omap3evm.c b/arch/arm/mach-omap2/board-omap3evm.c
14 index 6f5a866..57c4fc7 100644
15 --- a/arch/arm/mach-omap2/board-omap3evm.c
16 +++ b/arch/arm/mach-omap2/board-omap3evm.c
17 @@ -237,6 +237,38 @@ static int __init omap3_evm_i2c_init(void)
18  static int lcd_enabled;
19  static int dvi_enabled;
20  
21 +static void enable_vpll2(int enable)
22 +{
23 +       u8 ded_val, grp_val;
24 +
25 +       if (enable) {
26 +               ded_val = ENABLE_VPLL2_DEDICATED;
27 +               grp_val = ENABLE_VPLL2_DEV_GRP;
28 +       } else {
29 +               ded_val = 0;
30 +               grp_val = 0;
31 +       }
32 +
33 +       twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER,
34 +                       ded_val, TWL4030_VPLL2_DEDICATED);
35 +       twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER,
36 +                       grp_val, TWL4030_VPLL2_DEV_GRP);
37 +}
38 +
39 +static int omap3evm_dsi_power_up(void)
40 +{
41 +       if (omap_rev() > OMAP3430_REV_ES1_0)
42 +               enable_vpll2(1);
43 +       return 0;
44 +}
45 +
46 +static void omap3evm_dsi_power_down(void)
47 +{
48 +       if (omap_rev() > OMAP3430_REV_ES1_0)
49 +               enable_vpll2(0);
50 +}
51 +
52 +
53  static void __init omap3_evm_display_init(void)
54  {
55         int r;
56 @@ -306,12 +338,7 @@ static int omap3_evm_panel_enable_lcd(struct omap_display *display)
57                 printk(KERN_ERR "cannot enable LCD, DVI is enabled\n");
58                 return -EINVAL;
59         }
60 -       if (omap_rev() > OMAP3430_REV_ES1_0) {
61 -               twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER,
62 -                       ENABLE_VPLL2_DEDICATED, TWL4030_VPLL2_DEDICATED);
63 -               twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER,
64 -                       ENABLE_VPLL2_DEV_GRP, TWL4030_VPLL2_DEV_GRP);
65 -       }
66 +       omap3evm_dsi_power_up();
67         gpio_direction_output(LCD_PANEL_ENABLE_GPIO, 0);
68         lcd_enabled = 1;
69         return 0;
70 @@ -319,12 +346,7 @@ static int omap3_evm_panel_enable_lcd(struct omap_display *display)
71  
72  static void omap3_evm_panel_disable_lcd(struct omap_display *display)
73  {
74 -       if (omap_rev() > OMAP3430_REV_ES1_0) {
75 -               twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, 0x0,
76 -                               TWL4030_VPLL2_DEDICATED);
77 -               twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, 0x0,
78 -                               TWL4030_VPLL2_DEV_GRP);
79 -       }
80 +       omap3evm_dsi_power_down();
81         gpio_direction_output(LCD_PANEL_ENABLE_GPIO, 1);
82         lcd_enabled = 0;
83  }
84 @@ -370,13 +392,8 @@ static int omap3_evm_panel_enable_dvi(struct omap_display *display)
85                 printk(KERN_ERR "cannot enable DVI, LCD is enabled\n");
86                 return -EINVAL;
87         }
88 -       if (omap_rev() > OMAP3430_REV_ES1_0) {
89 -               twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER,
90 -                       ENABLE_VPLL2_DEDICATED, TWL4030_VPLL2_DEDICATED);
91 -               twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER,
92 -                       ENABLE_VPLL2_DEV_GRP, TWL4030_VPLL2_DEV_GRP);
93 -       }
94  
95 +       omap3evm_dsi_power_up();
96         twl4030_i2c_write_u8(TWL4030_MODULE_GPIO, 0x80,
97                         TWL4030_GPIODATA_IN3);
98         twl4030_i2c_write_u8(TWL4030_MODULE_GPIO, 0x80,
99 @@ -388,13 +405,8 @@ static int omap3_evm_panel_enable_dvi(struct omap_display *display)
100  
101  static void omap3_evm_panel_disable_dvi(struct omap_display *display)
102  {
103 -       if (omap_rev() > OMAP3430_REV_ES1_0) {
104 -               twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, 0x0,
105 -                               TWL4030_VPLL2_DEDICATED);
106 -               twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, 0x0,
107 -                               TWL4030_VPLL2_DEV_GRP);
108 -       }
109  
110 +       omap3evm_dsi_power_down();
111         twl4030_i2c_write_u8(TWL4030_MODULE_GPIO, 0x00,
112                         TWL4030_GPIODATA_IN3);
113         twl4030_i2c_write_u8(TWL4030_MODULE_GPIO, 0x00,
114 @@ -413,6 +425,8 @@ static struct omap_dss_display_config omap3_evm_display_data_dvi = {
115  };
116  
117  static struct omap_dss_board_info omap3_evm_dss_data = {
118 +       .dsi_power_up = omap3evm_dsi_power_up,
119 +       .dsi_power_down = omap3evm_dsi_power_down,
120         .num_displays = 3,
121         .displays = {
122                 &omap3_evm_display_data,
123 -- 
124 1.6.2.4
125