This commit was manufactured by cvs2svn to create branch 'vserver'.
[linux-2.6.git] / include / asm-arm / arch-imx / hardware.h
1 /*
2  *  linux/include/asm-arm/arch-imx/hardware.h
3  *
4  *  Copyright (C) 1999 ARM Limited.
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19  */
20 #ifndef __ASM_ARCH_HARDWARE_H
21 #define __ASM_ARCH_HARDWARE_H
22
23 #include <asm/sizes.h>
24 #include "imx-regs.h"
25
26 #ifndef __ASSEMBLY__
27 # define __REG(x)       (*((volatile u32 *)IO_ADDRESS(x)))
28
29 # define __REG2(x,y)    \
30         ( __builtin_constant_p(y) ? (__REG((x) + (y))) \
31                           : (*(volatile u32 *)((u32)&__REG(x) + (y))) )
32 #endif
33
34 /*
35  * Memory map
36  */
37
38 #define IMX_IO_PHYS             0x00200000
39 #define IMX_IO_SIZE             0x00100000
40 #define IMX_IO_BASE             0xe0000000
41
42 #define IMX_CS0_PHYS            0x10000000
43 #define IMX_CS0_SIZE            0x02000000
44 #define IMX_CS0_VIRT            0xe8000000
45
46 #define IMX_CS1_PHYS            0x12000000
47 #define IMX_CS1_SIZE            0x01000000
48 #define IMX_CS1_VIRT            0xea000000
49
50 #define IMX_CS2_PHYS            0x13000000
51 #define IMX_CS2_SIZE            0x01000000
52 #define IMX_CS2_VIRT            0xeb000000
53
54 #define IMX_CS3_PHYS            0x14000000
55 #define IMX_CS3_SIZE            0x01000000
56 #define IMX_CS3_VIRT            0xec000000
57
58 #define IMX_CS4_PHYS            0x15000000
59 #define IMX_CS4_SIZE            0x01000000
60 #define IMX_CS4_VIRT            0xed000000
61
62 #define IMX_CS5_PHYS            0x16000000
63 #define IMX_CS5_SIZE            0x01000000
64 #define IMX_CS5_VIRT            0xee000000
65
66 #define IMX_FB_VIRT             0xF1000000
67 #define IMX_FB_SIZE             (256*1024)
68
69 /* macro to get at IO space when running virtually */
70 #define IO_ADDRESS(x) ((x) | IMX_IO_BASE)
71
72 #ifndef __ASSEMBLY__
73 /*
74  * Handy routine to set GPIO functions
75  */
76 extern void imx_gpio_mode( int gpio_mode );
77
78 /* get frequencies in Hz */
79 extern unsigned int imx_get_system_clk(void);
80 extern unsigned int imx_get_mcu_clk(void);
81 extern unsigned int imx_get_perclk1(void); /* UART[12], Timer[12], PWM */
82 extern unsigned int imx_get_perclk2(void); /* LCD, SD, SPI[12]         */
83 extern unsigned int imx_get_perclk3(void); /* SSI                      */
84 extern unsigned int imx_get_hclk(void);    /* SDRAM, CSI, Memory Stick,*/
85                                            /* I2C, DMA                 */
86 #endif
87
88 #define MAXIRQNUM                       62
89 #define MAXFIQNUM                       62
90 #define MAXSWINUM                       62
91
92 /*
93  * Use SDRAM for memory
94  */
95 #define MEM_SIZE                0x01000000
96
97 #ifdef CONFIG_ARCH_MX1ADS
98 #include "mx1ads.h"
99 #endif
100
101 #endif