[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 18/26] hw/usb/bus: Add usb_get_port_path()
From: |
Alistair Francis |
Subject: |
Re: [PATCH 18/26] hw/usb/bus: Add usb_get_port_path() |
Date: |
Mon, 6 Jul 2020 17:07:31 -0700 |
On Sat, Jul 4, 2020 at 8:00 AM Philippe Mathieu-Daudé <f4bug@amsat.org> wrote:
>
> Refactor usb_get_full_dev_path() to take a 'want_full_path'
> argument, and add usb_get_port_path() which returns a short
> path.
>
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Alistair
> ---
> include/hw/usb.h | 10 ++++++++++
> hw/usb/bus.c | 18 +++++++++++++-----
> 2 files changed, 23 insertions(+), 5 deletions(-)
>
> diff --git a/include/hw/usb.h b/include/hw/usb.h
> index 8c3bc920ff..7ea502d421 100644
> --- a/include/hw/usb.h
> +++ b/include/hw/usb.h
> @@ -506,6 +506,16 @@ void usb_port_location(USBPort *downstream, USBPort
> *upstream, int portnr);
> void usb_unregister_port(USBBus *bus, USBPort *port);
> void usb_claim_port(USBDevice *dev, Error **errp);
> void usb_release_port(USBDevice *dev);
> +/**
> + * usb_get_port_path:
> + * @dev: the USB device
> + *
> + * The returned data must be released with g_free()
> + * when no longer required.
> + *
> + * Returns: a dynamically allocated pathname.
> + */
> +char *usb_get_port_path(USBDevice *dev);
> void usb_device_attach(USBDevice *dev, Error **errp);
> int usb_device_detach(USBDevice *dev);
> void usb_check_attach(USBDevice *dev, Error **errp);
> diff --git a/hw/usb/bus.c b/hw/usb/bus.c
> index fad8194bf5..518e5b94ed 100644
> --- a/hw/usb/bus.c
> +++ b/hw/usb/bus.c
> @@ -577,12 +577,10 @@ static void usb_bus_dev_print(Monitor *mon, DeviceState
> *qdev, int indent)
> dev->attached ? ", attached" : "");
> }
>
> -static char *usb_get_full_dev_path(DeviceState *qdev)
> +static char *usb_get_dev_path(USBDevice *dev, bool want_full_path)
> {
> - USBDevice *dev = USB_DEVICE(qdev);
> -
> - if (dev->flags & (1 << USB_DEV_FLAG_FULL_PATH)) {
> - DeviceState *hcd = qdev->parent_bus->parent;
> + if (want_full_path && (dev->flags & (1 << USB_DEV_FLAG_FULL_PATH))) {
> + DeviceState *hcd = DEVICE(dev)->parent_bus->parent;
> char *id = qdev_get_dev_path(hcd);
>
> if (id) {
> @@ -594,6 +592,16 @@ static char *usb_get_full_dev_path(DeviceState *qdev)
> return g_strdup(dev->port->path);
> }
>
> +static char *usb_get_full_dev_path(DeviceState *qdev)
> +{
> + return usb_get_dev_path(USB_DEVICE(qdev), true);
> +}
> +
> +char *usb_get_port_path(USBDevice *dev)
> +{
> + return usb_get_dev_path(dev, false);
> +}
> +
> static char *usb_get_fw_dev_path(DeviceState *qdev)
> {
> USBDevice *dev = USB_DEVICE(qdev);
> --
> 2.21.3
>
>
- Re: [PATCH 14/26] hw/usb/quirks: Rename included source with '.inc.c' suffix, (continued)
- [PATCH 13/26] hw/usb/desc: Reduce some declarations scope, Philippe Mathieu-Daudé, 2020/07/04
- [PATCH 15/26] hw/usb: Add new 'usb-quirks.h' local header, Philippe Mathieu-Daudé, 2020/07/04
- [PATCH 16/26] hw/usb/bus: Simplify usb_get_dev_path(), Philippe Mathieu-Daudé, 2020/07/04
- [PATCH 17/26] hw/usb/bus: Rename usb_get_dev_path() as usb_get_full_dev_path(), Philippe Mathieu-Daudé, 2020/07/04
- [PATCH 18/26] hw/usb/bus: Add usb_get_port_path(), Philippe Mathieu-Daudé, 2020/07/04
- Re: [PATCH 18/26] hw/usb/bus: Add usb_get_port_path(),
Alistair Francis <=
- [PATCH 19/26] hw/ppc/spapr: Use usb_get_port_path(), Philippe Mathieu-Daudé, 2020/07/04
- [PATCH 20/26] hw/usb: Introduce "hw/usb/usb.h" public API, Philippe Mathieu-Daudé, 2020/07/04
- [PATCH 21/26] hw/usb: Move internal API to local 'usb-internal.h' header, Philippe Mathieu-Daudé, 2020/07/04
- [PATCH 22/26] hw/usb/usb-hcd: Use OHCI type definitions, Philippe Mathieu-Daudé, 2020/07/04
- [PATCH 23/26] hw/usb/usb-hcd: Use EHCI type definitions, Philippe Mathieu-Daudé, 2020/07/04