summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/h8/h8_timer8.h
diff options
context:
space:
mode:
author Olivier Galibert <galibert@pobox.com>2023-05-28 23:40:30 +0200
committer Olivier Galibert <galibert@pobox.com>2023-06-06 10:26:58 +0200
commitc07474dfb380aa4c98ad2c64e4d0264a64e38d6e (patch)
treed0b78c90d2189422d50e6be2ab2f49c348fd2d36 /src/devices/cpu/h8/h8_timer8.h
parent780f647c17b4590b02d9c4185a002540bdfb5de2 (diff)
h8: Use finders
Diffstat (limited to 'src/devices/cpu/h8/h8_timer8.h')
-rw-r--r--src/devices/cpu/h8/h8_timer8.h39
1 files changed, 26 insertions, 13 deletions
diff --git a/src/devices/cpu/h8/h8_timer8.h b/src/devices/cpu/h8/h8_timer8.h
index 3c269f479fe..df0a1bbae1d 100644
--- a/src/devices/cpu/h8/h8_timer8.h
+++ b/src/devices/cpu/h8/h8_timer8.h
@@ -30,15 +30,23 @@ public:
};
h8_timer8_channel_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- h8_timer8_channel_device(const machine_config &mconfig, const char *tag, device_t *owner, const char *intc, int irq_ca, int irq_cb, int irq_v,
+ template<typename T, typename U> h8_timer8_channel_device(const machine_config &mconfig, const char *tag, device_t *owner, T &&cpu, U &&intc, int irq_ca, int irq_cb, int irq_v,
int div1, int div2, int div3, int div4, int div5, int div6)
: h8_timer8_channel_device(mconfig, tag, owner, 0)
{
- set_info(intc, irq_ca, irq_cb, irq_v, div1, div2, div3, div4, div5, div6);
+ m_cpu.set_tag(std::forward<T>(cpu));
+ m_intc.set_tag(std::forward<U>(intc));
+ m_irq_ca = irq_ca;
+ m_irq_cb = irq_cb;
+ m_irq_v = irq_v;
+ m_div_tab[0] = div1;
+ m_div_tab[1] = div2;
+ m_div_tab[2] = div3;
+ m_div_tab[3] = div4;
+ m_div_tab[4] = div5;
+ m_div_tab[5] = div6;
}
- void set_info(const char *intc, int irq_ca, int irq_cb, int irq_v, int div1, int div2, int div3, int div4, int div5, int div6);
-
uint8_t tcr_r();
void tcr_w(uint8_t data);
uint8_t tcsr_r();
@@ -77,9 +85,9 @@ protected:
};
required_device<h8_device> m_cpu;
- h8_timer8_channel_device *m_chained_timer;
- h8_intc_device *m_intc;
- const char *m_chain_tag, *m_intc_tag;
+ required_device<h8_intc_device> m_intc;
+ optional_device<h8_timer8_channel_device> m_chained_timer;
+
int m_irq_ca, m_irq_cb, m_irq_v, m_chain_type;
int m_div_tab[6];
uint8_t m_tcor[2];
@@ -103,15 +111,20 @@ protected:
class h8h_timer8_channel_device : public h8_timer8_channel_device {
public:
h8h_timer8_channel_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- h8h_timer8_channel_device(const machine_config &mconfig, const char *tag, device_t *owner, const char *intc, int irq_ca, int irq_cb, int irq_v,
- const char *chain_tag, int chain_type, bool has_adte, bool has_ice)
+ template<typename T, typename U, typename V> h8h_timer8_channel_device(const machine_config &mconfig, const char *tag, device_t *owner, T &&cpu, U &&intc, int irq_ca, int irq_cb, int irq_v,
+ V &&chain, int chain_type, bool has_adte, bool has_ice)
: h8h_timer8_channel_device(mconfig, tag, owner, 0)
{
- set_info(intc, irq_ca, irq_cb, irq_v, chain_tag, chain_type, has_adte, has_ice);
+ m_cpu.set_tag(std::forward<T>(cpu));
+ m_intc.set_tag(std::forward<U>(intc));
+ m_irq_ca = irq_ca;
+ m_irq_cb = irq_cb;
+ m_irq_v = irq_v;
+ m_chained_timer.set_tag(std::forward<V>(chain));
+ m_chain_type = chain_type;
+ m_has_adte = has_adte;
+ m_has_ice = has_ice;
}
- virtual ~h8h_timer8_channel_device();
-
- void set_info(const char *intc, int irq_ca, int irq_cb, int irq_v, const char *chain_tag, int chain_type, bool has_adte, bool has_ice);
};
DECLARE_DEVICE_TYPE(H8_TIMER8_CHANNEL, h8_timer8_channel_device)