Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/arch/mips/jazz/setup.c
10820 views
1
/*
2
* Setup pointers to hardware-dependent routines.
3
*
4
* This file is subject to the terms and conditions of the GNU General Public
5
* License. See the file "COPYING" in the main directory of this archive
6
* for more details.
7
*
8
* Copyright (C) 1996, 1997, 1998, 2001, 07, 08 by Ralf Baechle
9
* Copyright (C) 2001 MIPS Technologies, Inc.
10
* Copyright (C) 2007 by Thomas Bogendoerfer
11
*/
12
#include <linux/eisa.h>
13
#include <linux/init.h>
14
#include <linux/ioport.h>
15
#include <linux/console.h>
16
#include <linux/screen_info.h>
17
#include <linux/platform_device.h>
18
#include <linux/serial_8250.h>
19
20
#include <asm/jazz.h>
21
#include <asm/jazzdma.h>
22
#include <asm/reboot.h>
23
#include <asm/pgtable.h>
24
25
extern asmlinkage void jazz_handle_int(void);
26
27
extern void jazz_machine_restart(char *command);
28
29
static struct resource jazz_io_resources[] = {
30
{
31
.start = 0x00,
32
.end = 0x1f,
33
.name = "dma1",
34
.flags = IORESOURCE_BUSY
35
}, {
36
.start = 0x40,
37
.end = 0x5f,
38
.name = "timer",
39
.flags = IORESOURCE_BUSY
40
}, {
41
.start = 0x80,
42
.end = 0x8f,
43
.name = "dma page reg",
44
.flags = IORESOURCE_BUSY
45
}, {
46
.start = 0xc0,
47
.end = 0xdf,
48
.name = "dma2",
49
.flags = IORESOURCE_BUSY
50
}
51
};
52
53
void __init plat_mem_setup(void)
54
{
55
int i;
56
57
/* Map 0xe0000000 -> 0x0:800005C0, 0xe0010000 -> 0x1:30000580 */
58
add_wired_entry(0x02000017, 0x03c00017, 0xe0000000, PM_64K);
59
/* Map 0xe2000000 -> 0x0:900005C0, 0xe3010000 -> 0x0:910005C0 */
60
add_wired_entry(0x02400017, 0x02440017, 0xe2000000, PM_16M);
61
/* Map 0xe4000000 -> 0x0:600005C0, 0xe4100000 -> 400005C0 */
62
add_wired_entry(0x01800017, 0x01000017, 0xe4000000, PM_4M);
63
64
set_io_port_base(JAZZ_PORT_BASE);
65
#ifdef CONFIG_EISA
66
EISA_bus = 1;
67
#endif
68
69
/* request I/O space for devices used on all i[345]86 PCs */
70
for (i = 0; i < ARRAY_SIZE(jazz_io_resources); i++)
71
request_resource(&ioport_resource, jazz_io_resources + i);
72
73
/* The RTC is outside the port address space */
74
75
_machine_restart = jazz_machine_restart;
76
77
#ifdef CONFIG_VT
78
screen_info = (struct screen_info) {
79
.orig_video_cols = 160,
80
.orig_video_lines = 64,
81
.orig_video_points = 16,
82
};
83
#endif
84
85
add_preferred_console("ttyS", 0, "9600");
86
}
87
88
#ifdef CONFIG_OLIVETTI_M700
89
#define UART_CLK 1843200
90
#else
91
/* Some Jazz machines seem to have an 8MHz crystal clock but I don't know
92
exactly which ones ... XXX */
93
#define UART_CLK (8000000 / 16) /* ( 3072000 / 16) */
94
#endif
95
96
#define MEMPORT(_base, _irq) \
97
{ \
98
.mapbase = (_base), \
99
.membase = (void *)(_base), \
100
.irq = (_irq), \
101
.uartclk = UART_CLK, \
102
.iotype = UPIO_MEM, \
103
.flags = UPF_BOOT_AUTOCONF, \
104
}
105
106
static struct plat_serial8250_port jazz_serial_data[] = {
107
MEMPORT(JAZZ_SERIAL1_BASE, JAZZ_SERIAL1_IRQ),
108
MEMPORT(JAZZ_SERIAL2_BASE, JAZZ_SERIAL2_IRQ),
109
{ },
110
};
111
112
static struct platform_device jazz_serial8250_device = {
113
.name = "serial8250",
114
.id = PLAT8250_DEV_PLATFORM,
115
.dev = {
116
.platform_data = jazz_serial_data,
117
},
118
};
119
120
static struct resource jazz_esp_rsrc[] = {
121
{
122
.start = JAZZ_SCSI_BASE,
123
.end = JAZZ_SCSI_BASE + 31,
124
.flags = IORESOURCE_MEM
125
},
126
{
127
.start = JAZZ_SCSI_DMA,
128
.end = JAZZ_SCSI_DMA,
129
.flags = IORESOURCE_MEM
130
},
131
{
132
.start = JAZZ_SCSI_IRQ,
133
.end = JAZZ_SCSI_IRQ,
134
.flags = IORESOURCE_IRQ
135
}
136
};
137
138
static struct platform_device jazz_esp_pdev = {
139
.name = "jazz_esp",
140
.num_resources = ARRAY_SIZE(jazz_esp_rsrc),
141
.resource = jazz_esp_rsrc
142
};
143
144
static struct resource jazz_sonic_rsrc[] = {
145
{
146
.start = JAZZ_ETHERNET_BASE,
147
.end = JAZZ_ETHERNET_BASE + 0xff,
148
.flags = IORESOURCE_MEM
149
},
150
{
151
.start = JAZZ_ETHERNET_IRQ,
152
.end = JAZZ_ETHERNET_IRQ,
153
.flags = IORESOURCE_IRQ
154
}
155
};
156
157
static struct platform_device jazz_sonic_pdev = {
158
.name = "jazzsonic",
159
.num_resources = ARRAY_SIZE(jazz_sonic_rsrc),
160
.resource = jazz_sonic_rsrc
161
};
162
163
static struct resource jazz_cmos_rsrc[] = {
164
{
165
.start = 0x70,
166
.end = 0x71,
167
.flags = IORESOURCE_IO
168
},
169
{
170
.start = 8,
171
.end = 8,
172
.flags = IORESOURCE_IRQ
173
}
174
};
175
176
static struct platform_device jazz_cmos_pdev = {
177
.name = "rtc_cmos",
178
.num_resources = ARRAY_SIZE(jazz_cmos_rsrc),
179
.resource = jazz_cmos_rsrc
180
};
181
182
static struct platform_device pcspeaker_pdev = {
183
.name = "pcspkr",
184
.id = -1,
185
};
186
187
static int __init jazz_setup_devinit(void)
188
{
189
platform_device_register(&jazz_serial8250_device);
190
platform_device_register(&jazz_esp_pdev);
191
platform_device_register(&jazz_sonic_pdev);
192
platform_device_register(&jazz_cmos_pdev);
193
platform_device_register(&pcspeaker_pdev);
194
195
return 0;
196
}
197
198
device_initcall(jazz_setup_devinit);
199
200