Blame view

arch/arm/mach-pxa/palmt5.c 5.64 KB
0f6ff0f06   Marek Vasut   [ARM] pxa: PalmT5...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
  /*
   * Hardware definitions for Palm Tungsten|T5
   *
   * Author:	Marek Vasut <marek.vasut@gmail.com>
   *
   * Based on work of:
   *		Ales Snuparek <snuparek@atlas.cz>
   *		Justin Kendrick <twilightsentry@gmail.com>
   *		RichardT5 <richard_t5@users.sourceforge.net>
   *
   * 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.
   *
   * (find more info at www.hackndev.com)
   *
   */
  
  #include <linux/platform_device.h>
  #include <linux/delay.h>
  #include <linux/irq.h>
  #include <linux/gpio_keys.h>
  #include <linux/input.h>
8d717a52d   Russell King   ARM: Convert plat...
24
  #include <linux/memblock.h>
0f6ff0f06   Marek Vasut   [ARM] pxa: PalmT5...
25
26
27
  #include <linux/pda_power.h>
  #include <linux/pwm_backlight.h>
  #include <linux/gpio.h>
241cf4731   Marek Vasut   [ARM] pxa: fix al...
28
  #include <linux/wm97xx.h>
0f6ff0f06   Marek Vasut   [ARM] pxa: PalmT5...
29
  #include <linux/power_supply.h>
8768dc9b7   Marek Vasut   [ARM] pxa/palm: S...
30
  #include <linux/usb/gpio_vbus.h>
0f6ff0f06   Marek Vasut   [ARM] pxa: PalmT5...
31
32
33
34
  
  #include <asm/mach-types.h>
  #include <asm/mach/arch.h>
  #include <asm/mach/map.h>
51c62982a   Eric Miao   [ARM] pxa: introd...
35
  #include <mach/pxa27x.h>
0f6ff0f06   Marek Vasut   [ARM] pxa: PalmT5...
36
37
  #include <mach/audio.h>
  #include <mach/palmt5.h>
293b2da1b   Arnd Bergmann   ARM: pxa: move pl...
38
39
40
41
  #include <linux/platform_data/mmc-pxamci.h>
  #include <linux/platform_data/video-pxafb.h>
  #include <linux/platform_data/irda-pxaficp.h>
  #include <linux/platform_data/keypad-pxa27x.h>
0f6ff0f06   Marek Vasut   [ARM] pxa: PalmT5...
42
  #include <mach/udc.h>
293b2da1b   Arnd Bergmann   ARM: pxa: move pl...
43
  #include <linux/platform_data/asoc-palm27x.h>
31620e21a   Marek Vasut   [ARM] pxa/palm: F...
44
  #include <mach/palm27x.h>
0f6ff0f06   Marek Vasut   [ARM] pxa: PalmT5...
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
  
  #include "generic.h"
  #include "devices.h"
  
  /******************************************************************************
   * Pin configuration
   ******************************************************************************/
  static unsigned long palmt5_pin_config[] __initdata = {
  	/* MMC */
  	GPIO32_MMC_CLK,
  	GPIO92_MMC_DAT_0,
  	GPIO109_MMC_DAT_1,
  	GPIO110_MMC_DAT_2,
  	GPIO111_MMC_DAT_3,
  	GPIO112_MMC_CMD,
  	GPIO14_GPIO,	/* SD detect */
  	GPIO114_GPIO,	/* SD power */
  	GPIO115_GPIO,	/* SD r/o switch */
  
  	/* AC97 */
  	GPIO28_AC97_BITCLK,
  	GPIO29_AC97_SDATA_IN_0,
  	GPIO30_AC97_SDATA_OUT,
  	GPIO31_AC97_SYNC,
6ec04f434   Marek Vasut   [ARM] pxa/palm: f...
69
  	GPIO89_AC97_SYSCLK,
efb12cd20   Marek Vasut   [ARM] pxa: PalmTX...
70
  	GPIO95_AC97_nRESET,
0f6ff0f06   Marek Vasut   [ARM] pxa: PalmT5...
71
72
73
74
75
76
77
78
  
  	/* IrDA */
  	GPIO40_GPIO,	/* ir disable */
  	GPIO46_FICP_RXD,
  	GPIO47_FICP_TXD,
  
  	/* USB */
  	GPIO15_GPIO,	/* usb detect */
efb12cd20   Marek Vasut   [ARM] pxa: PalmTX...
79
  	GPIO93_GPIO,	/* usb power */
0f6ff0f06   Marek Vasut   [ARM] pxa: PalmT5...
80
81
  
  	/* MATRIX KEYPAD */
81854f82c   Marek Vasut   [ARM] pxa: Add su...
82
83
84
85
  	GPIO100_KP_MKIN_0 | WAKEUP_ON_LEVEL_HIGH,
  	GPIO101_KP_MKIN_1 | WAKEUP_ON_LEVEL_HIGH,
  	GPIO102_KP_MKIN_2 | WAKEUP_ON_LEVEL_HIGH,
  	GPIO97_KP_MKIN_3 | WAKEUP_ON_LEVEL_HIGH,
0f6ff0f06   Marek Vasut   [ARM] pxa: PalmT5...
86
87
88
89
90
  	GPIO103_KP_MKOUT_0,
  	GPIO104_KP_MKOUT_1,
  	GPIO105_KP_MKOUT_2,
  
  	/* LCD */
bedbda971   Eric Miao   [ARM] pxa: simpli...
91
  	GPIOxx_LCD_TFT_16BPP,
0f6ff0f06   Marek Vasut   [ARM] pxa: PalmT5...
92
93
94
  
  	/* PWM */
  	GPIO16_PWM0_OUT,
ecf763c56   Marek Vasut   [ARM] pxa: add ST...
95
96
97
  	/* FFUART */
  	GPIO34_FFUART_RXD,
  	GPIO39_FFUART_TXD,
0f6ff0f06   Marek Vasut   [ARM] pxa: PalmT5...
98
99
100
101
102
103
104
  	/* MISC */
  	GPIO10_GPIO,	/* hotsync button */
  	GPIO90_GPIO,	/* power detect */
  	GPIO107_GPIO,	/* earphone detect */
  };
  
  /******************************************************************************
0f6ff0f06   Marek Vasut   [ARM] pxa: PalmT5...
105
106
   * GPIO keyboard
   ******************************************************************************/
