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, | |||
65 | return 0; | 65 | return 0; |
66 | } | 66 | } |
67 | 67 | ||
68 | static int __devinit pwm_beeper_probe(struct platform_device *pdev) | 68 | static int pwm_beeper_probe(struct platform_device *pdev) |
69 | { | 69 | { |
70 | unsigned long pwm_id = (unsigned long)pdev->dev.platform_data; | 70 | unsigned long pwm_id = (unsigned long)pdev->dev.platform_data; |
71 | struct pwm_beeper *beeper; | 71 | struct pwm_beeper *beeper; |
@@ -75,7 +75,11 @@ static int __devinit pwm_beeper_probe(struct platform_device *pdev) | |||
75 | if (!beeper) | 75 | if (!beeper) |
76 | return -ENOMEM; | 76 | return -ENOMEM; |
77 | 77 | ||
78 | beeper->pwm = pwm_request(pwm_id, "pwm beeper"); | 78 | beeper->pwm = pwm_get(&pdev->dev, NULL); |
79 | if (IS_ERR(beeper->pwm)) { | ||
80 | dev_dbg(&pdev->dev, "unable to request PWM, trying legacy API\n"); | ||
81 | beeper->pwm = pwm_request(pwm_id, "pwm beeper"); | ||
82 | } | ||
79 | 83 | ||
80 | if (IS_ERR(beeper->pwm)) { | 84 | if (IS_ERR(beeper->pwm)) { |
81 | error = PTR_ERR(beeper->pwm); | 85 | error = PTR_ERR(beeper->pwm); |
@@ -125,7 +129,7 @@ err_free: | |||
125 | return error; | 129 | return error; |
126 | } | 130 | } |
127 | 131 | ||
128 | static int __devexit pwm_beeper_remove(struct platform_device *pdev) | 132 | static int pwm_beeper_remove(struct platform_device *pdev) |
129 | { | 133 | { |
130 | struct pwm_beeper *beeper = platform_get_drvdata(pdev); | 134 | struct pwm_beeper *beeper = platform_get_drvdata(pdev); |
131 | 135 | ||
@@ -171,13 +175,21 @@ static SIMPLE_DEV_PM_OPS(pwm_beeper_pm_ops, | |||
171 | #define PWM_BEEPER_PM_OPS NULL | 175 | #define PWM_BEEPER_PM_OPS NULL |
172 | #endif | 176 | #endif |
173 | 177 | ||
178 | #ifdef CONFIG_OF | ||
179 | static const struct of_device_id pwm_beeper_match[] = { | ||
180 | { .compatible = "pwm-beeper", }, | ||
181 | { }, | ||
182 | }; | ||
183 | #endif | ||
184 | |||
174 | static struct platform_driver pwm_beeper_driver = { | 185 | static struct platform_driver pwm_beeper_driver = { |
175 | .probe = pwm_beeper_probe, | 186 | .probe = pwm_beeper_probe, |
176 | .remove = __devexit_p(pwm_beeper_remove), | 187 | .remove = pwm_beeper_remove, |
177 | .driver = { | 188 | .driver = { |
178 | .name = "pwm-beeper", | 189 | .name = "pwm-beeper", |
179 | .owner = THIS_MODULE, | 190 | .owner = THIS_MODULE, |
180 | .pm = PWM_BEEPER_PM_OPS, | 191 | .pm = PWM_BEEPER_PM_OPS, |
192 | .of_match_table = of_match_ptr(pwm_beeper_match), | ||
181 | }, | 193 | }, |
182 | }; | 194 | }; |
183 | module_platform_driver(pwm_beeper_driver); | 195 | module_platform_driver(pwm_beeper_driver); |