diff options
author | Andreas Färber <afaerber@suse.de> | 2013-01-23 23:04:05 +0000 |
---|---|---|
committer | Alexander Graf <agraf@suse.de> | 2013-01-25 22:02:55 +0100 |
commit | 293c867d8c7399d17e6b593053411a6515171f38 (patch) | |
tree | 77ac79d1c0525ac72aff7053bd204a7bdc793d04 | |
parent | 2e4a7c9c5df442d4223e738f7e8f73192b8b2a65 (diff) |
cuda: Move ADB bus into CUDA state
Replace the global adb_bus with a CUDA-internal one, accessed using
regular qdev child bus accessor.
Signed-off-by: Andreas Färber <afaerber@suse.de>
Signed-off-by: Alexander Graf <agraf@suse.de>
-rw-r--r-- | hw/adb.h | 1 | ||||
-rw-r--r-- | hw/cuda.c | 8 | ||||
-rw-r--r-- | hw/ppc/mac.h | 2 | ||||
-rw-r--r-- | hw/ppc/mac_newworld.c | 7 | ||||
-rw-r--r-- | hw/ppc/mac_oldworld.c | 7 |
5 files changed, 15 insertions, 10 deletions
@@ -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__) */ @@ -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)) { |