Blame view
arch/arm/mach-omap2/board-zoom-peripherals.c
7.53 KB
479f12c9e omap3: zoom: spli... |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
/* * Copyright (C) 2009 Texas Instruments Inc. * * Modified from mach-omap2/board-zoom2.c * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ #include <linux/kernel.h> #include <linux/init.h> #include <linux/platform_device.h> #include <linux/input.h> #include <linux/input/matrix_keypad.h> #include <linux/gpio.h> |
ebeb53e1e mfd: twl: fix twl... |
17 |
#include <linux/i2c/twl.h> |
479f12c9e omap3: zoom: spli... |
18 |
#include <linux/regulator/machine.h> |
b642fde7f omap: zoom: add f... |
19 |
#include <linux/regulator/fixed.h> |
80b517f36 omap: zoom: add m... |
20 |
#include <linux/wl12xx.h> |
3a63833ec omap: mmc: extend... |
21 |
#include <linux/mmc/host.h> |
479f12c9e omap3: zoom: spli... |
22 23 24 25 26 27 28 |
#include <asm/mach-types.h> #include <asm/mach/arch.h> #include <asm/mach/map.h> #include <plat/common.h> #include <plat/usb.h> |
4b285c3f3 omap: zoom: Move ... |
29 |
#include <mach/board-zoom.h> |
a1e63642a omap3: pm: Add T2... |
30 |
#include "mux.h" |
d02a900b5 omap: Rename mmc-... |
31 |
#include "hsmmc.h" |
fbd8071c1 omap: use common ... |
32 |
#include "common-board-devices.h" |
479f12c9e omap3: zoom: spli... |
33 |
|
b642fde7f omap: zoom: add f... |
34 |
#define OMAP_ZOOM_WLAN_PMENA_GPIO (101) |
80b517f36 omap: zoom: add m... |
35 |
#define OMAP_ZOOM_WLAN_IRQ_GPIO (162) |
b642fde7f omap: zoom: add f... |
36 |
|
a64903357 OMAP3: ZOOM2/3/36... |
37 |
#define LCD_PANEL_ENABLE_GPIO (7 + OMAP_MAX_GPIO_LINES) |
479f12c9e omap3: zoom: spli... |
38 |
/* Zoom2 has Qwerty keyboard*/ |
bead43757 OMAP3: Keypad: Fi... |
39 |
static uint32_t board_keymap[] = { |
479f12c9e omap3: zoom: spli... |
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 |
KEY(0, 0, KEY_E), KEY(0, 1, KEY_R), KEY(0, 2, KEY_T), KEY(0, 3, KEY_HOME), KEY(0, 6, KEY_I), KEY(0, 7, KEY_LEFTSHIFT), KEY(1, 0, KEY_D), KEY(1, 1, KEY_F), KEY(1, 2, KEY_G), KEY(1, 3, KEY_SEND), KEY(1, 6, KEY_K), KEY(1, 7, KEY_ENTER), KEY(2, 0, KEY_X), KEY(2, 1, KEY_C), KEY(2, 2, KEY_V), KEY(2, 3, KEY_END), KEY(2, 6, KEY_DOT), KEY(2, 7, KEY_CAPSLOCK), KEY(3, 0, KEY_Z), KEY(3, 1, KEY_KPPLUS), KEY(3, 2, KEY_B), KEY(3, 3, KEY_F1), KEY(3, 6, KEY_O), KEY(3, 7, KEY_SPACE), KEY(4, 0, KEY_W), KEY(4, 1, KEY_Y), KEY(4, 2, KEY_U), KEY(4, 3, KEY_F2), KEY(4, 4, KEY_VOLUMEUP), KEY(4, 6, KEY_L), KEY(4, 7, KEY_LEFT), KEY(5, 0, KEY_S), KEY(5, 1, KEY_H), KEY(5, 2, KEY_J), KEY(5, 3, KEY_F3), |
6b06ebdfb omap2/3: ZOOM: Co... |
75 |
KEY(5, 4, KEY_UNKNOWN), |
479f12c9e omap3: zoom: spli... |
76 77 |
KEY(5, 5, KEY_VOLUMEDOWN), KEY(5, 6, KEY_M), |
6b06ebdfb omap2/3: ZOOM: Co... |
78 |
KEY(5, 7, KEY_RIGHT), |
479f12c9e omap3: zoom: spli... |
79 80 81 82 83 |
KEY(6, 0, KEY_Q), KEY(6, 1, KEY_A), KEY(6, 2, KEY_N), KEY(6, 3, KEY_BACKSPACE), KEY(6, 6, KEY_P), |
6b06ebdfb omap2/3: ZOOM: Co... |
84 |
KEY(6, 7, KEY_UP), |
479f12c9e omap3: zoom: spli... |
85 86 87 88 |
KEY(7, 0, KEY_PROG1), /*MACRO 1 <User defined> */ KEY(7, 1, KEY_PROG2), /*MACRO 2 <User defined> */ KEY(7, 2, KEY_PROG3), /*MACRO 3 <User defined> */ KEY(7, 3, KEY_PROG4), /*MACRO 4 <User defined> */ |
6b06ebdfb omap2/3: ZOOM: Co... |
89 |
KEY(7, 6, KEY_SELECT), |
479f12c9e omap3: zoom: spli... |
90 91 92 93 94 95 96 |
KEY(7, 7, KEY_DOWN) }; static struct matrix_keymap_data board_map_data = { .keymap = board_keymap, .keymap_size = ARRAY_SIZE(board_keymap), }; |
62d0b336d omap3: zoom: rena... |
97 |
static struct twl4030_keypad_data zoom_kp_twl4030_data = { |
479f12c9e omap3: zoom: spli... |
98 99 100 101 102 |
.keymap_data = &board_map_data, .rows = 8, .cols = 8, .rep = 1, }; |
786b01a8c cleanup regulator... |
103 104 |
static struct regulator_consumer_supply zoom_vmmc1_supply[] = { REGULATOR_SUPPLY("vmmc", "omap_hsmmc.0"), |
479f12c9e omap3: zoom: spli... |
105 |
}; |
786b01a8c cleanup regulator... |
106 107 |
static struct regulator_consumer_supply zoom_vsim_supply[] = { REGULATOR_SUPPLY("vmmc_aux", "omap_hsmmc.0"), |
479f12c9e omap3: zoom: spli... |
108 |
}; |
786b01a8c cleanup regulator... |
109 110 |
static struct regulator_consumer_supply zoom_vmmc2_supply[] = { REGULATOR_SUPPLY("vmmc", "omap_hsmmc.1"), |
479f12c9e omap3: zoom: spli... |
111 |
}; |
786b01a8c cleanup regulator... |
112 113 |
static struct regulator_consumer_supply zoom_vmmc3_supply[] = { REGULATOR_SUPPLY("vmmc", "omap_hsmmc.2"), |
b642fde7f omap: zoom: add f... |
114 |
}; |
479f12c9e omap3: zoom: spli... |
115 |
/* VMMC1 for OMAP VDD_MMC1 (i/o) and MMC1 card */ |
62d0b336d omap3: zoom: rena... |
116 |
static struct regulator_init_data zoom_vmmc1 = { |
479f12c9e omap3: zoom: spli... |
117 118 119 120 121 122 123 124 125 |
.constraints = { .min_uV = 1850000, .max_uV = 3150000, .valid_modes_mask = REGULATOR_MODE_NORMAL | REGULATOR_MODE_STANDBY, .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE | REGULATOR_CHANGE_MODE | REGULATOR_CHANGE_STATUS, }, |
786b01a8c cleanup regulator... |
126 127 |
.num_consumer_supplies = ARRAY_SIZE(zoom_vmmc1_supply), .consumer_supplies = zoom_vmmc1_supply, |
479f12c9e omap3: zoom: spli... |
128 129 130 |
}; /* VMMC2 for MMC2 card */ |
62d0b336d omap3: zoom: rena... |
131 |
static struct regulator_init_data zoom_vmmc2 = { |
479f12c9e omap3: zoom: spli... |
132 133 134 135 136 137 138 139 140 |
.constraints = { .min_uV = 1850000, .max_uV = 1850000, .apply_uV = true, .valid_modes_mask = REGULATOR_MODE_NORMAL | REGULATOR_MODE_STANDBY, .valid_ops_mask = REGULATOR_CHANGE_MODE | REGULATOR_CHANGE_STATUS, }, |
786b01a8c cleanup regulator... |
141 142 |
.num_consumer_supplies = ARRAY_SIZE(zoom_vmmc2_supply), .consumer_supplies = zoom_vmmc2_supply, |
479f12c9e omap3: zoom: spli... |
143 144 145 |
}; /* VSIM for OMAP VDD_MMC1A (i/o for DAT4..DAT7) */ |
62d0b336d omap3: zoom: rena... |
146 |
static struct regulator_init_data zoom_vsim = { |
479f12c9e omap3: zoom: spli... |
147 148 149 150 151 152 153 154 155 |
.constraints = { .min_uV = 1800000, .max_uV = 3000000, .valid_modes_mask = REGULATOR_MODE_NORMAL | REGULATOR_MODE_STANDBY, .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE | REGULATOR_CHANGE_MODE | REGULATOR_CHANGE_STATUS, }, |
786b01a8c cleanup regulator... |
156 157 |
.num_consumer_supplies = ARRAY_SIZE(zoom_vsim_supply), .consumer_supplies = zoom_vsim_supply, |
479f12c9e omap3: zoom: spli... |
158 |
}; |
b642fde7f omap: zoom: add f... |
159 160 161 162 |
static struct regulator_init_data zoom_vmmc3 = { .constraints = { .valid_ops_mask = REGULATOR_CHANGE_STATUS, }, |
786b01a8c cleanup regulator... |
163 164 |
.num_consumer_supplies = ARRAY_SIZE(zoom_vmmc3_supply), .consumer_supplies = zoom_vmmc3_supply, |
b642fde7f omap: zoom: add f... |
165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 |
}; static struct fixed_voltage_config zoom_vwlan = { .supply_name = "vwl1271", .microvolts = 1800000, /* 1.8V */ .gpio = OMAP_ZOOM_WLAN_PMENA_GPIO, .startup_delay = 70000, /* 70msec */ .enable_high = 1, .enabled_at_boot = 0, .init_data = &zoom_vmmc3, }; static struct platform_device omap_vwlan_device = { .name = "reg-fixed-voltage", .id = 1, .dev = { .platform_data = &zoom_vwlan, }, }; |
0ce3bb720 omap3: zoom: use ... |
184 |
static struct wl12xx_platform_data omap_zoom_wlan_data __initdata = { |
80b517f36 omap: zoom: add m... |
185 186 187 188 |
.irq = OMAP_GPIO_IRQ(OMAP_ZOOM_WLAN_IRQ_GPIO), /* ZOOM ref clock is 26 MHz */ .board_ref_clock = 1, }; |
1a6b59232 omap: kill all se... |
189 |
static struct omap2_hsmmc_info mmc[] = { |
479f12c9e omap3: zoom: spli... |
190 |
{ |
ed32350dc omap3: Zoom2/3: U... |
191 |
.name = "external", |
479f12c9e omap3: zoom: spli... |
192 |
.mmc = 1, |
3a63833ec omap: mmc: extend... |
193 |
.caps = MMC_CAP_4_BIT_DATA, |
479f12c9e omap3: zoom: spli... |
194 |
.gpio_wp = -EINVAL, |
ed32350dc omap3: Zoom2/3: U... |
195 |
.power_saving = true, |
479f12c9e omap3: zoom: spli... |
196 197 |
}, { |
ed32350dc omap3: Zoom2/3: U... |
198 |
.name = "internal", |
479f12c9e omap3: zoom: spli... |
199 |
.mmc = 2, |
3a63833ec omap: mmc: extend... |
200 |
.caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA, |
ed32350dc omap3: Zoom2/3: U... |
201 |
.gpio_cd = -EINVAL, |
479f12c9e omap3: zoom: spli... |
202 |
.gpio_wp = -EINVAL, |
ed32350dc omap3: Zoom2/3: U... |
203 204 |
.nonremovable = true, .power_saving = true, |
479f12c9e omap3: zoom: spli... |
205 |
}, |
80b517f36 omap: zoom: add m... |
206 207 208 |
{ .name = "wl1271", .mmc = 3, |
f81103647 omap: zoom: wl127... |
209 |
.caps = MMC_CAP_4_BIT_DATA | MMC_CAP_POWER_OFF_CARD, |
80b517f36 omap: zoom: add m... |
210 211 212 213 |
.gpio_wp = -EINVAL, .gpio_cd = -EINVAL, .nonremovable = true, }, |
479f12c9e omap3: zoom: spli... |
214 215 |
{} /* Terminator */ }; |
62d0b336d omap3: zoom: rena... |
216 |
static int zoom_twl_gpio_setup(struct device *dev, |
479f12c9e omap3: zoom: spli... |
217 218 |
unsigned gpio, unsigned ngpio) { |
a64903357 OMAP3: ZOOM2/3/36... |
219 |
int ret; |
ed32350dc omap3: Zoom2/3: U... |
220 |
/* gpio + 0 is "mmc0_cd" (input/IRQ) */ |
479f12c9e omap3: zoom: spli... |
221 |
mmc[0].gpio_cd = gpio + 0; |
68ff04231 omap: Rename hsmm... |
222 |
omap2_hsmmc_init(mmc); |
479f12c9e omap3: zoom: spli... |
223 |
|
bc593f5d7 arm: omap2plus: G... |
224 225 226 |
ret = gpio_request_one(LCD_PANEL_ENABLE_GPIO, GPIOF_OUT_INIT_LOW, "lcd enable"); if (ret) |
a64903357 OMAP3: ZOOM2/3/36... |
227 228 229 |
pr_err("Failed to get LCD_PANEL_ENABLE_GPIO (gpio%d). ", LCD_PANEL_ENABLE_GPIO); |
a64903357 OMAP3: ZOOM2/3/36... |
230 231 |
return ret; |
479f12c9e omap3: zoom: spli... |
232 |
} |
4b285c3f3 omap: zoom: Move ... |
233 |
/* EXTMUTE callback function */ |
0ce3bb720 omap3: zoom: use ... |
234 |
static void zoom2_set_hs_extmute(int mute) |
4b285c3f3 omap: zoom: Move ... |
235 236 237 |
{ gpio_set_value(ZOOM2_HEADSET_EXTMUTE_GPIO, mute); } |
479f12c9e omap3: zoom: spli... |
238 |
|
62d0b336d omap3: zoom: rena... |
239 |
static struct twl4030_gpio_platform_data zoom_gpio_data = { |
479f12c9e omap3: zoom: spli... |
240 241 242 |
.gpio_base = OMAP_MAX_GPIO_LINES, .irq_base = TWL4030_GPIO_IRQ_BASE, .irq_end = TWL4030_GPIO_IRQ_END, |
62d0b336d omap3: zoom: rena... |
243 |
.setup = zoom_twl_gpio_setup, |
479f12c9e omap3: zoom: spli... |
244 |
}; |
62d0b336d omap3: zoom: rena... |
245 |
static struct twl4030_platform_data zoom_twldata = { |
479f12c9e omap3: zoom: spli... |
246 |
/* platform_data for children goes here */ |
62d0b336d omap3: zoom: rena... |
247 248 |
.gpio = &zoom_gpio_data, .keypad = &zoom_kp_twl4030_data, |
aed79bce7 omap3: zoom2/3: m... |
249 |
.vmmc1 = &zoom_vmmc1, |
62d0b336d omap3: zoom: rena... |
250 251 |
.vmmc2 = &zoom_vmmc2, .vsim = &zoom_vsim, |
479f12c9e omap3: zoom: spli... |
252 |
}; |
479f12c9e omap3: zoom: spli... |
253 254 |
static int __init omap_i2c_init(void) { |
827ed9aef OMAP3: Move commo... |
255 |
omap3_pmic_get_config(&zoom_twldata, |
b252b0efb OMAP3: Move commo... |
256 257 258 |
TWL_COMMON_PDATA_USB | TWL_COMMON_PDATA_BCI | TWL_COMMON_PDATA_MADC | TWL_COMMON_PDATA_AUDIO, TWL_COMMON_REGULATOR_VDAC | TWL_COMMON_REGULATOR_VPLL2); |
827ed9aef OMAP3: Move commo... |
259 |
|
4b285c3f3 omap: zoom: Move ... |
260 |
if (machine_is_omap_zoom2()) { |
4ae6df5e1 MFD: twl4030-audi... |
261 262 |
struct twl4030_codec_data *codec_data; codec_data = zoom_twldata.audio->codec; |
827ed9aef OMAP3: Move commo... |
263 |
|
4ae6df5e1 MFD: twl4030-audi... |
264 265 266 |
codec_data->ramp_delay_value = 3; /* 161 ms */ codec_data->hs_extmute = 1; codec_data->set_hs_extmute = zoom2_set_hs_extmute; |
4b285c3f3 omap: zoom: Move ... |
267 |
} |
fbd8071c1 omap: use common ... |
268 |
omap_pmic_init(1, 2400, "twl5030", INT_34XX_SYS_NIRQ, &zoom_twldata); |
479f12c9e omap3: zoom: spli... |
269 270 271 272 |
omap_register_i2c_bus(2, 400, NULL, 0); omap_register_i2c_bus(3, 400, NULL, 0); return 0; } |
a1e63642a omap3: pm: Add T2... |
273 274 275 276 277 278 |
static void enable_board_wakeup_source(void) { /* T2 interrupt line (keypad) */ omap_mux_init_signal("sys_nirq", OMAP_WAKEUP_EN | OMAP_PIN_INPUT_PULLUP); } |
479f12c9e omap3: zoom: spli... |
279 280 |
void __init zoom_peripherals_init(void) { |
80b517f36 omap: zoom: add m... |
281 282 283 |
if (wl12xx_set_platform_data(&omap_zoom_wlan_data)) pr_err("error setting wl12xx data "); |
479f12c9e omap3: zoom: spli... |
284 |
omap_i2c_init(); |
b642fde7f omap: zoom: add f... |
285 |
platform_device_register(&omap_vwlan_device); |
9e18630b6 omap: musb: intro... |
286 |
usb_musb_init(NULL); |
a1e63642a omap3: pm: Add T2... |
287 |
enable_board_wakeup_source(); |
257f23d87 OMAP3: SERIAL: In... |
288 |
omap_serial_init(); |
479f12c9e omap3: zoom: spli... |
289 |
} |