mirror of
https://github.com/holub/mame
synced 2025-04-23 08:49:55 +03:00
pci9050, s3c44b0: Eliminate register_postload and machine().device; convert callbacks to devcb3 (nw)
This commit is contained in:
parent
a4dd8e6be0
commit
df6ea71aeb
@ -81,11 +81,9 @@ void pci9050_device::device_start()
|
||||
save_item(NAME(m_erombrd));
|
||||
save_item(NAME(m_intcsr));
|
||||
save_item(NAME(m_cntrl));
|
||||
machine().save().register_postload(save_prepost_delegate(FUNC(pci9050_device::postload), this));
|
||||
|
||||
}
|
||||
|
||||
void pci9050_device::postload(void)
|
||||
void pci9050_device::device_post_load()
|
||||
{
|
||||
remap_rom();
|
||||
for (int id = 0; id < 4; id++)
|
||||
|
@ -27,10 +27,9 @@ public:
|
||||
|
||||
protected:
|
||||
virtual void device_start() override;
|
||||
virtual void device_post_load() override;
|
||||
virtual void device_reset() override;
|
||||
|
||||
void postload(void);
|
||||
|
||||
private:
|
||||
void map(address_map &map);
|
||||
|
||||
|
@ -225,7 +225,7 @@ DEFINE_DEVICE_TYPE(S3C44B0, s3c44b0_device, "s3c44b0", "Samsung S3C44B0 SoC")
|
||||
s3c44b0_device::s3c44b0_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: device_t(mconfig, S3C44B0, tag, owner, clock)
|
||||
, device_video_interface(mconfig, *this)
|
||||
, m_cpu(nullptr)
|
||||
, m_cpu(*this, finder_base::DUMMY_TAG)
|
||||
, m_port_r_cb(*this)
|
||||
, m_port_w_cb(*this)
|
||||
, m_scl_w_cb(*this)
|
||||
@ -256,8 +256,6 @@ s3c44b0_device::s3c44b0_device(const machine_config &mconfig, const char *tag, d
|
||||
|
||||
void s3c44b0_device::device_start()
|
||||
{
|
||||
m_cpu = machine().device<cpu_device>("maincpu");
|
||||
|
||||
m_port_r_cb.resolve();
|
||||
m_port_w_cb.resolve();
|
||||
m_scl_w_cb.resolve();
|
||||
@ -332,8 +330,6 @@ void s3c44b0_device::device_start()
|
||||
save_item(NAME(m_lcd.vpos_end));
|
||||
save_item(NAME(m_lcd.frame_time));
|
||||
|
||||
machine().save().register_postload(save_prepost_delegate(FUNC(s3c44b0_device::s3c44b0_postload), this));
|
||||
|
||||
for (int i = 0; i < 2; i++)
|
||||
{
|
||||
save_item(NAME(m_zdma[i].regs.dcon), i);
|
||||
@ -446,7 +442,13 @@ void s3c44b0_device::device_start()
|
||||
}
|
||||
|
||||
|
||||
void s3c44b0_device::s3c44b0_postload()
|
||||
//-------------------------------------------------
|
||||
// device_post_load - called after the loading a
|
||||
// saved state, so that registered variables can
|
||||
// be expaneded as necessary
|
||||
//-------------------------------------------------
|
||||
|
||||
void s3c44b0_device::device_post_load()
|
||||
{
|
||||
m_lcd.frame_period = HZ_TO_ATTOSECONDS(m_lcd.framerate);
|
||||
m_lcd.scantime = m_lcd.frame_period / m_lcd.vpos_end;
|
||||
|
@ -116,13 +116,14 @@ class s3c44b0_device : public device_t, public device_video_interface
|
||||
public:
|
||||
s3c44b0_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
|
||||
template <class Object> devcb_base &set_gpio_port_r_callback(Object &&cb) { return m_port_r_cb.set_callback(std::forward<Object>(cb)); }
|
||||
template <class Object> devcb_base &set_gpio_port_w_callback(Object &&cb) { return m_port_w_cb.set_callback(std::forward<Object>(cb)); }
|
||||
template <class Object> devcb_base &set_i2c_scl_w_callback(Object &&cb) { return m_scl_w_cb.set_callback(std::forward<Object>(cb)); }
|
||||
template <class Object> devcb_base &set_i2c_sda_r_callback(Object &&cb) { return m_sda_r_cb.set_callback(std::forward<Object>(cb)); }
|
||||
template <class Object> devcb_base &set_i2c_sda_w_callback(Object &&cb) { return m_sda_w_cb.set_callback(std::forward<Object>(cb)); }
|
||||
template <class Object> devcb_base &set_adc_data_r_callback(Object &&cb) { return m_data_r_cb.set_callback(std::forward<Object>(cb)); }
|
||||
template <class Object> devcb_base &set_i2s_data_w_callback(Object &&cb) { return m_data_w_cb.set_callback(std::forward<Object>(cb)); }
|
||||
template <class T> void set_cpu(T &&tag) { m_cpu.set_tag(std::forward<T>(tag)); }
|
||||
auto gpio_port_r_cb() { return m_port_r_cb.bind(); }
|
||||
auto gpio_port_w_cb() { return m_port_w_cb.bind(); }
|
||||
auto i2c_scl_w_cb() { return m_scl_w_cb.bind(); }
|
||||
auto i2c_sda_r_cb() { return m_sda_r_cb.bind(); }
|
||||
auto i2c_sda_w_cb() { return m_sda_w_cb.bind(); }
|
||||
auto adc_data_r_cb() { return m_data_r_cb.bind(); }
|
||||
auto i2s_data_w_cb() { return m_data_w_cb.bind(); }
|
||||
|
||||
DECLARE_READ32_MEMBER(lcd_r);
|
||||
DECLARE_READ32_MEMBER(clkpow_r);
|
||||
@ -166,6 +167,7 @@ public:
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual void device_start() override;
|
||||
virtual void device_post_load() override;
|
||||
virtual void device_reset() override;
|
||||
|
||||
private:
|
||||
@ -572,7 +574,7 @@ private:
|
||||
void bdma_w(int ch, uint32_t offset, uint32_t data, uint32_t mem_mask);
|
||||
TIMER_CALLBACK_MEMBER(bdma_timer_exp);
|
||||
|
||||
cpu_device *m_cpu;
|
||||
required_device<cpu_device> m_cpu;
|
||||
//s3c44b0_memcon_t m_memcon;
|
||||
s3c44b0_irq_t m_irq;
|
||||
s3c44b0_dma_t m_zdma[2];
|
||||
@ -597,33 +599,9 @@ private:
|
||||
devcb_write_line m_sda_w_cb;
|
||||
devcb_read32 m_data_r_cb;
|
||||
devcb_write16 m_data_w_cb;
|
||||
|
||||
void s3c44b0_postload();
|
||||
};
|
||||
|
||||
DECLARE_DEVICE_TYPE(S3C44B0, s3c44b0_device)
|
||||
|
||||
|
||||
#define MCFG_S3C44B0_GPIO_PORT_R_CB(cb) \
|
||||
downcast<s3c44b0_device &>(*device).set_gpio_port_r_callback(DEVCB_##cb);
|
||||
|
||||
#define MCFG_S3C44B0_GPIO_PORT_W_CB(cb) \
|
||||
downcast<s3c44b0_device &>(*device).set_gpio_port_w_callback(DEVCB_##cb);
|
||||
|
||||
#define MCFG_S3C44B0_I2C_SCL_W_CB(cb) \
|
||||
downcast<s3c44b0_device &>(*device).set_i2c_scl_w_callback(DEVCB_##cb);
|
||||
|
||||
#define MCFG_S3C44B0_I2C_SDA_R_CB(cb) \
|
||||
downcast<s3c44b0_device &>(*device).set_i2c_sda_r_callback(DEVCB_##cb);
|
||||
|
||||
#define MCFG_S3C44B0_I2C_SDA_W_CB(cb) \
|
||||
downcast<s3c44b0_device &>(*device).set_i2c_sda_w_callback(DEVCB_##cb);
|
||||
|
||||
#define MCFG_S3C44B0_ADC_DATA_R_CB(cb) \
|
||||
downcast<s3c44b0_device &>(*device).set_adc_data_r_callback(DEVCB_##cb);
|
||||
|
||||
#define MCFG_S3C44B0_I2S_DATA_W_CB(cb) \
|
||||
downcast<s3c44b0_device &>(*device).set_i2s_data_w_callback(DEVCB_##cb);
|
||||
|
||||
|
||||
#endif // MAME_MACHINE_S3C44B0_H
|
||||
|
@ -69,7 +69,7 @@ private:
|
||||
void smc_write(uint8_t data);
|
||||
DECLARE_READ32_MEMBER(s3c44b0_gpio_port_r);
|
||||
DECLARE_WRITE32_MEMBER(s3c44b0_gpio_port_w);
|
||||
DECLARE_WRITE16_MEMBER(s3c44b0_i2s_data_w);
|
||||
//DECLARE_WRITE16_MEMBER(s3c44b0_i2s_data_w);
|
||||
void juicebox_map(address_map &map);
|
||||
};
|
||||
|
||||
@ -327,10 +327,11 @@ MACHINE_CONFIG_START(juicebox_state::juicebox)
|
||||
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
|
||||
MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
|
||||
|
||||
MCFG_DEVICE_ADD("s3c44b0", S3C44B0, 10000000)
|
||||
MCFG_S3C44B0_GPIO_PORT_R_CB(READ32(*this, juicebox_state, s3c44b0_gpio_port_r))
|
||||
MCFG_S3C44B0_GPIO_PORT_W_CB(WRITE32(*this, juicebox_state, s3c44b0_gpio_port_w))
|
||||
MCFG_S3C44B0_I2S_DATA_W_CB(WRITE16("dac", dac_word_interface, data_w))
|
||||
S3C44B0(config, m_s3c44b0, 10000000);
|
||||
m_s3c44b0->set_cpu("maincpu");
|
||||
m_s3c44b0->gpio_port_r_cb().set(FUNC(juicebox_state::s3c44b0_gpio_port_r));
|
||||
m_s3c44b0->gpio_port_w_cb().set(FUNC(juicebox_state::s3c44b0_gpio_port_w));
|
||||
m_s3c44b0->i2s_data_w_cb().set("dac", FUNC(dac_word_interface::data_w));
|
||||
|
||||
MCFG_DEVICE_ADD("smartmedia", SMARTMEDIA, 0)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user