spi/pxa2xx: fix runtime PM enabling order
authorAntonio Ospite <ao2@ao2.it>
Fri, 30 May 2014 16:18:09 +0000 (18:18 +0200)
committerMark Brown <broonie@linaro.org>
Sun, 1 Jun 2014 10:40:50 +0000 (11:40 +0100)
In commit 7dd62787334ac6e0e2a0ef3f20bb1936ac431b04 (spi/pxa2xx: Convert
to core runtime PM) master->auto_runtime_pm was set to true.

In this case pm_runtime_enable() must be called *before*
spi_register_master(), otherwise the kernel hangs with this error
message:

  spi_master spi0: Failed to power device: -13

A similar fix, but for spi/hspi, was applied in
268d76430d1b68c340687357ffd18b4b12d02269.

Signed-off-by: Antonio Ospite <ao2@ao2.it>
Signed-off-by: Mark Brown <broonie@linaro.org>
drivers/spi/spi-pxa2xx.c

index 41185d0557fa5575531d6da9318b7c135198a681..a07b7581444234780a923d5fc5ada526e1728605 100644 (file)
@@ -1202,6 +1202,11 @@ static int pxa2xx_spi_probe(struct platform_device *pdev)
        tasklet_init(&drv_data->pump_transfers, pump_transfers,
                     (unsigned long)drv_data);
 
+       pm_runtime_set_autosuspend_delay(&pdev->dev, 50);
+       pm_runtime_use_autosuspend(&pdev->dev);
+       pm_runtime_set_active(&pdev->dev);
+       pm_runtime_enable(&pdev->dev);
+
        /* Register with the SPI framework */
        platform_set_drvdata(pdev, drv_data);
        status = devm_spi_register_master(&pdev->dev, master);
@@ -1210,11 +1215,6 @@ static int pxa2xx_spi_probe(struct platform_device *pdev)
                goto out_error_clock_enabled;
        }
 
-       pm_runtime_set_autosuspend_delay(&pdev->dev, 50);
-       pm_runtime_use_autosuspend(&pdev->dev);
-       pm_runtime_set_active(&pdev->dev);
-       pm_runtime_enable(&pdev->dev);
-
        return status;
 
 out_error_clock_enabled: