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#include <linux/serial.h>
43#include <linux/platform_data/macb.h>
44#include <linux/platform_data/atmel.h>
45
46
47struct at91_udc_data {
48 int vbus_pin;
49 u8 vbus_active_low;
50 u8 vbus_polled;
51 int pullup_pin;
52 u8 pullup_active_low;
53};
54extern void __init at91_add_device_udc(struct at91_udc_data *data);
55
56
57extern void __init at91_add_device_usba(struct usba_platform_data *data);
58
59
60struct at91_cf_data {
61 int irq_pin;
62 int det_pin;
63 int vcc_pin;
64 int rst_pin;
65 u8 chipselect;
66 u8 flags;
67#define AT91_CF_TRUE_IDE 0x01
68#define AT91_IDE_SWAP_A0_A2 0x02
69};
70extern void __init at91_add_device_cf(struct at91_cf_data *data);
71
72
73
74struct at91_mmc_data {
75 int det_pin;
76 unsigned slot_b:1;
77 unsigned wire4:1;
78 int wp_pin;
79 int vcc_pin;
80};
81extern void __init at91_add_device_mmc(short mmc_id, struct at91_mmc_data *data);
82
83
84extern void __init at91_add_device_mci(short mmc_id, struct mci_platform_data *data);
85
86extern void __init at91_add_device_eth(struct macb_platform_data *data);
87
88
89#define AT91_MAX_USBH_PORTS 3
90struct at91_usbh_data {
91 int vbus_pin[AT91_MAX_USBH_PORTS];
92 int overcurrent_pin[AT91_MAX_USBH_PORTS];
93 u8 ports;
94 u8 overcurrent_supported;
95 u8 vbus_pin_active_low[AT91_MAX_USBH_PORTS];
96 u8 overcurrent_status[AT91_MAX_USBH_PORTS];
97 u8 overcurrent_changed[AT91_MAX_USBH_PORTS];
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);
101extern void __init at91_add_device_usbh_ehci(struct at91_usbh_data *data);
102
103extern void __init at91_add_device_nand(struct atmel_nand_data *data);
104
105
106#if defined(CONFIG_ARCH_AT91SAM9G45)
107extern void __init at91_add_device_i2c(short i2c_id, struct i2c_board_info *devices, int nr_devices);
108#else
109extern void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices);
110#endif
111
112
113extern void __init at91_add_device_spi(struct spi_board_info *devices, int nr_devices);
114
115
116#define ATMEL_UART_CTS 0x01
117#define ATMEL_UART_RTS 0x02
118#define ATMEL_UART_DSR 0x04
119#define ATMEL_UART_DTR 0x08
120#define ATMEL_UART_DCD 0x10
121#define ATMEL_UART_RI 0x20
122
123extern void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins);
124
125extern struct platform_device *atmel_default_console_device;
126
127struct atmel_uart_data {
128 int num;
129 short use_dma_tx;
130 short use_dma_rx;
131 void __iomem *regs;
132 struct serial_rs485 rs485;
133};
134extern void __init at91_add_device_serial(void);
135
136
137
138
139#define AT91_PWM0 0
140#define AT91_PWM1 1
141#define AT91_PWM2 2
142#define AT91_PWM3 3
143
144extern void __init at91_add_device_pwm(u32 mask);
145
146
147
148
149
150
151#define ATMEL_SSC_TK 0x01
152#define ATMEL_SSC_TF 0x02
153#define ATMEL_SSC_TD 0x04
154#define ATMEL_SSC_TX (ATMEL_SSC_TK | ATMEL_SSC_TF | ATMEL_SSC_TD)
155
156#define ATMEL_SSC_RK 0x10
157#define ATMEL_SSC_RF 0x20
158#define ATMEL_SSC_RD 0x40
159#define ATMEL_SSC_RX (ATMEL_SSC_RK | ATMEL_SSC_RF | ATMEL_SSC_RD)
160
161extern void __init at91_add_device_ssc(unsigned id, unsigned pins);
162
163
164struct atmel_lcdfb_info;
165extern void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data);
166
167
168extern void __init at91_add_device_ac97(struct ac97c_platform_data *data);
169
170
171struct isi_platform_data;
172extern void __init at91_add_device_isi(struct isi_platform_data *data,
173 bool use_pck_as_mck);
174
175
176struct at91_tsadcc_data {
177 unsigned int adc_clock;
178 u8 pendet_debounce;
179 u8 ts_sample_hold_time;
180};
181extern void __init at91_add_device_tsadcc(struct at91_tsadcc_data *data);
182
183
184struct at91_can_data {
185 void (*transceiver_switch)(int on);
186};
187extern void __init at91_add_device_can(struct at91_can_data *data);
188
189
190extern void __init at91_gpio_leds(struct gpio_led *leds, int nr);
191extern void __init at91_pwm_leds(struct gpio_led *leds, int nr);
192
193
194extern int at91_suspend_entering_slow_clock(void);
195
196#endif
197