[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v4 2/7] usb/hcd-xhci: Move qemu-xhci device to hcd-xhci-pci.c
From: |
Philippe Mathieu-Daudé |
Subject: |
Re: [PATCH v4 2/7] usb/hcd-xhci: Move qemu-xhci device to hcd-xhci-pci.c |
Date: |
Tue, 1 Sep 2020 18:38:13 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.11.0 |
On 8/28/20 9:19 PM, Sai Pavan Boddu wrote:
> Move pci specific devices to new file. This set the environment to move all
> pci specific hooks in hcd-xhci.c to hcd-xhci-pci.c.
>
> Signed-off-by: Sai Pavan Boddu <sai.pavan.boddu@xilinx.com>
> ---
> hw/usb/Kconfig | 6 +++++
> hw/usb/Makefile.objs | 1 +
> hw/usb/hcd-xhci-pci.c | 66
> +++++++++++++++++++++++++++++++++++++++++++++++++++
> hw/usb/hcd-xhci.c | 41 ++------------------------------
> hw/usb/hcd-xhci.h | 3 +++
> 5 files changed, 78 insertions(+), 39 deletions(-)
> create mode 100644 hw/usb/hcd-xhci-pci.c
>
> diff --git a/hw/usb/Kconfig b/hw/usb/Kconfig
> index d4d8c37..d9965c1 100644
> --- a/hw/usb/Kconfig
> +++ b/hw/usb/Kconfig
> @@ -36,6 +36,12 @@ config USB_XHCI
> depends on PCI
> select USB
>
> +config USB_XHCI_PCI
> + bool
> + default y if PCI_DEVICES
> + depends on PCI
> + select USB_XHCI
> +
> config USB_XHCI_NEC
> bool
> default y if PCI_DEVICES
> diff --git a/hw/usb/Makefile.objs b/hw/usb/Makefile.objs
> index e342ff5..029b040 100644
> --- a/hw/usb/Makefile.objs
> +++ b/hw/usb/Makefile.objs
> @@ -11,6 +11,7 @@ common-obj-$(CONFIG_USB_EHCI_PCI) += hcd-ehci-pci.o
> common-obj-$(CONFIG_USB_EHCI_SYSBUS) += hcd-ehci-sysbus.o
> common-obj-$(CONFIG_USB_XHCI) += hcd-xhci.o
> common-obj-$(CONFIG_USB_XHCI_NEC) += hcd-xhci-nec.o
> +common-obj-$(CONFIG_USB_XHCI_PCI) += hcd-xhci-pci.o
> common-obj-$(CONFIG_USB_MUSB) += hcd-musb.o
> common-obj-$(CONFIG_USB_DWC2) += hcd-dwc2.o
>
> diff --git a/hw/usb/hcd-xhci-pci.c b/hw/usb/hcd-xhci-pci.c
> new file mode 100644
> index 0000000..1562757
> --- /dev/null
> +++ b/hw/usb/hcd-xhci-pci.c
> @@ -0,0 +1,66 @@
> +/*
> + * USB xHCI controller with PCI bus emulation
> + *
> + * SPDX-FileCopyrightText: 2011 Securiforest
> + * SPDX-FileContributor: Hector Martin <hector@marcansoft.com>
> + * SPDX-sourceInfo: Based on usb-ohci.c, emulates Renesas NEC USB 3.0
> + * SPDX-FileCopyrightText: 2020 Xilinx
> + * SPDX-FileContributor: Sai Pavan Boddu <sai.pavan.boddu@xilinx.com>
> + * SPDX-sourceInfo: Moved the pci specific content for hcd-xhci.c to
> + * hcd-xhci-pci.c
> + *
> + * This library is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU Lesser General Public
> + * License as published by the Free Software Foundation; either
> + * version 2 of the License, or (at your option) any later version.
> + *
> + * This library is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with this library; if not, see
> <http://www.gnu.org/licenses/>.
> + */
> +#include "qemu/osdep.h"
> +#include "hw/pci/pci.h"
> +#include "hw/qdev-properties.h"
> +#include "hw/pci/msi.h"
> +#include "hw/pci/msix.h"
> +#include "hcd-xhci.h"
> +#include "trace.h"
> +#include "qapi/error.h"
> +
> +static void qemu_xhci_class_init(ObjectClass *klass, void *data)
> +{
> + PCIDeviceClass *k = PCI_DEVICE_CLASS(klass);
> +
> + k->vendor_id = PCI_VENDOR_ID_REDHAT;
> + k->device_id = PCI_DEVICE_ID_REDHAT_XHCI;
> + k->revision = 0x01;
> +}
> +
> +static void qemu_xhci_instance_init(Object *obj)
> +{
> + XHCIState *xhci = XHCI(obj);
> +
> + xhci->msi = ON_OFF_AUTO_OFF;
> + xhci->msix = ON_OFF_AUTO_AUTO;
> + xhci->numintrs = MAXINTRS;
> + xhci->numslots = MAXSLOTS;
> + xhci_set_flag(xhci, XHCI_FLAG_SS_FIRST);
> +}
> +
> +static const TypeInfo qemu_xhci_info = {
> + .name = TYPE_QEMU_XHCI,
> + .parent = TYPE_XHCI,
> + .class_init = qemu_xhci_class_init,
> + .instance_init = qemu_xhci_instance_init,
> +};
> +
> +static void xhci_register_types(void)
> +{
> + type_register_static(&qemu_xhci_info);
> +}
> +
> +type_init(xhci_register_types)
> diff --git a/hw/usb/hcd-xhci.c b/hw/usb/hcd-xhci.c
> index 2590f7a..b15c53b 100644
> --- a/hw/usb/hcd-xhci.c
> +++ b/hw/usb/hcd-xhci.c
> @@ -23,7 +23,6 @@
> #include "qemu/timer.h"
> #include "qemu/module.h"
> #include "qemu/queue.h"
> -#include "hw/usb.h"
> #include "migration/vmstate.h"
> #include "hw/pci/pci.h"
> #include "hw/qdev-properties.h"
> @@ -429,12 +428,12 @@ static const char *ep_state_name(uint32_t state)
> ARRAY_SIZE(ep_state_names));
> }
>
> -static bool xhci_get_flag(XHCIState *xhci, enum xhci_flags bit)
> +bool xhci_get_flag(XHCIState *xhci, enum xhci_flags bit)
> {
> return xhci->flags & (1 << bit);
> }
>
> -static void xhci_set_flag(XHCIState *xhci, enum xhci_flags bit)
> +void xhci_set_flag(XHCIState *xhci, enum xhci_flags bit)
> {
> xhci->flags |= (1 << bit);
> }
> @@ -3692,13 +3691,6 @@ static Property xhci_properties[] = {
> DEFINE_PROP_END_OF_LIST(),
> };
>
> -static void xhci_instance_init(Object *obj)
> -{
> - /* QEMU_PCI_CAP_EXPRESS initialization does not depend on QEMU command
> - * line, therefore, no need to wait to realize like other devices */
> - PCI_DEVICE(obj)->cap_present |= QEMU_PCI_CAP_EXPRESS;
What happened to this flag?
> -}
> -
> static void xhci_class_init(ObjectClass *klass, void *data)
> {
> PCIDeviceClass *k = PCI_DEVICE_CLASS(klass);
> @@ -3718,7 +3710,6 @@ static const TypeInfo xhci_info = {
> .parent = TYPE_PCI_DEVICE,
> .instance_size = sizeof(XHCIState),
> .class_init = xhci_class_init,
> - .instance_init = xhci_instance_init,
> .abstract = true,
> .interfaces = (InterfaceInfo[]) {
> { INTERFACE_PCIE_DEVICE },
> @@ -3727,37 +3718,9 @@ static const TypeInfo xhci_info = {
> },
> };
>
> -static void qemu_xhci_class_init(ObjectClass *klass, void *data)
> -{
> - PCIDeviceClass *k = PCI_DEVICE_CLASS(klass);
> -
> - k->vendor_id = PCI_VENDOR_ID_REDHAT;
> - k->device_id = PCI_DEVICE_ID_REDHAT_XHCI;
> - k->revision = 0x01;
> -}
> -
> -static void qemu_xhci_instance_init(Object *obj)
> -{
> - XHCIState *xhci = XHCI(obj);
> -
> - xhci->msi = ON_OFF_AUTO_OFF;
> - xhci->msix = ON_OFF_AUTO_AUTO;
> - xhci->numintrs = MAXINTRS;
> - xhci->numslots = MAXSLOTS;
> - xhci_set_flag(xhci, XHCI_FLAG_SS_FIRST);
> -}
> -
> -static const TypeInfo qemu_xhci_info = {
> - .name = TYPE_QEMU_XHCI,
> - .parent = TYPE_XHCI,
> - .class_init = qemu_xhci_class_init,
> - .instance_init = qemu_xhci_instance_init,
> -};
> -
> static void xhci_register_types(void)
> {
> type_register_static(&xhci_info);
> - type_register_static(&qemu_xhci_info);
> }
>
> type_init(xhci_register_types)
> diff --git a/hw/usb/hcd-xhci.h b/hw/usb/hcd-xhci.h
> index edbd926..dd5fcd4 100644
> --- a/hw/usb/hcd-xhci.h
> +++ b/hw/usb/hcd-xhci.h
> @@ -23,6 +23,7 @@
> #define HW_USB_HCD_XHCI_H
>
> #include "sysemu/dma.h"
> +#include "hw/usb.h"
>
> #define TYPE_XHCI "base-xhci"
> #define TYPE_NEC_XHCI "nec-usb-xhci"
> @@ -232,4 +233,6 @@ struct XHCIState {
> bool nec_quirks;
> };
>
> +bool xhci_get_flag(XHCIState *xhci, enum xhci_flags bit);
> +void xhci_set_flag(XHCIState *xhci, enum xhci_flags bit);
> #endif
>
- Re: [PATCH v4 2/7] usb/hcd-xhci: Move qemu-xhci device to hcd-xhci-pci.c,
Philippe Mathieu-Daudé <=