diff options
Diffstat (limited to 'trunk/src/emu/machine/secflash.c')
-rw-r--r-- | trunk/src/emu/machine/secflash.c | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/trunk/src/emu/machine/secflash.c b/trunk/src/emu/machine/secflash.c new file mode 100644 index 00000000000..0744d86660b --- /dev/null +++ b/trunk/src/emu/machine/secflash.c @@ -0,0 +1,74 @@ +#include "emu.h" +#include "machine/secflash.h" + +device_secure_serial_flash::device_secure_serial_flash(const machine_config &mconfig, + device_type type, + const char *name, const char *tag, + device_t *owner, UINT32 clock) : + device_t(mconfig, type, name, tag, owner, clock), + device_nvram_interface(mconfig, *this) +{ +} + +void device_secure_serial_flash::device_start() +{ + save_item(NAME(cs)); + save_item(NAME(rst)); + save_item(NAME(scl)); + save_item(NAME(sdaw)); + save_item(NAME(sdar)); +} + +void device_secure_serial_flash::device_reset() +{ + cs = rst = scl = sdaw = sdar = false; +} + +void device_secure_serial_flash::cs_w(bool _cs) +{ + if(cs == _cs) + return; + cs = _cs; + if(cs) + cs_1(); + else + cs_0(); +} + +void device_secure_serial_flash::rst_w(bool _rst) +{ + if(rst == _rst) + return; + rst = _rst; + if(rst) + rst_1(); + else + rst_0(); +} + +void device_secure_serial_flash::scl_w(bool _scl) +{ + if(scl == _scl) + return; + scl = _scl; + if(scl) + scl_1(); + else + scl_0(); +} + +void device_secure_serial_flash::sda_w(bool _sda) +{ + if(sdaw == _sda) + return; + sdaw = _sda; + if(sdaw) + sda_1(); + else + sda_0(); +} + +bool device_secure_serial_flash::sda_r() +{ + return cs ? true : sdar; +} |