diff options
Diffstat (limited to 'drivers/pwm/pwm-sti.c')
| -rw-r--r-- | drivers/pwm/pwm-sti.c | 17 | 
1 files changed, 10 insertions, 7 deletions
| diff --git a/drivers/pwm/pwm-sti.c b/drivers/pwm/pwm-sti.c index 69b1113c6b82..826eb547cc96 100644 --- a/drivers/pwm/pwm-sti.c +++ b/drivers/pwm/pwm-sti.c @@ -570,6 +570,7 @@ static int sti_pwm_probe(struct platform_device *pdev)  {  	struct device *dev = &pdev->dev;  	struct sti_pwm_compat_data *cdata; +	struct pwm_chip *chip;  	struct sti_pwm_chip *pc;  	unsigned int i;  	int irq, ret; @@ -577,6 +578,7 @@ static int sti_pwm_probe(struct platform_device *pdev)  	pc = devm_kzalloc(dev, sizeof(*pc), GFP_KERNEL);  	if (!pc)  		return -ENOMEM; +	chip = &pc->chip;  	cdata = devm_kzalloc(dev, sizeof(*cdata), GFP_KERNEL);  	if (!cdata) @@ -653,9 +655,9 @@ static int sti_pwm_probe(struct platform_device *pdev)  			return -ENOMEM;  	} -	pc->chip.dev = dev; -	pc->chip.ops = &sti_pwm_ops; -	pc->chip.npwm = max(cdata->pwm_num_devs, cdata->cpt_num_devs); +	chip->dev = dev; +	chip->ops = &sti_pwm_ops; +	chip->npwm = max(cdata->pwm_num_devs, cdata->cpt_num_devs);  	for (i = 0; i < cdata->cpt_num_devs; i++) {  		struct sti_cpt_ddata *ddata = &cdata->ddata[i]; @@ -664,23 +666,24 @@ static int sti_pwm_probe(struct platform_device *pdev)  		mutex_init(&ddata->lock);  	} -	ret = pwmchip_add(&pc->chip); +	ret = pwmchip_add(chip);  	if (ret < 0) {  		clk_unprepare(pc->pwm_clk);  		clk_unprepare(pc->cpt_clk);  		return ret;  	} -	platform_set_drvdata(pdev, pc); +	platform_set_drvdata(pdev, chip);  	return 0;  }  static void sti_pwm_remove(struct platform_device *pdev)  { -	struct sti_pwm_chip *pc = platform_get_drvdata(pdev); +	struct pwm_chip *chip = platform_get_drvdata(pdev); +	struct sti_pwm_chip *pc = to_sti_pwmchip(chip); -	pwmchip_remove(&pc->chip); +	pwmchip_remove(chip);  	clk_unprepare(pc->pwm_clk);  	clk_unprepare(pc->cpt_clk); | 
