Merge "usb: core: Add helper function to return controller id"
This commit is contained in:
commit
63624a4104
7 changed files with 29 additions and 0 deletions
|
@ -61,6 +61,7 @@ Optional properties:
|
|||
- snps,num-gsi-evt-buffs: If present, specifies number of GSI based hardware accelerated event buffers.
|
||||
1 event buffer is needed per h/w accelerated endpoint.
|
||||
- xhci-imod-value: Interrupt moderation interval for host mode (in increments of 250nsec).
|
||||
- usb-core-id: Differentiates between different controllers present on a device.
|
||||
|
||||
This is usually a subnode to DWC3 glue to which it is connected.
|
||||
|
||||
|
|
|
@ -2264,6 +2264,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)
|
||||
|
|
|
@ -717,6 +717,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
|
||||
|
|
|
@ -233,6 +233,10 @@ static int xhci_plat_probe(struct platform_device *pdev)
|
|||
|
||||
hcd_to_bus(xhci->shared_hcd)->skip_resume = true;
|
||||
|
||||
if (device_property_read_u32(pdev->dev.parent, "usb-core-id",
|
||||
&xhci->core_id))
|
||||
xhci->core_id = -EINVAL;
|
||||
|
||||
hcd->usb_phy = devm_usb_get_phy_by_phandle(&pdev->dev, "usb-phy", 0);
|
||||
if (IS_ERR(hcd->usb_phy)) {
|
||||
ret = PTR_ERR(hcd->usb_phy);
|
||||
|
|
|
@ -1519,6 +1519,8 @@ struct xhci_hcd {
|
|||
/* secondary interrupter */
|
||||
struct xhci_intr_reg __iomem **sec_ir_set;
|
||||
|
||||
int core_id;
|
||||
|
||||
/* Cached register copies of read-only HC data */
|
||||
__u32 hcs_params1;
|
||||
__u32 hcs_params2;
|
||||
|
|
|
@ -755,6 +755,7 @@ 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,
|
||||
|
|
|
@ -405,6 +405,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)
|
||||
|
@ -454,6 +455,7 @@ 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);
|
||||
|
||||
extern struct usb_hcd *usb_create_hcd(const struct hc_driver *driver,
|
||||
struct device *dev, const char *bus_name);
|
||||
|
|
Loading…
Add table
Reference in a new issue