special usb hub handling, IDE disks, and retries all over the place
[linux-2.4.git] / include / asm-arm / arch-sa1100 / frodo.h
1 #ifndef _INCLUDE_FRODO_H_
2 #define _INCLUDE_FRODO_H_
3
4 /*
5  * linux/include/asm-arm/arch-sa1100/frodo.h
6  *
7  * Author: Abraham van der Merwe <abraham@2d3d.co.za>
8  *
9  * This file contains the hardware specific definitions for 2d3D, Inc.
10  * SA-1110 Development Board.
11  *
12  * Only include this file from SA1100-specific files.
13  *
14  * This source code is free software; you can redistribute it and/or
15  * modify it under the terms of the GNU General Public License
16  * version 2 as published by the Free Software Foundation.
17  *
18  * History:
19  *
20  *   2002/07/17   Protect accesses to CPLD memory with a global lock
21  *                to prevent races.
22  *
23  *   2002/06/25   PCMCIA support
24  *
25  *   2002/06/06   Added Real-Time Clock IRQ
26  *                Added IRQs for UARTs
27  *
28  *   2002/05/20   Added I2C definitions
29  *                Updated USB port definitions
30  *                Removed scratchpad register
31  *                Added definitions for second UART
32  *
33  *   2002/04/19   Added USB definitions
34  *
35  *   2002/04/17   Added flow control definitions for UART1
36  *
37  *   2002/03/14   Added ethernet reset definitions
38  *
39  *   2002/02/28   Ethernet (cs89x0) support
40  *
41  *   2002/02/27   IDE support
42  *
43  *   2002/02/22   Added some CPLD registers to control backlight and
44  *                general purpose LEDs
45  *
46  *   2002/01/31   Initial version
47  */
48
49 /* CPLD memory */
50 #define FRODO_CPLD_BASE                         0x40000000
51 #define FRODO_CPLD_LENGTH                       0x00100000
52
53 /* CPLD registers */
54 #define FRODO_CPLD_PCMCIA_COMMAND       0x00000
55 #define FRODO_CPLD_PCMCIA_STATUS        0x04000
56 #define FRODO_CPLD_IDE                          0x08000
57 #define FRODO_CPLD_UART1                        0x0c000
58 #define FRODO_CPLD_USB                          0x10000
59 #define FRODO_CPLD_ETHERNET                     0x14000
60 #define FRODO_CPLD_UART2                        0x18000
61 #define FRODO_CPLD_GENERAL                      0x04004
62 #define FRODO_CPLD_I2C                          0x08004
63
64 /* functions to access those registers */
65 #ifndef __ASSEMBLY__
66 #include <linux/types.h>
67 extern u16 frodo_cpld_read (u32 reg);
68 extern void frodo_cpld_write (u32 reg,u16 value);
69 extern void frodo_cpld_set (u32 reg,u16 mask);
70 extern void frodo_cpld_clear (u32 reg,u16 mask);
71 #endif  /* #ifndef __ASSEMBLY__ */
72
73 /* general command/status register */
74 #define FRODO_LCD_BACKLIGHT                     0x0400          /* R/W */
75 #define FRODO_LED1                                      0x0100          /* R/W */
76 #define FRODO_LED2                                      0x0200          /* R/W */
77 #define FRODO_PUSHBUTTON                        0x8000          /* R/O */
78
79 /* ethernet register */
80 #define FRODO_ETH_RESET                         0x8000          /* R/W */
81
82 /* IDE related definitions */
83 #define FRODO_IDE_GPIO                          GPIO_GPIO23
84 #define FRODO_IDE_IRQ                           IRQ_GPIO23
85 #define FRODO_IDE_CTRL                          0xf0038004
86 #define FRODO_IDE_DATA                          0xf0020000
87
88 /* Ethernet related definitions */
89 #define FRODO_ETH_GPIO                          GPIO_GPIO20
90 #define FRODO_ETH_IRQ                           IRQ_GPIO20
91 #define FRODO_ETH_MEMORY                        0xf0060000
92 #define FRODO_ETH_IO                            0xf0070000
93
94 /* USB device controller */
95 #define FRODO_USB_DC_GPIO                       GPIO_GPIO19
96 #define FRODO_USB_DC_IRQ                        IRQ_GPIO19
97 #define FRODO_USB_DC_CTRL                       0xf0040006
98 #define FRODO_USB_DC_DATA                       0xf0040004
99
100 /* USB host controller */
101 #define FRODO_USB_HC_GPIO                       GPIO_GPIO18
102 #define FRODO_USB_HC_IRQ                        IRQ_GPIO18
103 #define FRODO_USB_HC_CTRL                       0xf0040002
104 #define FRODO_USB_HC_DATA                       0xf0040000
105
106 /* This UART supports all the funky things */
107 #define FRODO_UART1_RI                          0x0100          /* R/O */
108 #define FRODO_UART1_DCD                         0x0200          /* R/O */
109 #define FRODO_UART1_CTS                         0x0400          /* R/O */
110 #define FRODO_UART1_DSR                         0x0800          /* R/O */
111 #define FRODO_UART1_DTR                         0x2000          /* R/W */
112 #define FRODO_UART1_RTS                         0x4000          /* R/W */
113 #define FRODO_UART1_IRQEN                       0x8000          /* R/W */
114 #define FRODO_UART1_GPIO                        GPIO_GPIO25
115 #define FRODO_UART1_IRQ                         IRQ_GPIO25
116
117 /* Console port. Only supports a subset of the control lines */
118 #define FRODO_UART2_IRQEN                       0x0100          /* R/W */
119 #define FRODO_UART2_CTS                         0x1000          /* R/O */
120 #define FRODO_UART2_RTS                         0x8000          /* R/W */
121 #define FRODO_UART2_GPIO                        GPIO_GPIO24
122 #define FRODO_UART2_IRQ                         IRQ_GPIO24
123
124 /* USB command register */
125 #define FRODO_USB_HWAKEUP                       0x2000          /* R/W */
126 #define FRODO_USB_DWAKEUP                       0x4000          /* R/W */
127 #define FRODO_USB_NDPSEL                        0x8000          /* R/W */
128
129 /* I2C adapter information */
130 #define FRODO_I2C_SCL_OUT                       0x2000          /* R/W */
131 #define FRODO_I2C_SCL_IN                        0x1000          /* R/O */
132 #define FRODO_I2C_SDA_OUT                       0x8000          /* R/W */
133 #define FRODO_I2C_SDA_IN                        0x4000          /* R/O */
134
135 /* Real-Time Clock */
136 #define FRODO_RTC_GPIO                          GPIO_GPIO14
137 #define FRODO_RTC_IRQ                           IRQ_GPIO14
138
139 /* PCMCIA command register */
140 #define FRODO_PCMCIA_RESET                      0x0004          /* R/W */
141 #define FRODO_PCMCIA_VCC1                       0x0008          /* R/W */
142 #define FRODO_PCMCIA_VCC0                       0x0010          /* R/W */
143 #define FRODO_PCMCIA_VPP1                       0x0020          /* R/W */
144 #define FRODO_PCMCIA_VPP0                       0x0040          /* R/W */
145 #define FRODO_PCMCIA_CLEAR                      0x0080          /* R/W */
146
147 /* PCMCIA status register */
148 #define FRODO_PCMCIA_VS1                        0x0001          /* R/O */
149 #define FRODO_PCMCIA_VS2                        0x0002          /* R/O */
150 #define FRODO_PCMCIA_BVD1                       0x0004          /* R/O */
151 #define FRODO_PCMCIA_BVD2                       0x0008          /* R/O */
152 #define FRODO_PCMCIA_CD1                        0x0010          /* R/O */
153 #define FRODO_PCMCIA_CD2                        0x0020          /* R/O */
154 #define FRODO_PCMCIA_RDYBSY                     0x0040          /* R/O */
155
156 /* PCMCIA interrupts */
157 #define FRODO_PCMCIA_STATUS_GPIO        GPIO_GPIO10
158 #define FRODO_PCMCIA_STATUS_IRQ         IRQ_GPIO10
159 #define FRODO_PCMCIA_RDYBSY_GPIO        GPIO_GPIO11
160 #define FRODO_PCMCIA_RDYBSY_IRQ         IRQ_GPIO11
161
162 #endif  /* _INCLUDE_FRODO_H_ */