diff options
author | Marcel Ziswiler <marcel.ziswiler@toradex.com> | 2018-12-27 14:59:47 +0100 |
---|---|---|
committer | Philippe Schenker <philippe.schenker@toradex.com> | 2018-12-27 15:57:49 +0100 |
commit | 26c1553bcb7a1f9ee5a7b5ccdea16decb37df07b (patch) | |
tree | 09a43c73917eace7161948b6aa213a62e5bfcb4c | |
parent | 50dc45b5d9874b553612adefcbd59ae6c9d9d79b (diff) |
Revert "MLK-16769-5: mtd: gpmi-nand runtime pm code change"
This reverts commit 6df9c073cb10a0f10d2fc2bea28f8133b5a89a66.
This fixes gpmi-nand being defunct on i.MX 6ULL and i.MX 7S/D just
hanging the ubifs background task during DMA.
Signed-off-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
Acked-by: Philippe Schenker <philippe.schenker@toradex.com>
-rw-r--r-- | drivers/mtd/nand/gpmi-nand/gpmi-nand.c | 29 |
1 files changed, 11 insertions, 18 deletions
diff --git a/drivers/mtd/nand/gpmi-nand/gpmi-nand.c b/drivers/mtd/nand/gpmi-nand/gpmi-nand.c index bea204284cd5..f6048409622b 100644 --- a/drivers/mtd/nand/gpmi-nand/gpmi-nand.c +++ b/drivers/mtd/nand/gpmi-nand/gpmi-nand.c @@ -900,6 +900,10 @@ static int acquire_resources(struct gpmi_nand_data *this) if (ret) goto exit_regs; + ret = acquire_dma_channels(this); + if (ret) + goto exit_regs; + ret = gpmi_get_clks(this); if (ret) goto exit_clock; @@ -2468,12 +2472,11 @@ static int gpmi_nand_remove(struct platform_device *pdev) #ifdef CONFIG_PM_SLEEP static int gpmi_pm_suspend(struct device *dev) { - int ret; + struct gpmi_nand_data *this = dev_get_drvdata(dev); + release_dma_channels(this); pinctrl_pm_select_sleep_state(dev); - ret = pm_runtime_force_suspend(dev); - - return ret; + return 0; } static int gpmi_pm_resume(struct device *dev) @@ -2481,15 +2484,12 @@ static int gpmi_pm_resume(struct device *dev) struct gpmi_nand_data *this = dev_get_drvdata(dev); int ret; - /* enable clock, acquire dma */ - ret = pm_runtime_force_resume(dev); - if (ret) { - dev_err(this->dev, "Error in resume: %d\n", ret); - return ret; - } - pinctrl_pm_select_default_state(dev); + ret = acquire_dma_channels(this); + if (ret < 0) + return ret; + /* re-init the GPMI registers */ this->flags &= ~GPMI_TIMING_INIT_OK; ret = gpmi_init(this); @@ -2521,8 +2521,6 @@ int gpmi_runtime_suspend(struct device *dev) gpmi_disable_clk(this); release_bus_freq(BUS_FREQ_HIGH); - release_dma_channels(this); - return 0; } @@ -2536,11 +2534,6 @@ int gpmi_runtime_resume(struct device *dev) return ret; request_bus_freq(BUS_FREQ_HIGH); - - ret = acquire_dma_channels(this); - if (ret < 0) - return ret; - return 0; } |