Revision 94dd91d6
b/hw/alpha_typhoon.c | ||
---|---|---|
15 | 15 |
#include "exec-memory.h" |
16 | 16 |
|
17 | 17 |
|
18 |
#define TYPE_TYPHOON_PCI_HOST_BRIDGE "typhoon-pcihost" |
|
19 |
|
|
18 | 20 |
typedef struct TyphoonCchip { |
19 | 21 |
MemoryRegion region; |
20 | 22 |
uint64_t misc; |
... | ... | |
40 | 42 |
TyphoonWindow win[4]; |
41 | 43 |
} TyphoonPchip; |
42 | 44 |
|
45 |
#define TYPHOON_PCI_HOST_BRIDGE(obj) \ |
|
46 |
OBJECT_CHECK(TyphoonState, (obj), TYPE_TYPHOON_PCI_HOST_BRIDGE) |
|
47 |
|
|
43 | 48 |
typedef struct TyphoonState { |
44 | 49 |
PCIHostState host; |
50 |
|
|
45 | 51 |
TyphoonCchip cchip; |
46 | 52 |
TyphoonPchip pchip; |
47 | 53 |
MemoryRegion dchip_region; |
... | ... | |
700 | 706 |
MemoryRegion *addr_space = get_system_memory(); |
701 | 707 |
MemoryRegion *addr_space_io = get_system_io(); |
702 | 708 |
DeviceState *dev; |
703 |
PCIHostState *p; |
|
704 | 709 |
TyphoonState *s; |
710 |
PCIHostState *phb; |
|
705 | 711 |
PCIBus *b; |
706 | 712 |
int i; |
707 | 713 |
|
708 |
dev = qdev_create(NULL, "typhoon-pcihost");
|
|
714 |
dev = qdev_create(NULL, TYPE_TYPHOON_PCI_HOST_BRIDGE);
|
|
709 | 715 |
qdev_init_nofail(dev); |
710 | 716 |
|
711 |
p = FROM_SYSBUS(PCIHostState, sysbus_from_qdev(dev));
|
|
712 |
s = container_of(p, TyphoonState, host);
|
|
717 |
s = TYPHOON_PCI_HOST_BRIDGE(dev);
|
|
718 |
phb = FROM_SYSBUS(PCIHostState, SYS_BUS_DEVICE(dev));
|
|
713 | 719 |
|
714 | 720 |
/* Remember the CPUs so that we can deliver interrupts to them. */ |
715 | 721 |
for (i = 0; i < 4; i++) { |
... | ... | |
763 | 769 |
memory_region_add_subregion(addr_space, 0x801fc000000ULL, |
764 | 770 |
&s->pchip.reg_io); |
765 | 771 |
|
766 |
b = pci_register_bus(&s->host.busdev.qdev, "pci",
|
|
772 |
b = pci_register_bus(dev, "pci", |
|
767 | 773 |
typhoon_set_irq, sys_map_irq, s, |
768 | 774 |
&s->pchip.reg_mem, addr_space_io, 0, 64); |
769 |
s->host.bus = b;
|
|
775 |
phb->bus = b;
|
|
770 | 776 |
|
771 | 777 |
/* Pchip0 PCI special/interrupt acknowledge, 0x801.F800.0000, 64MB. */ |
772 | 778 |
memory_region_init_io(&s->pchip.reg_iack, &alpha_pci_iack_ops, b, |
... | ... | |
818 | 824 |
} |
819 | 825 |
|
820 | 826 |
static const TypeInfo typhoon_pcihost_info = { |
821 |
.name = "typhoon-pcihost",
|
|
827 |
.name = TYPE_TYPHOON_PCI_HOST_BRIDGE,
|
|
822 | 828 |
.parent = TYPE_SYS_BUS_DEVICE, |
823 | 829 |
.instance_size = sizeof(TyphoonState), |
824 | 830 |
.class_init = typhoon_pcihost_class_init, |
Also available in: Unified diff