From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:50895) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TsZOM-0008IR-DS for qemu-devel@nongnu.org; Tue, 08 Jan 2013 08:38:59 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TsZOI-0008S8-GS for qemu-devel@nongnu.org; Tue, 08 Jan 2013 08:38:58 -0500 Received: from mx1.redhat.com ([209.132.183.28]:41086) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TsZOI-0008Rw-8M for qemu-devel@nongnu.org; Tue, 08 Jan 2013 08:38:54 -0500 From: Gerd Hoffmann Date: Tue, 8 Jan 2013 14:14:50 +0100 Message-Id: <1357650894-16982-29-git-send-email-kraxel@redhat.com> In-Reply-To: <1357650894-16982-1-git-send-email-kraxel@redhat.com> References: <1357650894-16982-1-git-send-email-kraxel@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Subject: [Qemu-devel] [PATCH 28/32] usb/ehci: Move capsbase and opregbase into SysBus EHCI class List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Andreas=20F=C3=A4rber?= , Gerd Hoffmann From: Andreas F=C3=A4rber This allows specific derived models to use different values. Signed-off-by: Andreas F=C3=A4rber Signed-off-by: Gerd Hoffmann --- hw/usb/hcd-ehci-sysbus.c | 15 +++++++++++++-- hw/usb/hcd-ehci.h | 13 +++++++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/hw/usb/hcd-ehci-sysbus.c b/hw/usb/hcd-ehci-sysbus.c index d431193..5a94ce3 100644 --- a/hw/usb/hcd-ehci-sysbus.c +++ b/hw/usb/hcd-ehci-sysbus.c @@ -35,10 +35,11 @@ static Property ehci_sysbus_properties[] =3D { static int usb_ehci_sysbus_initfn(SysBusDevice *dev) { EHCISysBusState *i =3D SYS_BUS_EHCI(dev); + SysBusEHCIClass *sec =3D SYS_BUS_EHCI_GET_CLASS(dev); EHCIState *s =3D &i->ehci; =20 - s->capsbase =3D 0x100; - s->opregbase =3D 0x140; + s->capsbase =3D sec->capsbase; + s->opregbase =3D sec->opregbase; s->dma =3D &dma_context_memory; =20 usb_ehci_initfn(s, DEVICE(dev)); @@ -63,11 +64,21 @@ static const TypeInfo ehci_type_info =3D { .instance_size =3D sizeof(EHCISysBusState), .abstract =3D true, .class_init =3D ehci_sysbus_class_init, + .class_size =3D sizeof(SysBusEHCIClass), }; =20 +static void ehci_xlnx_class_init(ObjectClass *oc, void *data) +{ + SysBusEHCIClass *sec =3D SYS_BUS_EHCI_CLASS(oc); + + sec->capsbase =3D 0x100; + sec->opregbase =3D 0x140; +} + static const TypeInfo ehci_xlnx_type_info =3D { .name =3D "xlnx,ps7-usb", .parent =3D TYPE_SYS_BUS_EHCI, + .class_init =3D ehci_xlnx_class_init, }; =20 static void ehci_sysbus_register_types(void) diff --git a/hw/usb/hcd-ehci.h b/hw/usb/hcd-ehci.h index 5ba3faf..2b0b5a1 100644 --- a/hw/usb/hcd-ehci.h +++ b/hw/usb/hcd-ehci.h @@ -339,6 +339,10 @@ typedef struct EHCIPCIState { #define TYPE_SYS_BUS_EHCI "sysbus-ehci-usb" #define SYS_BUS_EHCI(obj) \ OBJECT_CHECK(EHCISysBusState, (obj), TYPE_SYS_BUS_EHCI) +#define SYS_BUS_EHCI_CLASS(class) \ + OBJECT_CLASS_CHECK(SysBusEHCIClass, (class), TYPE_SYS_BUS_EHCI) +#define SYS_BUS_EHCI_GET_CLASS(obj) \ + OBJECT_GET_CLASS(SysBusEHCIClass, (obj), TYPE_SYS_BUS_EHCI) =20 typedef struct EHCISysBusState { /*< private >*/ @@ -348,4 +352,13 @@ typedef struct EHCISysBusState { EHCIState ehci; } EHCISysBusState; =20 +typedef struct SysBusEHCIClass { + /*< private >*/ + SysBusDeviceClass parent_class; + /*< public >*/ + + uint16_t capsbase; + uint16_t opregbase; +} SysBusEHCIClass; + #endif --=20 1.7.1