diff options
| author | Linux Build Service Account <lnxbuild@localhost> | 2018-05-17 03:38:27 -0700 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2018-05-17 03:38:26 -0700 |
| commit | 99a11f15e4ced45efe166f1bf3b073be06f71db4 (patch) | |
| tree | 671ee45c1f4e14b052bb8f12ce3004192535c33a /drivers | |
| parent | 308200f414f3e85b2ed6931bfceee49dae188d1d (diff) | |
| parent | c342078792a4813368f1127272a26039112decb5 (diff) | |
Merge "Revert "sound: usb: Provide controller number in QMI response""
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/usb/core/hcd.c | 11 | ||||
| -rw-r--r-- | drivers/usb/core/usb.c | 10 | ||||
| -rw-r--r-- | drivers/usb/host/xhci.c | 12 |
3 files changed, 33 insertions, 0 deletions
diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c index 6fb109d88510..2184c5b53970 100644 --- a/drivers/usb/core/hcd.c +++ b/drivers/usb/core/hcd.c @@ -2242,6 +2242,17 @@ usb_hcd_get_sec_event_ring_dma_addr(struct usb_device *udev, } dma_addr_t +usb_hcd_get_dcba_dma_addr(struct usb_device *udev) +{ + struct usb_hcd *hcd = bus_to_hcd(udev->bus); + + if (!HCD_RH_RUNNING(hcd)) + return 0; + + return hcd->driver->get_dcba_dma_addr(hcd, udev); +} + +dma_addr_t usb_hcd_get_xfer_ring_dma_addr(struct usb_device *udev, struct usb_host_endpoint *ep) { diff --git a/drivers/usb/core/usb.c b/drivers/usb/core/usb.c index 65bf86f18a34..e64fd6570a23 100644 --- a/drivers/usb/core/usb.c +++ b/drivers/usb/core/usb.c @@ -697,6 +697,16 @@ usb_get_sec_event_ring_dma_addr(struct usb_device *dev, } EXPORT_SYMBOL(usb_get_sec_event_ring_dma_addr); +dma_addr_t +usb_get_dcba_dma_addr(struct usb_device *dev) +{ + if (dev->state == USB_STATE_NOTATTACHED) + return 0; + + return usb_hcd_get_dcba_dma_addr(dev); +} +EXPORT_SYMBOL(usb_get_dcba_dma_addr); + dma_addr_t usb_get_xfer_ring_dma_addr(struct usb_device *dev, struct usb_host_endpoint *ep) { diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c index 7e76573c8236..8a4217c0c56c 100644 --- a/drivers/usb/host/xhci.c +++ b/drivers/usb/host/xhci.c @@ -4999,6 +4999,17 @@ dma_addr_t xhci_get_sec_event_ring_dma_addr(struct usb_hcd *hcd, return 0; } +static dma_addr_t xhci_get_dcba_dma_addr(struct usb_hcd *hcd, + struct usb_device *udev) +{ + struct xhci_hcd *xhci = hcd_to_xhci(hcd); + + if (!(xhci->xhc_state & XHCI_STATE_HALTED) && xhci->dcbaa) + return xhci->dcbaa->dev_context_ptrs[udev->slot_id]; + + return 0; +} + dma_addr_t xhci_get_xfer_ring_dma_addr(struct usb_hcd *hcd, struct usb_device *udev, struct usb_host_endpoint *ep) { @@ -5094,6 +5105,7 @@ static const struct hc_driver xhci_hc_driver = { .sec_event_ring_cleanup = xhci_sec_event_ring_cleanup, .get_sec_event_ring_dma_addr = xhci_get_sec_event_ring_dma_addr, .get_xfer_ring_dma_addr = xhci_get_xfer_ring_dma_addr, + .get_dcba_dma_addr = xhci_get_dcba_dma_addr, .get_core_id = xhci_get_core_id, }; |
