diff options
Diffstat (limited to 'meta/packages/linux/linux-omap3-pm-git/zoom2/0002-OMAP3-Zoom2-Add-TWL4030-support.patch')
-rw-r--r-- | meta/packages/linux/linux-omap3-pm-git/zoom2/0002-OMAP3-Zoom2-Add-TWL4030-support.patch | 281 |
1 files changed, 281 insertions, 0 deletions
diff --git a/meta/packages/linux/linux-omap3-pm-git/zoom2/0002-OMAP3-Zoom2-Add-TWL4030-support.patch b/meta/packages/linux/linux-omap3-pm-git/zoom2/0002-OMAP3-Zoom2-Add-TWL4030-support.patch new file mode 100644 index 0000000000..ed5b4e2df0 --- /dev/null +++ b/meta/packages/linux/linux-omap3-pm-git/zoom2/0002-OMAP3-Zoom2-Add-TWL4030-support.patch | |||
@@ -0,0 +1,281 @@ | |||
1 | From b71cd09cefcd54e792a2ac032c3be64a97ef830c Mon Sep 17 00:00:00 2001 | ||
2 | From: Vikram Pandita <vikram.pandita@ti.com> | ||
3 | Date: Fri, 12 Jun 2009 17:44:07 -0500 | ||
4 | Subject: [PATCH 2/8] OMAP3:Zoom2: Add TWL4030 support | ||
5 | |||
6 | Add TWL4030 CORE and TWL4030 drivers to Zoom2 board file | ||
7 | TWL drivers enabled are: | ||
8 | bci | ||
9 | madc | ||
10 | usb | ||
11 | keypad | ||
12 | mmc | ||
13 | |||
14 | Signed-off-by: Vikram Pandita <vikram.pandita@ti.com> | ||
15 | --- | ||
16 | arch/arm/mach-omap2/board-zoom2.c | 204 +++++++++++++++++++++++++++++++++++-- | ||
17 | 1 files changed, 193 insertions(+), 11 deletions(-) | ||
18 | |||
19 | diff --git a/arch/arm/mach-omap2/board-zoom2.c b/arch/arm/mach-omap2/board-zoom2.c | ||
20 | index 0ec2023..e4bf50a 100644 | ||
21 | --- a/arch/arm/mach-omap2/board-zoom2.c | ||
22 | +++ b/arch/arm/mach-omap2/board-zoom2.c | ||
23 | @@ -12,18 +12,85 @@ | ||
24 | #include <linux/kernel.h> | ||
25 | #include <linux/init.h> | ||
26 | #include <linux/platform_device.h> | ||
27 | +#include <linux/input.h> | ||
28 | #include <linux/gpio.h> | ||
29 | #include <linux/i2c/twl4030.h> | ||
30 | +#include <linux/regulator/machine.h> | ||
31 | |||
32 | #include <asm/mach-types.h> | ||
33 | #include <asm/mach/arch.h> | ||
34 | |||
35 | #include <mach/common.h> | ||
36 | #include <mach/usb.h> | ||
37 | +#include <mach/keypad.h> | ||
38 | |||
39 | #include "mmc-twl4030.h" | ||
40 | #include "omap3-opp.h" | ||
41 | |||
42 | +/* Zoom2 has Qwerty keyboard*/ | ||
43 | +static int zoom2_twl4030_keymap[] = { | ||
44 | + KEY(0, 0, KEY_E), | ||
45 | + KEY(1, 0, KEY_R), | ||
46 | + KEY(2, 0, KEY_T), | ||
47 | + KEY(3, 0, KEY_HOME), | ||
48 | + KEY(6, 0, KEY_I), | ||
49 | + KEY(7, 0, KEY_LEFTSHIFT), | ||
50 | + KEY(0, 1, KEY_D), | ||
51 | + KEY(1, 1, KEY_F), | ||
52 | + KEY(2, 1, KEY_G), | ||
53 | + KEY(3, 1, KEY_SEND), | ||
54 | + KEY(6, 1, KEY_K), | ||
55 | + KEY(7, 1, KEY_ENTER), | ||
56 | + KEY(0, 2, KEY_X), | ||
57 | + KEY(1, 2, KEY_C), | ||
58 | + KEY(2, 2, KEY_V), | ||
59 | + KEY(3, 2, KEY_END), | ||
60 | + KEY(6, 2, KEY_DOT), | ||
61 | + KEY(7, 2, KEY_CAPSLOCK), | ||
62 | + KEY(0, 3, KEY_Z), | ||
63 | + KEY(1, 3, KEY_KPPLUS), | ||
64 | + KEY(2, 3, KEY_B), | ||
65 | + KEY(3, 3, KEY_F1), | ||
66 | + KEY(6, 3, KEY_O), | ||
67 | + KEY(7, 3, KEY_SPACE), | ||
68 | + KEY(0, 4, KEY_W), | ||
69 | + KEY(1, 4, KEY_Y), | ||
70 | + KEY(2, 4, KEY_U), | ||
71 | + KEY(3, 4, KEY_F2), | ||
72 | + KEY(4, 4, KEY_VOLUMEUP), | ||
73 | + KEY(6, 4, KEY_L), | ||
74 | + KEY(7, 4, KEY_LEFT), | ||
75 | + KEY(0, 5, KEY_S), | ||
76 | + KEY(1, 5, KEY_H), | ||
77 | + KEY(2, 5, KEY_J), | ||
78 | + KEY(3, 5, KEY_F3), | ||
79 | + KEY(5, 5, KEY_VOLUMEDOWN), | ||
80 | + KEY(6, 5, KEY_M), | ||
81 | + KEY(4, 5, KEY_ENTER), | ||
82 | + KEY(7, 5, KEY_RIGHT), | ||
83 | + KEY(0, 6, KEY_Q), | ||
84 | + KEY(1, 6, KEY_A), | ||
85 | + KEY(2, 6, KEY_N), | ||
86 | + KEY(3, 6, KEY_BACKSPACE), | ||
87 | + KEY(6, 6, KEY_P), | ||
88 | + KEY(7, 6, KEY_UP), | ||
89 | + KEY(6, 7, KEY_SELECT), | ||
90 | + KEY(7, 7, KEY_DOWN), | ||
91 | + KEY(0, 7, KEY_PROG1), /*MACRO 1 <User defined> */ | ||
92 | + KEY(1, 7, KEY_PROG2), /*MACRO 2 <User defined> */ | ||
93 | + KEY(2, 7, KEY_PROG3), /*MACRO 3 <User defined> */ | ||
94 | + KEY(3, 7, KEY_PROG4), /*MACRO 4 <User defined> */ | ||
95 | + 0 | ||
96 | +}; | ||
97 | + | ||
98 | +static struct twl4030_keypad_data zoom2_kp_twl4030_data = { | ||
99 | + .rows = 8, | ||
100 | + .cols = 8, | ||
101 | + .keymap = zoom2_twl4030_keymap, | ||
102 | + .keymapsize = ARRAY_SIZE(zoom2_twl4030_keymap), | ||
103 | + .rep = 1, | ||
104 | +}; | ||
105 | + | ||
106 | static struct omap_uart_config zoom2_uart_config __initdata = { | ||
107 | .enabled_uarts = ((1 << 0) | (1 << 1) | (1 << 2)), | ||
108 | }; | ||
109 | @@ -42,10 +109,128 @@ static void __init omap_zoom2_init_irq(void) | ||
110 | omap_gpio_init(); | ||
111 | } | ||
112 | |||
113 | + | ||
114 | +static struct regulator_consumer_supply zoom2_vmmc1_supply = { | ||
115 | + .supply = "vmmc", | ||
116 | +}; | ||
117 | + | ||
118 | +static struct regulator_consumer_supply zoom2_vsim_supply = { | ||
119 | + .supply = "vmmc_aux", | ||
120 | +}; | ||
121 | + | ||
122 | +static struct regulator_consumer_supply zoom2_vmmc2_supply = { | ||
123 | + .supply = "vmmc", | ||
124 | +}; | ||
125 | + | ||
126 | +/* VMMC1 for OMAP VDD_MMC1 (i/o) and MMC1 card */ | ||
127 | +static struct regulator_init_data zoom2_vmmc1 = { | ||
128 | + .constraints = { | ||
129 | + .min_uV = 1850000, | ||
130 | + .max_uV = 3150000, | ||
131 | + .valid_modes_mask = REGULATOR_MODE_NORMAL | ||
132 | + | REGULATOR_MODE_STANDBY, | ||
133 | + .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE | ||
134 | + | REGULATOR_CHANGE_MODE | ||
135 | + | REGULATOR_CHANGE_STATUS, | ||
136 | + }, | ||
137 | + .num_consumer_supplies = 1, | ||
138 | + .consumer_supplies = &zoom2_vmmc1_supply, | ||
139 | +}; | ||
140 | + | ||
141 | +/* VMMC2 for MMC2 card */ | ||
142 | +static struct regulator_init_data zoom2_vmmc2 = { | ||
143 | + .constraints = { | ||
144 | + .min_uV = 1850000, | ||
145 | + .max_uV = 1850000, | ||
146 | + .apply_uV = true, | ||
147 | + .valid_modes_mask = REGULATOR_MODE_NORMAL | ||
148 | + | REGULATOR_MODE_STANDBY, | ||
149 | + .valid_ops_mask = REGULATOR_CHANGE_MODE | ||
150 | + | REGULATOR_CHANGE_STATUS, | ||
151 | + }, | ||
152 | + .num_consumer_supplies = 1, | ||
153 | + .consumer_supplies = &zoom2_vmmc2_supply, | ||
154 | +}; | ||
155 | + | ||
156 | +/* VSIM for OMAP VDD_MMC1A (i/o for DAT4..DAT7) */ | ||
157 | +static struct regulator_init_data zoom2_vsim = { | ||
158 | + .constraints = { | ||
159 | + .min_uV = 1800000, | ||
160 | + .max_uV = 3000000, | ||
161 | + .valid_modes_mask = REGULATOR_MODE_NORMAL | ||
162 | + | REGULATOR_MODE_STANDBY, | ||
163 | + .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE | ||
164 | + | REGULATOR_CHANGE_MODE | ||
165 | + | REGULATOR_CHANGE_STATUS, | ||
166 | + }, | ||
167 | + .num_consumer_supplies = 1, | ||
168 | + .consumer_supplies = &zoom2_vsim_supply, | ||
169 | +}; | ||
170 | + | ||
171 | +static struct twl4030_hsmmc_info mmc[] __initdata = { | ||
172 | + { | ||
173 | + .mmc = 1, | ||
174 | + .wires = 4, | ||
175 | + .gpio_wp = -EINVAL, | ||
176 | + }, | ||
177 | + { | ||
178 | + .mmc = 2, | ||
179 | + .wires = 4, | ||
180 | + .gpio_wp = -EINVAL, | ||
181 | + }, | ||
182 | + {} /* Terminator */ | ||
183 | +}; | ||
184 | + | ||
185 | +static int zoom2_twl_gpio_setup(struct device *dev, | ||
186 | + unsigned gpio, unsigned ngpio) | ||
187 | +{ | ||
188 | + /* gpio + 0 is "mmc0_cd" (input/IRQ), | ||
189 | + * gpio + 1 is "mmc1_cd" (input/IRQ) | ||
190 | + */ | ||
191 | + mmc[0].gpio_cd = gpio + 0; | ||
192 | + mmc[1].gpio_cd = gpio + 1; | ||
193 | + twl4030_mmc_init(mmc); | ||
194 | + | ||
195 | + /* link regulators to MMC adapters ... we "know" the | ||
196 | + * regulators will be set up only *after* we return. | ||
197 | + */ | ||
198 | + zoom2_vmmc1_supply.dev = mmc[0].dev; | ||
199 | + zoom2_vsim_supply.dev = mmc[0].dev; | ||
200 | + zoom2_vmmc2_supply.dev = mmc[1].dev; | ||
201 | + | ||
202 | + return 0; | ||
203 | +} | ||
204 | + | ||
205 | + | ||
206 | +static int zoom2_batt_table[] = { | ||
207 | +/* 0 C*/ | ||
208 | +30800, 29500, 28300, 27100, | ||
209 | +26000, 24900, 23900, 22900, 22000, 21100, 20300, 19400, 18700, 17900, | ||
210 | +17200, 16500, 15900, 15300, 14700, 14100, 13600, 13100, 12600, 12100, | ||
211 | +11600, 11200, 10800, 10400, 10000, 9630, 9280, 8950, 8620, 8310, | ||
212 | +8020, 7730, 7460, 7200, 6950, 6710, 6470, 6250, 6040, 5830, | ||
213 | +5640, 5450, 5260, 5090, 4920, 4760, 4600, 4450, 4310, 4170, | ||
214 | +4040, 3910, 3790, 3670, 3550 | ||
215 | +}; | ||
216 | + | ||
217 | +static struct twl4030_bci_platform_data zoom2_bci_data = { | ||
218 | + .battery_tmp_tbl = zoom2_batt_table, | ||
219 | + .tblsize = ARRAY_SIZE(zoom2_batt_table), | ||
220 | +}; | ||
221 | + | ||
222 | +static struct twl4030_usb_data zoom2_usb_data = { | ||
223 | + .usb_mode = T2_USB_MODE_ULPI, | ||
224 | +}; | ||
225 | + | ||
226 | static struct twl4030_gpio_platform_data zoom2_gpio_data = { | ||
227 | .gpio_base = OMAP_MAX_GPIO_LINES, | ||
228 | .irq_base = TWL4030_GPIO_IRQ_BASE, | ||
229 | .irq_end = TWL4030_GPIO_IRQ_END, | ||
230 | + .setup = zoom2_twl_gpio_setup, | ||
231 | +}; | ||
232 | + | ||
233 | +static struct twl4030_madc_platform_data zoom2_madc_data = { | ||
234 | + .irq_line = 1, | ||
235 | }; | ||
236 | |||
237 | static struct twl4030_platform_data zoom2_twldata = { | ||
238 | @@ -53,7 +238,15 @@ static struct twl4030_platform_data zoom2_twldata = { | ||
239 | .irq_end = TWL4030_IRQ_END, | ||
240 | |||
241 | /* platform_data for children goes here */ | ||
242 | + .bci = &zoom2_bci_data, | ||
243 | + .madc = &zoom2_madc_data, | ||
244 | + .usb = &zoom2_usb_data, | ||
245 | .gpio = &zoom2_gpio_data, | ||
246 | + .keypad = &zoom2_kp_twl4030_data, | ||
247 | + .vmmc1 = &zoom2_vmmc1, | ||
248 | + .vmmc2 = &zoom2_vmmc2, | ||
249 | + .vsim = &zoom2_vsim, | ||
250 | + | ||
251 | }; | ||
252 | |||
253 | static struct i2c_board_info __initdata zoom2_i2c_boardinfo[] = { | ||
254 | @@ -74,16 +267,6 @@ static int __init omap_i2c_init(void) | ||
255 | return 0; | ||
256 | } | ||
257 | |||
258 | -static struct twl4030_hsmmc_info mmc[] __initdata = { | ||
259 | - { | ||
260 | - .mmc = 1, | ||
261 | - .wires = 4, | ||
262 | - .gpio_cd = -EINVAL, | ||
263 | - .gpio_wp = -EINVAL, | ||
264 | - }, | ||
265 | - {} /* Terminator */ | ||
266 | -}; | ||
267 | - | ||
268 | extern int __init omap_zoom2_debugboard_init(void); | ||
269 | |||
270 | static void __init omap_zoom2_init(void) | ||
271 | @@ -91,7 +274,6 @@ static void __init omap_zoom2_init(void) | ||
272 | omap_i2c_init(); | ||
273 | omap_serial_init(); | ||
274 | omap_zoom2_debugboard_init(); | ||
275 | - twl4030_mmc_init(mmc); | ||
276 | usb_musb_init(); | ||
277 | } | ||
278 | |||
279 | -- | ||
280 | 1.6.3.2 | ||
281 | |||