From 90cf5ab2cb2ac2e22d6b356a1720896fa76a8fe7 Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Fri, 25 Apr 2014 14:37:19 +0000 Subject: [PATCH] s3c24xx: isolated the callback that resists devcb2 conversion (nw) --- src/emu/machine/s3c2400.c | 1 + src/emu/machine/s3c2400.h | 7 +++++-- src/emu/machine/s3c2410.c | 1 + src/emu/machine/s3c2410.h | 7 +++++-- src/emu/machine/s3c2440.c | 1 + src/emu/machine/s3c2440.h | 7 +++++-- src/emu/machine/s3c24xx.inc | 6 +++--- src/mame/drivers/ghosteo.c | 3 ++- src/mess/drivers/gizmondo.c | 3 ++- src/mess/drivers/hp49gp.c | 3 ++- src/mess/drivers/mini2440.c | 3 ++- src/mess/drivers/palmz22.c | 3 ++- 12 files changed, 31 insertions(+), 14 deletions(-) diff --git a/src/emu/machine/s3c2400.c b/src/emu/machine/s3c2400.c index 20fa885c32b..a5787f36a54 100644 --- a/src/emu/machine/s3c2400.c +++ b/src/emu/machine/s3c2400.c @@ -45,6 +45,7 @@ s3c2400_device::s3c2400_device(const machine_config &mconfig, const char *tag, d m_cpu(*this, ":maincpu"), m_pin_r_cb(*this), m_pin_w_cb(*this), + m_port_w_cb(*this), m_scl_w_cb(*this), m_sda_r_cb(*this), m_sda_w_cb(*this), diff --git a/src/emu/machine/s3c2400.h b/src/emu/machine/s3c2400.h index 15cdabb609f..ddc49cd3a3a 100644 --- a/src/emu/machine/s3c2400.h +++ b/src/emu/machine/s3c2400.h @@ -26,6 +26,9 @@ #define MCFG_S3C2400_CORE_PIN_W_CB(_devcb) \ devcb = &s3c2400_device::set_core_pin_w_callback(*device, DEVCB2_##_devcb); +#define MCFG_S3C2400_GPIO_PORT_W_CB(_devcb) \ + devcb = &s3c2400_device::set_gpio_port_w_callback(*device, DEVCB2_##_devcb); + #define MCFG_S3C2400_I2C_SCL_W_CB(_devcb) \ devcb = &s3c2400_device::set_i2c_scl_w_callback(*device, DEVCB2_##_devcb); @@ -62,7 +65,6 @@ enum struct s3c2400_interface_gpio { devcb_read32 port_r; - devcb_write32 port_w; }; struct s3c2400_interface @@ -369,6 +371,7 @@ public: static void static_set_palette_tag(device_t &device, const char *tag); template static devcb2_base &set_core_pin_r_callback(device_t &device, _Object object) { return downcast(device).m_pin_r_cb.set_callback(object); } template static devcb2_base &set_core_pin_w_callback(device_t &device, _Object object) { return downcast(device).m_pin_w_cb.set_callback(object); } + template static devcb2_base &set_gpio_port_w_callback(device_t &device, _Object object) { return downcast(device).m_port_w_cb.set_callback(object); } template static devcb2_base &set_i2c_scl_w_callback(device_t &device, _Object object) { return downcast(device).m_scl_w_cb.set_callback(object); } template static devcb2_base &set_i2c_sda_r_callback(device_t &device, _Object object) { return downcast(device).m_sda_r_cb.set_callback(object); } template static devcb2_base &set_i2c_sda_w_callback(device_t &device, _Object object) { return downcast(device).m_sda_w_cb.set_callback(object); } @@ -888,7 +891,7 @@ public: devcb2_read32 m_pin_r_cb; devcb2_write32 m_pin_w_cb; devcb_resolved_read32 m_port_r; - devcb_resolved_write32 m_port_w; + devcb2_write32 m_port_w_cb; devcb2_write_line m_scl_w_cb; devcb2_read_line m_sda_r_cb; devcb2_write_line m_sda_w_cb; diff --git a/src/emu/machine/s3c2410.c b/src/emu/machine/s3c2410.c index 3662b82eca1..4c604cf933c 100644 --- a/src/emu/machine/s3c2410.c +++ b/src/emu/machine/s3c2410.c @@ -45,6 +45,7 @@ s3c2410_device::s3c2410_device(const machine_config &mconfig, const char *tag, d m_cpu(*this, ":maincpu"), m_pin_r_cb(*this), m_pin_w_cb(*this), + m_port_w_cb(*this), m_scl_w_cb(*this), m_sda_r_cb(*this), m_sda_w_cb(*this), diff --git a/src/emu/machine/s3c2410.h b/src/emu/machine/s3c2410.h index 3fe51b7549c..cb15df1db9a 100644 --- a/src/emu/machine/s3c2410.h +++ b/src/emu/machine/s3c2410.h @@ -26,6 +26,9 @@ #define MCFG_S3C2410_CORE_PIN_W_CB(_devcb) \ devcb = &s3c2410_device::set_core_pin_w_callback(*device, DEVCB2_##_devcb); +#define MCFG_S3C2410_GPIO_PORT_W_CB(_devcb) \ + devcb = &s3c2410_device::set_gpio_port_w_callback(*device, DEVCB2_##_devcb); + #define MCFG_S3C2410_I2C_SCL_W_CB(_devcb) \ devcb = &s3c2410_device::set_i2c_scl_w_callback(*device, DEVCB2_##_devcb); @@ -83,7 +86,6 @@ enum struct s3c2410_interface_gpio { devcb_read32 port_r; - devcb_write32 port_w; }; struct s3c2410_interface @@ -457,6 +459,7 @@ public: static void static_set_palette_tag(device_t &device, const char *tag); template static devcb2_base &set_core_pin_r_callback(device_t &device, _Object object) { return downcast(device).m_pin_r_cb.set_callback(object); } template static devcb2_base &set_core_pin_w_callback(device_t &device, _Object object) { return downcast(device).m_pin_w_cb.set_callback(object); } + template static devcb2_base &set_gpio_port_w_callback(device_t &device, _Object object) { return downcast(device).m_port_w_cb.set_callback(object); } template static devcb2_base &set_i2c_scl_w_callback(device_t &device, _Object object) { return downcast(device).m_scl_w_cb.set_callback(object); } template static devcb2_base &set_i2c_sda_r_callback(device_t &device, _Object object) { return downcast(device).m_sda_r_cb.set_callback(object); } template static devcb2_base &set_i2c_sda_w_callback(device_t &device, _Object object) { return downcast(device).m_sda_w_cb.set_callback(object); } @@ -1065,7 +1068,7 @@ public: devcb2_read32 m_pin_r_cb; devcb2_write32 m_pin_w_cb; devcb_resolved_read32 m_port_r; - devcb_resolved_write32 m_port_w; + devcb2_write32 m_port_w_cb; devcb2_write_line m_scl_w_cb; devcb2_read_line m_sda_r_cb; devcb2_write_line m_sda_w_cb; diff --git a/src/emu/machine/s3c2440.c b/src/emu/machine/s3c2440.c index cb23eb10416..e30d5695de0 100644 --- a/src/emu/machine/s3c2440.c +++ b/src/emu/machine/s3c2440.c @@ -45,6 +45,7 @@ s3c2440_device::s3c2440_device(const machine_config &mconfig, const char *tag, d m_cpu(*this, ":maincpu"), m_pin_r_cb(*this), m_pin_w_cb(*this), + m_port_w_cb(*this), m_scl_w_cb(*this), m_sda_r_cb(*this), m_sda_w_cb(*this), diff --git a/src/emu/machine/s3c2440.h b/src/emu/machine/s3c2440.h index 72df4541f84..0d64155585d 100644 --- a/src/emu/machine/s3c2440.h +++ b/src/emu/machine/s3c2440.h @@ -25,6 +25,9 @@ #define MCFG_S3C2440_CORE_PIN_W_CB(_devcb) \ devcb = &s3c2440_device::set_core_pin_w_callback(*device, DEVCB2_##_devcb); +#define MCFG_S3C2440_GPIO_PORT_W_CB(_devcb) \ + devcb = &s3c2440_device::set_gpio_port_w_callback(*device, DEVCB2_##_devcb); + #define MCFG_S3C2440_I2C_SCL_W_CB(_devcb) \ devcb = &s3c2440_device::set_i2c_scl_w_callback(*device, DEVCB2_##_devcb); @@ -83,7 +86,6 @@ enum struct s3c2440_interface_gpio { devcb_read32 port_r; - devcb_write32 port_w; }; struct s3c2440_interface @@ -489,6 +491,7 @@ public: static void static_set_palette_tag(device_t &device, const char *tag); template static devcb2_base &set_core_pin_r_callback(device_t &device, _Object object) { return downcast(device).m_pin_r_cb.set_callback(object); } template static devcb2_base &set_core_pin_w_callback(device_t &device, _Object object) { return downcast(device).m_pin_w_cb.set_callback(object); } + template static devcb2_base &set_gpio_port_w_callback(device_t &device, _Object object) { return downcast(device).m_port_w_cb.set_callback(object); } template static devcb2_base &set_i2c_scl_w_callback(device_t &device, _Object object) { return downcast(device).m_scl_w_cb.set_callback(object); } template static devcb2_base &set_i2c_sda_r_callback(device_t &device, _Object object) { return downcast(device).m_sda_r_cb.set_callback(object); } template static devcb2_base &set_i2c_sda_w_callback(device_t &device, _Object object) { return downcast(device).m_sda_w_cb.set_callback(object); } @@ -1150,7 +1153,7 @@ public: devcb2_read32 m_pin_r_cb; devcb2_write32 m_pin_w_cb; devcb_resolved_read32 m_port_r; - devcb_resolved_write32 m_port_w; + devcb2_write32 m_port_w_cb; devcb2_write_line m_scl_w_cb; devcb2_read_line m_sda_r_cb; devcb2_write_line m_sda_w_cb; diff --git a/src/emu/machine/s3c24xx.inc b/src/emu/machine/s3c24xx.inc index a5f00625e5a..aac138830ee 100644 --- a/src/emu/machine/s3c24xx.inc +++ b/src/emu/machine/s3c24xx.inc @@ -1766,9 +1766,9 @@ UINT32 S3C24_CLASS_NAME::iface_gpio_port_r(int port, UINT32 mask) void S3C24_CLASS_NAME::iface_gpio_port_w(int port, UINT32 mask, UINT32 data) { - if (!m_port_w.isnull()) + if (!m_port_w_cb.isnull()) { - (m_port_w)( port, data, mask ); + (m_port_w_cb)( port, data, mask ); } } @@ -3476,7 +3476,7 @@ void S3C24_CLASS_NAME::s3c24xx_device_start() m_pin_r_cb.resolve(); m_pin_w_cb.resolve_safe(); m_port_r.resolve(m_iface_gpio.port_r, *this); - m_port_w.resolve(m_iface_gpio.port_w, *this); + m_port_w_cb.resolve(); m_scl_w_cb.resolve(); m_sda_r_cb.resolve(); m_sda_w_cb.resolve(); diff --git a/src/mame/drivers/ghosteo.c b/src/mame/drivers/ghosteo.c index 0a2aeb4353d..0f53336c213 100644 --- a/src/mame/drivers/ghosteo.c +++ b/src/mame/drivers/ghosteo.c @@ -562,7 +562,7 @@ INPUT_PORTS_END static const s3c2410_interface bballoon_s3c2410_intf = { // GPIO (port read / port write) - { DEVCB_DRIVER_MEMBER32(ghosteo_state,s3c2410_gpio_port_r), DEVCB_DRIVER_MEMBER32(ghosteo_state,s3c2410_gpio_port_w) } + { DEVCB_DRIVER_MEMBER32(ghosteo_state,s3c2410_gpio_port_r) } }; @@ -634,6 +634,7 @@ static MACHINE_CONFIG_START( ghosteo, ghosteo_state ) MCFG_DEVICE_CONFIG(bballoon_s3c2410_intf) MCFG_S3C2410_PALETTE("palette") MCFG_S3C2410_CORE_PIN_R_CB(READ32(ghosteo_state, s3c2410_core_pin_r)) + MCFG_S3C2410_GPIO_PORT_W_CB(WRITE32(ghosteo_state, s3c2410_gpio_port_w)) MCFG_S3C2410_I2C_SCL_W_CB(WRITELINE(ghosteo_state, s3c2410_i2c_scl_w)) MCFG_S3C2410_I2C_SDA_R_CB(READLINE(ghosteo_state, s3c2410_i2c_sda_r)) MCFG_S3C2410_I2C_SDA_W_CB(WRITELINE(ghosteo_state, s3c2410_i2c_sda_w)) diff --git a/src/mess/drivers/gizmondo.c b/src/mess/drivers/gizmondo.c index 8b8acf38796..2d33af3eec3 100644 --- a/src/mess/drivers/gizmondo.c +++ b/src/mess/drivers/gizmondo.c @@ -183,7 +183,7 @@ DRIVER_INIT_MEMBER(gizmondo_state,gizmondo) static S3C2440_INTERFACE( gizmondo_s3c2440_intf ) { // GPIO (port read / port write) - { DEVCB_DRIVER_MEMBER32(gizmondo_state,s3c2440_gpio_port_r), DEVCB_DRIVER_MEMBER32(gizmondo_state,s3c2440_gpio_port_w) } + { DEVCB_DRIVER_MEMBER32(gizmondo_state,s3c2440_gpio_port_r) } }; static MACHINE_CONFIG_START( gizmondo, gizmondo_state ) @@ -206,6 +206,7 @@ static MACHINE_CONFIG_START( gizmondo, gizmondo_state ) MCFG_DEVICE_ADD("s3c2440", S3C2440, 12000000) MCFG_DEVICE_CONFIG(gizmondo_s3c2440_intf) MCFG_S3C2440_PALETTE("palette") + MCFG_S3C2440_GPIO_PORT_W_CB(WRITE32(gizmondo_state, s3c2440_gpio_port_w)) MCFG_DISKONCHIP_G3_ADD("diskonchip", 64) diff --git a/src/mess/drivers/hp49gp.c b/src/mess/drivers/hp49gp.c index 1b4eba794da..3446de97635 100644 --- a/src/mess/drivers/hp49gp.c +++ b/src/mess/drivers/hp49gp.c @@ -279,7 +279,7 @@ DRIVER_INIT_MEMBER(hp49gp_state,hp49gp) static S3C2410_INTERFACE( hp49gp_s3c2410_intf ) { // GPIO (port read / port write) - { DEVCB_DRIVER_MEMBER32(hp49gp_state,s3c2410_gpio_port_r), DEVCB_DRIVER_MEMBER32(hp49gp_state,s3c2410_gpio_port_w) } + { DEVCB_DRIVER_MEMBER32(hp49gp_state,s3c2410_gpio_port_r) } }; static MACHINE_CONFIG_START( hp49gp, hp49gp_state ) @@ -301,6 +301,7 @@ static MACHINE_CONFIG_START( hp49gp, hp49gp_state ) MCFG_DEVICE_ADD("s3c2410", S3C2410, 12000000) MCFG_DEVICE_CONFIG(hp49gp_s3c2410_intf) MCFG_S3C2410_PALETTE("palette") + MCFG_S3C2410_GPIO_PORT_W_CB(WRITE32(hp49gp_state, s3c2410_gpio_port_w)) MCFG_S3C2410_LCD_FLAGS(S3C24XX_INTERFACE_LCD_REVERSE) MACHINE_CONFIG_END diff --git a/src/mess/drivers/mini2440.c b/src/mess/drivers/mini2440.c index 3fa00bc0a58..ea9506267fe 100644 --- a/src/mess/drivers/mini2440.c +++ b/src/mess/drivers/mini2440.c @@ -212,7 +212,7 @@ DRIVER_INIT_MEMBER(mini2440_state,mini2440) static S3C2440_INTERFACE( mini2440_s3c2440_intf ) { // GPIO (port read / port write) - { DEVCB_DRIVER_MEMBER32(mini2440_state,s3c2440_gpio_port_r), DEVCB_DRIVER_MEMBER32(mini2440_state,s3c2440_gpio_port_w) } + { DEVCB_DRIVER_MEMBER32(mini2440_state,s3c2440_gpio_port_r) } }; static NAND_INTERFACE( mini2440_nand_intf ) @@ -245,6 +245,7 @@ static MACHINE_CONFIG_START( mini2440, mini2440_state ) MCFG_DEVICE_CONFIG(mini2440_s3c2440_intf) MCFG_S3C2440_PALETTE("palette") MCFG_S3C2440_CORE_PIN_R_CB(READ32(mini2440_state, s3c2440_core_pin_r)) + MCFG_S3C2440_GPIO_PORT_W_CB(WRITE32(mini2440_state, s3c2440_gpio_port_w)) MCFG_S3C2440_ADC_DATA_R_CB(READ32(mini2440_state, s3c2440_adc_data_r)) MCFG_S3C2440_I2S_DATA_W_CB(WRITE16(mini2440_state, s3c2440_i2s_data_w)) MCFG_S3C2440_NAND_COMMAND_W_CB(WRITE8(mini2440_state, s3c2440_nand_command_w)) diff --git a/src/mess/drivers/palmz22.c b/src/mess/drivers/palmz22.c index 11175f1d4a7..57ebc41b5dd 100644 --- a/src/mess/drivers/palmz22.c +++ b/src/mess/drivers/palmz22.c @@ -278,7 +278,7 @@ DRIVER_INIT_MEMBER(palmz22_state,palmz22) static S3C2410_INTERFACE( palmz22_s3c2410_intf ) { // GPIO (port read / port write) - { DEVCB_DRIVER_MEMBER32(palmz22_state,s3c2410_gpio_port_r), DEVCB_DRIVER_MEMBER32(palmz22_state,s3c2410_gpio_port_w)} + { DEVCB_DRIVER_MEMBER32(palmz22_state,s3c2410_gpio_port_r) } }; static NAND_INTERFACE( palmz22_nand_intf ) @@ -305,6 +305,7 @@ static MACHINE_CONFIG_START( palmz22, palmz22_state ) MCFG_DEVICE_CONFIG(palmz22_s3c2410_intf) MCFG_S3C2410_PALETTE("palette") MCFG_S3C2410_CORE_PIN_R_CB(READ32(palmz22_state, s3c2410_core_pin_r)) + MCFG_S3C2410_GPIO_PORT_W_CB(WRITE32(palmz22_state, s3c2410_gpio_port_w)) MCFG_S3C2410_ADC_DATA_R_CB(READ32(palmz22_state, s3c2410_adc_data_r)) MCFG_S3C2410_NAND_COMMAND_W_CB(WRITE8(palmz22_state, s3c2410_nand_command_w)) MCFG_S3C2410_NAND_ADDRESS_W_CB(WRITE8(palmz22_state, s3c2410_nand_address_w))