blob: 14276e5a98d2e2081d5ba227ceac6d5f11b6d985 [file] [log] [blame]
viresh kumara7e9c452010-04-01 12:30:19 +01001/*
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
viresh kumara7e9c452010-04-01 12:30:19 +010017#include <linux/init.h>
18#include <linux/platform_device.h>
19#include <linux/amba/bus.h>
viresh kumar410782b2011-03-07 05:57:01 +010020#include <asm/mach/time.h>
21#include <asm/mach/map.h>
viresh kumar70f4c0b2010-04-01 12:31:29 +010022#include <plat/padmux.h>
viresh kumara7e9c452010-04-01 12:30:19 +010023
viresh kumar70f4c0b2010-04-01 12:31:29 +010024/* spear3xx declarations */
viresh kumara7e9c452010-04-01 12:30:19 +010025/*
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
Ryan Mallon61e72bc2011-05-20 08:34:21 +010030#define SPEAR_GPT0_CHAN0_IRQ SPEAR3XX_IRQ_CPU_GPT1_1
31#define SPEAR_GPT0_CHAN1_IRQ SPEAR3XX_IRQ_CPU_GPT1_2
viresh kumara7e9c452010-04-01 12:30:19 +010032
33/* Add spear3xx family device structure declarations here */
viresh kumar1d23d2f2011-05-20 08:34:23 +010034extern struct amba_device spear3xx_gpio_device;
35extern struct amba_device spear3xx_uart_device;
Shiraz Hashim5c881d92011-02-16 07:40:32 +010036extern struct sys_timer spear3xx_timer;
viresh kumara7e9c452010-04-01 12:30:19 +010037
38/* Add spear3xx family function declarations here */
viresh kumarb997f6e2011-05-20 08:34:18 +010039void __init spear3xx_clk_init(void);
Shiraz Hashim5c881d92011-02-16 07:40:32 +010040void __init spear_setup_timer(void);
viresh kumara7e9c452010-04-01 12:30:19 +010041void __init spear3xx_map_io(void);
42void __init spear3xx_init_irq(void);
43void __init spear3xx_init(void);
viresh kumara7e9c452010-04-01 12:30:19 +010044
Russell Kingdd1661e2011-11-05 21:10:37 +000045void spear_restart(char, const char *);
46
viresh kumar70f4c0b2010-04-01 12:31:29 +010047/* pad mux declarations */
48#define PMX_FIRDA_MASK (1 << 14)
49#define PMX_I2C_MASK (1 << 13)
50#define PMX_SSP_CS_MASK (1 << 12)
51#define PMX_SSP_MASK (1 << 11)
52#define PMX_MII_MASK (1 << 10)
53#define PMX_GPIO_PIN0_MASK (1 << 9)
54#define PMX_GPIO_PIN1_MASK (1 << 8)
55#define PMX_GPIO_PIN2_MASK (1 << 7)
56#define PMX_GPIO_PIN3_MASK (1 << 6)
57#define PMX_GPIO_PIN4_MASK (1 << 5)
58#define PMX_GPIO_PIN5_MASK (1 << 4)
59#define PMX_UART0_MODEM_MASK (1 << 3)
60#define PMX_UART0_MASK (1 << 2)
61#define PMX_TIMER_3_4_MASK (1 << 1)
62#define PMX_TIMER_1_2_MASK (1 << 0)
63
64/* pad mux devices */
Ryan Mallon6618c3a2011-05-20 08:34:22 +010065extern struct pmx_dev spear3xx_pmx_firda;
66extern struct pmx_dev spear3xx_pmx_i2c;
67extern struct pmx_dev spear3xx_pmx_ssp_cs;
68extern struct pmx_dev spear3xx_pmx_ssp;
69extern struct pmx_dev spear3xx_pmx_mii;
70extern struct pmx_dev spear3xx_pmx_gpio_pin0;
71extern struct pmx_dev spear3xx_pmx_gpio_pin1;
72extern struct pmx_dev spear3xx_pmx_gpio_pin2;
73extern struct pmx_dev spear3xx_pmx_gpio_pin3;
74extern struct pmx_dev spear3xx_pmx_gpio_pin4;
75extern struct pmx_dev spear3xx_pmx_gpio_pin5;
76extern struct pmx_dev spear3xx_pmx_uart0_modem;
77extern struct pmx_dev spear3xx_pmx_uart0;
78extern struct pmx_dev spear3xx_pmx_timer_3_4;
79extern struct pmx_dev spear3xx_pmx_timer_1_2;
viresh kumar70f4c0b2010-04-01 12:31:29 +010080
81#if defined(CONFIG_MACH_SPEAR310) || defined(CONFIG_MACH_SPEAR320)
82/* padmux plgpio devices */
Ryan Mallon6618c3a2011-05-20 08:34:22 +010083extern struct pmx_dev spear3xx_pmx_plgpio_0_1;
84extern struct pmx_dev spear3xx_pmx_plgpio_2_3;
85extern struct pmx_dev spear3xx_pmx_plgpio_4_5;
86extern struct pmx_dev spear3xx_pmx_plgpio_6_9;
87extern struct pmx_dev spear3xx_pmx_plgpio_10_27;
88extern struct pmx_dev spear3xx_pmx_plgpio_28;
89extern struct pmx_dev spear3xx_pmx_plgpio_29;
90extern struct pmx_dev spear3xx_pmx_plgpio_30;
91extern struct pmx_dev spear3xx_pmx_plgpio_31;
92extern struct pmx_dev spear3xx_pmx_plgpio_32;
93extern struct pmx_dev spear3xx_pmx_plgpio_33;
94extern struct pmx_dev spear3xx_pmx_plgpio_34_36;
95extern struct pmx_dev spear3xx_pmx_plgpio_37_42;
96extern struct pmx_dev spear3xx_pmx_plgpio_43_44_47_48;
97extern struct pmx_dev spear3xx_pmx_plgpio_45_46_49_50;
viresh kumar70f4c0b2010-04-01 12:31:29 +010098#endif
99
viresh kumar70f4c0b2010-04-01 12:31:29 +0100100/* spear300 declarations */
viresh kumara7e9c452010-04-01 12:30:19 +0100101#ifdef CONFIG_MACH_SPEAR300
viresh kumar70f4c0b2010-04-01 12:31:29 +0100102/* Add spear300 machine device structure declarations here */
viresh kumar1d23d2f2011-05-20 08:34:23 +0100103extern struct amba_device spear300_gpio1_device;
viresh kumar70f4c0b2010-04-01 12:31:29 +0100104
105/* pad mux modes */
Ryan Mallon6618c3a2011-05-20 08:34:22 +0100106extern struct pmx_mode spear300_nand_mode;
107extern struct pmx_mode spear300_nor_mode;
108extern struct pmx_mode spear300_photo_frame_mode;
109extern struct pmx_mode spear300_lend_ip_phone_mode;
110extern struct pmx_mode spear300_hend_ip_phone_mode;
111extern struct pmx_mode spear300_lend_wifi_phone_mode;
112extern struct pmx_mode spear300_hend_wifi_phone_mode;
113extern struct pmx_mode spear300_ata_pabx_wi2s_mode;
114extern struct pmx_mode spear300_ata_pabx_i2s_mode;
115extern struct pmx_mode spear300_caml_lcdw_mode;
116extern struct pmx_mode spear300_camu_lcd_mode;
117extern struct pmx_mode spear300_camu_wlcd_mode;
118extern struct pmx_mode spear300_caml_lcd_mode;
viresh kumar70f4c0b2010-04-01 12:31:29 +0100119
120/* pad mux devices */
Ryan Mallon6618c3a2011-05-20 08:34:22 +0100121extern struct pmx_dev spear300_pmx_fsmc_2_chips;
122extern struct pmx_dev spear300_pmx_fsmc_4_chips;
123extern struct pmx_dev spear300_pmx_keyboard;
124extern struct pmx_dev spear300_pmx_clcd;
125extern struct pmx_dev spear300_pmx_telecom_gpio;
126extern struct pmx_dev spear300_pmx_telecom_tdm;
127extern struct pmx_dev spear300_pmx_telecom_spi_cs_i2c_clk;
128extern struct pmx_dev spear300_pmx_telecom_camera;
129extern struct pmx_dev spear300_pmx_telecom_dac;
130extern struct pmx_dev spear300_pmx_telecom_i2s;
131extern struct pmx_dev spear300_pmx_telecom_boot_pins;
132extern struct pmx_dev spear300_pmx_telecom_sdhci_4bit;
133extern struct pmx_dev spear300_pmx_telecom_sdhci_8bit;
134extern struct pmx_dev spear300_pmx_gpio1;
viresh kumar70f4c0b2010-04-01 12:31:29 +0100135
viresh kumar70f4c0b2010-04-01 12:31:29 +0100136/* Add spear300 machine function declarations here */
Ryan Mallon6618c3a2011-05-20 08:34:22 +0100137void __init spear300_init(struct pmx_mode *pmx_mode, struct pmx_dev **pmx_devs,
138 u8 pmx_dev_count);
viresh kumar70f4c0b2010-04-01 12:31:29 +0100139
viresh kumara7e9c452010-04-01 12:30:19 +0100140#endif /* CONFIG_MACH_SPEAR300 */
141
viresh kumar70f4c0b2010-04-01 12:31:29 +0100142/* spear310 declarations */
viresh kumara7e9c452010-04-01 12:30:19 +0100143#ifdef CONFIG_MACH_SPEAR310
viresh kumar70f4c0b2010-04-01 12:31:29 +0100144/* Add spear310 machine device structure declarations here */
145
146/* pad mux devices */
Ryan Mallon6618c3a2011-05-20 08:34:22 +0100147extern struct pmx_dev spear310_pmx_emi_cs_0_1_4_5;
148extern struct pmx_dev spear310_pmx_emi_cs_2_3;
149extern struct pmx_dev spear310_pmx_uart1;
150extern struct pmx_dev spear310_pmx_uart2;
151extern struct pmx_dev spear310_pmx_uart3_4_5;
152extern struct pmx_dev spear310_pmx_fsmc;
153extern struct pmx_dev spear310_pmx_rs485_0_1;
154extern struct pmx_dev spear310_pmx_tdm0;
viresh kumar70f4c0b2010-04-01 12:31:29 +0100155
viresh kumar70f4c0b2010-04-01 12:31:29 +0100156/* Add spear310 machine function declarations here */
Ryan Mallon6618c3a2011-05-20 08:34:22 +0100157void __init spear310_init(struct pmx_mode *pmx_mode, struct pmx_dev **pmx_devs,
158 u8 pmx_dev_count);
viresh kumar70f4c0b2010-04-01 12:31:29 +0100159
viresh kumara7e9c452010-04-01 12:30:19 +0100160#endif /* CONFIG_MACH_SPEAR310 */
161
viresh kumar70f4c0b2010-04-01 12:31:29 +0100162/* spear320 declarations */
viresh kumara7e9c452010-04-01 12:30:19 +0100163#ifdef CONFIG_MACH_SPEAR320
viresh kumar70f4c0b2010-04-01 12:31:29 +0100164/* Add spear320 machine device structure declarations here */
165
166/* pad mux modes */
Ryan Mallon6618c3a2011-05-20 08:34:22 +0100167extern struct pmx_mode spear320_auto_net_smii_mode;
168extern struct pmx_mode spear320_auto_net_mii_mode;
169extern struct pmx_mode spear320_auto_exp_mode;
170extern struct pmx_mode spear320_small_printers_mode;
viresh kumar70f4c0b2010-04-01 12:31:29 +0100171
172/* pad mux devices */
Ryan Mallon6618c3a2011-05-20 08:34:22 +0100173extern struct pmx_dev spear320_pmx_clcd;
174extern struct pmx_dev spear320_pmx_emi;
175extern struct pmx_dev spear320_pmx_fsmc;
176extern struct pmx_dev spear320_pmx_spp;
177extern struct pmx_dev spear320_pmx_sdhci;
178extern struct pmx_dev spear320_pmx_i2s;
179extern struct pmx_dev spear320_pmx_uart1;
180extern struct pmx_dev spear320_pmx_uart1_modem;
181extern struct pmx_dev spear320_pmx_uart2;
182extern struct pmx_dev spear320_pmx_touchscreen;
183extern struct pmx_dev spear320_pmx_can;
184extern struct pmx_dev spear320_pmx_sdhci_led;
185extern struct pmx_dev spear320_pmx_pwm0;
186extern struct pmx_dev spear320_pmx_pwm1;
187extern struct pmx_dev spear320_pmx_pwm2;
188extern struct pmx_dev spear320_pmx_pwm3;
189extern struct pmx_dev spear320_pmx_ssp1;
190extern struct pmx_dev spear320_pmx_ssp2;
191extern struct pmx_dev spear320_pmx_mii1;
192extern struct pmx_dev spear320_pmx_smii0;
193extern struct pmx_dev spear320_pmx_smii1;
194extern struct pmx_dev spear320_pmx_i2c1;
viresh kumar70f4c0b2010-04-01 12:31:29 +0100195
viresh kumar70f4c0b2010-04-01 12:31:29 +0100196/* Add spear320 machine function declarations here */
Ryan Mallon6618c3a2011-05-20 08:34:22 +0100197void __init spear320_init(struct pmx_mode *pmx_mode, struct pmx_dev **pmx_devs,
198 u8 pmx_dev_count);
viresh kumar70f4c0b2010-04-01 12:31:29 +0100199
viresh kumara7e9c452010-04-01 12:30:19 +0100200#endif /* CONFIG_MACH_SPEAR320 */
201
202#endif /* __MACH_GENERIC_H */