diff options
author | Ryan Holtz <ryan.holtz@arrowheadgs.com> | 2020-12-31 19:18:24 +0100 |
---|---|---|
committer | Ryan Holtz <ryan.holtz@arrowheadgs.com> | 2020-12-31 19:18:54 +0100 |
commit | 139f044859484fa7c0f2e319bbb65e06e534aba6 (patch) | |
tree | d3e3d54481c79cc8b180630c5aa15f58ffcd5728 /src/devices/machine | |
parent | eb602d3871f717eb1974348dd8a00b80cba3092c (diff) |
-arm7: Added optional logging for Windows CE calls. [Ryan Holtz]
-uda1344: Added skeleton audio device for Philips UDA13444 Codec. [Ryan Holtz]
-sa1111: Hooked up basic L3 audio transceiver support. [Ryan Holtz]
Diffstat (limited to 'src/devices/machine')
-rw-r--r-- | src/devices/machine/sa1110.cpp | 5 | ||||
-rw-r--r-- | src/devices/machine/sa1111.cpp | 16 | ||||
-rw-r--r-- | src/devices/machine/sa1111.h | 13 |
3 files changed, 31 insertions, 3 deletions
diff --git a/src/devices/machine/sa1110.cpp b/src/devices/machine/sa1110.cpp index 8b9047dcc48..eded21499d2 100644 --- a/src/devices/machine/sa1110.cpp +++ b/src/devices/machine/sa1110.cpp @@ -1618,7 +1618,10 @@ uint32_t sa1110_periphs_device::intc_r(offs_t offset, uint32_t mem_mask) switch (offset) { case REG_ICIP: - LOGMASKED(LOG_INTC, "%s: intc_r: Interrupt Controller IRQ Pending Register: %08x & %08x\n", machine().describe_context(), m_intc_regs.icip, mem_mask); + if (m_intc_regs.icip != 0x04000000) + { + LOGMASKED(LOG_INTC, "%s: intc_r: Interrupt Controller IRQ Pending Register: %08x & %08x\n", machine().describe_context(), m_intc_regs.icip, mem_mask); + } return m_intc_regs.icip; case REG_ICMR: LOGMASKED(LOG_INTC, "%s: intc_r: Interrupt Controller Mask Register: %08x & %08x\n", machine().describe_context(), m_intc_regs.icmr, mem_mask); diff --git a/src/devices/machine/sa1111.cpp b/src/devices/machine/sa1111.cpp index 2871576e701..1c062dd1a55 100644 --- a/src/devices/machine/sa1111.cpp +++ b/src/devices/machine/sa1111.cpp @@ -32,6 +32,8 @@ sa1111_device::sa1111_device(const machine_config &mconfig, const char *tag, dev : device_t(mconfig, SA1111, tag, owner, clock) , m_gpio_out(*this) , m_ssp_out(*this) + , m_l3_addr_out(*this) + , m_l3_data_out(*this) { } @@ -434,6 +436,12 @@ void sa1111_device::usb_int_test_w(offs_t offset, uint32_t data, uint32_t mem_ma */ +WRITE_LINE_MEMBER(sa1111_device::l3wd_in) +{ + if (state) + m_audio_regs.sasr0 |= (1 << SASR0_L3WD_BIT); +} + TIMER_CALLBACK_MEMBER(sa1111_device::audio_rx_callback) { } @@ -617,7 +625,7 @@ void sa1111_device::sacr0_w(offs_t offset, uint32_t data, uint32_t mem_mask) void sa1111_device::sacr1_w(offs_t offset, uint32_t data, uint32_t mem_mask) { LOGMASKED(LOG_AUDIO, "%s: sacr1_w: Serial Audio Alternate Mode Control Register = %08x & %08x\n", machine().describe_context(), data, mem_mask); - LOGMASKED(LOG_AUDIO, "%s: Alternade Mode Operation: %s\n", machine().describe_context(), BIT(data, SACR1_AMSL_BIT) ? "MSB-Justified" : "I2S"); + LOGMASKED(LOG_AUDIO, "%s: Alternate Mode Operation: %s\n", machine().describe_context(), BIT(data, SACR1_AMSL_BIT) ? "MSB-Justified" : "I2S"); LOGMASKED(LOG_AUDIO, "%s: Enable L3 Control Bus: %d\n", machine().describe_context(), BIT(data, SACR1_L3EN_BIT)); LOGMASKED(LOG_AUDIO, "%s: L3 Control Bus Data Multi-Byte Transfer: %s\n", machine().describe_context(), BIT(data, SACR1_L3MB_BIT) ? "Multiple-Byte" : "Last Byte"); LOGMASKED(LOG_AUDIO, "%s: Disable Recording Function: %d\n", machine().describe_context(), BIT(data, SACR1_DREC_BIT)); @@ -676,12 +684,14 @@ void sa1111_device::l3car_w(offs_t offset, uint32_t data, uint32_t mem_mask) { LOGMASKED(LOG_AUDIO, "%s: l3car_w: L3 Control Bus Address Register = %08x & %08x\n", machine().describe_context(), data, mem_mask); COMBINE_DATA(&m_audio_regs.l3car); + m_l3_addr_out((uint8_t)data); } void sa1111_device::l3cdr_w(offs_t offset, uint32_t data, uint32_t mem_mask) { LOGMASKED(LOG_AUDIO, "%s: l3cdr_w: L3 Control Bus Data Register = %08x & %08x\n", machine().describe_context(), data, mem_mask); COMBINE_DATA(&m_audio_regs.l3cdr); + m_l3_data_out((uint8_t)data); } void sa1111_device::accar_w(offs_t offset, uint32_t data, uint32_t mem_mask) @@ -1633,6 +1643,8 @@ void sa1111_device::device_start() m_gpio_out.resolve_all_safe(); m_ssp_out.resolve_safe(); + m_l3_addr_out.resolve_safe(); + m_l3_data_out.resolve_safe(); } void sa1111_device::device_reset() @@ -1725,7 +1737,7 @@ void sa1111_device::device_reset() m_card_regs.pccr = 0; m_card_regs.pcssr = 0; - m_card_regs.pcsr = 0x0000000f; + m_card_regs.pcsr = 0x0000000c; } void sa1111_device::device_add_mconfig(machine_config &config) diff --git a/src/devices/machine/sa1111.h b/src/devices/machine/sa1111.h index 03bebf06c1d..78ca930cb98 100644 --- a/src/devices/machine/sa1111.h +++ b/src/devices/machine/sa1111.h @@ -28,6 +28,11 @@ public: void ssp_in(uint16_t data) { ssp_rx_fifo_push(data); } auto ssp_out() { return m_ssp_out.bind(); } + auto l3_addr_out() { return m_l3_addr_out.bind(); } + auto l3_data_out() { return m_l3_data_out.bind(); } + + DECLARE_WRITE_LINE_MEMBER(l3wd_in); + void map(address_map &map); protected: @@ -198,6 +203,12 @@ protected: void gpio_update_direction(const uint32_t block, const uint32_t old_dir); void gpio_update_outputs(const uint32_t block, const uint32_t old_latch); + // interrupt lines + enum : uint32_t + { + INT_AUDDTS = 40 + }; + // register contents enum : uint32_t { @@ -584,6 +595,8 @@ protected: devcb_write_line::array<24> m_gpio_out; devcb_write16 m_ssp_out; + devcb_write8 m_l3_addr_out; + devcb_write8 m_l3_data_out; }; DECLARE_DEVICE_TYPE(SA1111, sa1111_device) |