mirror of
https://github.com/xemu-project/xemu.git
synced 2024-11-23 19:49:43 +00:00
macio/pmu.c: remove redundant code
Now that the logic related to edge-triggered interrupts is all contained within the mos6522 device the redundant implementation for the mac99 PMU device can be removed. Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> Reviewed-by: Laurent Vivier <laurent@vivier.eu> Message-Id: <20220305150957.5053-13-mark.cave-ayland@ilande.co.uk> Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
This commit is contained in:
parent
b793b4ef8c
commit
a4c7be3736
@ -57,19 +57,6 @@
|
|||||||
|
|
||||||
#define VIA_TIMER_FREQ (4700000 / 6)
|
#define VIA_TIMER_FREQ (4700000 / 6)
|
||||||
|
|
||||||
static void via_update_irq(PMUState *s)
|
|
||||||
{
|
|
||||||
MOS6522PMUState *mps = MOS6522_PMU(&s->mos6522_pmu);
|
|
||||||
MOS6522State *ms = MOS6522(mps);
|
|
||||||
|
|
||||||
bool new_state = !!(ms->ifr & ms->ier & (SR_INT | T1_INT | T2_INT));
|
|
||||||
|
|
||||||
if (new_state != s->via_irq_state) {
|
|
||||||
s->via_irq_state = new_state;
|
|
||||||
qemu_set_irq(s->via_irq, new_state);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void via_set_sr_int(void *opaque)
|
static void via_set_sr_int(void *opaque)
|
||||||
{
|
{
|
||||||
PMUState *s = opaque;
|
PMUState *s = opaque;
|
||||||
@ -808,28 +795,9 @@ static void mos6522_pmu_portB_write(MOS6522State *s)
|
|||||||
MOS6522PMUState *mps = container_of(s, MOS6522PMUState, parent_obj);
|
MOS6522PMUState *mps = container_of(s, MOS6522PMUState, parent_obj);
|
||||||
PMUState *ps = container_of(mps, PMUState, mos6522_pmu);
|
PMUState *ps = container_of(mps, PMUState, mos6522_pmu);
|
||||||
|
|
||||||
if ((s->pcr & 0xe0) == 0x20 || (s->pcr & 0xe0) == 0x60) {
|
|
||||||
s->ifr &= ~CB2_INT;
|
|
||||||
}
|
|
||||||
s->ifr &= ~CB1_INT;
|
|
||||||
|
|
||||||
via_update_irq(ps);
|
|
||||||
pmu_update(ps);
|
pmu_update(ps);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void mos6522_pmu_portA_write(MOS6522State *s)
|
|
||||||
{
|
|
||||||
MOS6522PMUState *mps = container_of(s, MOS6522PMUState, parent_obj);
|
|
||||||
PMUState *ps = container_of(mps, PMUState, mos6522_pmu);
|
|
||||||
|
|
||||||
if ((s->pcr & 0x0e) == 0x02 || (s->pcr & 0x0e) == 0x06) {
|
|
||||||
s->ifr &= ~CA2_INT;
|
|
||||||
}
|
|
||||||
s->ifr &= ~CA1_INT;
|
|
||||||
|
|
||||||
via_update_irq(ps);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void mos6522_pmu_reset(DeviceState *dev)
|
static void mos6522_pmu_reset(DeviceState *dev)
|
||||||
{
|
{
|
||||||
MOS6522State *ms = MOS6522(dev);
|
MOS6522State *ms = MOS6522(dev);
|
||||||
@ -853,7 +821,6 @@ static void mos6522_pmu_class_init(ObjectClass *oc, void *data)
|
|||||||
device_class_set_parent_reset(dc, mos6522_pmu_reset,
|
device_class_set_parent_reset(dc, mos6522_pmu_reset,
|
||||||
&mdc->parent_reset);
|
&mdc->parent_reset);
|
||||||
mdc->portB_write = mos6522_pmu_portB_write;
|
mdc->portB_write = mos6522_pmu_portB_write;
|
||||||
mdc->portA_write = mos6522_pmu_portA_write;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static const TypeInfo mos6522_pmu_type_info = {
|
static const TypeInfo mos6522_pmu_type_info = {
|
||||||
|
@ -193,8 +193,6 @@ struct PMUState {
|
|||||||
|
|
||||||
MemoryRegion mem;
|
MemoryRegion mem;
|
||||||
uint64_t frequency;
|
uint64_t frequency;
|
||||||
qemu_irq via_irq;
|
|
||||||
bool via_irq_state;
|
|
||||||
|
|
||||||
/* PMU state */
|
/* PMU state */
|
||||||
MOS6522PMUState mos6522_pmu;
|
MOS6522PMUState mos6522_pmu;
|
||||||
|
Loading…
Reference in New Issue
Block a user