diff options
Diffstat (limited to 'src/mame/machine/naomigd.h')
-rw-r--r-- | src/mame/machine/naomigd.h | 49 |
1 files changed, 41 insertions, 8 deletions
diff --git a/src/mame/machine/naomigd.h b/src/mame/machine/naomigd.h index 5756fe4585c..583528a556e 100644 --- a/src/mame/machine/naomigd.h +++ b/src/mame/machine/naomigd.h @@ -13,6 +13,43 @@ #include "machine/idectrl.h" #include "machine/gdrom.h" +// For ide gdrom controller + +class idegdrom_device : public pci_device { +public: + idegdrom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, const char *image_tag, const char *space_tag, int space_id); + idegdrom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + + auto irq_callback() { return irq_cb.bind(); } + + virtual void device_add_mconfig(machine_config &config) override; + + void map_command(address_map &map); + void map_control(address_map &map); + void map_dma(address_map &map); + + DECLARE_READ32_MEMBER(ide_cs0_r); + DECLARE_READ32_MEMBER(ide_cs1_r); + DECLARE_WRITE32_MEMBER(ide_cs0_w); + DECLARE_WRITE32_MEMBER(ide_cs1_w); + DECLARE_WRITE_LINE_MEMBER(ide_irq); + +protected: + virtual void device_start() override; + virtual void device_reset() override; + + 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; + +private: + required_device<bus_master_ide_controller_device> m_ide; + devcb_write_line irq_cb; + const char *space_owner_tag; + int space_owner_id; +}; + +DECLARE_DEVICE_TYPE(IDE_GDROM, idegdrom_device) + class naomi_gdrom_board : public naomi_board { public: @@ -36,7 +73,7 @@ public: naomi_gdrom_board(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); virtual void device_add_mconfig(machine_config &config) override; - virtual void submap(address_map& map) override; + virtual void submap(address_map &map) override; void sh4_map(address_map &map); void sh4_io_map(address_map &map); void pic_map(address_map &map); @@ -87,11 +124,6 @@ public: DECLARE_READ8_MEMBER(pic_dimm_r); DECLARE_WRITE8_MEMBER(pic_dimm_w); - DECLARE_READ32_MEMBER(ide_cs0_r); - DECLARE_READ32_MEMBER(ide_cs1_r); - DECLARE_WRITE32_MEMBER(ide_cs0_w); - DECLARE_WRITE32_MEMBER(ide_cs1_w); - protected: virtual void device_start() override; virtual void device_reset() override; @@ -102,7 +134,7 @@ protected: private: enum { FILENAME_LENGTH=24 }; - const int work_mode = 0; // set to 1 and rebuild to enable the cpus + const int work_mode = 0; // set to 1 and rebuild to enable the cpus and full dimm board emulation required_device<sh4_device> m_maincpu; required_device<pic16c622_device> m_securitycpu; @@ -110,7 +142,7 @@ private: required_device<i2cmem_device> m_i2c1; required_device<eeprom_serial_93cxx_device> m_eeprom; required_device<sega_315_6154_device> m_315_6154; - required_device<bus_master_ide_controller_device> m_ide; + required_device<idegdrom_device> m_idegdrom; const char *image_tag; optional_region_ptr<uint8_t> picdata; @@ -159,4 +191,5 @@ private: DECLARE_DEVICE_TYPE(NAOMI_GDROM_BOARD, naomi_gdrom_board) + #endif // MAME_MACHINE_NAOMIGD_H |