|
@@ -126,40 +126,33 @@ static int atmel_pwm_bl_probe(struct platform_device *pdev)
|
|
|
struct atmel_pwm_bl *pwmbl;
|
|
|
int retval;
|
|
|
|
|
|
+ pdata = dev_get_platdata(&pdev->dev);
|
|
|
+ if (!pdata)
|
|
|
+ return -ENODEV;
|
|
|
+
|
|
|
+ if (pdata->pwm_compare_max < pdata->pwm_duty_max ||
|
|
|
+ pdata->pwm_duty_min > pdata->pwm_duty_max ||
|
|
|
+ pdata->pwm_frequency == 0)
|
|
|
+ return -EINVAL;
|
|
|
+
|
|
|
pwmbl = devm_kzalloc(&pdev->dev, sizeof(struct atmel_pwm_bl),
|
|
|
GFP_KERNEL);
|
|
|
if (!pwmbl)
|
|
|
return -ENOMEM;
|
|
|
|
|
|
pwmbl->pdev = pdev;
|
|
|
-
|
|
|
- pdata = dev_get_platdata(&pdev->dev);
|
|
|
- if (!pdata) {
|
|
|
- retval = -ENODEV;
|
|
|
- goto err_free_mem;
|
|
|
- }
|
|
|
-
|
|
|
- if (pdata->pwm_compare_max < pdata->pwm_duty_max ||
|
|
|
- pdata->pwm_duty_min > pdata->pwm_duty_max ||
|
|
|
- pdata->pwm_frequency == 0) {
|
|
|
- retval = -EINVAL;
|
|
|
- goto err_free_mem;
|
|
|
- }
|
|
|
-
|
|
|
pwmbl->pdata = pdata;
|
|
|
pwmbl->gpio_on = pdata->gpio_on;
|
|
|
|
|
|
retval = pwm_channel_alloc(pdata->pwm_channel, &pwmbl->pwmc);
|
|
|
if (retval)
|
|
|
- goto err_free_mem;
|
|
|
+ return retval;
|
|
|
|
|
|
if (pwmbl->gpio_on != -1) {
|
|
|
retval = devm_gpio_request(&pdev->dev, pwmbl->gpio_on,
|
|
|
"gpio_atmel_pwm_bl");
|
|
|
- if (retval) {
|
|
|
- pwmbl->gpio_on = -1;
|
|
|
+ if (retval)
|
|
|
goto err_free_pwm;
|
|
|
- }
|
|
|
|
|
|
/* Turn display off by default. */
|
|
|
retval = gpio_direction_output(pwmbl->gpio_on,
|
|
@@ -197,7 +190,7 @@ static int atmel_pwm_bl_probe(struct platform_device *pdev)
|
|
|
|
|
|
err_free_pwm:
|
|
|
pwm_channel_free(&pwmbl->pwmc);
|
|
|
-err_free_mem:
|
|
|
+
|
|
|
return retval;
|
|
|
}
|
|
|
|