summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/machine
diff options
context:
space:
mode:
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
commit139f044859484fa7c0f2e319bbb65e06e534aba6 (patch)
treed3e3d54481c79cc8b180630c5aa15f58ffcd5728 /src/devices/machine
parenteb602d3871f717eb1974348dd8a00b80cba3092c (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.cpp5
-rw-r--r--src/devices/machine/sa1111.cpp16
-rw-r--r--src/devices/machine/sa1111.h13
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)