pci9050, s3c44b0: Eliminate register_postload and machine().device; convert callbacks to devcb3 (nw)

This commit is contained in:
AJR 2018-09-10 23:26:08 -04:00
parent a4dd8e6be0
commit df6ea71aeb
5 changed files with 26 additions and 48 deletions

View File

@ -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++)

View File

@ -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);

View File

@ -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;

View File

@ -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

View File

@ -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)