summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/sound/es1373.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/sound/es1373.h')
-rw-r--r--src/devices/sound/es1373.h17
1 files changed, 6 insertions, 11 deletions
diff --git a/src/devices/sound/es1373.h b/src/devices/sound/es1373.h
index bb07d72afd0..a2705cba287 100644
--- a/src/devices/sound/es1373.h
+++ b/src/devices/sound/es1373.h
@@ -1,7 +1,6 @@
// license:BSD-3-Clause
// copyright-holders:Ted Green
// Creative Labs Ensonic AudioPCI97 ES1373
-
#ifndef MAME_SOUND_ES1373_H
#define MAME_SOUND_ES1373_H
@@ -9,12 +8,8 @@
#include "machine/pci.h"
-// No interrupts
-#define MCFG_ES1373_ADD(_tag) \
- MCFG_PCI_DEVICE_ADD(_tag, ES1373, 0x12741371, 0x04, 0x040100, 0x12741371)
-
-#define MCFG_ES1373_IRQ_ADD(_cpu_tag, _irq_num) \
- downcast<es1373_device *>(device)->set_irq_info(_cpu_tag, _irq_num);
+#define MCFG_ES1373_IRQ_HANDLER(cb) \
+ devcb = &downcast<es1373_device &>(*device).set_irq_handler(DEVCB_##cb);
class es1373_device : public pci_device, public device_sound_interface
{
@@ -24,18 +19,19 @@ public:
virtual void map_extra(uint64_t memory_window_start, uint64_t memory_window_end, uint64_t memory_offset, address_space *memory_space,
uint64_t io_window_start, uint64_t io_window_end, uint64_t io_offset, address_space *io_space) override;
- void set_irq_info(const char *tag, const int irq_num);
- void postload(void);
+ template <typename T> devcb_base &set_irq_handler(T &&cb) { return m_irq_handler.set_callback(std::forward<T>(cb)); }
DECLARE_READ32_MEMBER (reg_r);
DECLARE_WRITE32_MEMBER(reg_w);
protected:
+ virtual void device_resolve_objects() override;
virtual void device_start() override;
virtual void device_stop() override;
virtual void device_reset() override;
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
virtual void device_add_mconfig(machine_config &config) override;
+ virtual void device_post_load() override;
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
// Sound stream
@@ -67,8 +63,7 @@ private:
uint32_t m_tempCount;
emu_timer *m_timer;
address_space *m_memory_space;
- const char *m_cpu_tag;
- cpu_device *m_cpu;
+ devcb_write_line m_irq_handler;
int m_irq_num;
void map(address_map &map);
uint16_t m_ac97_regs[0x80];