pwm: imx-tpm: fix probe crash due to access registers without clock
[linux-2.6-microblaze.git] / drivers / pwm / pwm-imx-tpm.c
index b04b974..c50ddba 100644 (file)
@@ -337,6 +337,7 @@ static int pwm_imx_tpm_probe(struct platform_device *pdev)
 {
        struct pwm_chip *chip;
        struct imx_tpm_pwm_chip *tpm;
+       struct clk *clk;
        void __iomem *base;
        int ret;
        unsigned int npwm;
@@ -346,6 +347,11 @@ static int pwm_imx_tpm_probe(struct platform_device *pdev)
        if (IS_ERR(base))
                return PTR_ERR(base);
 
+       clk = devm_clk_get_enabled(&pdev->dev, NULL);
+       if (IS_ERR(clk))
+               return dev_err_probe(&pdev->dev, PTR_ERR(clk),
+                                    "failed to get PWM clock\n");
+
        /* get number of channels */
        val = readl(base + PWM_IMX_TPM_PARAM);
        npwm = FIELD_GET(PWM_IMX_TPM_PARAM_CHAN, val);
@@ -358,11 +364,7 @@ static int pwm_imx_tpm_probe(struct platform_device *pdev)
        platform_set_drvdata(pdev, tpm);
 
        tpm->base = base;
-
-       tpm->clk = devm_clk_get_enabled(&pdev->dev, NULL);
-       if (IS_ERR(tpm->clk))
-               return dev_err_probe(&pdev->dev, PTR_ERR(tpm->clk),
-                                    "failed to get PWM clock\n");
+       tpm->clk = clk;
 
        chip->ops = &imx_tpm_pwm_ops;