Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f906c280 authored by Hemant Kumar's avatar Hemant Kumar
Browse files

usb: core: Add helper function to return controller id



Function provides controller id used by a remote entity
to identify which usb controller to program to initiate
data transfer.

Change-Id: Ied396f34496104c139a7910ee86844c124e6803f
Signed-off-by: default avatarHemant Kumar <hemantk@codeaurora.org>
parent a7e7dd8a
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -2292,6 +2292,16 @@ usb_hcd_get_xfer_ring_dma_addr(struct usb_device *udev,
	return hcd->driver->get_xfer_ring_dma_addr(hcd, udev, ep);
}

int usb_hcd_get_controller_id(struct usb_device *udev)
{
	struct usb_hcd	*hcd = bus_to_hcd(udev->bus);

	if (!HCD_RH_RUNNING(hcd))
		return -EINVAL;

	return hcd->driver->get_core_id(hcd);
}

#ifdef	CONFIG_PM

int hcd_bus_suspend(struct usb_device *rhdev, pm_message_t msg)
+9 −0
Original line number Diff line number Diff line
@@ -876,6 +876,15 @@ dma_addr_t usb_get_xfer_ring_dma_addr(struct usb_device *dev,
}
EXPORT_SYMBOL(usb_get_xfer_ring_dma_addr);

int usb_get_controller_id(struct usb_device *dev)
{
	if (dev->state == USB_STATE_NOTATTACHED)
		return -EINVAL;

	return usb_hcd_get_controller_id(dev);
}
EXPORT_SYMBOL(usb_get_controller_id);

/*-------------------------------------------------------------------*/
/*
 * __usb_get_extra_descriptor() finds a descriptor of specific type in the
+1 −0
Original line number Diff line number Diff line
@@ -836,6 +836,7 @@ extern dma_addr_t usb_get_sec_event_ring_dma_addr(struct usb_device *dev,
extern dma_addr_t usb_get_dcba_dma_addr(struct usb_device *dev);
extern dma_addr_t usb_get_xfer_ring_dma_addr(struct usb_device *dev,
	struct usb_host_endpoint *ep);
extern int usb_get_controller_id(struct usb_device *dev);

/* Sets up a group of bulk endpoints to support multiple stream IDs. */
extern int usb_alloc_streams(struct usb_interface *interface,
+2 −0
Original line number Diff line number Diff line
@@ -416,6 +416,7 @@ struct hc_driver {
			struct usb_device *udev, struct usb_host_endpoint *ep);
	dma_addr_t (*get_dcba_dma_addr)(struct usb_hcd *hcd,
			struct usb_device *udev);
	int (*get_core_id)(struct usb_hcd *hcd);
};

static inline int hcd_giveback_urb_in_bh(struct usb_hcd *hcd)
@@ -463,6 +464,7 @@ extern dma_addr_t usb_hcd_get_sec_event_ring_dma_addr(struct usb_device *udev,
extern dma_addr_t usb_hcd_get_dcba_dma_addr(struct usb_device *udev);
extern dma_addr_t usb_hcd_get_xfer_ring_dma_addr(struct usb_device *udev,
	struct usb_host_endpoint *ep);
extern int usb_hcd_get_controller_id(struct usb_device *udev);

struct usb_hcd *__usb_create_hcd(const struct hc_driver *driver,
		struct device *sysdev, struct device *dev, const char *bus_name,