diff options
-rw-r--r-- | arch/ppc/boot/common/ns16550.c | 3 | ||||
-rw-r--r-- | arch/ppc/boot/simple/embed_config.c | 3 | ||||
-rw-r--r-- | arch/ppc/platforms/4xx/Kconfig | 5 | ||||
-rw-r--r-- | arch/ppc/platforms/4xx/virtex.c | 88 | ||||
-rw-r--r-- | arch/ppc/platforms/4xx/virtex.h | 86 | ||||
-rw-r--r-- | arch/ppc/platforms/4xx/xparameters/xparameters.h | 21 | ||||
-rw-r--r-- | include/asm-ppc/ppc_sys.h | 2 |
7 files changed, 80 insertions, 128 deletions
diff --git a/arch/ppc/boot/common/ns16550.c b/arch/ppc/boot/common/ns16550.c index 26818bbb6cff..4f00c93ac870 100644 --- a/arch/ppc/boot/common/ns16550.c +++ b/arch/ppc/boot/common/ns16550.c | |||
@@ -8,6 +8,9 @@ | |||
8 | #include <linux/serial_reg.h> | 8 | #include <linux/serial_reg.h> |
9 | #include <asm/serial.h> | 9 | #include <asm/serial.h> |
10 | 10 | ||
11 | #if defined(CONFIG_XILINX_VIRTEX) | ||
12 | #include <platforms/4xx/xparameters/xparameters.h> | ||
13 | #endif | ||
11 | #include "nonstdio.h" | 14 | #include "nonstdio.h" |
12 | #include "serial.h" | 15 | #include "serial.h" |
13 | 16 | ||
diff --git a/arch/ppc/boot/simple/embed_config.c b/arch/ppc/boot/simple/embed_config.c index 491a691d10cc..df24202073bf 100644 --- a/arch/ppc/boot/simple/embed_config.c +++ b/arch/ppc/boot/simple/embed_config.c | |||
@@ -21,6 +21,9 @@ | |||
21 | #ifdef CONFIG_40x | 21 | #ifdef CONFIG_40x |
22 | #include <asm/io.h> | 22 | #include <asm/io.h> |
23 | #endif | 23 | #endif |
24 | #ifdef CONFIG_XILINX_VIRTEX | ||
25 | #include <platforms/4xx/xparameters/xparameters.h> | ||
26 | #endif | ||
24 | extern unsigned long timebase_period_ns; | 27 | extern unsigned long timebase_period_ns; |
25 | 28 | ||
26 | /* For those boards that don't provide one. | 29 | /* For those boards that don't provide one. |
diff --git a/arch/ppc/platforms/4xx/Kconfig b/arch/ppc/platforms/4xx/Kconfig index 203abab32cc3..057c7c2ab99d 100644 --- a/arch/ppc/platforms/4xx/Kconfig +++ b/arch/ppc/platforms/4xx/Kconfig | |||
@@ -172,11 +172,6 @@ config IBM_OCP | |||
172 | depends on ASH || BAMBOO || BUBINGA || CPCI405 || EBONY || EP405 || LUAN || YUCCA || OCOTEA || REDWOOD_5 || REDWOOD_6 || SYCAMORE || WALNUT | 172 | depends on ASH || BAMBOO || BUBINGA || CPCI405 || EBONY || EP405 || LUAN || YUCCA || OCOTEA || REDWOOD_5 || REDWOOD_6 || SYCAMORE || WALNUT |
173 | default y | 173 | default y |
174 | 174 | ||
175 | config XILINX_OCP | ||
176 | bool | ||
177 | depends on XILINX_ML300 | ||
178 | default y | ||
179 | |||
180 | config IBM_EMAC4 | 175 | config IBM_EMAC4 |
181 | bool | 176 | bool |
182 | depends on 440GX || 440SP || 440SPE | 177 | depends on 440GX || 440SP || 440SPE |
diff --git a/arch/ppc/platforms/4xx/virtex.c b/arch/ppc/platforms/4xx/virtex.c index bbb12c0c0b2c..133a83147199 100644 --- a/arch/ppc/platforms/4xx/virtex.c +++ b/arch/ppc/platforms/4xx/virtex.c | |||
@@ -1,60 +1,56 @@ | |||
1 | /* | 1 | /* |
2 | * arch/ppc/platforms/4xx/virtex.c | 2 | * Virtex-II Pro & Virtex-4 FX common infrastructure |
3 | * | 3 | * |
4 | * Author: MontaVista Software, Inc. | 4 | * Maintainer: Grant Likely <grant.likely@secretlab.ca> |
5 | * source@mvista.com | ||
6 | * | 5 | * |
7 | * 2002-2004 (c) MontaVista Software, Inc. This file is licensed under the | 6 | * Copyright 2005 Secret Lab Technologies Ltd. |
8 | * terms of the GNU General Public License version 2. This program is licensed | 7 | * Copyright 2005 General Dynamics Canada Ltd. |
9 | * "as is" without any warranty of any kind, whether express or implied. | 8 | * Copyright 2005 Freescale Semiconductor Inc. |
9 | * | ||
10 | * This program is free software; you can redistribute it and/or modify it | ||
11 | * under the terms of the GNU General Public License as published by the | ||
12 | * Free Software Foundation; either version 2 of the License, or (at your | ||
13 | * option) any later version. | ||
10 | */ | 14 | */ |
11 | 15 | ||
12 | #include <linux/config.h> | ||
13 | #include <linux/init.h> | 16 | #include <linux/init.h> |
14 | #include <asm/ocp.h> | 17 | #include <linux/module.h> |
18 | #include <linux/device.h> | ||
19 | #include <linux/serial_8250.h> | ||
20 | #include <asm/ppc_sys.h> | ||
15 | #include <platforms/4xx/virtex.h> | 21 | #include <platforms/4xx/virtex.h> |
22 | #include <platforms/4xx/xparameters/xparameters.h> | ||
23 | |||
24 | #define XPAR_UART(num) { \ | ||
25 | .mapbase = XPAR_UARTNS550_##num##_BASEADDR + 3, \ | ||
26 | .irq = XPAR_INTC_0_UARTNS550_##num##_VEC_ID, \ | ||
27 | .iotype = UPIO_MEM, \ | ||
28 | .uartclk = XPAR_UARTNS550_##num##_CLOCK_FREQ_HZ, \ | ||
29 | .flags = UPF_BOOT_AUTOCONF, \ | ||
30 | .regshift = 2, \ | ||
31 | } | ||
16 | 32 | ||
17 | /* Have OCP take care of the serial ports. */ | 33 | struct plat_serial8250_port serial_platform_data[] = { |
18 | struct ocp_def core_ocp[] = { | ||
19 | #ifdef XPAR_UARTNS550_0_BASEADDR | 34 | #ifdef XPAR_UARTNS550_0_BASEADDR |
20 | { .vendor = OCP_VENDOR_XILINX, | 35 | XPAR_UART(0), |
21 | .function = OCP_FUNC_16550, | 36 | #endif |
22 | .index = 0, | ||
23 | .paddr = XPAR_UARTNS550_0_BASEADDR, | ||
24 | .irq = XPAR_INTC_0_UARTNS550_0_VEC_ID, | ||
25 | .pm = OCP_CPM_NA | ||
26 | }, | ||
27 | #ifdef XPAR_UARTNS550_1_BASEADDR | 37 | #ifdef XPAR_UARTNS550_1_BASEADDR |
28 | { .vendor = OCP_VENDOR_XILINX, | 38 | XPAR_UART(1), |
29 | .function = OCP_FUNC_16550, | 39 | #endif |
30 | .index = 1, | ||
31 | .paddr = XPAR_UARTNS550_1_BASEADDR, | ||
32 | .irq = XPAR_INTC_0_UARTNS550_1_VEC_ID, | ||
33 | .pm = OCP_CPM_NA | ||
34 | }, | ||
35 | #ifdef XPAR_UARTNS550_2_BASEADDR | 40 | #ifdef XPAR_UARTNS550_2_BASEADDR |
36 | { .vendor = OCP_VENDOR_XILINX, | 41 | XPAR_UART(2), |
37 | .function = OCP_FUNC_16550, | 42 | #endif |
38 | .index = 2, | ||
39 | .paddr = XPAR_UARTNS550_2_BASEADDR, | ||
40 | .irq = XPAR_INTC_0_UARTNS550_2_VEC_ID, | ||
41 | .pm = OCP_CPM_NA | ||
42 | }, | ||
43 | #ifdef XPAR_UARTNS550_3_BASEADDR | 43 | #ifdef XPAR_UARTNS550_3_BASEADDR |
44 | { .vendor = OCP_VENDOR_XILINX, | 44 | XPAR_UART(3), |
45 | .function = OCP_FUNC_16550, | 45 | #endif |
46 | .index = 3, | 46 | { }, /* terminated by empty record */ |
47 | .paddr = XPAR_UARTNS550_3_BASEADDR, | 47 | }; |
48 | .irq = XPAR_INTC_0_UARTNS550_3_VEC_ID, | 48 | |
49 | .pm = OCP_CPM_NA | 49 | struct platform_device ppc_sys_platform_devices[] = { |
50 | [VIRTEX_UART] = { | ||
51 | .name = "serial8250", | ||
52 | .id = 0, | ||
53 | .dev.platform_data = serial_platform_data, | ||
50 | }, | 54 | }, |
51 | #ifdef XPAR_UARTNS550_4_BASEADDR | ||
52 | #error Edit this file to add more devices. | ||
53 | #endif /* 4 */ | ||
54 | #endif /* 3 */ | ||
55 | #endif /* 2 */ | ||
56 | #endif /* 1 */ | ||
57 | #endif /* 0 */ | ||
58 | { .vendor = OCP_VENDOR_INVALID | ||
59 | } | ||
60 | }; | 55 | }; |
56 | |||
diff --git a/arch/ppc/platforms/4xx/virtex.h b/arch/ppc/platforms/4xx/virtex.h index 049c767d33e7..1a01b81cff11 100644 --- a/arch/ppc/platforms/4xx/virtex.h +++ b/arch/ppc/platforms/4xx/virtex.h | |||
@@ -15,85 +15,21 @@ | |||
15 | #ifndef __ASM_VIRTEX_H__ | 15 | #ifndef __ASM_VIRTEX_H__ |
16 | #define __ASM_VIRTEX_H__ | 16 | #define __ASM_VIRTEX_H__ |
17 | 17 | ||
18 | #include <linux/config.h> | ||
19 | #include <platforms/4xx/xparameters/xparameters.h> | ||
20 | |||
21 | /* serial defines */ | 18 | /* serial defines */ |
22 | 19 | ||
23 | #define RS_TABLE_SIZE 4 /* change this and add more devices below | 20 | #include <asm/ibm405.h> |
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 | 21 | ||
78 | #if defined(CONFIG_UART0_TTYS0) | 22 | /* Ugly, ugly, ugly! BASE_BAUD defined here to keep 8250.c happy. */ |
79 | #define SERIAL_PORT_DFNS \ | 23 | #if !defined(BASE_BAUD) |
80 | ML300_UART0 \ | 24 | #define BASE_BAUD (0) /* dummy value; not used */ |
81 | ML300_UART1 \ | ||
82 | ML300_UART2 \ | ||
83 | ML300_UART3 | ||
84 | #endif | 25 | #endif |
85 | 26 | ||
86 | #if defined(CONFIG_UART0_TTYS1) | 27 | /* Device type enumeration for platform bus definitions */ |
87 | #define SERIAL_PORT_DFNS \ | 28 | #ifndef __ASSEMBLY__ |
88 | ML300_UART1 \ | 29 | enum ppc_sys_devices { |
89 | ML300_UART0 \ | 30 | VIRTEX_UART, |
90 | ML300_UART2 \ | 31 | }; |
91 | ML300_UART3 | ||
92 | #endif | 32 | #endif |
93 | 33 | ||
94 | #define DCRN_CPMFR_BASE 0 | ||
95 | |||
96 | #include <asm/ibm405.h> | ||
97 | |||
98 | #endif /* __ASM_VIRTEX_H__ */ | 34 | #endif /* __ASM_VIRTEX_H__ */ |
99 | #endif /* __KERNEL__ */ | 35 | #endif /* __KERNEL__ */ |
diff --git a/arch/ppc/platforms/4xx/xparameters/xparameters.h b/arch/ppc/platforms/4xx/xparameters/xparameters.h index fe4eac629139..7b7304379dd2 100644 --- a/arch/ppc/platforms/4xx/xparameters/xparameters.h +++ b/arch/ppc/platforms/4xx/xparameters/xparameters.h | |||
@@ -1,7 +1,8 @@ | |||
1 | /* | 1 | /* |
2 | * include/asm-ppc/xparameters.h | 2 | * include/asm-ppc/xparameters.h |
3 | * | 3 | * |
4 | * This file includes the correct xparameters.h for the CONFIG'ed board | 4 | * This file includes the correct xparameters.h for the CONFIG'ed board plus |
5 | * fixups to translate board specific XPAR values to a common set of names | ||
5 | * | 6 | * |
6 | * Author: MontaVista Software, Inc. | 7 | * Author: MontaVista Software, Inc. |
7 | * source@mvista.com | 8 | * source@mvista.com |
@@ -14,5 +15,21 @@ | |||
14 | #include <linux/config.h> | 15 | #include <linux/config.h> |
15 | 16 | ||
16 | #if defined(CONFIG_XILINX_ML300) | 17 | #if defined(CONFIG_XILINX_ML300) |
17 | #include <platforms/4xx/xparameters/xparameters_ml300.h> | 18 | #include "xparameters_ml300.h" |
19 | #else | ||
20 | /* Add other board xparameter includes here before the #else */ | ||
21 | #error No xparameters_*.h file included | ||
22 | #endif | ||
23 | |||
24 | #ifndef SERIAL_PORT_DFNS | ||
25 | /* zImage serial port definitions */ | ||
26 | #define RS_TABLE_SIZE 1 | ||
27 | #define SERIAL_PORT_DFNS { \ | ||
28 | .baud_base = XPAR_UARTNS550_0_CLOCK_FREQ_HZ/16, \ | ||
29 | .irq = XPAR_INTC_0_UARTNS550_0_VEC_ID, \ | ||
30 | .flags = ASYNC_BOOT_AUTOCONF, \ | ||
31 | .iomem_base = (u8 *)XPAR_UARTNS550_0_BASEADDR + 3, \ | ||
32 | .iomem_reg_shift = 2, \ | ||
33 | .io_type = SERIAL_IO_MEM, \ | ||
34 | }, | ||
18 | #endif | 35 | #endif |
diff --git a/include/asm-ppc/ppc_sys.h b/include/asm-ppc/ppc_sys.h index 83d8c77c124d..bdc4dde35edd 100644 --- a/include/asm-ppc/ppc_sys.h +++ b/include/asm-ppc/ppc_sys.h | |||
@@ -33,6 +33,8 @@ | |||
33 | #include <asm/mpc52xx.h> | 33 | #include <asm/mpc52xx.h> |
34 | #elif defined(CONFIG_MPC10X_BRIDGE) | 34 | #elif defined(CONFIG_MPC10X_BRIDGE) |
35 | #include <asm/mpc10x.h> | 35 | #include <asm/mpc10x.h> |
36 | #elif defined(CONFIG_XILINX_VIRTEX) | ||
37 | #include <platforms/4xx/virtex.h> | ||
36 | #else | 38 | #else |
37 | #error "need definition of ppc_sys_devices" | 39 | #error "need definition of ppc_sys_devices" |
38 | #endif | 40 | #endif |