diff options
Diffstat (limited to 'drivers/input/misc/pwm-beeper.c')
| -rw-r--r-- | drivers/input/misc/pwm-beeper.c | 20 | 
1 files changed, 16 insertions, 4 deletions
| diff --git a/drivers/input/misc/pwm-beeper.c b/drivers/input/misc/pwm-beeper.c index fc84c8a51147..0808868461de 100644 --- a/drivers/input/misc/pwm-beeper.c +++ b/drivers/input/misc/pwm-beeper.c @@ -65,7 +65,7 @@ static int pwm_beeper_event(struct input_dev *input,  	return 0;  } -static int __devinit pwm_beeper_probe(struct platform_device *pdev) +static int pwm_beeper_probe(struct platform_device *pdev)  {  	unsigned long pwm_id = (unsigned long)pdev->dev.platform_data;  	struct pwm_beeper *beeper; @@ -75,7 +75,11 @@ static int __devinit pwm_beeper_probe(struct platform_device *pdev)  	if (!beeper)  		return -ENOMEM; -	beeper->pwm = pwm_request(pwm_id, "pwm beeper"); +	beeper->pwm = pwm_get(&pdev->dev, NULL); +	if (IS_ERR(beeper->pwm)) { +		dev_dbg(&pdev->dev, "unable to request PWM, trying legacy API\n"); +		beeper->pwm = pwm_request(pwm_id, "pwm beeper"); +	}  	if (IS_ERR(beeper->pwm)) {  		error = PTR_ERR(beeper->pwm); @@ -125,7 +129,7 @@ err_free:  	return error;  } -static int __devexit pwm_beeper_remove(struct platform_device *pdev) +static int pwm_beeper_remove(struct platform_device *pdev)  {  	struct pwm_beeper *beeper = platform_get_drvdata(pdev); @@ -171,13 +175,21 @@ static SIMPLE_DEV_PM_OPS(pwm_beeper_pm_ops,  #define PWM_BEEPER_PM_OPS NULL  #endif +#ifdef CONFIG_OF +static const struct of_device_id pwm_beeper_match[] = { +	{ .compatible = "pwm-beeper", }, +	{ }, +}; +#endif +  static struct platform_driver pwm_beeper_driver = {  	.probe	= pwm_beeper_probe, -	.remove = __devexit_p(pwm_beeper_remove), +	.remove = pwm_beeper_remove,  	.driver = {  		.name	= "pwm-beeper",  		.owner	= THIS_MODULE,  		.pm	= PWM_BEEPER_PM_OPS, +		.of_match_table = of_match_ptr(pwm_beeper_match),  	},  };  module_platform_driver(pwm_beeper_driver); |