summaryrefslogtreecommitdiff
path: root/arch/ppc/platforms/4xx/virtex.h
blob: 049c767d33e7a682d70657527e187d9e7521be06 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
/*
 * arch/ppc/platforms/4xx/virtex.h
 *
 * Include file that defines the Xilinx Virtex-II Pro processor
 *
 * Author: MontaVista Software, Inc.
 *         source@mvista.com
 *
 * 2002-2004 (c) MontaVista Software, Inc.  This file is licensed under the
 * terms of the GNU General Public License version 2.  This program is licensed
 * "as is" without any warranty of any kind, whether express or implied.
 */

#ifdef __KERNEL__
#ifndef __ASM_VIRTEX_H__
#define __ASM_VIRTEX_H__

#include <linux/config.h>
#include <platforms/4xx/xparameters/xparameters.h>

/* serial defines */

#define RS_TABLE_SIZE  4	/* change this and add more devices below
				   if you have more then 4 16x50 UARTs */

#define BASE_BAUD		(XPAR_UARTNS550_0_CLOCK_FREQ_HZ/16)

/* The serial ports in the Virtex-II Pro have each I/O byte in the
 * LSByte of a word.  This means that iomem_reg_shift needs to be 2 to
 * change the byte offsets into word offsets.  In addition the base
 * addresses need to have 3 added to them to get to the LSByte.
 */
#define STD_UART_OP(num)						 \
	{ 0, BASE_BAUD, 0, XPAR_INTC_0_UARTNS550_##num##_VEC_ID,	 \
		ASYNC_BOOT_AUTOCONF,		 			 \
		.iomem_base = (u8 *)XPAR_UARTNS550_##num##_BASEADDR + 3, \
		.iomem_reg_shift = 2,					 \
		.io_type = SERIAL_IO_MEM},

#if defined(XPAR_INTC_0_UARTNS550_0_VEC_ID)
#define ML300_UART0 STD_UART_OP(0)
#else
#define ML300_UART0
#endif

#if defined(XPAR_INTC_0_UARTNS550_1_VEC_ID)
#define ML300_UART1 STD_UART_OP(1)
#else
#define ML300_UART1
#endif

#if defined(XPAR_INTC_0_UARTNS550_2_VEC_ID)
#define ML300_UART2 STD_UART_OP(2)
#else
#define ML300_UART2
#endif

#if defined(XPAR_INTC_0_UARTNS550_3_VEC_ID)
#define ML300_UART3 STD_UART_OP(3)
#else
#define ML300_UART3
#endif

#if defined(XPAR_INTC_0_UARTNS550_4_VEC_ID)
#error Edit this file to add more devices.
#elif defined(XPAR_INTC_0_UARTNS550_3_VEC_ID)
#define NR_SER_PORTS	4
#elif defined(XPAR_INTC_0_UARTNS550_2_VEC_ID)
#define NR_SER_PORTS	3
#elif defined(XPAR_INTC_0_UARTNS550_1_VEC_ID)
#define NR_SER_PORTS	2
#elif defined(XPAR_INTC_0_UARTNS550_0_VEC_ID)
#define NR_SER_PORTS	1
#else
#define NR_SER_PORTS	0
#endif

#if defined(CONFIG_UART0_TTYS0)
#define SERIAL_PORT_DFNS	\
	ML300_UART0		\
	ML300_UART1		\
	ML300_UART2		\
	ML300_UART3
#endif

#if defined(CONFIG_UART0_TTYS1)
#define SERIAL_PORT_DFNS	\
	ML300_UART1		\
	ML300_UART0		\
	ML300_UART2		\
	ML300_UART3
#endif

#define DCRN_CPMFR_BASE	0

#include <asm/ibm405.h>

#endif				/* __ASM_VIRTEX_H__ */
#endif				/* __KERNEL__ */