diff --git a/hw/adb.h b/hw/adb.h index 2fe981ffaa..721f1ac43e 100644 --- a/hw/adb.h +++ b/hw/adb.h @@ -84,5 +84,4 @@ int adb_poll(ADBBusState *s, uint8_t *buf_out); #define TYPE_ADB_KEYBOARD "adb-keyboard" #define TYPE_ADB_MOUSE "adb-mouse" -extern ADBBusState adb_bus; #endif /* !defined(__ADB_H__) */ diff --git a/hw/cuda.c b/hw/cuda.c index b3a875c3bc..b36c53527a 100644 --- a/hw/cuda.c +++ b/hw/cuda.c @@ -108,8 +108,6 @@ /* CUDA returns time_t's offset from Jan 1, 1904, not 1970 */ #define RTC_OFFSET 2082844800 -ADBBusState adb_bus; - static void cuda_update(CUDAState *s); static void cuda_receive_packet_from_host(CUDAState *s, const uint8_t *data, int len); @@ -459,7 +457,7 @@ static void cuda_adb_poll(void *opaque) uint8_t obuf[ADB_MAX_OUT_LEN + 2]; int olen; - olen = adb_poll(&adb_bus, obuf + 2); + olen = adb_poll(&s->adb_bus, obuf + 2); if (olen > 0) { obuf[0] = ADB_PACKET; obuf[1] = 0x40; /* polled data */ @@ -555,7 +553,7 @@ static void cuda_receive_packet_from_host(CUDAState *s, { uint8_t obuf[ADB_MAX_OUT_LEN + 2]; int olen; - olen = adb_request(&adb_bus, obuf + 2, data + 1, len - 1); + olen = adb_request(&s->adb_bus, obuf + 2, data + 1, len - 1); if (olen > 0) { obuf[0] = ADB_PACKET; obuf[1] = 0x00; @@ -713,7 +711,7 @@ static void cuda_initfn(Object *obj) s->timers[i].index = i; } - qbus_create_inplace((BusState *)&adb_bus, TYPE_ADB_BUS, DEVICE(obj), + qbus_create_inplace((BusState *)&s->adb_bus, TYPE_ADB_BUS, DEVICE(obj), "adb.0"); } diff --git a/hw/ppc/mac.h b/hw/ppc/mac.h index 26cb497b2d..b17107b797 100644 --- a/hw/ppc/mac.h +++ b/hw/ppc/mac.h @@ -28,6 +28,7 @@ #include "exec/memory.h" #include "hw/sysbus.h" #include "hw/ide/internal.h" +#include "hw/adb.h" /* SMP is not enabled, for now */ #define MAX_CPUS 1 @@ -93,6 +94,7 @@ typedef struct CUDAState { uint8_t ier; uint8_t anh; + ADBBusState adb_bus; CUDATimer timers[2]; uint32_t tick_offset; diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c index 2892b362ee..6de810bde1 100644 --- a/hw/ppc/mac_newworld.c +++ b/hw/ppc/mac_newworld.c @@ -149,6 +149,7 @@ static void ppc_core99_init(QEMUMachineInitArgs *args) PCIBus *pci_bus; PCIDevice *macio; MACIOIDEState *macio_ide; + BusState *adb_bus; MacIONVRAMState *nvr; int bios_size; MemoryRegion *pic_mem, *escc_mem; @@ -381,9 +382,11 @@ static void ppc_core99_init(QEMUMachineInitArgs *args) "ide[1]")); macio_ide_init_drives(macio_ide, &hd[MAX_IDE_DEVS]); - dev = qdev_create(BUS(&adb_bus), TYPE_ADB_KEYBOARD); + dev = DEVICE(object_resolve_path_component(OBJECT(macio), "cuda")); + adb_bus = qdev_get_child_bus(dev, "adb.0"); + dev = qdev_create(adb_bus, TYPE_ADB_KEYBOARD); qdev_init_nofail(dev); - dev = qdev_create(BUS(&adb_bus), TYPE_ADB_MOUSE); + dev = qdev_create(adb_bus, TYPE_ADB_MOUSE); qdev_init_nofail(dev); if (usb_enabled(machine_arch == ARCH_MAC99_U3)) { diff --git a/hw/ppc/mac_oldworld.c b/hw/ppc/mac_oldworld.c index 59b7199a92..9ed303a5e5 100644 --- a/hw/ppc/mac_oldworld.c +++ b/hw/ppc/mac_oldworld.c @@ -92,6 +92,7 @@ static void ppc_heathrow_init(QEMUMachineInitArgs *args) PCIDevice *macio; MACIOIDEState *macio_ide; DeviceState *dev; + BusState *adb_bus; int bios_size; MemoryRegion *pic_mem; MemoryRegion *escc_mem, *escc_bar = g_new(MemoryRegion, 1); @@ -281,9 +282,11 @@ static void ppc_heathrow_init(QEMUMachineInitArgs *args) hd[3] = hd[2] = NULL; pci_cmd646_ide_init(pci_bus, hd, 0); - dev = qdev_create(BUS(&adb_bus), TYPE_ADB_KEYBOARD); + dev = DEVICE(object_resolve_path_component(OBJECT(macio), "cuda")); + adb_bus = qdev_get_child_bus(dev, "adb.0"); + dev = qdev_create(adb_bus, TYPE_ADB_KEYBOARD); qdev_init_nofail(dev); - dev = qdev_create(BUS(&adb_bus), TYPE_ADB_MOUSE); + dev = qdev_create(adb_bus, TYPE_ADB_MOUSE); qdev_init_nofail(dev); if (usb_enabled(false)) {