1 #ifndef _INCLUDE_FRODO_H_
2 #define _INCLUDE_FRODO_H_
5 * linux/include/asm-arm/arch-sa1100/frodo.h
7 * Author: Abraham van der Merwe <abraham@2d3d.co.za>
9 * This file contains the hardware specific definitions for 2d3D, Inc.
10 * SA-1110 Development Board.
12 * Only include this file from SA1100-specific files.
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.
20 * 2002/07/17 Protect accesses to CPLD memory with a global lock
23 * 2002/06/25 PCMCIA support
25 * 2002/06/06 Added Real-Time Clock IRQ
26 * Added IRQs for UARTs
28 * 2002/05/20 Added I2C definitions
29 * Updated USB port definitions
30 * Removed scratchpad register
31 * Added definitions for second UART
33 * 2002/04/19 Added USB definitions
35 * 2002/04/17 Added flow control definitions for UART1
37 * 2002/03/14 Added ethernet reset definitions
39 * 2002/02/28 Ethernet (cs89x0) support
41 * 2002/02/27 IDE support
43 * 2002/02/22 Added some CPLD registers to control backlight and
44 * general purpose LEDs
46 * 2002/01/31 Initial version
50 #define FRODO_CPLD_BASE 0x40000000
51 #define FRODO_CPLD_LENGTH 0x00100000
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
64 /* functions to access those registers */
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__ */
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 */
79 /* ethernet register */
80 #define FRODO_ETH_RESET 0x8000 /* R/W */
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
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
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
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
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
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
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 */
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 */
135 /* Real-Time Clock */
136 #define FRODO_RTC_GPIO GPIO_GPIO14
137 #define FRODO_RTC_IRQ IRQ_GPIO14
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 */
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 */
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
162 #endif /* _INCLUDE_FRODO_H_ */