[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 18/26] hw/usb/bus: Add usb_get_port_path()
From: |
Philippe Mathieu-Daudé |
Subject: |
[PATCH 18/26] hw/usb/bus: Add usb_get_port_path() |
Date: |
Sat, 4 Jul 2020 16:49:35 +0200 |
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>
---
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
- [PATCH 14/26] hw/usb/quirks: Rename included source with '.inc.c' suffix, (continued)
- [PATCH 14/26] hw/usb/quirks: Rename included source with '.inc.c' suffix, Philippe Mathieu-Daudé, 2020/07/04
- [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é <=
- [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