2 * arch/arm/mach-spear3xx/generic.h
4 * SPEAr3XX machine family generic header file
6 * Copyright (C) 2009 ST Microelectronics
7 * Viresh Kumar<viresh.kumar@st.com>
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.
14 #ifndef __MACH_GENERIC_H
15 #define __MACH_GENERIC_H
17 #include <linux/init.h>
18 #include <linux/platform_device.h>
19 #include <linux/amba/bus.h>
20 #include <asm/mach/time.h>
21 #include <asm/mach/map.h>
22 #include <plat/padmux.h>
24 /* spear3xx declarations */
26 * Each GPT has 2 timer channels
27 * Following GPT channels will be used as clock source and clockevent
29 #define SPEAR_GPT0_BASE SPEAR3XX_ML1_TMR_BASE
30 #define SPEAR_GPT0_CHAN0_IRQ SPEAR3XX_IRQ_CPU_GPT1_1
31 #define SPEAR_GPT0_CHAN1_IRQ SPEAR3XX_IRQ_CPU_GPT1_2
33 /* Add spear3xx family device structure declarations here */
34 extern struct amba_device spear3xx_gpio_device
;
35 extern struct amba_device spear3xx_uart_device
;
36 extern struct sys_timer spear3xx_timer
;
38 /* Add spear3xx family function declarations here */
39 void __init
spear3xx_clk_init(void);
40 void __init
spear_setup_timer(void);
41 void __init
spear3xx_map_io(void);
42 void __init
spear3xx_init_irq(void);
43 void __init
spear3xx_init(void);
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)
63 extern struct pmx_dev spear3xx_pmx_firda
;
64 extern struct pmx_dev spear3xx_pmx_i2c
;
65 extern struct pmx_dev spear3xx_pmx_ssp_cs
;
66 extern struct pmx_dev spear3xx_pmx_ssp
;
67 extern struct pmx_dev spear3xx_pmx_mii
;
68 extern struct pmx_dev spear3xx_pmx_gpio_pin0
;
69 extern struct pmx_dev spear3xx_pmx_gpio_pin1
;
70 extern struct pmx_dev spear3xx_pmx_gpio_pin2
;
71 extern struct pmx_dev spear3xx_pmx_gpio_pin3
;
72 extern struct pmx_dev spear3xx_pmx_gpio_pin4
;
73 extern struct pmx_dev spear3xx_pmx_gpio_pin5
;
74 extern struct pmx_dev spear3xx_pmx_uart0_modem
;
75 extern struct pmx_dev spear3xx_pmx_uart0
;
76 extern struct pmx_dev spear3xx_pmx_timer_3_4
;
77 extern struct pmx_dev spear3xx_pmx_timer_1_2
;
79 #if defined(CONFIG_MACH_SPEAR310) || defined(CONFIG_MACH_SPEAR320)
80 /* padmux plgpio devices */
81 extern struct pmx_dev spear3xx_pmx_plgpio_0_1
;
82 extern struct pmx_dev spear3xx_pmx_plgpio_2_3
;
83 extern struct pmx_dev spear3xx_pmx_plgpio_4_5
;
84 extern struct pmx_dev spear3xx_pmx_plgpio_6_9
;
85 extern struct pmx_dev spear3xx_pmx_plgpio_10_27
;
86 extern struct pmx_dev spear3xx_pmx_plgpio_28
;
87 extern struct pmx_dev spear3xx_pmx_plgpio_29
;
88 extern struct pmx_dev spear3xx_pmx_plgpio_30
;
89 extern struct pmx_dev spear3xx_pmx_plgpio_31
;
90 extern struct pmx_dev spear3xx_pmx_plgpio_32
;
91 extern struct pmx_dev spear3xx_pmx_plgpio_33
;
92 extern struct pmx_dev spear3xx_pmx_plgpio_34_36
;
93 extern struct pmx_dev spear3xx_pmx_plgpio_37_42
;
94 extern struct pmx_dev spear3xx_pmx_plgpio_43_44_47_48
;
95 extern struct pmx_dev spear3xx_pmx_plgpio_45_46_49_50
;
98 /* spear300 declarations */
99 #ifdef CONFIG_MACH_SPEAR300
100 /* Add spear300 machine device structure declarations here */
101 extern struct amba_device spear300_gpio1_device
;
104 extern struct pmx_mode spear300_nand_mode
;
105 extern struct pmx_mode spear300_nor_mode
;
106 extern struct pmx_mode spear300_photo_frame_mode
;
107 extern struct pmx_mode spear300_lend_ip_phone_mode
;
108 extern struct pmx_mode spear300_hend_ip_phone_mode
;
109 extern struct pmx_mode spear300_lend_wifi_phone_mode
;
110 extern struct pmx_mode spear300_hend_wifi_phone_mode
;
111 extern struct pmx_mode spear300_ata_pabx_wi2s_mode
;
112 extern struct pmx_mode spear300_ata_pabx_i2s_mode
;
113 extern struct pmx_mode spear300_caml_lcdw_mode
;
114 extern struct pmx_mode spear300_camu_lcd_mode
;
115 extern struct pmx_mode spear300_camu_wlcd_mode
;
116 extern struct pmx_mode spear300_caml_lcd_mode
;
118 /* pad mux devices */
119 extern struct pmx_dev spear300_pmx_fsmc_2_chips
;
120 extern struct pmx_dev spear300_pmx_fsmc_4_chips
;
121 extern struct pmx_dev spear300_pmx_keyboard
;
122 extern struct pmx_dev spear300_pmx_clcd
;
123 extern struct pmx_dev spear300_pmx_telecom_gpio
;
124 extern struct pmx_dev spear300_pmx_telecom_tdm
;
125 extern struct pmx_dev spear300_pmx_telecom_spi_cs_i2c_clk
;
126 extern struct pmx_dev spear300_pmx_telecom_camera
;
127 extern struct pmx_dev spear300_pmx_telecom_dac
;
128 extern struct pmx_dev spear300_pmx_telecom_i2s
;
129 extern struct pmx_dev spear300_pmx_telecom_boot_pins
;
130 extern struct pmx_dev spear300_pmx_telecom_sdhci_4bit
;
131 extern struct pmx_dev spear300_pmx_telecom_sdhci_8bit
;
132 extern struct pmx_dev spear300_pmx_gpio1
;
134 /* Add spear300 machine function declarations here */
135 void __init
spear300_init(struct pmx_mode
*pmx_mode
, struct pmx_dev
**pmx_devs
,
138 #endif /* CONFIG_MACH_SPEAR300 */
140 /* spear310 declarations */
141 #ifdef CONFIG_MACH_SPEAR310
142 /* Add spear310 machine device structure declarations here */
144 /* pad mux devices */
145 extern struct pmx_dev spear310_pmx_emi_cs_0_1_4_5
;
146 extern struct pmx_dev spear310_pmx_emi_cs_2_3
;
147 extern struct pmx_dev spear310_pmx_uart1
;
148 extern struct pmx_dev spear310_pmx_uart2
;
149 extern struct pmx_dev spear310_pmx_uart3_4_5
;
150 extern struct pmx_dev spear310_pmx_fsmc
;
151 extern struct pmx_dev spear310_pmx_rs485_0_1
;
152 extern struct pmx_dev spear310_pmx_tdm0
;
154 /* Add spear310 machine function declarations here */
155 void __init
spear310_init(struct pmx_mode
*pmx_mode
, struct pmx_dev
**pmx_devs
,
158 #endif /* CONFIG_MACH_SPEAR310 */
160 /* spear320 declarations */
161 #ifdef CONFIG_MACH_SPEAR320
162 /* Add spear320 machine device structure declarations here */
165 extern struct pmx_mode spear320_auto_net_smii_mode
;
166 extern struct pmx_mode spear320_auto_net_mii_mode
;
167 extern struct pmx_mode spear320_auto_exp_mode
;
168 extern struct pmx_mode spear320_small_printers_mode
;
170 /* pad mux devices */
171 extern struct pmx_dev spear320_pmx_clcd
;
172 extern struct pmx_dev spear320_pmx_emi
;
173 extern struct pmx_dev spear320_pmx_fsmc
;
174 extern struct pmx_dev spear320_pmx_spp
;
175 extern struct pmx_dev spear320_pmx_sdhci
;
176 extern struct pmx_dev spear320_pmx_i2s
;
177 extern struct pmx_dev spear320_pmx_uart1
;
178 extern struct pmx_dev spear320_pmx_uart1_modem
;
179 extern struct pmx_dev spear320_pmx_uart2
;
180 extern struct pmx_dev spear320_pmx_touchscreen
;
181 extern struct pmx_dev spear320_pmx_can
;
182 extern struct pmx_dev spear320_pmx_sdhci_led
;
183 extern struct pmx_dev spear320_pmx_pwm0
;
184 extern struct pmx_dev spear320_pmx_pwm1
;
185 extern struct pmx_dev spear320_pmx_pwm2
;
186 extern struct pmx_dev spear320_pmx_pwm3
;
187 extern struct pmx_dev spear320_pmx_ssp1
;
188 extern struct pmx_dev spear320_pmx_ssp2
;
189 extern struct pmx_dev spear320_pmx_mii1
;
190 extern struct pmx_dev spear320_pmx_smii0
;
191 extern struct pmx_dev spear320_pmx_smii1
;
192 extern struct pmx_dev spear320_pmx_i2c1
;
194 /* Add spear320 machine function declarations here */
195 void __init
spear320_init(struct pmx_mode
*pmx_mode
, struct pmx_dev
**pmx_devs
,
198 #endif /* CONFIG_MACH_SPEAR320 */
200 #endif /* __MACH_GENERIC_H */