// license:BSD-3-Clause // copyright-holders:Ryan Holtz, Ash Wolf /*************************************************************************** Psion 5mx (EPOC R5) series ETNA peripheral Skeleton driver by Ryan Holtz, ported from work by Ash Wolf ****************************************************************************/ #ifndef MAME_MACHINE_ETNA_H #define MAME_MACHINE_ETNA_H #pragma once #include "emu.h" class etna_device : public device_t { public: etna_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0U); void regs_w(offs_t offset, uint8_t data); uint8_t regs_r(offs_t offset); DECLARE_WRITE_LINE_MEMBER(eeprom_cs_in); DECLARE_WRITE_LINE_MEMBER(eeprom_clk_in); DECLARE_WRITE_LINE_MEMBER(eeprom_data_in); auto eeprom_data_out() { return m_eeprom_data_out.bind(); } private: // device-level overrides virtual void device_start() override; virtual void device_reset() override; enum { REG_UNK0, REG_UNK1, REG_UART_INT_STATUS, REG_UART_INT_MASK, REG_UART_BAUD_LO, REG_UART_BAUD_HI, REG_PCCD_INT_STATUS, REG_PCCD_INT_MASK, REG_INT_CLEAR, REG_SKT_VAR_A0, REG_SKT_VAR_A1, REG_SKT_CTRL, REG_WAKE1, REG_SKT_VAR_B0, REG_SKT_VAR_B1, REG_WAKE2 }; devcb_write_line m_eeprom_data_out; uint8_t m_prom_addr_count; uint16_t m_prom_addr; uint16_t m_prom_value; bool m_prom_cs; bool m_prom_clk; uint8_t m_pending_ints; uint8_t m_regs[0x10]; uint8_t m_prom[0x80]; }; DECLARE_DEVICE_TYPE(ETNA, etna_device) #endif // MAME_MACHINE_ETNA_H