Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 22894
b: refs/heads/master
c: 1a42e53
h: refs/heads/master
v: v3
  • Loading branch information
Grant C. Likely authored and Paul Mackerras committed Feb 7, 2006
1 parent 8ccee8b commit 95b6812
Show file tree
Hide file tree
Showing 8 changed files with 81 additions and 129 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 562e7370a4d59d7ee8988fb0e13707d1f01a046a
refs/heads/master: 1a42e53d175074f340a3f85042ed64cfc51be216
3 changes: 3 additions & 0 deletions trunk/arch/ppc/boot/common/ns16550.c
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@
#include <linux/serial_reg.h>
#include <asm/serial.h>

#if defined(CONFIG_XILINX_VIRTEX)
#include <platforms/4xx/xparameters/xparameters.h>
#endif
#include "nonstdio.h"
#include "serial.h"

Expand Down
3 changes: 3 additions & 0 deletions trunk/arch/ppc/boot/simple/embed_config.c
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@
#ifdef CONFIG_40x
#include <asm/io.h>
#endif
#ifdef CONFIG_XILINX_VIRTEX
#include <platforms/4xx/xparameters/xparameters.h>
#endif
extern unsigned long timebase_period_ns;

/* For those boards that don't provide one.
Expand Down
5 changes: 0 additions & 5 deletions trunk/arch/ppc/platforms/4xx/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -172,11 +172,6 @@ config IBM_OCP
depends on ASH || BAMBOO || BUBINGA || CPCI405 || EBONY || EP405 || LUAN || YUCCA || OCOTEA || REDWOOD_5 || REDWOOD_6 || SYCAMORE || WALNUT
default y

config XILINX_OCP
bool
depends on XILINX_ML300
default y

config IBM_EMAC4
bool
depends on 440GX || 440SP || 440SPE
Expand Down
88 changes: 42 additions & 46 deletions trunk/arch/ppc/platforms/4xx/virtex.c
Original file line number Diff line number Diff line change
@@ -1,60 +1,56 @@
/*
* arch/ppc/platforms/4xx/virtex.c
* Virtex-II Pro & Virtex-4 FX common infrastructure
*
* Author: MontaVista Software, Inc.
* source@mvista.com
* Maintainer: Grant Likely <grant.likely@secretlab.ca>
*
* 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.
* Copyright 2005 Secret Lab Technologies Ltd.
* Copyright 2005 General Dynamics Canada Ltd.
* Copyright 2005 Freescale Semiconductor Inc.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or (at your
* option) any later version.
*/

#include <linux/config.h>
#include <linux/init.h>
#include <asm/ocp.h>
#include <linux/module.h>
#include <linux/device.h>
#include <linux/serial_8250.h>
#include <asm/ppc_sys.h>
#include <platforms/4xx/virtex.h>
#include <platforms/4xx/xparameters/xparameters.h>

#define XPAR_UART(num) { \
.mapbase = XPAR_UARTNS550_##num##_BASEADDR + 3, \
.irq = XPAR_INTC_0_UARTNS550_##num##_VEC_ID, \
.iotype = UPIO_MEM, \
.uartclk = XPAR_UARTNS550_##num##_CLOCK_FREQ_HZ, \
.flags = UPF_BOOT_AUTOCONF, \
.regshift = 2, \
}

