Revision 2e9bdce5
b/hw/integratorcp.c | ||
---|---|---|
7 | 7 |
* This code is licenced under the GPL |
8 | 8 |
*/ |
9 | 9 |
|
10 |
#include "hw.h"
|
|
10 |
#include "sysbus.h"
|
|
11 | 11 |
#include "primecell.h" |
12 | 12 |
#include "devices.h" |
13 | 13 |
#include "sysemu.h" |
... | ... | |
495 | 495 |
pl181_init(0x1c000000, drives_table[sd].bdrv, pic[23], pic[24]); |
496 | 496 |
if (nd_table[0].vlan) |
497 | 497 |
smc91c111_init(&nd_table[0], 0xc8000000, pic[27]); |
498 |
pl110_init(0xc0000000, pic[22], 0); |
|
498 |
|
|
499 |
sysbus_create_simple("pl110", 0xc0000000, pic[22]); |
|
499 | 500 |
|
500 | 501 |
integrator_binfo.ram_size = ram_size; |
501 | 502 |
integrator_binfo.kernel_filename = kernel_filename; |
b/hw/pl110.c | ||
---|---|---|
1 | 1 |
/* |
2 | 2 |
* Arm PrimeCell PL110 Color LCD Controller |
3 | 3 |
* |
4 |
* Copyright (c) 2005-2006 CodeSourcery.
|
|
4 |
* Copyright (c) 2005-2009 CodeSourcery.
|
|
5 | 5 |
* Written by Paul Brook |
6 | 6 |
* |
7 | 7 |
* This code is licenced under the GNU LGPL |
8 | 8 |
*/ |
9 | 9 |
|
10 |
#include "hw.h" |
|
11 |
#include "primecell.h" |
|
10 |
#include "sysbus.h" |
|
12 | 11 |
#include "console.h" |
13 | 12 |
#include "framebuffer.h" |
14 | 13 |
|
... | ... | |
29 | 28 |
}; |
30 | 29 |
|
31 | 30 |
typedef struct { |
31 |
SysBusDevice busdev; |
|
32 | 32 |
DisplayState *ds; |
33 | 33 |
|
34 | 34 |
/* The Versatile/PB uses a slightly modified PL110 controller. */ |
... | ... | |
349 | 349 |
pl110_write |
350 | 350 |
}; |
351 | 351 |
|
352 |
void *pl110_init(uint32_t base, qemu_irq irq, int versatile)
|
|
352 |
static void pl110_init(SysBusDevice *dev)
|
|
353 | 353 |
{ |
354 |
pl110_state *s; |
|
354 |
pl110_state *s = FROM_SYSBUS(pl110_state, dev);
|
|
355 | 355 |
int iomemtype; |
356 | 356 |
|
357 |
s = (pl110_state *)qemu_mallocz(sizeof(pl110_state)); |
|
358 | 357 |
iomemtype = cpu_register_io_memory(0, pl110_readfn, |
359 | 358 |
pl110_writefn, s); |
360 |
cpu_register_physical_memory(base, 0x00001000, iomemtype); |
|
361 |
s->versatile = versatile; |
|
362 |
s->irq = irq; |
|
359 |
sysbus_init_mmio(dev, 0x1000, iomemtype); |
|
360 |
sysbus_init_irq(dev, &s->irq); |
|
363 | 361 |
s->ds = graphic_console_init(pl110_update_display, |
364 | 362 |
pl110_invalidate_display, |
365 | 363 |
NULL, NULL, s); |
366 | 364 |
/* ??? Save/restore. */ |
367 |
return s; |
|
368 | 365 |
} |
366 |
|
|
367 |
static void pl110_versatile_init(SysBusDevice *dev) |
|
368 |
{ |
|
369 |
pl110_state *s = FROM_SYSBUS(pl110_state, dev); |
|
370 |
s->versatile = 1; |
|
371 |
pl110_init(dev); |
|
372 |
} |
|
373 |
|
|
374 |
static void pl110_register_devices(void) |
|
375 |
{ |
|
376 |
sysbus_register_dev("pl110", sizeof(pl110_state), pl110_init); |
|
377 |
sysbus_register_dev("pl110_versatile", sizeof(pl110_state), |
|
378 |
pl110_versatile_init); |
|
379 |
} |
|
380 |
|
|
381 |
device_init(pl110_register_devices) |
b/hw/primecell.h | ||
---|---|---|
8 | 8 |
/* pl031.c */ |
9 | 9 |
void pl031_init(uint32_t base, qemu_irq irq); |
10 | 10 |
|
11 |
/* pl110.c */ |
|
12 |
void *pl110_init(uint32_t base, qemu_irq irq, int); |
|
13 |
|
|
14 | 11 |
/* pl011.c */ |
15 | 12 |
enum pl011_type { |
16 | 13 |
PL011_ARM, |
b/hw/realview.c | ||
---|---|---|
7 | 7 |
* This code is licenced under the GPL. |
8 | 8 |
*/ |
9 | 9 |
|
10 |
#include "hw.h"
|
|
10 |
#include "sysbus.h"
|
|
11 | 11 |
#include "arm-misc.h" |
12 | 12 |
#include "primecell.h" |
13 | 13 |
#include "devices.h" |
... | ... | |
96 | 96 |
sp804_init(0x10011000, pic[4]); |
97 | 97 |
sp804_init(0x10012000, pic[5]); |
98 | 98 |
|
99 |
pl110_init(0x10020000, pic[23], 1);
|
|
99 |
sysbus_create_simple("pl110_versatile", 0x10020000, pic[23]);
|
|
100 | 100 |
|
101 | 101 |
index = drive_get_index(IF_SD, 0, 0); |
102 | 102 |
if (index == -1) { |
b/hw/versatilepb.c | ||
---|---|---|
7 | 7 |
* This code is licenced under the GPL. |
8 | 8 |
*/ |
9 | 9 |
|
10 |
#include "hw.h"
|
|
10 |
#include "sysbus.h"
|
|
11 | 11 |
#include "arm-misc.h" |
12 | 12 |
#include "primecell.h" |
13 | 13 |
#include "devices.h" |
... | ... | |
228 | 228 |
|
229 | 229 |
/* The versatile/PB actually has a modified Color LCD controller |
230 | 230 |
that includes hardware cursor support from the PL111. */ |
231 |
pl110_init(0x10120000, pic[16], 1);
|
|
231 |
sysbus_create_simple("pl110_versatile", 0x10120000, pic[16]);
|
|
232 | 232 |
|
233 | 233 |
index = drive_get_index(IF_SD, 0, 0); |
234 | 234 |
if (index == -1) { |
Also available in: Unified diff