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_ */ 163