aboutsummaryrefslogtreecommitdiffstats
path: root/arch/ppc/platforms/4xx/xilinx_ml300.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/ppc/platforms/4xx/xilinx_ml300.c')
-rw-r--r--arch/ppc/platforms/4xx/xilinx_ml300.c64
1 files changed, 4 insertions, 60 deletions
diff --git a/arch/ppc/platforms/4xx/xilinx_ml300.c b/arch/ppc/platforms/4xx/xilinx_ml300.c
index 4e4aca43c890..6e522fefc26f 100644
--- a/arch/ppc/platforms/4xx/xilinx_ml300.c
+++ b/arch/ppc/platforms/4xx/xilinx_ml300.c
@@ -18,9 +18,9 @@
18#include <linux/serialP.h> 18#include <linux/serialP.h>
19#include <asm/io.h> 19#include <asm/io.h>
20#include <asm/machdep.h> 20#include <asm/machdep.h>
21#include <asm/ppc_sys.h>
22 21
23#include <syslib/gen550.h> 22#include <syslib/gen550.h>
23#include <syslib/virtex_devices.h>
24#include <platforms/4xx/xparameters/xparameters.h> 24#include <platforms/4xx/xparameters/xparameters.h>
25 25
26/* 26/*
@@ -53,25 +53,9 @@
53 * ppc4xx_pic_init arch/ppc/syslib/xilinx_pic.c 53 * ppc4xx_pic_init arch/ppc/syslib/xilinx_pic.c
54 */ 54 */
55 55
56/* Board specifications structures */
57struct ppc_sys_spec *cur_ppc_sys_spec;
58struct ppc_sys_spec ppc_sys_specs[] = {
59 {
60 /* Only one entry, always assume the same design */
61 .ppc_sys_name = "Xilinx ML300 Reference Design",
62 .mask = 0x00000000,
63 .value = 0x00000000,
64 .num_devices = 1,
65 .device_list = (enum ppc_sys_devices[])
66 {
67 VIRTEX_UART,
68 },
69 },
70};
71const char* virtex_machine_name = "ML300 Reference Design"; 56const char* virtex_machine_name = "ML300 Reference Design";
72 57
73#if defined(XPAR_POWER_0_POWERDOWN_BASEADDR) 58#if defined(XPAR_POWER_0_POWERDOWN_BASEADDR)
74
75static volatile unsigned *powerdown_base = 59static volatile unsigned *powerdown_base =
76 (volatile unsigned *) XPAR_POWER_0_POWERDOWN_BASEADDR; 60 (volatile unsigned *) XPAR_POWER_0_POWERDOWN_BASEADDR;
77 61
@@ -96,52 +80,14 @@ ml300_map_io(void)
96#endif 80#endif
97} 81}
98 82
99/* Early serial support functions */
100static void __init
101ml300_early_serial_init(int num, struct plat_serial8250_port *pdata)
102{
103#if defined(CONFIG_SERIAL_TEXT_DEBUG) || defined(CONFIG_KGDB)
104 struct uart_port serial_req;
105
106 memset(&serial_req, 0, sizeof(serial_req));
107 serial_req.mapbase = pdata->mapbase;
108 serial_req.membase = pdata->membase;
109 serial_req.irq = pdata->irq;
110 serial_req.uartclk = pdata->uartclk;
111 serial_req.regshift = pdata->regshift;
112 serial_req.iotype = pdata->iotype;
113 serial_req.flags = pdata->flags;
114 gen550_init(num, &serial_req);
115#endif
116}
117
118void __init
119ml300_early_serial_map(void)
120{
121#ifdef CONFIG_SERIAL_8250
122 struct plat_serial8250_port *pdata;
123 int i = 0;
124
125 pdata = (struct plat_serial8250_port *) ppc_sys_get_pdata(VIRTEX_UART);
126 while(pdata && pdata->flags)
127 {
128 pdata->membase = ioremap(pdata->mapbase, 0x100);
129 ml300_early_serial_init(i, pdata);
130 pdata++;
131 i++;
132 }
133#endif /* CONFIG_SERIAL_8250 */
134}
135
136void __init 83void __init
137ml300_setup_arch(void) 84ml300_setup_arch(void)
138{ 85{
139 ml300_early_serial_map(); 86 virtex_early_serial_map();
140 ppc4xx_setup_arch(); /* calls ppc4xx_find_bridges() */ 87 ppc4xx_setup_arch(); /* calls ppc4xx_find_bridges() */
141 88
142 /* Identify the system */ 89 /* Identify the system */
143 printk(KERN_INFO "Xilinx Virtex-II Pro port\n"); 90 printk(KERN_INFO "Xilinx ML300 Reference System (Virtex-II Pro)\n");
144 printk(KERN_INFO "Port by MontaVista Software, Inc. (source@mvista.com)\n");
145} 91}
146 92
147/* Called after board_setup_irq from ppc4xx_init_IRQ(). */ 93/* Called after board_setup_irq from ppc4xx_init_IRQ(). */
@@ -157,8 +103,6 @@ platform_init(unsigned long r3, unsigned long r4, unsigned long r5,
157{ 103{
158 ppc4xx_init(r3, r4, r5, r6, r7); 104 ppc4xx_init(r3, r4, r5, r6, r7);
159 105
160 identify_ppc_sys_by_id(mfspr(SPRN_PVR));
161
162 ppc_md.setup_arch = ml300_setup_arch; 106 ppc_md.setup_arch = ml300_setup_arch;
163 ppc_md.setup_io_mappings = ml300_map_io; 107 ppc_md.setup_io_mappings = ml300_map_io;
164 ppc_md.init_IRQ = ml300_init_irq; 108 ppc_md.init_IRQ = ml300_init_irq;
@@ -168,7 +112,7 @@ platform_init(unsigned long r3, unsigned long r4, unsigned long r5,
168#endif 112#endif
169 113
170#ifdef CONFIG_KGDB 114#ifdef CONFIG_KGDB
171 ppc_md.early_serial_map = ml300_early_serial_map; 115 ppc_md.early_serial_map = virtex_early_serial_map;
172#endif 116#endif
173} 117}
174 118