From 3231fc3c1d23399f6c6ba4189992671504653daf Mon Sep 17 00:00:00 2001 From: Ramneek Mehresh Date: Mon, 23 Mar 2015 18:19:52 +0530 Subject: powerpc:rcpm:usb: Fix kernel crash in setting usb as wakeup source Fix kernel crash issue in setting usb as wake-up source for system sleep feature for relevant qoriq platforms (those supporting system sleep via rcpm) Signed-off-by: Ramneek Mehresh Change-Id: I838234aff00800b6fafbb02ec12de7d3f2cc6075 Reviewed-on: http://git.am.freescale.net:8181/33283 Tested-by: Review Code-CDREVIEW Reviewed-by: Honghua Yin diff --git a/arch/powerpc/platforms/85xx/qoriq_pm.c b/arch/powerpc/platforms/85xx/qoriq_pm.c index f1ec1bd..147656b 100644 --- a/arch/powerpc/platforms/85xx/qoriq_pm.c +++ b/arch/powerpc/platforms/85xx/qoriq_pm.c @@ -14,6 +14,7 @@ #include #include #include +#include #include @@ -42,7 +43,17 @@ void fsl_set_power_except(struct device *dev, int on) struct device_node *mac_node; int ret; - ret = of_property_read_u32_array(dev->of_node, "sleep", value, 2); + if (dev && !strncmp(dev->bus->name, "usb", 3)) { + struct usb_device *udev = container_of(dev, + struct usb_device, dev); + struct device *controller = udev->bus->controller; + + ret = of_property_read_u32_array(controller->parent->of_node, + "sleep", value, 2); + } else + ret = of_property_read_u32_array(dev->of_node, "sleep", + value, 2); + if (ret) { /* search fman mac node */ phandle_prop = of_get_property(dev->of_node, "fsl,fman-mac", diff --git a/drivers/usb/core/usb.c b/drivers/usb/core/usb.c index 5c4bc13..0a6ee2e 100644 --- a/drivers/usb/core/usb.c +++ b/drivers/usb/core/usb.c @@ -431,7 +431,6 @@ struct usb_device *usb_alloc_dev(struct usb_device *parent, dev->dev.groups = usb_device_groups; dev->dev.dma_mask = bus->controller->dma_mask; set_dev_node(&dev->dev, dev_to_node(bus->controller)); - dev->dev.of_node = bus->controller->of_node; dev->state = USB_STATE_ATTACHED; dev->lpm_disable_count = 1; atomic_set(&dev->urbnum, 0); diff --git a/drivers/usb/host/fsl-mph-dr-of.c b/drivers/usb/host/fsl-mph-dr-of.c index 0c8b8a8..2d01d6a 100644 --- a/drivers/usb/host/fsl-mph-dr-of.c +++ b/drivers/usb/host/fsl-mph-dr-of.c @@ -103,9 +103,6 @@ static struct platform_device *fsl_usb2_device_register( else dma_set_mask(&pdev->dev, DMA_BIT_MASK(32)); - if (pdata->operating_mode != FSL_USB2_DR_DEVICE) - pdev->dev.of_node = ofdev->dev.of_node; - retval = platform_device_add_data(pdev, pdata, sizeof(*pdata)); if (retval) goto error; -- cgit v0.10.2