@@ -58,7 +58,7 @@ static int twl4030_pwrbutton_probe(struct platform_device *pdev)
58
58
int irq = platform_get_irq (pdev , 0 );
59
59
int err ;
60
60
61
- pwr = input_allocate_device ( );
61
+ pwr = devm_input_allocate_device ( & pdev -> dev );
62
62
if (!pwr ) {
63
63
dev_err (& pdev -> dev , "Can't allocate power button\n" );
64
64
return - ENOMEM ;
@@ -70,39 +70,22 @@ static int twl4030_pwrbutton_probe(struct platform_device *pdev)
70
70
pwr -> phys = "twl4030_pwrbutton/input0" ;
71
71
pwr -> dev .parent = & pdev -> dev ;
72
72
73
- err = request_threaded_irq ( irq , NULL , powerbutton_irq ,
73
+ err = devm_request_threaded_irq ( & pwr -> dev , irq , NULL , powerbutton_irq ,
74
74
IRQF_TRIGGER_FALLING | IRQF_TRIGGER_RISING ,
75
75
"twl4030_pwrbutton" , pwr );
76
76
if (err < 0 ) {
77
77
dev_err (& pdev -> dev , "Can't get IRQ for pwrbutton: %d\n" , err );
78
- goto free_input_dev ;
78
+ return err ;
79
79
}
80
80
81
81
err = input_register_device (pwr );
82
82
if (err ) {
83
83
dev_err (& pdev -> dev , "Can't register power button: %d\n" , err );
84
- goto free_irq ;
84
+ return err ;
85
85
}
86
86
87
87
platform_set_drvdata (pdev , pwr );
88
88
89
- return 0 ;
90
-
91
- free_irq :
92
- free_irq (irq , pwr );
93
- free_input_dev :
94
- input_free_device (pwr );
95
- return err ;
96
- }
97
-
98
- static int __exit twl4030_pwrbutton_remove (struct platform_device * pdev )
99
- {
100
- struct input_dev * pwr = platform_get_drvdata (pdev );
101
- int irq = platform_get_irq (pdev , 0 );
102
-
103
- free_irq (irq , pwr );
104
- input_unregister_device (pwr );
105
-
106
89
return 0 ;
107
90
}
108
91
@@ -116,7 +99,6 @@ MODULE_DEVICE_TABLE(of, twl4030_pwrbutton_dt_match_table);
116
99
117
100
static struct platform_driver twl4030_pwrbutton_driver = {
118
101
.probe = twl4030_pwrbutton_probe ,
119
- .remove = __exit_p (twl4030_pwrbutton_remove ),
120
102
.driver = {
121
103
.name = "twl4030_pwrbutton" ,
122
104
.owner = THIS_MODULE ,
0 commit comments