diff options
author | Borislav Petkov <bp@suse.de> | 2021-03-15 10:49:00 +0100 |
---|---|---|
committer | Borislav Petkov <bp@suse.de> | 2021-03-15 10:49:00 +0100 |
commit | aa7680f6fe21ba92c3d633e345f85d4125cd56f1 (patch) | |
tree | 238310342ae16eb5a2cdc9e032d972936cc3fe77 /drivers/usb/core/usb.c | |
parent | d0962f2b24c99889a386f0658c71535f56358f77 (diff) | |
parent | 1e28eed17697bcf343c6743f0028cc3b5dd88bf0 (diff) | |
download | linux-aa7680f6fe21ba92c3d633e345f85d4125cd56f1.tar.gz linux-aa7680f6fe21ba92c3d633e345f85d4125cd56f1.tar.bz2 linux-aa7680f6fe21ba92c3d633e345f85d4125cd56f1.zip |
Merge tag 'v5.12-rc3' into x86/core
Pick up dependent SEV-ES urgent changes to base new work ontop.
Signed-off-by: Borislav Petkov <bp@suse.de>
Diffstat (limited to 'drivers/usb/core/usb.c')
-rw-r--r-- | drivers/usb/core/usb.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/drivers/usb/core/usb.c b/drivers/usb/core/usb.c index 8f07b0516100..a566bb494e24 100644 --- a/drivers/usb/core/usb.c +++ b/drivers/usb/core/usb.c @@ -748,6 +748,38 @@ void usb_put_intf(struct usb_interface *intf) } EXPORT_SYMBOL_GPL(usb_put_intf); +/** + * usb_intf_get_dma_device - acquire a reference on the usb interface's DMA endpoint + * @intf: the usb interface + * + * While a USB device cannot perform DMA operations by itself, many USB + * controllers can. A call to usb_intf_get_dma_device() returns the DMA endpoint + * for the given USB interface, if any. The returned device structure must be + * released with put_device(). + * + * See also usb_get_dma_device(). + * + * Returns: A reference to the usb interface's DMA endpoint; or NULL if none + * exists. + */ +struct device *usb_intf_get_dma_device(struct usb_interface *intf) +{ + struct usb_device *udev = interface_to_usbdev(intf); + struct device *dmadev; + + if (!udev->bus) + return NULL; + + dmadev = get_device(udev->bus->sysdev); + if (!dmadev || !dmadev->dma_mask) { + put_device(dmadev); + return NULL; + } + + return dmadev; +} +EXPORT_SYMBOL_GPL(usb_intf_get_dma_device); + /* USB device locking * * USB devices and interfaces are locked using the semaphore in their |