1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31#ifndef __ASM_ARCH_BOARD_H
32#define __ASM_ARCH_BOARD_H
33
34#include <linux/mtd/partitions.h>
35#include <linux/device.h>
36#include <linux/i2c.h>
37#include <linux/leds.h>
38#include <linux/spi/spi.h>
39#include <linux/usb/atmel_usba_udc.h>
40#include <linux/atmel-mci.h>
41#include <sound/atmel-ac97c.h>
42
43
44struct at91_udc_data {
45 u8 vbus_pin;
46 u8 pullup_pin;
47 u8 pullup_active_low;
48};
49extern void __init at91_add_device_udc(struct at91_udc_data *data);
50
51
52extern void __init at91_add_device_usba(struct usba_platform_data *data);
53
54
55struct at91_cf_data {
56 u8 irq_pin;
57 u8 det_pin;
58 u8 vcc_pin;
59 u8 rst_pin;
60 u8 chipselect;
61 u8 flags;
62#define AT91_CF_TRUE_IDE 0x01
63#define AT91_IDE_SWAP_A0_A2 0x02
64};
65extern void __init at91_add_device_cf(struct at91_cf_data *data);
66
67
68
69struct at91_mmc_data {
70 u8 det_pin;
71 unsigned slot_b:1;
72 unsigned wire4:1;
73 u8 wp_pin;
74 u8 vcc_pin;
75};
76extern void __init at91_add_device_mmc(short mmc_id, struct at91_mmc_data *data);
77
78
79extern void __init at91_add_device_mci(short mmc_id, struct mci_platform_data *data);
80
81
82struct at91_eth_data {
83 u32 phy_mask;
84 u8 phy_irq_pin;
85 u8 is_rmii;
86};
87extern void __init at91_add_device_eth(struct at91_eth_data *data);
88
89#if defined(CONFIG_ARCH_AT91SAM9260) || defined(CONFIG_ARCH_AT91SAM9263) || defined(CONFIG_ARCH_AT91SAM9G20) || defined(CONFIG_ARCH_AT91CAP9) \
90 || defined(CONFIG_ARCH_AT91SAM9G45)
91#define eth_platform_data at91_eth_data
92#endif
93
94
95struct at91_usbh_data {
96 u8 ports;
97 u8 vbus_pin[2];
98};
99extern void __init at91_add_device_usbh(struct at91_usbh_data *data);
100extern void __init at91_add_device_usbh_ohci(struct at91_usbh_data *data);
101
102
103struct atmel_nand_data {
104 u8 enable_pin;
105 u8 det_pin;
106 u8 rdy_pin;
107 u8 rdy_pin_active_low;
108 u8 ale;
109 u8 cle;
110 u8 bus_width_16;
111 struct mtd_partition* (*partition_info)(int, int*);
112};
113extern void __init at91_add_device_nand(struct atmel_nand_data *data);
114
115
116#if defined(CONFIG_ARCH_AT91SAM9G45)
117extern void __init at91_add_device_i2c(short i2c_id, struct i2c_board_info *devices, int nr_devices);
118#else
119extern void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices);
120#endif
121
122
123extern void __init at91_add_device_spi(struct spi_board_info *devices, int nr_devices);
124
125
126#define ATMEL_UART_CTS 0x01
127#define ATMEL_UART_RTS 0x02
128#define ATMEL_UART_DSR 0x04
129#define ATMEL_UART_DTR 0x08
130#define ATMEL_UART_DCD 0x10
131#define ATMEL_UART_RI 0x20
132
133extern void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins);
134extern void __init at91_set_serial_console(unsigned portnr);
135
136struct at91_uart_config {
137 unsigned short console_tty;
138 unsigned short nr_tty;
139 short tty_map[];
140};
141extern struct platform_device *atmel_default_console_device;
142extern void __init __deprecated at91_init_serial(struct at91_uart_config *config);
143
144struct atmel_uart_data {
145 short use_dma_tx;
146 short use_dma_rx;
147 void __iomem *regs;
148};
149extern void __init at91_add_device_serial(void);
150
151
152
153
154#define AT91_PWM0 0
155#define AT91_PWM1 1
156#define AT91_PWM2 2
157#define AT91_PWM3 3
158
159extern void __init at91_add_device_pwm(u32 mask);
160
161
162
163
164
165
166#define ATMEL_SSC_TK 0x01
167#define ATMEL_SSC_TF 0x02
168#define ATMEL_SSC_TD 0x04
169#define ATMEL_SSC_TX (ATMEL_SSC_TK | ATMEL_SSC_TF | ATMEL_SSC_TD)
170
171#define ATMEL_SSC_RK 0x10
172#define ATMEL_SSC_RF 0x20
173#define ATMEL_SSC_RD 0x40
174#define ATMEL_SSC_RX (ATMEL_SSC_RK | ATMEL_SSC_RF | ATMEL_SSC_RD)
175
176extern void __init at91_add_device_ssc(unsigned id, unsigned pins);
177
178
179struct atmel_lcdfb_info;
180extern void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data);
181
182
183extern void __init at91_add_device_ac97(struct ac97c_platform_data *data);
184
185
186extern void __init at91_add_device_isi(void);
187
188
189extern void __init at91_add_device_tsadcc(void);
190
191
192struct at91_can_data {
193 void (*transceiver_switch)(int on);
194};
195extern void __init at91_add_device_can(struct at91_can_data *data);
196
197
198extern void __init at91_init_leds(u8 cpu_led, u8 timer_led);
199extern void __init at91_gpio_leds(struct gpio_led *leds, int nr);
200extern void __init at91_pwm_leds(struct gpio_led *leds, int nr);
201
202
203extern int at91_suspend_entering_slow_clock(void);
204
205#endif
206