Skip to content

Commit

Permalink
usb: Add a slice to usb host controllers
Browse files Browse the repository at this point in the history
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
  • Loading branch information
saschahauer committed Aug 19, 2020
1 parent e17c408 commit 25c7a03
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 6 deletions.
12 changes: 7 additions & 5 deletions drivers/usb/core/usb.c
Expand Up @@ -75,28 +75,30 @@ static int host_busnum = 1;

static inline int usb_host_acquire(struct usb_host *host)
{
if (host->sem)
if (slice_acquired(&host->slice))
return -EAGAIN;
host->sem++;

slice_acquire(&host->slice);

return 0;
}

static inline void usb_host_release(struct usb_host *host)
{
if (host->sem > 0)
host->sem--;
slice_release(&host->slice);
}

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;
}

void usb_unregister_host(struct usb_host *host)
{
slice_exit(&host->slice);
list_del(&host->list);
}

Expand Down
8 changes: 7 additions & 1 deletion include/usb/usb.h
Expand Up @@ -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>
Expand Down Expand Up @@ -163,13 +164,18 @@ struct usb_host {
struct device_d *hw_dev;
int busnum;
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);
Expand Down

0 comments on commit 25c7a03

Please sign in to comment.