Signed-off-by: Sascha Hauer <s.ha...@pengutronix.de>
---
 drivers/usb/core/usb.c | 6 ++++++
 include/usb/usb.h      | 7 +++++++
 2 files changed, 13 insertions(+)

diff --git a/drivers/usb/core/usb.c b/drivers/usb/core/usb.c
index 30c251f405..f25e350f15 100644
--- a/drivers/usb/core/usb.c
+++ b/drivers/usb/core/usb.c
@@ -78,11 +78,16 @@ static inline int usb_host_acquire(struct usb_host *host)
        if (host->sem)
                return -EAGAIN;
        host->sem++;
+
+       slice_acquire(&host->slice);
+
        return 0;
 }
 
 static inline void usb_host_release(struct usb_host *host)
 {
+       slice_release(&host->slice);
+
        if (host->sem > 0)
                host->sem--;
 }
@@ -92,6 +97,7 @@ int usb_register_host(struct usb_host *host)
        list_add_tail(&host->list, &host_list);
        host->busnum = host_busnum++;
        host->sem = 0;
+       slice_init(&host->slice, dev_name(host->hw_dev));
        return 0;
 }
 
diff --git a/include/usb/usb.h b/include/usb/usb.h
index c2085eae87..1b51a00ddc 100644
--- a/include/usb/usb.h
+++ b/include/usb/usb.h
@@ -20,6 +20,7 @@
 #define _USB_H_
 
 #include <driver.h>
+#include <slice.h>
 #include <usb/ch9.h>
 #include <usb/ch11.h>
 #include <usb/usb_defs.h>
@@ -165,11 +166,17 @@ struct usb_host {
        struct usb_device *root_dev;
        int sem;
        struct usb_phy *usbphy;
+       struct slice slice;
 };
 
 int usb_register_host(struct usb_host *);
 void usb_unregister_host(struct usb_host *host);
 
+static inline struct slice *usb_device_slice(struct usb_device *udev)
+{
+       return &udev->host->slice;
+}
+
 int usb_host_detect(struct usb_host *host);
 
 int usb_set_protocol(struct usb_device *dev, int ifnum, int protocol);
-- 
2.26.2


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

Reply via email to