/* Have OCP take care of the serial ports. */
struct ocp_def core_ocp[] = {
struct plat_serial8250_port serial_platform_data[] = {
#ifdef XPAR_UARTNS550_0_BASEADDR
{ .vendor = OCP_VENDOR_XILINX,
.function = OCP_FUNC_16550,
.index = 0,
.paddr = XPAR_UARTNS550_0_BASEADDR,
.irq = XPAR_INTC_0_UARTNS550_0_VEC_ID,
.pm = OCP_CPM_NA
},
XPAR_UART(0),
#endif
#ifdef XPAR_UARTNS550_1_BASEADDR
{ .vendor = OCP_VENDOR_XILINX,
.function = OCP_FUNC_16550,
.index = 1,
.paddr = XPAR_UARTNS550_1_BASEADDR,
.irq = XPAR_INTC_0_UARTNS550_1_VEC_ID,
.pm = OCP_CPM_NA
},
XPAR_UART(1),
#endif
#ifdef XPAR_UARTNS550_2_BASEADDR
{ .vendor = OCP_VENDOR_XILINX,
.function = OCP_FUNC_16550,
.index = 2,
.paddr = XPAR_UARTNS550_2_BASEADDR,
.irq = XPAR_INTC_0_UARTNS550_2_VEC_ID,
.pm = OCP_CPM_NA
},
XPAR_UART(2),
#endif
#ifdef XPAR_UARTNS550_3_BASEADDR
{ .vendor = OCP_VENDOR_XILINX,
.function = OCP_FUNC_16550,
.index = 3,
.paddr = XPAR_UARTNS550_3_BASEADDR,
.irq = XPAR_INTC_0_UARTNS550_3_VEC_ID,
.pm = OCP_CPM_NA
XPAR_UART(3),
#endif
{ }, /* terminated by empty record */
};

struct platform_device ppc_sys_platform_devices[] = {
[VIRTEX_UART] = {
.name = "serial8250",
.id = 0,
.dev.platform_data = serial_platform_data,
},
#ifdef XPAR_UARTNS550_4_BASEADDR
#error Edit this file to add more devices.
#endif /* 4 */
#endif /* 3 */
#endif /* 2 */
#endif /* 1 */
#endif /* 0 */
{ .vendor = OCP_VENDOR_INVALID
}
};

86 changes: 11 additions & 75 deletions trunk/arch/ppc/platforms/4xx/virtex.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,85 +15,21 @@
#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
#include <asm/ibm405.h>

#if defined(CONFIG_UART0_TTYS0)
#define SERIAL_PORT_DFNS \
ML300_UART0 \
ML300_UART1 \
ML300_UART2 \
ML300_UART3
/* Ugly, ugly, ugly! BASE_BAUD defined here to keep 8250.c happy. */
#if !defined(BASE_BAUD)
#define BASE_BAUD (0) /* dummy value; not used */
#endif

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

/* Device type enumeration for platform bus definitions */
#ifndef __ASSEMBLY__
enum ppc_sys_devices {
VIRTEX_UART,
};
#endif

#define DCRN_CPMFR_BASE 0

#include <asm/ibm405.h>


#endif /* __ASM_VIRTEX_H__ */
#endif /* __KERNEL__ */
21 changes: 19 additions & 2 deletions trunk/arch/ppc/platforms/4xx/xparameters/xparameters.h
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
/*
* include/asm-ppc/xparameters.h
*
* This file includes the correct xparameters.h for the CONFIG'ed board
* This file includes the correct xparameters.h for the CONFIG'ed board plus
* fixups to translate board specific XPAR values to a common set of names
*
* Author: MontaVista Software, Inc.
* source@mvista.com
Expand All @@ -14,5 +15,21 @@
#include <linux/config.h>

#if defined(CONFIG_XILINX_ML300)
#include <platforms/4xx/xparameters/xparameters_ml300.h>
#include "xparameters_ml300.h"
#else
/* Add other board xparameter includes here before the #else */
#error No xparameters_*.h file included
#endif

#ifndef SERIAL_PORT_DFNS
/* zImage serial port definitions */
#define RS_TABLE_SIZE 1
#define SERIAL_PORT_DFNS { \
.baud_base = XPAR_UARTNS550_0_CLOCK_FREQ_HZ/16, \
.irq = XPAR_INTC_0_UARTNS550_0_VEC_ID, \
.flags = ASYNC_BOOT_AUTOCONF, \
.iomem_base = (u8 *)XPAR_UARTNS550_0_BASEADDR + 3, \
.iomem_reg_shift = 2, \
.io_type = SERIAL_IO_MEM, \
},
#endif
2 changes: 2 additions & 0 deletions trunk/include/asm-ppc/ppc_sys.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@
#include <asm/mpc52xx.h>
#elif defined(CONFIG_MPC10X_BRIDGE)
#include <asm/mpc10x.h>
#elif defined(CONFIG_XILINX_VIRTEX)
#include <platforms/4xx/virtex.h>
#else
#error "need definition of ppc_sys_devices"
#endif
Expand Down

0 comments on commit 95b6812

Please sign in to comment.