summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/machine/xbox_pci.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/machine/xbox_pci.cpp')
-rw-r--r--src/mame/machine/xbox_pci.cpp40
1 files changed, 11 insertions, 29 deletions
diff --git a/src/mame/machine/xbox_pci.cpp b/src/mame/machine/xbox_pci.cpp
index 42fdd2c68fb..c2d53ec277f 100644
--- a/src/mame/machine/xbox_pci.cpp
+++ b/src/mame/machine/xbox_pci.cpp
@@ -15,11 +15,11 @@
DEFINE_DEVICE_TYPE(NV2A_HOST, nv2a_host_device, "nv2a_host", "NV2A PCI Bridge Device - Host Bridge")
-nv2a_host_device::nv2a_host_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : pci_host_device(mconfig, NV2A_HOST, tag, owner, clock),
- cpu_tag(nullptr),
- cpu(nullptr)
+nv2a_host_device::nv2a_host_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ pci_host_device(mconfig, NV2A_HOST, tag, owner, clock),
+ cpu(*this, finder_base::DUMMY_TAG)
{
+ set_ids(0x10de01b0, 0, 0, 0);
}
void nv2a_host_device::map_extra(uint64_t memory_window_start, uint64_t memory_window_end, uint64_t memory_offset, address_space *memory_space,
@@ -28,15 +28,9 @@ void nv2a_host_device::map_extra(uint64_t memory_window_start, uint64_t memory_w
io_space->install_device(0, 0xffff, *static_cast<pci_host_device *>(this), &pci_host_device::io_configuration_access_map);
}
-void nv2a_host_device::set_cpu_tag(const char *_cpu_tag)
-{
- cpu_tag = _cpu_tag;
-}
-
void nv2a_host_device::device_start()
{
pci_host_device::device_start();
- cpu = machine().device<cpu_device>(cpu_tag);
memory_space = &cpu->space(AS_PROGRAM);
io_space = &cpu->space(AS_IO);
@@ -382,18 +376,12 @@ void mcpx_apu_device::apu_mmio(address_map &map)
map(0x00000000, 0x00007ffff).rw(this, FUNC(mcpx_apu_device::apu_r), FUNC(mcpx_apu_device::apu_w));
}
-mcpx_apu_device::mcpx_apu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : pci_device(mconfig, MCPX_APU, tag, owner, clock),
- cpu_tag(nullptr),
- cpu(nullptr)
+mcpx_apu_device::mcpx_apu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ pci_device(mconfig, MCPX_APU, tag, owner, clock),
+ cpu(*this, finder_base::DUMMY_TAG)
{
}
-void mcpx_apu_device::set_cpu_tag(const char *_cpu_tag)
-{
- cpu_tag = _cpu_tag;
-}
-
void mcpx_apu_device::device_start()
{
pci_device::device_start();
@@ -406,7 +394,6 @@ void mcpx_apu_device::device_start()
memset(apust.voices_position_start, 0, sizeof(apust.voices_position_start));
memset(apust.voices_position_end, 0, sizeof(apust.voices_position_end));
memset(apust.voices_position_increment, 0, sizeof(apust.voices_position_increment));
- cpu = machine().device<cpu_device>(cpu_tag);
apust.space = &cpu->space();
apust.timer = timer_alloc(0);
apust.timer->enable(false);
@@ -762,20 +749,15 @@ void nv2a_gpu_device::nv2a_mirror(address_map &map)
map(0x00000000, 0x07ffffff).ram().rw(this, FUNC(nv2a_gpu_device::nv2a_mirror_r), FUNC(nv2a_gpu_device::nv2a_mirror_w));
}
-nv2a_gpu_device::nv2a_gpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : pci_device(mconfig, NV2A_GPU, tag, owner, clock),
+nv2a_gpu_device::nv2a_gpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ pci_device(mconfig, NV2A_GPU, tag, owner, clock),
nvidia_nv2a(nullptr),
- cpu_tag(nullptr),
+ cpu(*this, finder_base::DUMMY_TAG),
m_interrupt_handler(*this),
m_program(nullptr)
{
}
-void nv2a_gpu_device::set_cpu_tag(const char *_cpu_tag)
-{
- cpu_tag = _cpu_tag;
-}
-
void nv2a_gpu_device::device_start()
{
pci_device::device_start();
@@ -784,7 +766,7 @@ void nv2a_gpu_device::device_start()
bank_infos[0].adr = 0xfd000000;
add_map(0x08000000, M_MEM, FUNC(nv2a_gpu_device::nv2a_mirror));
bank_infos[1].adr = 0xf0000000;
- m_program = &machine().device<cpu_device>(cpu_tag)->space();
+ m_program = &cpu->space(AS_PROGRAM); // FIXME: isn't there a proper way to map stuff or do DMA via the PCI device interface?
nvidia_nv2a = new nv2a_renderer(machine());
nvidia_nv2a->set_irq_callbaclk(
[&](int state)