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 |
