EFL: bump SRCREV even more for last few efreet fixes
[openembedded.git] / recipes / u-boot / u-boot-git / beagleboard / 720MHz.patch
1 From bba669562fa208d12f4c7cd8188446e8576cd6ee Mon Sep 17 00:00:00 2001\r
2 From: Syed Mohammed Khasim <khasim@ti.com>\r
3 Date: Fri, 8 Jan 2010 20:34:37 +0530\r
4 Subject: [PATCH] Support 720Mhz configuration for OMAP35xx\r
5 \r
6 Adds a new API "twl4030_pmrecv_vsel_cfg" to select voltage and group\r
7 Adds support for 720Mhz in clock.c\r
8 Board file modified to use these new APIs and boot at 720Mhz\r
9 \r
10 Signed-off-by: Syed Mohammed Khasim <khasim@ti.com>\r
11 ---\r
12  board/ti/beagle/beagle.c       |   20 ++++++++++++++++++--\r
13  cpu/arm_cortexa8/omap3/clock.c |   21 +++++++++++++++++++++\r
14  drivers/power/twl4030.c        |   24 +++++++++++++++---------\r
15  include/twl4030.h              |   16 ++++++++++++++++\r
16  4 files changed, 70 insertions(+), 11 deletions(-)\r
17 \r
18 diff --git a/board/ti/beagle/beagle.c b/board/ti/beagle/beagle.c\r
19 index 0def5a6..7985ee9 100644\r
20 --- a/board/ti/beagle/beagle.c\r
21 +++ b/board/ti/beagle/beagle.c\r
22 @@ -122,9 +122,27 @@ int misc_init_r(void)\r
23         struct gpio *gpio5_base = (struct gpio *)OMAP34XX_GPIO5_BASE;\r
24         struct gpio *gpio6_base = (struct gpio *)OMAP34XX_GPIO6_BASE;\r
25 \r
26 +       beagle_identify();\r
27 +\r
28         twl4030_power_init();\r
29         twl4030_led_init();\r
30 \r
31 +       if ((beagle_revision == REVISION_C4) || (beagle_revision == REVISION_XM)) {\r
32 +\r
33 +               /* Select TWL4030 VSEL to support 720Mhz */\r
34 +               twl4030_pmrecv_vsel_cfg(TWL4030_PM_RECEIVER_VAUX2_DEDICATED,\r
35 +                                       VAUX2_VSEL_18,\r
36 +                                       TWL4030_PM_RECEIVER_VAUX2_DEV_GRP,\r
37 +                                       DEV_GRP_P1);\r
38 +\r
39 +               twl4030_pmrecv_vsel_cfg(TWL4030_PM_RECEIVER_VDD1_VSEL,\r
40 +                                       VDD1_VSEL_14,\r
41 +                                       TWL4030_PM_RECEIVER_VDD1_DEV_GRP,\r
42 +                                       DEV_GRP_P1);\r
43 +\r
44 +               prcm_config_720mhz();\r
45 +       }\r
46 +\r
47         /* Configure GPIOs to output */\r
48         writel(~(GPIO23 | GPIO10 | GPIO8 | GPIO2 | GPIO1), &gpio6_base->oe);\r
49         writel(~(GPIO31 | GPIO30 | GPIO29 | GPIO28 | GPIO22 | GPIO21 |\r
50 @@ -136,8 +154,6 @@ int misc_init_r(void)\r
51         writel(GPIO31 | GPIO30 | GPIO29 | GPIO28 | GPIO22 | GPIO21 |\r
52                 GPIO15 | GPIO14 | GPIO13 | GPIO12, &gpio5_base->setdataout);\r
53 \r
54 -       beagle_identify();\r
55 -\r
56         dieid_num_r();\r
57 \r
58         return 0;\r
59 diff --git a/cpu/arm_cortexa8/omap3/clock.c b/cpu/arm_cortexa8/omap3/clock.c\r
60 index 174c453..d67517a 100644\r
61 --- a/cpu/arm_cortexa8/omap3/clock.c\r
62 +++ b/cpu/arm_cortexa8/omap3/clock.c\r
63 @@ -402,3 +402,24 @@ void per_clocks_enable(void)\r
64 \r
65         sdelay(1000);\r
66  }\r
67 +\r
68 +/*\r
69 + * Configure PRCM registers to get 720 Mhz\r
70 + *\r
71 + * NOTE: N value doesn't change, only M gets affected\r
72 + */\r
73 +void prcm_config_720mhz(void)\r
74 +{\r
75 +       struct prcm *prcm_base = (struct prcm *)PRCM_BASE;\r
76 +\r
77 +       /* Unlock MPU DPLL (slows things down, and needed later) */\r
78 +       sr32(&prcm_base->clken_pll_mpu, 0, 3, PLL_LOW_POWER_BYPASS);\r
79 +       wait_on_value(ST_MPU_CLK, 0, &prcm_base->idlest_pll_mpu, LDELAY);\r
80 +\r
81 +       /* Set M */\r
82 +       sr32(&prcm_base->clksel1_pll_mpu, 8, 11, 0x2D0);\r
83 +\r
84 +       /* lock mode */\r
85 +       sr32(&prcm_base->clken_pll_mpu, 0, 3, PLL_LOCK);\r
86 +       wait_on_value(ST_MPU_CLK, 1, &prcm_base->idlest_pll_mpu, LDELAY);\r
87 +}\r
88 diff --git a/drivers/power/twl4030.c b/drivers/power/twl4030.c\r
89 index eb066cb..d68e515 100644\r
90 --- a/drivers/power/twl4030.c\r
91 +++ b/drivers/power/twl4030.c\r
92 @@ -59,16 +59,9 @@ void twl4030_power_reset_init(void)\r
93         }\r
94  }\r
95 \r
96 -\r
97  /*\r
98   * Power Init\r
99   */\r
100 -#define DEV_GRP_P1             0x20\r
101 -#define VAUX3_VSEL_28          0x03\r
102 -#define DEV_GRP_ALL            0xE0\r
103 -#define VPLL2_VSEL_18          0x05\r
104 -#define VDAC_VSEL_18           0x03\r
105 -\r
106  void twl4030_power_init(void)\r
107  {\r
108         unsigned char byte;\r
109 @@ -98,8 +91,6 @@ void twl4030_power_init(void)\r
110                              TWL4030_PM_RECEIVER_VDAC_DEDICATED);\r
111  }\r
112 \r
113 -#define VMMC1_VSEL_30          0x02\r
114 -\r
115  void twl4030_power_mmc_init(void)\r
116  {\r
117         unsigned char byte;\r
118 @@ -113,3 +104,18 @@ void twl4030_power_mmc_init(void)\r
119         twl4030_i2c_write_u8(TWL4030_CHIP_PM_RECEIVER, byte,\r
120                              TWL4030_PM_RECEIVER_VMMC1_DEDICATED);\r
121  }\r
122 +\r
123 +/*\r
124 + * Generic function to select Device Group and Voltage\r
125 + */\r
126 +void twl4030_pmrecv_vsel_cfg(u8 vsel_reg, u8 vsel_val,\r
127 +                               u8 dev_grp, u8 dev_grp_sel)\r
128 +{\r
129 +       /* Select the Device Group */\r
130 +       twl4030_i2c_write_u8(TWL4030_CHIP_PM_RECEIVER, dev_grp_sel,\r
131 +                               dev_grp);\r
132 +\r
133 +       /* Select the Voltage */\r
134 +       twl4030_i2c_write_u8(TWL4030_CHIP_PM_RECEIVER, vsel_val,\r
135 +                               vsel_reg);\r
136 +}\r
137 diff --git a/include/twl4030.h b/include/twl4030.h\r
138 index f260ecb..b96c96c 100644\r
139 --- a/include/twl4030.h\r
140 +++ b/include/twl4030.h\r
141 @@ -359,6 +359,22 @@\r
142  #define TWL4030_USB_PHY_DPLL_CLK                       (1 << 0)\r
143 \r
144  /*\r
145 + * Voltage Selection in PM Receiver Module\r
146 + */\r
147 +#define VAUX2_VSEL_18          0x05\r
148 +#define VDD1_VSEL_14           0x40\r
149 +#define VAUX3_VSEL_28          0x03\r
150 +#define VPLL2_VSEL_18          0x05\r
151 +#define VDAC_VSEL_18           0x03\r
152 +#define VMMC1_VSEL_30          0x02\r
153 +\r
154 +/*\r
155 + * Device Selection\r
156 + */\r
157 +#define DEV_GRP_P1             0x20\r
158 +#define DEV_GRP_ALL            0xE0\r
159 +\r
160 +/*\r
161   * Convience functions to read and write from TWL4030\r
162   *\r
163   * chip_no is the i2c address, it must be one of the chip addresses\r
164 -- \r
165 1.5.6.3\r
166 \r