blob: 71733866cb4f21c308d5e926b59d261576666741 [file] [log] [blame]
Haavard Skinnemoen964d2192008-08-05 13:49:09 +02001/*
2 * Platform data definitions.
3 */
4#ifndef __ASM_ARCH_BOARD_H
5#define __ASM_ARCH_BOARD_H
6
7#include <linux/types.h>
Peter Huewef7512e72010-06-29 19:35:39 +02008#include <linux/serial.h>
Jamie Iles84e0cdb2011-03-08 20:17:06 +00009#include <linux/platform_data/macb.h>
Jean-Christophe PLAGNIOL-VILLARDbf4289c2011-12-29 14:43:24 +080010#include <linux/platform_data/atmel_nand.h>
Haavard Skinnemoen964d2192008-08-05 13:49:09 +020011
12#define GPIO_PIN_NONE (-1)
13
14/*
15 * Clock rates for various on-board oscillators. The number of entries
16 * in this array is chip-dependent.
17 */
18extern unsigned long at32_board_osc_rates[];
Hans-Christian Egtvedt6b0c9352009-03-24 13:59:22 +010019
Haavard Skinnemoene82c6102008-10-23 14:42:19 +020020/*
21 * This used to add essential system devices, but this is now done
22 * automatically. Please don't use it in new board code.
23 */
24static inline void __deprecated at32_add_system_devices(void)
25{
26
27}
Haavard Skinnemoen964d2192008-08-05 13:49:09 +020028
29#define ATMEL_MAX_UART 4
30extern struct platform_device *atmel_default_console_device;
31
Peter Mabf4861c2009-03-31 10:31:02 -070032/* Flags for selecting USART extra pins */
33#define ATMEL_USART_RTS 0x01
34#define ATMEL_USART_CTS 0x02
Ben Nizettec076b992009-06-03 11:38:20 +020035#define ATMEL_USART_CLK 0x04
Peter Mabf4861c2009-03-31 10:31:02 -070036
Haavard Skinnemoen964d2192008-08-05 13:49:09 +020037struct atmel_uart_data {
Jean-Christophe PLAGNIOL-VILLARD2b348e22011-04-10 14:10:05 +080038 int num; /* port num */
Haavard Skinnemoen964d2192008-08-05 13:49:09 +020039 short use_dma_tx; /* use transmit DMA? */
40 short use_dma_rx; /* use receive DMA? */
41 void __iomem *regs; /* virtual base address, if any */
Peter Huewef7512e72010-06-29 19:35:39 +020042 struct serial_rs485 rs485; /* rs485 settings */
Haavard Skinnemoen964d2192008-08-05 13:49:09 +020043};
Peter Mabf4861c2009-03-31 10:31:02 -070044void at32_map_usart(unsigned int hw_id, unsigned int line, int flags);
Haavard Skinnemoen964d2192008-08-05 13:49:09 +020045struct platform_device *at32_add_device_usart(unsigned int id);
46
Haavard Skinnemoen964d2192008-08-05 13:49:09 +020047struct platform_device *
Jamie Iles84e0cdb2011-03-08 20:17:06 +000048at32_add_device_eth(unsigned int id, struct macb_platform_data *data);
Haavard Skinnemoen964d2192008-08-05 13:49:09 +020049
50struct spi_board_info;
51struct platform_device *
52at32_add_device_spi(unsigned int id, struct spi_board_info *b, unsigned int n);
Peter Ma07084202009-08-27 00:31:47 -070053void at32_spi_setup_slaves(unsigned int bus_num, struct spi_board_info *b, unsigned int n);
Haavard Skinnemoen964d2192008-08-05 13:49:09 +020054
55struct atmel_lcdfb_info;
56struct platform_device *
57at32_add_device_lcdc(unsigned int id, struct atmel_lcdfb_info *data,
58 unsigned long fbmem_start, unsigned long fbmem_len,
Julien May70664122008-08-04 14:27:38 +020059 u64 pin_mask);
Haavard Skinnemoen964d2192008-08-05 13:49:09 +020060
61struct usba_platform_data;
62struct platform_device *
63at32_add_device_usba(unsigned int id, struct usba_platform_data *data);
64
65struct ide_platform_data {
66 u8 cs;
67};
68struct platform_device *
69at32_add_device_ide(unsigned int id, unsigned int extint,
70 struct ide_platform_data *data);
71
72/* mask says which PWM channels to mux */
73struct platform_device *at32_add_device_pwm(u32 mask);
74
75/* depending on what's hooked up, not all SSC pins will be used */
76#define ATMEL_SSC_TK 0x01
77#define ATMEL_SSC_TF 0x02
78#define ATMEL_SSC_TD 0x04
79#define ATMEL_SSC_TX (ATMEL_SSC_TK | ATMEL_SSC_TF | ATMEL_SSC_TD)
80
81#define ATMEL_SSC_RK 0x10
82#define ATMEL_SSC_RF 0x20
83#define ATMEL_SSC_RD 0x40
84#define ATMEL_SSC_RX (ATMEL_SSC_RK | ATMEL_SSC_RF | ATMEL_SSC_RD)
85
86struct platform_device *
87at32_add_device_ssc(unsigned int id, unsigned int flags);
88
89struct i2c_board_info;
90struct platform_device *at32_add_device_twi(unsigned int id,
91 struct i2c_board_info *b,
92 unsigned int n);
93
94struct mci_platform_data;
95struct platform_device *
96at32_add_device_mci(unsigned int id, struct mci_platform_data *data);
97
Hans-Christian Egtvedt2f47c8c2009-03-24 13:59:23 +010098struct ac97c_platform_data;
Haavard Skinnemoen964d2192008-08-05 13:49:09 +020099struct platform_device *
Hans-Christian Egtvedt2f47c8c2009-03-24 13:59:23 +0100100at32_add_device_ac97c(unsigned int id, struct ac97c_platform_data *data,
101 unsigned int flags);
Haavard Skinnemoen964d2192008-08-05 13:49:09 +0200102
Hans-Christian Egtvedt6b0c9352009-03-24 13:59:22 +0100103struct atmel_abdac_pdata;
104struct platform_device *
105at32_add_device_abdac(unsigned int id, struct atmel_abdac_pdata *data);
106
Haavard Skinnemoen964d2192008-08-05 13:49:09 +0200107struct platform_device *at32_add_device_psif(unsigned int id);
108
109struct cf_platform_data {
110 int detect_pin;
111 int reset_pin;
112 int vcc_pin;
113 int ready_pin;
114 u8 cs;
115};
116struct platform_device *
117at32_add_device_cf(unsigned int id, unsigned int extint,
118 struct cf_platform_data *data);
119
Haavard Skinnemoen964d2192008-08-05 13:49:09 +0200120struct platform_device *
121at32_add_device_nand(unsigned int id, struct atmel_nand_data *data);
122
123#endif /* __ASM_ARCH_BOARD_H */