diff options
author | Marek Vasut <marek.vasut@gmail.com> | 2010-07-13 02:16:45 -0400 |
---|---|---|
committer | Eric Miao <eric.y.miao@gmail.com> | 2010-08-05 02:32:40 -0400 |
commit | 31620e21afc94a20fb59aff13de9268120b5e416 (patch) | |
tree | eba8957fb89a76b0f69141d7bb714e87b306c3fd /arch/arm/mach-pxa/palmz72.c | |
parent | 95045947ab18e412a81ad1fd002a4804eb269d01 (diff) |
[ARM] pxa/palm: Flip Palm LD,TX,T5,Z72 to Palm27x
Signed-off-by: Marek Vasut <marek.vasut@gmail.com>
Diffstat (limited to 'arch/arm/mach-pxa/palmz72.c')
-rw-r--r-- | arch/arm/mach-pxa/palmz72.c | 266 |
1 files changed, 26 insertions, 240 deletions
diff --git a/arch/arm/mach-pxa/palmz72.c b/arch/arm/mach-pxa/palmz72.c index b78c6b4625e8..87e4b1044e0b 100644 --- a/arch/arm/mach-pxa/palmz72.c +++ b/arch/arm/mach-pxa/palmz72.c | |||
@@ -44,6 +44,7 @@ | |||
44 | #include <mach/pxa27x_keypad.h> | 44 | #include <mach/pxa27x_keypad.h> |
45 | #include <mach/udc.h> | 45 | #include <mach/udc.h> |
46 | #include <mach/palmasoc.h> | 46 | #include <mach/palmasoc.h> |
47 | #include <mach/palm27x.h> | ||
47 | 48 | ||
48 | #include <mach/pm.h> | 49 | #include <mach/pm.h> |
49 | 50 | ||
@@ -109,21 +110,9 @@ static unsigned long palmz72_pin_config[] __initdata = { | |||
109 | }; | 110 | }; |
110 | 111 | ||
111 | /****************************************************************************** | 112 | /****************************************************************************** |
112 | * SD/MMC card controller | ||
113 | ******************************************************************************/ | ||
114 | /* SD_POWER is not actually power, but it is more like chip | ||
115 | * select, i.e. it is inverted */ | ||
116 | static struct pxamci_platform_data palmz72_mci_platform_data = { | ||
117 | .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34, | ||
118 | .gpio_card_detect = GPIO_NR_PALMZ72_SD_DETECT_N, | ||
119 | .gpio_card_ro = GPIO_NR_PALMZ72_SD_RO, | ||
120 | .gpio_power = GPIO_NR_PALMZ72_SD_POWER_N, | ||
121 | .gpio_power_invert = 1, | ||
122 | }; | ||
123 | |||
124 | /****************************************************************************** | ||
125 | * GPIO keyboard | 113 | * GPIO keyboard |
126 | ******************************************************************************/ | 114 | ******************************************************************************/ |
115 | #if defined(CONFIG_KEYBOARD_PXA27x) || defined(CONFIG_KEYBOARD_PXA27x_MODULE) | ||
127 | static unsigned int palmz72_matrix_keys[] = { | 116 | static unsigned int palmz72_matrix_keys[] = { |
128 | KEY(0, 0, KEY_POWER), | 117 | KEY(0, 0, KEY_POWER), |
129 | KEY(0, 1, KEY_F1), | 118 | KEY(0, 1, KEY_F1), |
@@ -149,77 +138,18 @@ static struct pxa27x_keypad_platform_data palmz72_keypad_platform_data = { | |||
149 | .debounce_interval = 30, | 138 | .debounce_interval = 30, |
150 | }; | 139 | }; |
151 | 140 | ||
152 | /****************************************************************************** | 141 | static void __init palmz72_kpc_init(void) |
153 | * Backlight | ||
154 | ******************************************************************************/ | ||
155 | static int palmz72_backlight_init(struct device *dev) | ||
156 | { | 142 | { |
157 | int ret; | 143 | pxa_set_keypad_info(&palmz72_keypad_platform_data); |
158 | |||
159 | ret = gpio_request(GPIO_NR_PALMZ72_BL_POWER, "BL POWER"); | ||
160 | if (ret) | ||
161 | goto err; | ||
162 | ret = gpio_direction_output(GPIO_NR_PALMZ72_BL_POWER, 0); | ||
163 | if (ret) | ||
164 | goto err2; | ||
165 | ret = gpio_request(GPIO_NR_PALMZ72_LCD_POWER, "LCD POWER"); | ||
166 | if (ret) | ||
167 | goto err2; | ||
168 | ret = gpio_direction_output(GPIO_NR_PALMZ72_LCD_POWER, 0); | ||
169 | if (ret) | ||
170 | goto err3; | ||
171 | |||
172 | return 0; | ||
173 | err3: | ||
174 | gpio_free(GPIO_NR_PALMZ72_LCD_POWER); | ||
175 | err2: | ||
176 | gpio_free(GPIO_NR_PALMZ72_BL_POWER); | ||
177 | err: | ||
178 | return ret; | ||
179 | } | ||
180 | |||
181 | static int palmz72_backlight_notify(struct device *dev, int brightness) | ||
182 | { | ||
183 | gpio_set_value(GPIO_NR_PALMZ72_BL_POWER, brightness); | ||
184 | gpio_set_value(GPIO_NR_PALMZ72_LCD_POWER, brightness); | ||
185 | return brightness; | ||
186 | } | ||
187 | |||
188 | static void palmz72_backlight_exit(struct device *dev) | ||
189 | { | ||
190 | gpio_free(GPIO_NR_PALMZ72_BL_POWER); | ||
191 | gpio_free(GPIO_NR_PALMZ72_LCD_POWER); | ||
192 | } | 144 | } |
193 | 145 | #else | |
194 | static struct platform_pwm_backlight_data palmz72_backlight_data = { | 146 | static inline void palmz72_kpc_init(void) {} |
195 | .pwm_id = 0, | 147 | #endif |
196 | .max_brightness = PALMZ72_MAX_INTENSITY, | ||
197 | .dft_brightness = PALMZ72_MAX_INTENSITY, | ||
198 | .pwm_period_ns = PALMZ72_PERIOD_NS, | ||
199 | .init = palmz72_backlight_init, | ||
200 | .notify = palmz72_backlight_notify, | ||
201 | .exit = palmz72_backlight_exit, | ||
202 | }; | ||
203 | |||
204 | static struct platform_device palmz72_backlight = { | ||
205 | .name = "pwm-backlight", | ||
206 | .dev = { | ||
207 | .parent = &pxa27x_device_pwm0.dev, | ||
208 | .platform_data = &palmz72_backlight_data, | ||
209 | }, | ||
210 | }; | ||
211 | |||
212 | /****************************************************************************** | ||
213 | * IrDA | ||
214 | ******************************************************************************/ | ||
215 | static struct pxaficp_platform_data palmz72_ficp_platform_data = { | ||
216 | .gpio_pwdown = GPIO_NR_PALMZ72_IR_DISABLE, | ||
217 | .transceiver_cap = IR_SIRMODE | IR_OFF, | ||
218 | }; | ||
219 | 148 | ||
220 | /****************************************************************************** | 149 | /****************************************************************************** |
221 | * LEDs | 150 | * LEDs |
222 | ******************************************************************************/ | 151 | ******************************************************************************/ |
152 | #if defined(CONFIG_LEDS_GPIO) || defined(CONFIG_LEDS_GPIO_MODULE) | ||
223 | static struct gpio_led gpio_leds[] = { | 153 | static struct gpio_led gpio_leds[] = { |
224 | { | 154 | { |
225 | .name = "palmz72:green:led", | 155 | .name = "palmz72:green:led", |
@@ -241,144 +171,13 @@ static struct platform_device palmz72_leds = { | |||
241 | } | 171 | } |
242 | }; | 172 | }; |
243 | 173 | ||
244 | /****************************************************************************** | 174 | static void __init palmz72_leds_init(void) |
245 | * UDC | ||
246 | ******************************************************************************/ | ||
247 | static struct gpio_vbus_mach_info palmz72_udc_info = { | ||
248 | .gpio_vbus = GPIO_NR_PALMZ72_USB_DETECT_N, | ||
249 | .gpio_pullup = GPIO_NR_PALMZ72_USB_PULLUP, | ||
250 | }; | ||
251 | |||
252 | static struct platform_device palmz72_gpio_vbus = { | ||
253 | .name = "gpio-vbus", | ||
254 | .id = -1, | ||
255 | .dev = { | ||
256 | .platform_data = &palmz72_udc_info, | ||
257 | }, | ||
258 | }; | ||
259 | |||
260 | /****************************************************************************** | ||
261 | * Power supply | ||
262 | ******************************************************************************/ | ||
263 | static int power_supply_init(struct device *dev) | ||
264 | { | ||
265 | int ret; | ||
266 | |||
267 | ret = gpio_request(GPIO_NR_PALMZ72_POWER_DETECT, "CABLE_STATE_AC"); | ||
268 | if (ret) | ||
269 | goto err1; | ||
270 | ret = gpio_direction_input(GPIO_NR_PALMZ72_POWER_DETECT); | ||
271 | if (ret) | ||
272 | goto err2; | ||
273 | |||
274 | ret = gpio_request(GPIO_NR_PALMZ72_USB_DETECT_N, "CABLE_STATE_USB"); | ||
275 | if (ret) | ||
276 | goto err2; | ||
277 | ret = gpio_direction_input(GPIO_NR_PALMZ72_USB_DETECT_N); | ||
278 | if (ret) | ||
279 | goto err3; | ||
280 | |||
281 | return 0; | ||
282 | err3: | ||
283 | gpio_free(GPIO_NR_PALMZ72_USB_DETECT_N); | ||
284 | err2: | ||
285 | gpio_free(GPIO_NR_PALMZ72_POWER_DETECT); | ||
286 | err1: | ||
287 | return ret; | ||
288 | } | ||
289 | |||
290 | static int palmz72_is_ac_online(void) | ||
291 | { | ||
292 | return gpio_get_value(GPIO_NR_PALMZ72_POWER_DETECT); | ||
293 | } | ||
294 | |||
295 | static int palmz72_is_usb_online(void) | ||
296 | { | 175 | { |
297 | return !gpio_get_value(GPIO_NR_PALMZ72_USB_DETECT_N); | 176 | platform_device_register(&palmz72_leds); |
298 | } | 177 | } |
299 | 178 | #else | |
300 | static void power_supply_exit(struct device *dev) | 179 | static inline void palmz72_leds_init(void) {} |
301 | { | 180 | #endif |
302 | gpio_free(GPIO_NR_PALMZ72_USB_DETECT_N); | ||
303 | gpio_free(GPIO_NR_PALMZ72_POWER_DETECT); | ||
304 | } | ||
305 | |||
306 | static char *palmz72_supplicants[] = { | ||
307 | "main-battery", | ||
308 | }; | ||
309 | |||
310 | static struct pda_power_pdata power_supply_info = { | ||
311 | .init = power_supply_init, | ||
312 | .is_ac_online = palmz72_is_ac_online, | ||
313 | .is_usb_online = palmz72_is_usb_online, | ||
314 | .exit = power_supply_exit, | ||
315 | .supplied_to = palmz72_supplicants, | ||
316 | .num_supplicants = ARRAY_SIZE(palmz72_supplicants), | ||
317 | }; | ||
318 | |||
319 | static struct platform_device power_supply = { | ||
320 | .name = "pda-power", | ||
321 | .id = -1, | ||
322 | .dev = { | ||
323 | .platform_data = &power_supply_info, | ||
324 | }, | ||
325 | }; | ||
326 | |||
327 | /****************************************************************************** | ||
328 | * WM97xx audio, battery | ||
329 | ******************************************************************************/ | ||
330 | static struct wm97xx_batt_pdata palmz72_batt_pdata = { | ||
331 | .batt_aux = WM97XX_AUX_ID3, | ||
332 | .temp_aux = WM97XX_AUX_ID2, | ||
333 | .charge_gpio = -1, | ||
334 | .max_voltage = PALMZ72_BAT_MAX_VOLTAGE, | ||
335 | .min_voltage = PALMZ72_BAT_MIN_VOLTAGE, | ||
336 | .batt_mult = 1000, | ||
337 | .batt_div = 414, | ||
338 | .temp_mult = 1, | ||
339 | .temp_div = 1, | ||
340 | .batt_tech = POWER_SUPPLY_TECHNOLOGY_LIPO, | ||
341 | .batt_name = "main-batt", | ||
342 | }; | ||
343 | |||
344 | static struct wm97xx_pdata palmz72_wm97xx_pdata = { | ||
345 | .batt_pdata = &palmz72_batt_pdata, | ||
346 | }; | ||
347 | |||
348 | static pxa2xx_audio_ops_t palmz72_ac97_pdata = { | ||
349 | .codec_pdata = { &palmz72_wm97xx_pdata, }, | ||
350 | }; | ||
351 | |||
352 | static struct platform_device palmz72_asoc = { | ||
353 | .name = "palm27x-asoc", | ||
354 | .id = -1, | ||
355 | }; | ||
356 | |||
357 | /****************************************************************************** | ||
358 | * Framebuffer | ||
359 | ******************************************************************************/ | ||
360 | static struct pxafb_mode_info palmz72_lcd_modes[] = { | ||
361 | { | ||
362 | .pixclock = 115384, | ||
363 | .xres = 320, | ||
364 | .yres = 320, | ||
365 | .bpp = 16, | ||
366 | |||
367 | .left_margin = 27, | ||
368 | .right_margin = 7, | ||
369 | .upper_margin = 7, | ||
370 | .lower_margin = 8, | ||
371 | |||
372 | .hsync_len = 6, | ||
373 | .vsync_len = 1, | ||
374 | }, | ||
375 | }; | ||
376 | |||
377 | static struct pxafb_mach_info palmz72_lcd_screen = { | ||
378 | .modes = palmz72_lcd_modes, | ||
379 | .num_modes = ARRAY_SIZE(palmz72_lcd_modes), | ||
380 | .lcd_conn = LCD_COLOR_TFT_16BPP | LCD_PCLK_EDGE_FALL, | ||
381 | }; | ||
382 | 181 | ||
383 | #ifdef CONFIG_PM | 182 | #ifdef CONFIG_PM |
384 | 183 | ||
@@ -457,39 +256,26 @@ device_initcall(palmz72_pm_init); | |||
457 | /****************************************************************************** | 256 | /****************************************************************************** |
458 | * Machine init | 257 | * Machine init |
459 | ******************************************************************************/ | 258 | ******************************************************************************/ |
460 | static struct platform_device *devices[] __initdata = { | ||
461 | &palmz72_backlight, | ||
462 | &palmz72_leds, | ||
463 | &palmz72_asoc, | ||
464 | &power_supply, | ||
465 | &palmz72_gpio_vbus, | ||
466 | }; | ||
467 | |||
468 | /* setup udc GPIOs initial state */ | ||
469 | static void __init palmz72_udc_init(void) | ||
470 | { | ||
471 | if (!gpio_request(GPIO_NR_PALMZ72_USB_PULLUP, "USB Pullup")) { | ||
472 | gpio_direction_output(GPIO_NR_PALMZ72_USB_PULLUP, 0); | ||
473 | gpio_free(GPIO_NR_PALMZ72_USB_PULLUP); | ||
474 | } | ||
475 | } | ||
476 | |||
477 | static void __init palmz72_init(void) | 259 | static void __init palmz72_init(void) |
478 | { | 260 | { |
479 | pxa2xx_mfp_config(ARRAY_AND_SIZE(palmz72_pin_config)); | 261 | pxa2xx_mfp_config(ARRAY_AND_SIZE(palmz72_pin_config)); |
480 | |||
481 | pxa_set_ffuart_info(NULL); | 262 | pxa_set_ffuart_info(NULL); |
482 | pxa_set_btuart_info(NULL); | 263 | pxa_set_btuart_info(NULL); |
483 | pxa_set_stuart_info(NULL); | 264 | pxa_set_stuart_info(NULL); |
484 | 265 | ||
485 | set_pxa_fb_info(&palmz72_lcd_screen); | 266 | palm27x_mmc_init(GPIO_NR_PALMZ72_SD_DETECT_N, GPIO_NR_PALMZ72_SD_RO, |
486 | pxa_set_mci_info(&palmz72_mci_platform_data); | 267 | GPIO_NR_PALMZ72_SD_POWER_N, 1); |
487 | palmz72_udc_init(); | 268 | palm27x_lcd_init(-1, &palm_320x320_lcd_mode); |
488 | pxa_set_ac97_info(&palmz72_ac97_pdata); | 269 | palm27x_udc_init(GPIO_NR_PALMZ72_USB_DETECT_N, |
489 | pxa_set_ficp_info(&palmz72_ficp_platform_data); | 270 | GPIO_NR_PALMZ72_USB_PULLUP, 0); |
490 | pxa_set_keypad_info(&palmz72_keypad_platform_data); | 271 | palm27x_irda_init(GPIO_NR_PALMZ72_IR_DISABLE); |
491 | 272 | palm27x_ac97_init(PALMZ72_BAT_MIN_VOLTAGE, PALMZ72_BAT_MAX_VOLTAGE, | |
492 | platform_add_devices(devices, ARRAY_SIZE(devices)); | 273 | -1, 113); |
274 | palm27x_pwm_init(-1, -1); | ||
275 | palm27x_power_init(-1, -1); | ||
276 | palm27x_pmic_init(); | ||
277 | palmz72_kpc_init(); | ||
278 | palmz72_leds_init(); | ||
493 | } | 279 | } |
494 | 280 | ||
495 | MACHINE_START(PALMZ72, "Palm Zire72") | 281 | MACHINE_START(PALMZ72, "Palm Zire72") |