aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPramod Gurav <pramod.gurav@smartplayin.com>2014-07-31 01:13:58 -0400
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2014-07-31 14:58:47 -0400
commit4b080e3b2fda181817059dde10622e7cb4f85b02 (patch)
tree05a149578fffeeb96e2b9842b8446a2afc4146f0
parentf3f33c6776997db9d377ff3f1b759869f988d25e (diff)
Input: jornada720_ts - switch to using managed resources
This switches the driver to using managed resources to simplify error handling and to do away with remove function. Signed-off-by: Pramod Gurav <pramod.gurav@smartplayin.com> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
-rw-r--r--drivers/input/touchscreen/jornada720_ts.c45
1 files changed, 13 insertions, 32 deletions
diff --git a/drivers/input/touchscreen/jornada720_ts.c b/drivers/input/touchscreen/jornada720_ts.c
index 7324c5c0fb86..62af48bbcc27 100644
--- a/drivers/input/touchscreen/jornada720_ts.c
+++ b/drivers/input/touchscreen/jornada720_ts.c
@@ -104,13 +104,13 @@ static int jornada720_ts_probe(struct platform_device *pdev)
104 struct input_dev *input_dev; 104 struct input_dev *input_dev;
105 int error; 105 int error;
106 106
107 jornada_ts = kzalloc(sizeof(struct jornada_ts), GFP_KERNEL); 107 jornada_ts = devm_kzalloc(&pdev->dev, sizeof(*jornada_ts), GFP_KERNEL);
108 input_dev = input_allocate_device(); 108 if (!jornada_ts)
109 return -ENOMEM;
109 110
110 if (!jornada_ts || !input_dev) { 111 input_dev = devm_input_allocate_device(&pdev->dev);
111 error = -ENOMEM; 112 if (!input_dev)
112 goto fail1; 113 return -ENOMEM;
113 }
114 114
115 platform_set_drvdata(pdev, jornada_ts); 115 platform_set_drvdata(pdev, jornada_ts);
116 116
@@ -126,36 +126,18 @@ static int jornada720_ts_probe(struct platform_device *pdev)
126 input_set_abs_params(input_dev, ABS_X, 270, 3900, 0, 0); 126 input_set_abs_params(input_dev, ABS_X, 270, 3900, 0, 0);
127 input_set_abs_params(input_dev, ABS_Y, 180, 3700, 0, 0); 127 input_set_abs_params(input_dev, ABS_Y, 180, 3700, 0, 0);
128 128
129 error = request_irq(IRQ_GPIO9, 129 error = devm_request_irq(&pdev->dev, IRQ_GPIO9,
130 jornada720_ts_interrupt, 130 jornada720_ts_interrupt,
131 IRQF_TRIGGER_RISING, 131 IRQF_TRIGGER_RISING,
132 "HP7XX Touchscreen driver", pdev); 132 "HP7XX Touchscreen driver", pdev);
133 if (error) { 133 if (error) {
134 printk(KERN_INFO "HP7XX TS : Unable to acquire irq!\n"); 134 dev_err(&pdev->dev, "HP7XX TS : Unable to acquire irq!\n");
135 goto fail1; 135 return error;
136 } 136 }
137 137
138 error = input_register_device(jornada_ts->dev); 138 error = input_register_device(jornada_ts->dev);
139 if (error) 139 if (error)
140 goto fail2; 140 return error;
141
142 return 0;
143
144 fail2:
145 free_irq(IRQ_GPIO9, pdev);
146 fail1:
147 input_free_device(input_dev);
148 kfree(jornada_ts);
149 return error;
150}
151
152static int jornada720_ts_remove(struct platform_device *pdev)
153{
154 struct jornada_ts *jornada_ts = platform_get_drvdata(pdev);
155
156 free_irq(IRQ_GPIO9, pdev);
157 input_unregister_device(jornada_ts->dev);
158 kfree(jornada_ts);
159 141
160 return 0; 142 return 0;
161} 143}
@@ -165,7 +147,6 @@ MODULE_ALIAS("platform:jornada_ts");
165 147
166static struct platform_driver jornada720_ts_driver = { 148static struct platform_driver jornada720_ts_driver = {
167 .probe = jornada720_ts_probe, 149 .probe = jornada720_ts_probe,
168 .remove = jornada720_ts_remove,
169 .driver = { 150 .driver = {
170 .name = "jornada_ts", 151 .name = "jornada_ts",
171 .owner = THIS_MODULE, 152 .owner = THIS_MODULE,