diff options
Diffstat (limited to 'src/mame/machine/iopdma.h')
-rw-r--r-- | src/mame/machine/iopdma.h | 14 |
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; |