31620e21a   Marek Vasut   [ARM] pxa/palm: F...
107
  #if defined(CONFIG_KEYBOARD_PXA27x) || defined(CONFIG_KEYBOARD_PXA27x_MODULE)
0a085a948   Chao Xie   Input: pxa27x-key...
108
  static const unsigned int palmt5_matrix_keys[] = {
0f6ff0f06   Marek Vasut   [ARM] pxa: PalmT5...
109
110
111
112
113
114
115
116
117
118
119
120
121
122
  	KEY(0, 0, KEY_POWER),
  	KEY(0, 1, KEY_F1),
  	KEY(0, 2, KEY_ENTER),
  
  	KEY(1, 0, KEY_F2),
  	KEY(1, 1, KEY_F3),
  	KEY(1, 2, KEY_F4),
  
  	KEY(2, 0, KEY_UP),
  	KEY(2, 2, KEY_DOWN),
  
  	KEY(3, 0, KEY_RIGHT),
  	KEY(3, 2, KEY_LEFT),
  };
0a085a948   Chao Xie   Input: pxa27x-key...
123
124
125
126
  static struct matrix_keymap_data palmt5_matrix_keymap_data = {
  	.keymap			= palmt5_matrix_keys,
  	.keymap_size		= ARRAY_SIZE(palmt5_matrix_keys),
  };
0f6ff0f06   Marek Vasut   [ARM] pxa: PalmT5...
127
128
129
  static struct pxa27x_keypad_platform_data palmt5_keypad_platform_data = {
  	.matrix_key_rows	= 4,
  	.matrix_key_cols	= 3,
0a085a948   Chao Xie   Input: pxa27x-key...
130
  	.matrix_keymap_data	= &palmt5_matrix_keymap_data,
0f6ff0f06   Marek Vasut   [ARM] pxa: PalmT5...
131
132
133
  
  	.debounce_interval	= 30,
  };
31620e21a   Marek Vasut   [ARM] pxa/palm: F...
134
135
136
137
138
139
140
  static void __init palmt5_kpc_init(void)
  {
  	pxa_set_keypad_info(&palmt5_keypad_platform_data);
  }
  #else
  static inline void palmt5_kpc_init(void) {}
  #endif
0f6ff0f06   Marek Vasut   [ARM] pxa: PalmT5...
141
142
143
  /******************************************************************************
   * GPIO keys
   ******************************************************************************/
31620e21a   Marek Vasut   [ARM] pxa/palm: F...
144
  #if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
0f6ff0f06   Marek Vasut   [ARM] pxa: PalmT5...
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
  static struct gpio_keys_button palmt5_pxa_buttons[] = {
  	{KEY_F8, GPIO_NR_PALMT5_HOTSYNC_BUTTON_N, 1, "HotSync Button" },
  };
  
  static struct gpio_keys_platform_data palmt5_pxa_keys_data = {
  	.buttons	= palmt5_pxa_buttons,
  	.nbuttons	= ARRAY_SIZE(palmt5_pxa_buttons),
  };
  
  static struct platform_device palmt5_pxa_keys = {
  	.name	= "gpio-keys",
  	.id	= -1,
  	.dev	= {
  		.platform_data = &palmt5_pxa_keys_data,
  	},
  };
