Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Input: pwm-beeper - add devicetree probing support

A very simple binding, the only property is the phandle to the PWM.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Reviewed-by: Thierry Reding <thierry.reding@avionic-design.de>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>

authored by

Sascha Hauer and committed by
Dmitry Torokhov
d56a289b 8ed2757e

+21 -2
+7
Documentation/devicetree/bindings/input/pwm-beeper.txt
··· 1 + * PWM beeper device tree bindings 2 + 3 + Registers a PWM device as beeper. 4 + 5 + Required properties: 6 + - compatible: should be "pwm-beeper" 7 + - pwms: phandle to the physical PWM device
+1 -1
drivers/input/misc/Kconfig
··· 441 441 442 442 config INPUT_PWM_BEEPER 443 443 tristate "PWM beeper support" 444 - depends on HAVE_PWM 444 + depends on HAVE_PWM || PWM 445 445 help 446 446 Say Y here to get support for PWM based beeper devices. 447 447
+13 -1
drivers/input/misc/pwm-beeper.c
··· 75 75 if (!beeper) 76 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 84 if (IS_ERR(beeper->pwm)) { 81 85 error = PTR_ERR(beeper->pwm); ··· 175 171 #define PWM_BEEPER_PM_OPS NULL 176 172 #endif 177 173 174 + #ifdef CONFIG_OF 175 + static const struct of_device_id pwm_beeper_match[] = { 176 + { .compatible = "pwm-beeper", }, 177 + { }, 178 + }; 179 + #endif 180 + 178 181 static struct platform_driver pwm_beeper_driver = { 179 182 .probe = pwm_beeper_probe, 180 183 .remove = __devexit_p(pwm_beeper_remove), ··· 189 178 .name = "pwm-beeper", 190 179 .owner = THIS_MODULE, 191 180 .pm = PWM_BEEPER_PM_OPS, 181 + .of_match_table = of_match_ptr(pwm_beeper_match), 192 182 }, 193 183 }; 194 184 module_platform_driver(pwm_beeper_driver);