// license:BSD-3-Clause // copyright-holders:Sandro Ronco #ifndef MAME_MACHINE_SPG290_TIMER_H #define MAME_MACHINE_SPG290_TIMER_H #pragma once class spg290_timer_device : public device_t { public: spg290_timer_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); void write(offs_t offset, uint32_t data, uint32_t mem_mask); uint32_t read(offs_t offset, uint32_t mem_mask); void control_w(uint32_t data); auto irq_cb() { return m_irq_cb.bind(); } protected: virtual void device_start() override; virtual void device_reset() override; virtual void device_clock_changed() override; virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; private: devcb_write_line m_irq_cb; emu_timer *m_tick_timer; bool m_enabled; uint16_t m_counter; uint32_t m_control; uint32_t m_control2; uint32_t m_preload; uint32_t m_ccp; uint32_t m_upcount; }; DECLARE_DEVICE_TYPE(SPG290_TIMER, spg290_timer_device) #endif // MAME_MACHINE_SPG290_TIMER_H