summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/pci/zr36057.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/pci/zr36057.cpp')
-rw-r--r--src/devices/bus/pci/zr36057.cpp24
1 files changed, 22 insertions, 2 deletions
diff --git a/src/devices/bus/pci/zr36057.cpp b/src/devices/bus/pci/zr36057.cpp
index b7aacba98b2..dff2bf68c96 100644
--- a/src/devices/bus/pci/zr36057.cpp
+++ b/src/devices/bus/pci/zr36057.cpp
@@ -48,6 +48,7 @@ DEFINE_DEVICE_TYPE(ZR36057_PCI, zr36057_device, "zr36057", "Zoran ZR36057-ba
zr36057_device::zr36057_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
: pci_card_device(mconfig, type, tag, owner, clock)
+ , m_decoder(*this, "decoder")
{
// ZR36057PQC Video cutting chipset
// device ID reportedly same for ZR36057 and ZR36067, revision 0x02 for latter.
@@ -69,7 +70,17 @@ zr36057_device::zr36057_device(const machine_config &mconfig, const char *tag, d
void zr36057_device::device_add_mconfig(machine_config &config)
{
+ // 27'000'000 xtal near ZR36060
+ SAA7110A(config, m_decoder, XTAL(26'800'000));
+ m_decoder->sda_callback().set([this](int state) { m_decoder_sdao_state = state; });
+
+ // S-Video input/output
+ // composite video input/output
+
+ // video and audio input/output pins on PCB, for cross connection with other boards
+
+ // DC30 combines the two audio input/output as an external jack option
}
void zr36057_device::device_start()
@@ -199,11 +210,20 @@ void zr36057_device::asr_map(address_map &map)
})
);
- map(0x044, 0x047).lr32(
+ map(0x044, 0x047).lrw32(
NAME([this] (offs_t offset) {
LOG("I2C R\n");
// avoid win98 stall for now
- return 0x3;
+ return m_decoder_sdao_state << 1 | 1;
+ //return 3;
+ }),
+ NAME([this] (offs_t offset, u32 data, u32 mem_mask) {
+ //printf("I2C %02x %08x\n", data, mem_mask);
+ if (ACCESSING_BITS_0_7)
+ {
+ m_decoder->sda_write(BIT(data, 1));
+ m_decoder->scl_write(BIT(data, 0));
+ }
})
);
}