summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2018-05-17 03:38:27 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2018-05-17 03:38:26 -0700
commit99a11f15e4ced45efe166f1bf3b073be06f71db4 (patch)
tree671ee45c1f4e14b052bb8f12ce3004192535c33a /drivers
parent308200f414f3e85b2ed6931bfceee49dae188d1d (diff)
parentc342078792a4813368f1127272a26039112decb5 (diff)
Merge "Revert "sound: usb: Provide controller number in QMI response""
Diffstat (limited to 'drivers')
-rw-r--r--drivers/usb/core/hcd.c11
-rw-r--r--drivers/usb/core/usb.c10
-rw-r--r--drivers/usb/host/xhci.c12
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,
};