summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/machine/iopdma.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/machine/iopdma.h')
-rw-r--r--src/mame/machine/iopdma.h14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/mame/machine/iopdma.h b/src/mame/machine/iopdma.h
index c95ec0bb799..1c17f324813 100644
--- a/src/mame/machine/iopdma.h
+++ b/src/mame/machine/iopdma.h
@@ -17,17 +17,20 @@
#include "emu.h"
#include "ps2sif.h"
#include "iopintc.h"
+#include "audio/iopspu.h"
class iop_dma_device : public device_t, public device_execute_interface
{
public:
- template <typename T, typename U, typename V>
- iop_dma_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, T &&intc_tag, U &&ram_tag, V &&sif_tag)
+ template <typename T, typename U, typename V, typename W, typename X>
+ iop_dma_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, T &&intc_tag, U &&ram_tag, V &&sif_tag, W &&spu_tag, X &&spu2_tag)
: iop_dma_device(mconfig, tag, owner, clock)
{
m_intc.set_tag(std::forward<T>(intc_tag));
m_ram.set_tag(std::forward<U>(ram_tag));
m_sif.set_tag(std::forward<V>(sif_tag));
+ m_spu.set_tag(std::forward<W>(spu_tag));
+ m_spu2.set_tag(std::forward<X>(spu2_tag));
}
iop_dma_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
@@ -78,6 +81,7 @@ protected:
void set_pri_ctrl(uint32_t pri_ctrl);
void set_addr(uint32_t addr) { m_addr = addr; }
void set_block(uint32_t block, uint32_t mem_mask);
+ void set_size(uint32_t size) { m_size = size; }
void set_count(uint32_t count) { m_count = count; }
void set_ctrl(uint32_t ctrl);
void set_tag_addr(uint32_t tag_addr) { m_tag_addr = tag_addr; }
@@ -86,10 +90,11 @@ protected:
bool busy() const { return m_busy; }
uint32_t addr() const { return m_addr; }
uint32_t block() const { return m_block; }
+ uint32_t size() const { return m_size; }
+ uint32_t count() const { return m_count; }
uint32_t ctrl() const { return m_ctrl; }
uint32_t tag_addr() const { return m_tag_addr; }
bool end() const { return m_end; }
- uint32_t count() const { return m_count; }
protected:
uint8_t m_priority;
@@ -116,11 +121,14 @@ protected:
void transfer_sif0(uint32_t chan);
void transfer_sif1(uint32_t chan);
+ void transfer_spu(uint32_t chan);
void transfer_finish(uint32_t chan);
required_device<iop_intc_device> m_intc;
required_shared_ptr<uint32_t> m_ram;
required_device<ps2_sif_device> m_sif;
+ required_device<iop_spu_device> m_spu;
+ required_device<iop_spu_device> m_spu2;
int m_icount;