31620e21a   Marek Vasut   [ARM] pxa/palm: F...
161
  static void __init palmt5_keys_init(void)
81854f82c   Marek Vasut   [ARM] pxa: Add su...
162
  {
31620e21a   Marek Vasut   [ARM] pxa/palm: F...
163
  	platform_device_register(&palmt5_pxa_keys);
81854f82c   Marek Vasut   [ARM] pxa: Add su...
164
  }
31620e21a   Marek Vasut   [ARM] pxa/palm: F...
165
166
167
  #else
  static inline void palmt5_keys_init(void) {}
  #endif
81854f82c   Marek Vasut   [ARM] pxa: Add su...
168

81854f82c   Marek Vasut   [ARM] pxa: Add su...
169
  /******************************************************************************
0f6ff0f06   Marek Vasut   [ARM] pxa: PalmT5...
170
171
   * Machine init
   ******************************************************************************/
98c672cf1   Russell King   ARM: Move platfor...
172
173
  static void __init palmt5_reserve(void)
  {
8d717a52d   Russell King   ARM: Convert plat...
174
  	memblock_reserve(0xa0200000, 0x1000);
98c672cf1   Russell King   ARM: Move platfor...
175
  }
0f6ff0f06   Marek Vasut   [ARM] pxa: PalmT5...
176
177
178
  static void __init palmt5_init(void)
  {
  	pxa2xx_mfp_config(ARRAY_AND_SIZE(palmt5_pin_config));
cc155c6f2   Russell King   [ARM] pxa: allow ...
179
180
181
  	pxa_set_ffuart_info(NULL);
  	pxa_set_btuart_info(NULL);
  	pxa_set_stuart_info(NULL);
31620e21a   Marek Vasut   [ARM] pxa/palm: F...
182
183
184
185
186
187
188
189
190
191
192
193
194
195
  	palm27x_mmc_init(GPIO_NR_PALMT5_SD_DETECT_N, GPIO_NR_PALMT5_SD_READONLY,
  			GPIO_NR_PALMT5_SD_POWER, 0);
  	palm27x_pm_init(PALMT5_STR_BASE);
  	palm27x_lcd_init(-1, &palm_320x480_lcd_mode);
  	palm27x_udc_init(GPIO_NR_PALMT5_USB_DETECT_N,
  			GPIO_NR_PALMT5_USB_PULLUP, 1);
  	palm27x_irda_init(GPIO_NR_PALMT5_IR_DISABLE);
  	palm27x_ac97_init(PALMT5_BAT_MIN_VOLTAGE, PALMT5_BAT_MAX_VOLTAGE,
  			GPIO_NR_PALMT5_EARPHONE_DETECT, 95);
  	palm27x_pwm_init(GPIO_NR_PALMT5_BL_POWER, GPIO_NR_PALMT5_LCD_POWER);
  	palm27x_power_init(GPIO_NR_PALMT5_POWER_DETECT, -1);
  	palm27x_pmic_init();
  	palmt5_kpc_init();
  	palmt5_keys_init();
0f6ff0f06   Marek Vasut   [ARM] pxa: PalmT5...
196
197
198
  }
  
  MACHINE_START(PALMT5, "Palm Tungsten|T5")
7375aba67   Nicolas Pitre   ARM: mach-pxa: co...
199
  	.atag_offset	= 0x100,
851982c1b   Marek Vasut   ARM: pxa: Introdu...
200
  	.map_io		= pxa27x_map_io,
98c672cf1   Russell King   ARM: Move platfor...
201
  	.reserve	= palmt5_reserve,
4e611091f   Rob Herring   ARM: pxa: remove ...
202
  	.nr_irqs	= PXA_NR_IRQS,
0f6ff0f06   Marek Vasut   [ARM] pxa: PalmT5...
203
  	.init_irq	= pxa27x_init_irq,
8a97ae2f5   Eric Miao   ARM: pxa: enable ...
204
  	.handle_irq	= pxa27x_handle_irq,
6bb27d734   Stephen Warren   ARM: delete struc...
205
  	.init_time	= pxa_timer_init,
271a74fc8   Russell King   ARM: restart: pxa...
206
207
  	.init_machine	= palmt5_init,
  	.restart	= pxa_restart,
0f6ff0f06   Marek Vasut   [ARM] pxa: PalmT5...
208
  MACHINE_END