Skip to content

Commit 44df953

Browse files
mcaylandhuth
authored andcommitted
next-cube: use named gpio output for next-rtc data
Add a named gpio output for the next-rtc data and then update next_rtc_data_in_irq() to drive the IRQ directly. This enables the next-rtc to next-pc data to be wired up using the standard qdev gpio APIs. At the same time rename the pc-rtc-data-in gpio to rtc-data-in which is possible now that the previous rtc-data-in gpio has been moved to the next-rtc device. Signed-off-by: Mark Cave-Ayland <[email protected]> Message-ID: <[email protected]> Reviewed-by: Philippe Mathieu-Daudé <[email protected]> Signed-off-by: Thomas Huth <[email protected]>
1 parent 4387e93 commit 44df953

File tree

1 file changed

+13
-6
lines changed

1 file changed

+13
-6
lines changed

hw/m68k/next-cube.c

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,8 @@ struct NeXTRTC {
5656
uint8_t status;
5757
uint8_t control;
5858
uint8_t retval;
59+
60+
qemu_irq data_out_irq;
5961
};
6062

6163
#define TYPE_NEXT_SCSI "next-scsi"
@@ -234,13 +236,10 @@ static void next_rtc_data_in_irq(void *opaque, int n, int level)
234236
rtc->value = (rtc->value << 1) | level;
235237
} else {
236238
/* Shift out value to read */
237-
qemu_irq rtc_data_in_irq = qdev_get_gpio_in_named(
238-
DEVICE(s), "pc-rtc-data-in", 0);
239-
240239
if (rtc->retval & (0x80 >> (rtc->phase - 8))) {
241-
qemu_irq_raise(rtc_data_in_irq);
240+
qemu_irq_raise(rtc->data_out_irq);
242241
} else {
243-
qemu_irq_lower(rtc_data_in_irq);
242+
qemu_irq_lower(rtc->data_out_irq);
244243
}
245244
}
246245
}
@@ -1028,8 +1027,12 @@ static void next_rtc_reset_hold(Object *obj, ResetType type)
10281027

10291028
static void next_rtc_init(Object *obj)
10301029
{
1030+
NeXTRTC *rtc = NEXT_RTC(obj);
1031+
10311032
qdev_init_gpio_in_named(DEVICE(obj), next_rtc_data_in_irq,
10321033
"rtc-data-in", 1);
1034+
qdev_init_gpio_out_named(DEVICE(obj), &rtc->data_out_irq,
1035+
"rtc-data-out", 1);
10331036
}
10341037

10351038
static const VMStateDescription next_rtc_vmstate = {
@@ -1136,6 +1139,10 @@ static void next_pc_realize(DeviceState *dev, Error **errp)
11361139
/* Data from NeXTPC to RTC */
11371140
qdev_connect_gpio_out_named(dev, "rtc-data-out", 0,
11381141
qdev_get_gpio_in_named(d, "rtc-data-in", 0));
1142+
/* Data from RTC to NeXTPC */
1143+
qdev_connect_gpio_out_named(d, "rtc-data-out", 0,
1144+
qdev_get_gpio_in_named(dev,
1145+
"rtc-data-in", 0));
11391146
}
11401147

11411148
static void next_pc_init(Object *obj)
@@ -1173,7 +1180,7 @@ static void next_pc_init(Object *obj)
11731180

11741181
s->rtc_power_irq = qdev_get_gpio_in(DEVICE(obj), NEXT_PWR_I);
11751182
qdev_init_gpio_in_named(DEVICE(obj), next_pc_rtc_data_in_irq,
1176-
"pc-rtc-data-in", 1);
1183+
"rtc-data-in", 1);
11771184
qdev_init_gpio_out_named(DEVICE(obj), &s->rtc_data_irq,
11781185
"rtc-data-out", 1);
11791186
}

0 commit comments

Comments
 (0)