Linux-2.6.12-rc2
[linux-flexiantxendom0-natty.git] / arch / ppc / platforms / 4xx / virtex-ii_pro.h
1 /*
2  * arch/ppc/platforms/4xx/virtex-ii_pro.h
3  *
4  * Include file that defines the Xilinx Virtex-II Pro processor
5  *
6  * Author: MontaVista Software, Inc.
7  *         source@mvista.com
8  *
9  * 2002-2004 (c) MontaVista Software, Inc.  This file is licensed under the
10  * terms of the GNU General Public License version 2.  This program is licensed
11  * "as is" without any warranty of any kind, whether express or implied.
12  */
13
14 #ifdef __KERNEL__
15 #ifndef __ASM_VIRTEXIIPRO_H__
16 #define __ASM_VIRTEXIIPRO_H__
17
18 #include <linux/config.h>
19 #include <asm/xparameters.h>
20
21 /* serial defines */
22
23 #define RS_TABLE_SIZE  4        /* change this and add more devices below
24                                    if you have more then 4 16x50 UARTs */
25
26 #define BASE_BAUD               (XPAR_UARTNS550_0_CLOCK_FREQ_HZ/16)
27
28 /* The serial ports in the Virtex-II Pro have each I/O byte in the
29  * LSByte of a word.  This means that iomem_reg_shift needs to be 2 to
30  * change the byte offsets into word offsets.  In addition the base
31  * addresses need to have 3 added to them to get to the LSByte.
32  */
33 #define STD_UART_OP(num)                                                 \
34         { 0, BASE_BAUD, 0, XPAR_INTC_0_UARTNS550_##num##_VEC_ID,         \
35                 ASYNC_BOOT_AUTOCONF,                                     \
36                 .iomem_base = (u8 *)XPAR_UARTNS550_##num##_BASEADDR + 3, \
37                 .iomem_reg_shift = 2,                                    \
38                 .io_type = SERIAL_IO_MEM},
39
40 #if defined(XPAR_INTC_0_UARTNS550_0_VEC_ID)
41 #define ML300_UART0 STD_UART_OP(0)
42 #else
43 #define ML300_UART0
44 #endif
45
46 #if defined(XPAR_INTC_0_UARTNS550_1_VEC_ID)
47 #define ML300_UART1 STD_UART_OP(1)
48 #else
49 #define ML300_UART1
50 #endif
51
52 #if defined(XPAR_INTC_0_UARTNS550_2_VEC_ID)
53 #define ML300_UART2 STD_UART_OP(2)
54 #else
55 #define ML300_UART2
56 #endif
57
58 #if defined(XPAR_INTC_0_UARTNS550_3_VEC_ID)
59 #define ML300_UART3 STD_UART_OP(3)
60 #else
61 #define ML300_UART3
62 #endif
63
64 #if defined(XPAR_INTC_0_UARTNS550_4_VEC_ID)
65 #error Edit this file to add more devices.
66 #elif defined(XPAR_INTC_0_UARTNS550_3_VEC_ID)
67 #define NR_SER_PORTS    4
68 #elif defined(XPAR_INTC_0_UARTNS550_2_VEC_ID)
69 #define NR_SER_PORTS    3
70 #elif defined(XPAR_INTC_0_UARTNS550_1_VEC_ID)
71 #define NR_SER_PORTS    2
72 #elif defined(XPAR_INTC_0_UARTNS550_0_VEC_ID)
73 #define NR_SER_PORTS    1
74 #else
75 #define NR_SER_PORTS    0
76 #endif
77
78 #if defined(CONFIG_UART0_TTYS0)
79 #define SERIAL_PORT_DFNS        \
80         ML300_UART0             \
81         ML300_UART1             \
82         ML300_UART2             \
83         ML300_UART3
84 #endif
85
86 #if defined(CONFIG_UART0_TTYS1)
87 #define SERIAL_PORT_DFNS        \
88         ML300_UART1             \
89         ML300_UART0             \
90         ML300_UART2             \
91         ML300_UART3
92 #endif
93
94 #define DCRN_CPMFR_BASE 0
95
96 #include <asm/ibm405.h>
97
98 #endif                          /* __ASM_VIRTEXIIPRO_H__ */
99 #endif                          /* __KERNEL__ */