xref: /openbmc/linux/include/linux/platform_data/atmel.h (revision 1a4e39c2e5ca2eb494a53ecd73055562f690bca0)
1 /*
2  * atmel platform data
3  *
4  * GPL v2 Only
5  */
6 
7 #ifndef __ATMEL_H__
8 #define __ATMEL_H__
9 
10 #include <linux/mtd/nand.h>
11 #include <linux/mtd/partitions.h>
12 #include <linux/device.h>
13 #include <linux/i2c.h>
14 #include <linux/leds.h>
15 #include <linux/spi/spi.h>
16 #include <linux/usb/atmel_usba_udc.h>
17 #include <linux/atmel-mci.h>
18 #include <sound/atmel-ac97c.h>
19 #include <linux/serial.h>
20 #include <linux/platform_data/macb.h>
21 
22 /*
23  * at91: 6 USARTs and one DBGU port (SAM9260)
24  * avr32: 4
25  */
26 #define ATMEL_MAX_UART	7
27 
28  /* USB Device */
29 struct at91_udc_data {
30 	int	vbus_pin;		/* high == host powering us */
31 	u8	vbus_active_low;	/* vbus polarity */
32 	u8	vbus_polled;		/* Use polling, not interrupt */
33 	int	pullup_pin;		/* active == D+ pulled up */
34 	u8	pullup_active_low;	/* true == pullup_pin is active low */
35 };
36 
37  /* Compact Flash */
38 struct at91_cf_data {
39 	int	irq_pin;		/* I/O IRQ */
40 	int	det_pin;		/* Card detect */
41 	int	vcc_pin;		/* power switching */
42 	int	rst_pin;		/* card reset */
43 	u8	chipselect;		/* EBI Chip Select number */
44 	u8	flags;
45 #define AT91_CF_TRUE_IDE	0x01
46 #define AT91_IDE_SWAP_A0_A2	0x02
47 };
48 
49  /* USB Host */
50 #define AT91_MAX_USBH_PORTS	3
51 struct at91_usbh_data {
52 	int		vbus_pin[AT91_MAX_USBH_PORTS];	/* port power-control pin */
53 	int             overcurrent_pin[AT91_MAX_USBH_PORTS];
54 	u8		ports;				/* number of ports on root hub */
55 	u8              overcurrent_supported;
56 	u8              vbus_pin_active_low[AT91_MAX_USBH_PORTS];
57 	u8              overcurrent_status[AT91_MAX_USBH_PORTS];
58 	u8              overcurrent_changed[AT91_MAX_USBH_PORTS];
59 };
60 
61  /* NAND / SmartMedia */
62 struct atmel_nand_data {
63 	int		enable_pin;		/* chip enable */
64 	int		det_pin;		/* card detect */
65 	int		rdy_pin;		/* ready/busy */
66 	u8		rdy_pin_active_low;	/* rdy_pin value is inverted */
67 	u8		ale;			/* address line number connected to ALE */
68 	u8		cle;			/* address line number connected to CLE */
69 	u8		bus_width_16;		/* buswidth is 16 bit */
70 	u8		ecc_mode;		/* ecc mode */
71 	u8		on_flash_bbt;		/* bbt on flash */
72 	struct mtd_partition *parts;
73 	unsigned int	num_parts;
74 	bool		has_dma;		/* support dma transfer */
75 
76 	/* default is false, only for at32ap7000 chip is true */
77 	bool		need_reset_workaround;
78 };
79 
80  /* Serial */
81 struct atmel_uart_data {
82 	int			num;		/* port num */
83 	short			use_dma_tx;	/* use transmit DMA? */
84 	short			use_dma_rx;	/* use receive DMA? */
85 	void __iomem		*regs;		/* virt. base address, if any */
86 	struct serial_rs485	rs485;		/* rs485 settings */
87 };
88 
89 /* CAN */
90 struct at91_can_data {
91 	void (*transceiver_switch)(int on);
92 };
93 
94 /* FIXME: this needs a better location, but gets stuff building again */
95 extern int at91_suspend_entering_slow_clock(void);
96 
97 #endif /* __ATMEL_H__ */
98