From patchwork Fri Jan 25 12:52:53 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Alexander Graf X-Patchwork-Id: 215792 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id B0B972C007C for ; Sat, 26 Jan 2013 03:11:10 +1100 (EST) Received: from localhost ([::1]:54726 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TyinJ-0007b7-Ep for incoming@patchwork.ozlabs.org; Fri, 25 Jan 2013 07:54:09 -0500 Received: from eggs.gnu.org ([208.118.235.92]:44653) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Tyimb-0006it-Mj for qemu-devel@nongnu.org; Fri, 25 Jan 2013 07:53:36 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TyimU-0004us-TI for qemu-devel@nongnu.org; Fri, 25 Jan 2013 07:53:25 -0500 Received: from cantor2.suse.de ([195.135.220.15]:59310 helo=mx2.suse.de) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TyimU-0004ub-Hu; Fri, 25 Jan 2013 07:53:18 -0500 Received: from relay1.suse.de (unknown [195.135.220.254]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx2.suse.de (Postfix) with ESMTP id 0505DA4EB7; Fri, 25 Jan 2013 13:53:18 +0100 (CET) From: Alexander Graf To: qemu-ppc@nongnu.org Date: Fri, 25 Jan 2013 13:52:53 +0100 Message-Id: <1359118384-9555-11-git-send-email-agraf@suse.de> X-Mailer: git-send-email 1.6.0.2 In-Reply-To: <1359118384-9555-1-git-send-email-agraf@suse.de> References: <1359118384-9555-1-git-send-email-agraf@suse.de> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.4.x X-Received-From: 195.135.220.15 Cc: Blue Swirl , qemu-devel , =?utf-8?q?Aur=C3=A9lien=20Jarno?= , =?utf-8?q?Andreas=20F=C3=A4rber?= Subject: [Qemu-devel] [PATCH 10/21] adb: QOM'ify Apple Desktop Bus X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org From: Andreas Färber It was not a qbus before, turn it into a first-class bus and initialize it properly from CUDA. Leave it a global variable as long as devices are not QOM'ified yet. Signed-off-by: Andreas Färber Signed-off-by: Alexander Graf --- hw/adb.c | 14 ++++++++++++++ hw/adb.h | 16 +++++++++++++--- hw/cuda.c | 3 +++ 3 files changed, 30 insertions(+), 3 deletions(-) diff --git a/hw/adb.c b/hw/adb.c index cc8ad8e..5d46f59 100644 --- a/hw/adb.c +++ b/hw/adb.c @@ -126,6 +126,12 @@ static ADBDevice *adb_register_device(ADBBusState *s, int devaddr, return d; } +static const TypeInfo adb_bus_type_info = { + .name = TYPE_ADB_BUS, + .parent = TYPE_BUS, + .instance_size = sizeof(ADBBusState), +}; + /***************************************************************/ /* Keyboard ADB device */ @@ -453,3 +459,11 @@ void adb_mouse_init(ADBBusState *bus) qemu_add_mouse_event_handler(adb_mouse_event, d, 0, "QEMU ADB Mouse"); vmstate_register(NULL, -1, &vmstate_adb_mouse, s); } + + +static void adb_register_types(void) +{ + type_register_static(&adb_bus_type_info); +} + +type_init(adb_register_types) diff --git a/hw/adb.h b/hw/adb.h index 5b27da2..c23f804 100644 --- a/hw/adb.h +++ b/hw/adb.h @@ -26,10 +26,13 @@ #if !defined(__ADB_H__) #define __ADB_H__ +#include "qdev.h" + #define MAX_ADB_DEVICES 16 #define ADB_MAX_OUT_LEN 16 +typedef struct ADBBusState ADBBusState; typedef struct ADBDevice ADBDevice; /* buf = NULL means polling */ @@ -38,7 +41,7 @@ typedef int ADBDeviceRequest(ADBDevice *d, uint8_t *buf_out, typedef int ADBDeviceReset(ADBDevice *d); struct ADBDevice { - struct ADBBusState *bus; + ADBBusState *bus; int devaddr; int handler; ADBDeviceRequest *devreq; @@ -46,11 +49,18 @@ struct ADBDevice { void *opaque; }; -typedef struct ADBBusState { +#define TYPE_ADB_BUS "apple-desktop-bus" +#define ADB_BUS(obj) OBJECT_CHECK(ADBBusState, (obj), TYPE_ADB_BUS) + +struct ADBBusState { + /*< private >*/ + BusState parent_obj; + /*< public >*/ + ADBDevice devices[MAX_ADB_DEVICES]; int nb_devices; int poll_index; -} ADBBusState; +}; int adb_request(ADBBusState *s, uint8_t *buf_out, const uint8_t *buf, int len); diff --git a/hw/cuda.c b/hw/cuda.c index f863c38..b3a875c 100644 --- a/hw/cuda.c +++ b/hw/cuda.c @@ -712,6 +712,9 @@ static void cuda_initfn(Object *obj) for (i = 0; i < ARRAY_SIZE(s->timers); i++) { s->timers[i].index = i; } + + qbus_create_inplace((BusState *)&adb_bus, TYPE_ADB_BUS, DEVICE(obj), + "adb.0"); } static void cuda_class_init(ObjectClass *oc, void *data)