Merge git://git.kernel.org/pub/scm/linux/kernel/git/hirofumi/fatfs-2.6
[pandora-kernel.git] / arch / arm / mach-spear3xx / include / mach / generic.h
1 /*
2  * arch/arm/mach-spear3xx/generic.h
3  *
4  * SPEAr3XX machine family generic header file
5  *
6  * Copyright (C) 2009 ST Microelectronics
7  * Viresh Kumar<viresh.kumar@st.com>
8  *
9  * This file is licensed under the terms of the GNU General Public
10  * License version 2. This program is licensed "as is" without any
11  * warranty of any kind, whether express or implied.
12  */
13
14 #ifndef __MACH_GENERIC_H
15 #define __MACH_GENERIC_H
16
17 #include <asm/mach/time.h>
18 #include <asm/mach/map.h>
19 #include <linux/init.h>
20 #include <linux/platform_device.h>
21 #include <linux/amba/bus.h>
22 #include <plat/padmux.h>
23
24 /* spear3xx declarations */
25 /*
26  * Each GPT has 2 timer channels
27  * Following GPT channels will be used as clock source and clockevent
28  */
29 #define SPEAR_GPT0_BASE         SPEAR3XX_ML1_TMR_BASE
30 #define SPEAR_GPT0_CHAN0_IRQ    IRQ_CPU_GPT1_1
31 #define SPEAR_GPT0_CHAN1_IRQ    IRQ_CPU_GPT1_2
32
33 /* Add spear3xx family device structure declarations here */
34 extern struct amba_device gpio_device;
35 extern struct amba_device uart_device;
36 extern struct sys_timer spear_sys_timer;
37
38 /* Add spear3xx family function declarations here */
39 void __init clk_init(void);
40 void __init spear3xx_map_io(void);
41 void __init spear3xx_init_irq(void);
42 void __init spear3xx_init(void);
43 void spear_pmx_init(struct pmx_driver *pmx_driver, uint base, uint size);
44
45 /* pad mux declarations */
46 #define PMX_FIRDA_MASK          (1 << 14)
47 #define PMX_I2C_MASK            (1 << 13)
48 #define PMX_SSP_CS_MASK         (1 << 12)
49 #define PMX_SSP_MASK            (1 << 11)
50 #define PMX_MII_MASK            (1 << 10)
51 #define PMX_GPIO_PIN0_MASK      (1 << 9)
52 #define PMX_GPIO_PIN1_MASK      (1 << 8)
53 #define PMX_GPIO_PIN2_MASK      (1 << 7)
54 #define PMX_GPIO_PIN3_MASK      (1 << 6)
55 #define PMX_GPIO_PIN4_MASK      (1 << 5)
56 #define PMX_GPIO_PIN5_MASK      (1 << 4)
57 #define PMX_UART0_MODEM_MASK    (1 << 3)
58 #define PMX_UART0_MASK          (1 << 2)
59 #define PMX_TIMER_3_4_MASK      (1 << 1)
60 #define PMX_TIMER_1_2_MASK      (1 << 0)
61
62 /* pad mux devices */
63 extern struct pmx_dev pmx_firda;
64 extern struct pmx_dev pmx_i2c;
65 extern struct pmx_dev pmx_ssp_cs;
66 extern struct pmx_dev pmx_ssp;
67 extern struct pmx_dev pmx_mii;
68 extern struct pmx_dev pmx_gpio_pin0;
69 extern struct pmx_dev pmx_gpio_pin1;
70 extern struct pmx_dev pmx_gpio_pin2;
71 extern struct pmx_dev pmx_gpio_pin3;
72 extern struct pmx_dev pmx_gpio_pin4;
73 extern struct pmx_dev pmx_gpio_pin5;
74 extern struct pmx_dev pmx_uart0_modem;
75 extern struct pmx_dev pmx_uart0;
76 extern struct pmx_dev pmx_timer_3_4;
77 extern struct pmx_dev pmx_timer_1_2;
78
79 #if defined(CONFIG_MACH_SPEAR310) || defined(CONFIG_MACH_SPEAR320)
80 /* padmux plgpio devices */
81 extern struct pmx_dev pmx_plgpio_0_1;
82 extern struct pmx_dev pmx_plgpio_2_3;
83 extern struct pmx_dev pmx_plgpio_4_5;
84 extern struct pmx_dev pmx_plgpio_6_9;
85 extern struct pmx_dev pmx_plgpio_10_27;
86 extern struct pmx_dev pmx_plgpio_28;
87 extern struct pmx_dev pmx_plgpio_29;
88 extern struct pmx_dev pmx_plgpio_30;
89 extern struct pmx_dev pmx_plgpio_31;
90 extern struct pmx_dev pmx_plgpio_32;
91 extern struct pmx_dev pmx_plgpio_33;
92 extern struct pmx_dev pmx_plgpio_34_36;
93 extern struct pmx_dev pmx_plgpio_37_42;
94 extern struct pmx_dev pmx_plgpio_43_44_47_48;
95 extern struct pmx_dev pmx_plgpio_45_46_49_50;
96 #endif
97
98 extern struct pmx_driver pmx_driver;
99
100 /* spear300 declarations */
101 #ifdef CONFIG_MACH_SPEAR300
102 /* Add spear300 machine device structure declarations here */
103 extern struct amba_device gpio1_device;
104
105 /* pad mux modes */
106 extern struct pmx_mode nand_mode;
107 extern struct pmx_mode nor_mode;
108 extern struct pmx_mode photo_frame_mode;
109 extern struct pmx_mode lend_ip_phone_mode;
110 extern struct pmx_mode hend_ip_phone_mode;
111 extern struct pmx_mode lend_wifi_phone_mode;
112 extern struct pmx_mode hend_wifi_phone_mode;
113 extern struct pmx_mode ata_pabx_wi2s_mode;
114 extern struct pmx_mode ata_pabx_i2s_mode;
115 extern struct pmx_mode caml_lcdw_mode;
116 extern struct pmx_mode camu_lcd_mode;
117 extern struct pmx_mode camu_wlcd_mode;
118 extern struct pmx_mode caml_lcd_mode;
119
120 /* pad mux devices */
121 extern struct pmx_dev pmx_fsmc_2_chips;
122 extern struct pmx_dev pmx_fsmc_4_chips;
123 extern struct pmx_dev pmx_keyboard;
124 extern struct pmx_dev pmx_clcd;
125 extern struct pmx_dev pmx_telecom_gpio;
126 extern struct pmx_dev pmx_telecom_tdm;
127 extern struct pmx_dev pmx_telecom_spi_cs_i2c_clk;
128 extern struct pmx_dev pmx_telecom_camera;
129 extern struct pmx_dev pmx_telecom_dac;
130 extern struct pmx_dev pmx_telecom_i2s;
131 extern struct pmx_dev pmx_telecom_boot_pins;
132 extern struct pmx_dev pmx_telecom_sdio_4bit;
133 extern struct pmx_dev pmx_telecom_sdio_8bit;
134 extern struct pmx_dev pmx_gpio1;
135
136 void spear300_pmx_init(void);
137
138 /* Add spear300 machine function declarations here */
139 void __init spear300_init(void);
140
141 #endif /* CONFIG_MACH_SPEAR300 */
142
143 /* spear310 declarations */
144 #ifdef CONFIG_MACH_SPEAR310
145 /* Add spear310 machine device structure declarations here */
146
147 /* pad mux devices */
148 extern struct pmx_dev pmx_emi_cs_0_1_4_5;
149 extern struct pmx_dev pmx_emi_cs_2_3;
150 extern struct pmx_dev pmx_uart1;
151 extern struct pmx_dev pmx_uart2;
152 extern struct pmx_dev pmx_uart3_4_5;
153 extern struct pmx_dev pmx_fsmc;
154 extern struct pmx_dev pmx_rs485_0_1;
155 extern struct pmx_dev pmx_tdm0;
156
157 void spear310_pmx_init(void);
158
159 /* Add spear310 machine function declarations here */
160 void __init spear310_init(void);
161
162 #endif /* CONFIG_MACH_SPEAR310 */
163
164 /* spear320 declarations */
165 #ifdef CONFIG_MACH_SPEAR320
166 /* Add spear320 machine device structure declarations here */
167
168 /* pad mux modes */
169 extern struct pmx_mode auto_net_smii_mode;
170 extern struct pmx_mode auto_net_mii_mode;
171 extern struct pmx_mode auto_exp_mode;
172 extern struct pmx_mode small_printers_mode;
173
174 /* pad mux devices */
175 extern struct pmx_dev pmx_clcd;
176 extern struct pmx_dev pmx_emi;
177 extern struct pmx_dev pmx_fsmc;
178 extern struct pmx_dev pmx_spp;
179 extern struct pmx_dev pmx_sdio;
180 extern struct pmx_dev pmx_i2s;
181 extern struct pmx_dev pmx_uart1;
182 extern struct pmx_dev pmx_uart1_modem;
183 extern struct pmx_dev pmx_uart2;
184 extern struct pmx_dev pmx_touchscreen;
185 extern struct pmx_dev pmx_can;
186 extern struct pmx_dev pmx_sdio_led;
187 extern struct pmx_dev pmx_pwm0;
188 extern struct pmx_dev pmx_pwm1;
189 extern struct pmx_dev pmx_pwm2;
190 extern struct pmx_dev pmx_pwm3;
191 extern struct pmx_dev pmx_ssp1;
192 extern struct pmx_dev pmx_ssp2;
193 extern struct pmx_dev pmx_mii1;
194 extern struct pmx_dev pmx_smii0;
195 extern struct pmx_dev pmx_smii1;
196 extern struct pmx_dev pmx_i2c1;
197
198 void spear320_pmx_init(void);
199
200 /* Add spear320 machine function declarations here */
201 void __init spear320_init(void);
202
203 #endif /* CONFIG_MACH_SPEAR320 */
204
205 #endif /* __MACH_GENERIC_H */