aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/ppc/boot/common/ns16550.c3
-rw-r--r--arch/ppc/boot/simple/embed_config.c3
-rw-r--r--arch/ppc/platforms/4xx/Kconfig5
-rw-r--r--arch/ppc/platforms/4xx/virtex.c88
-rw-r--r--arch/ppc/platforms/4xx/virtex.h86
-rw-r--r--arch/ppc/platforms/4xx/xparameters/xparameters.h21
-rw-r--r--include/asm-ppc/ppc_sys.h2
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
24extern unsigned long timebase_period_ns; 27extern 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
175config XILINX_OCP
176 bool
177 depends on XILINX_ML300
178 default y
179
180config IBM_EMAC4 175config 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. */ 33struct plat_serial8250_port serial_platform_data[] = {
18struct 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 49struct 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 \ 29enum 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