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
|
From 9d72ec0f11e370715e19ea51702b386b41252438 Mon Sep 17 00:00:00 2001
From: Koen Kooi <k-kooi@ti.com>
Date: Wed, 27 Jan 2010 21:57:13 +0100
Subject: [PATCH 06/48] board-omap3beagle: prepare for DM3730 based BeagleboardXM
* OPP changes copy/pasted from board-omap3evm.c
* EHCI changes copy/pasted from Steve Kipisz' 2.6.33rcX work
* turn on power to camera on boot and add some comments
---
arch/arm/mach-omap2/board-omap3beagle.c | 62 +++++++++++++++++++++++++++----
1 files changed, 54 insertions(+), 8 deletions(-)
diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
index 3b7f6ec..429dacb 100644
--- a/arch/arm/mach-omap2/board-omap3beagle.c
+++ b/arch/arm/mach-omap2/board-omap3beagle.c
@@ -53,6 +53,23 @@
#include "pm.h"
#include "omap3-opp.h"
+#ifdef CONFIG_PM
+static struct omap_opp * _omap35x_mpu_rate_table = omap35x_mpu_rate_table;
+static struct omap_opp * _omap37x_mpu_rate_table = omap37x_mpu_rate_table;
+static struct omap_opp * _omap35x_dsp_rate_table = omap35x_dsp_rate_table;
+static struct omap_opp * _omap37x_dsp_rate_table = omap37x_dsp_rate_table;
+static struct omap_opp * _omap35x_l3_rate_table = omap35x_l3_rate_table;
+static struct omap_opp * _omap37x_l3_rate_table = omap37x_l3_rate_table;
+#else /* CONFIG_PM */
+static struct omap_opp * _omap35x_mpu_rate_table = NULL;
+static struct omap_opp * _omap37x_mpu_rate_table = NULL;
+static struct omap_opp * _omap35x_dsp_rate_table = NULL;
+static struct omap_opp * _omap37x_dsp_rate_table = NULL;
+static struct omap_opp * _omap35x_l3_rate_table = NULL;
+static struct omap_opp * _omap37x_l3_rate_table = NULL;
+#endif /* CONFIG_PM */
+
+
#define GPMC_CS0_BASE 0x60
#define GPMC_CS_SIZE 0x30
@@ -303,12 +320,28 @@ static int beagle_twl_gpio_setup(struct device *dev,
* power switch and overcurrent detect
*/
- gpio_request(gpio + 1, "EHCI_nOC");
- gpio_direction_input(gpio + 1);
+ if (cpu_is_omap3630()) {
+ /* Power on DVI, Serial and PWR led */
+ gpio_request(gpio + 1, "nDVI_PWR_EN");
+ gpio_direction_output(gpio + 1, 0);
+
+ /* Power on camera interface */
+ gpio_request(gpio + 2, "CAM_EN");
+ gpio_direction_output(gpio + 2, 1);
+
+ /* TWL4030_GPIO_MAX + 0 == ledA, EHCI nEN_USB_PWR (out, active low) */
+ gpio_request(gpio + TWL4030_GPIO_MAX, "nEN_USB_PWR");
+ gpio_direction_output(gpio + TWL4030_GPIO_MAX, 1);
+ }
+ else {
+ gpio_request(gpio + 1, "EHCI_nOC");
+ gpio_direction_input(gpio + 1);
+
+ /* TWL4030_GPIO_MAX + 0 == ledA, EHCI nEN_USB_PWR (out, active low) */
+ gpio_request(gpio + TWL4030_GPIO_MAX, "nEN_USB_PWR");
+ gpio_direction_output(gpio + TWL4030_GPIO_MAX, 0);
+ }
- /* TWL4030_GPIO_MAX + 0 == ledA, EHCI nEN_USB_PWR (out, active low) */
- gpio_request(gpio + TWL4030_GPIO_MAX, "nEN_USB_PWR");
- gpio_direction_output(gpio + TWL4030_GPIO_MAX, 0);
/* TWL4030_GPIO_MAX + 1 == ledB, PMU_STAT (out, active low LED) */
gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1;
@@ -501,9 +534,22 @@ static struct platform_device keys_gpio = {
static void __init omap3_beagle_init_irq(void)
{
- omap2_init_common_hw(mt46h32m32lf6_sdrc_params,
- mt46h32m32lf6_sdrc_params, omap3_mpu_rate_table,
- omap3_dsp_rate_table, omap3_l3_rate_table);
+ if (cpu_is_omap3630())
+ {
+ omap2_init_common_hw(mt46h32m32lf6_sdrc_params,
+ NULL,
+ _omap37x_mpu_rate_table,
+ _omap37x_dsp_rate_table,
+ _omap37x_l3_rate_table);
+ }
+ else
+ {
+ omap2_init_common_hw(mt46h32m32lf6_sdrc_params,
+ NULL,
+ _omap35x_mpu_rate_table,
+ _omap35x_dsp_rate_table,
+ _omap35x_l3_rate_table);
+ }
omap_init_irq();
#ifdef CONFIG_OMAP_32K_TIMER
omap2_gp_clockevent_set_gptimer(12);
--
1.6.6.1
|