pwm: rcar: Prepare removing pwm_chip from driver data
[linux-2.6-microblaze.git] / drivers / pwm / pwm-rcar.c
index 4838762..1dfcc74 100644 (file)
@@ -202,6 +202,7 @@ static const struct pwm_ops rcar_pwm_ops = {
 
 static int rcar_pwm_probe(struct platform_device *pdev)
 {
+       struct pwm_chip *chip;
        struct rcar_pwm_chip *rcar_pwm;
        int ret;
 
@@ -219,15 +220,16 @@ static int rcar_pwm_probe(struct platform_device *pdev)
                return PTR_ERR(rcar_pwm->clk);
        }
 
-       platform_set_drvdata(pdev, rcar_pwm);
+       chip = &rcar_pwm->chip;
+       chip->dev = &pdev->dev;
+       chip->ops = &rcar_pwm_ops;
+       chip->npwm = 1;
 
-       rcar_pwm->chip.dev = &pdev->dev;
-       rcar_pwm->chip.ops = &rcar_pwm_ops;
-       rcar_pwm->chip.npwm = 1;
+       platform_set_drvdata(pdev, chip);
 
        pm_runtime_enable(&pdev->dev);
 
-       ret = pwmchip_add(&rcar_pwm->chip);
+       ret = pwmchip_add(chip);
        if (ret < 0) {
                dev_err(&pdev->dev, "failed to register PWM chip: %d\n", ret);
                pm_runtime_disable(&pdev->dev);
@@ -239,9 +241,9 @@ static int rcar_pwm_probe(struct platform_device *pdev)
 
 static void rcar_pwm_remove(struct platform_device *pdev)
 {
-       struct rcar_pwm_chip *rcar_pwm = platform_get_drvdata(pdev);
+       struct pwm_chip *chip = platform_get_drvdata(pdev);
 
-       pwmchip_remove(&rcar_pwm->chip);
+       pwmchip_remove(chip);
 
        pm_runtime_disable(&pdev->dev);
 }