xhci-plat: Use USB glue driver device as sysdev

Currently xhci-plat's parent device is used as sysdev whereas USB driver
related page mapping is crated using xhci-plat's parent device's parent
device (i.e. USB glue driver device). This results into SMMU page fault
when XHCI controller is trying to access queued URB. Fix this issue by
checking sysdev is having property "linux,sysdev_is_parent" set, and if
it is set, use sysdev->parent as sysdev.

Change-Id: Iabf5b661b756c109663ad8b11a5a1dd9330c1171
Signed-off-by: Mayank Rana <mrana@codeaurora.org>
Signed-off-by: Hemant Kumar <hemantk@codeaurora.org>
This commit is contained in:
Mayank Rana 2018-03-20 10:47:43 -07:00 • committed by Jack Pham
commit 4c5b785727

View file

@ -193,6 +193,14 @@ static int xhci_plat_probe(struct platform_device *pdev)
if (!sysdev)
sysdev = &pdev->dev;
/*
* If sysdev dev is having parent i.e. "linux,sysdev_is_parent" is true,
* then use sysdev->parent device.
*/
if (sysdev->parent && sysdev->parent->of_node &&
device_property_read_bool(sysdev, "linux,sysdev_is_parent"))
sysdev = sysdev->parent;
/* Try to set 64-bit DMA first */
if (WARN_ON(!sysdev->dma_mask))
/* Platform did not initialize dma_mask */