diff options
author | Gilad Broner <gbroner@codeaurora.org> | 2015-02-03 11:31:35 +0200 |
---|---|---|
committer | David Keitel <dkeitel@codeaurora.org> | 2016-03-22 10:58:45 -0700 |
commit | da7f098c895d1f612f308b25d38acadb492a058a (patch) | |
tree | edc6698eeeb0c2ad8550e44fed05f22a0837cd52 | |
parent | 413d97dd2a8c5f39c43346bfa8644bf6ad1a4ce6 (diff) |
scsi: ufs: enable runtime pm only after ufshcd init
Previous code enables runtime pm before ufshcd_init() is completed,
and before the hba struct is stored in the platform device private
data. This means that pm runtime calls will have null hba pointer
as well as partially initialized driver.
Instead, enable pm runtime only after ufshcd_init() is done and
after hba struct is stored in the platform device private data.
Change-Id: I8225736916a9eda3d9f58d2b0e2566065766b914
Signed-off-by: Gilad Broner <gbroner@codeaurora.org>
-rw-r--r-- | drivers/scsi/ufs/ufshcd-pltfrm.c | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/drivers/scsi/ufs/ufshcd-pltfrm.c b/drivers/scsi/ufs/ufshcd-pltfrm.c index 001dd8df92d7..d80e837bfb88 100644 --- a/drivers/scsi/ufs/ufshcd-pltfrm.c +++ b/drivers/scsi/ufs/ufshcd-pltfrm.c @@ -378,8 +378,6 @@ int ufshcd_pltfrm_init(struct platform_device *pdev, ufshcd_parse_pm_qos(hba, irq); ufshcd_parse_pm_levels(hba); - pm_runtime_set_active(&pdev->dev); - pm_runtime_enable(&pdev->dev); if (!dev->dma_mask) dev->dma_mask = &dev->coherent_dma_mask; @@ -387,16 +385,15 @@ int ufshcd_pltfrm_init(struct platform_device *pdev, err = ufshcd_init(hba, mmio_base, irq); if (err) { dev_err(dev, "Intialization failed\n"); - goto out_disable_rpm; + goto dealloc_host; } platform_set_drvdata(pdev, hba); - return 0; + pm_runtime_set_active(&pdev->dev); + pm_runtime_enable(&pdev->dev); -out_disable_rpm: - pm_runtime_disable(&pdev->dev); - pm_runtime_set_suspended(&pdev->dev); + return 0; dealloc_host: ufshcd_dealloc_host(hba); out: |