@@ -198,54 +198,36 @@ static void lpc32xx_ts_close(struct input_dev *dev)
198198
199199static int lpc32xx_ts_probe (struct platform_device * pdev )
200200{
201+ struct device * dev = & pdev -> dev ;
201202 struct lpc32xx_tsc * tsc ;
202203 struct input_dev * input ;
203- struct resource * res ;
204- resource_size_t size ;
205204 int irq ;
206205 int error ;
207206
208- res = platform_get_resource (pdev , IORESOURCE_MEM , 0 );
209- if (!res ) {
210- dev_err (& pdev -> dev , "Can't get memory resource\n" );
211- return - ENOENT ;
212- }
213-
214207 irq = platform_get_irq (pdev , 0 );
215208 if (irq < 0 )
216209 return irq ;
217210
218- tsc = kzalloc (sizeof (* tsc ), GFP_KERNEL );
219- input = input_allocate_device ();
220- if (!tsc || !input ) {
221- dev_err (& pdev -> dev , "failed allocating memory\n" );
222- error = - ENOMEM ;
223- goto err_free_mem ;
224- }
211+ tsc = devm_kzalloc (dev , sizeof (* tsc ), GFP_KERNEL );
212+ if (!tsc )
213+ return - ENOMEM ;
225214
226- tsc -> dev = input ;
227215 tsc -> irq = irq ;
228216
229- size = resource_size (res );
230-
231- if (!request_mem_region (res -> start , size , pdev -> name )) {
232- dev_err (& pdev -> dev , "TSC registers are not free\n" );
233- error = - EBUSY ;
234- goto err_free_mem ;
235- }
217+ tsc -> tsc_base = devm_platform_ioremap_resource (pdev , 0 );
218+ if (IS_ERR (tsc -> tsc_base ))
219+ return PTR_ERR (tsc -> tsc_base );
236220
237- tsc -> tsc_base = ioremap (res -> start , size );
238- if (!tsc -> tsc_base ) {
239- dev_err (& pdev -> dev , "Can't map memory\n" );
240- error = - ENOMEM ;
241- goto err_release_mem ;
242- }
243-
244- tsc -> clk = clk_get (& pdev -> dev , NULL );
221+ tsc -> clk = devm_clk_get (dev , NULL );
245222 if (IS_ERR (tsc -> clk )) {
246223 dev_err (& pdev -> dev , "failed getting clock\n" );
247- error = PTR_ERR (tsc -> clk );
248- goto err_unmap ;
224+ return PTR_ERR (tsc -> clk );
225+ }
226+
227+ input = devm_input_allocate_device (dev );
228+ if (!input ) {
229+ dev_err (& pdev -> dev , "failed allocating input device\n" );
230+ return - ENOMEM ;
249231 }
250232
251233 input -> name = MOD_NAME ;
@@ -254,68 +236,33 @@ static int lpc32xx_ts_probe(struct platform_device *pdev)
254236 input -> id .vendor = 0x0001 ;
255237 input -> id .product = 0x0002 ;
256238 input -> id .version = 0x0100 ;
257- input -> dev .parent = & pdev -> dev ;
258239 input -> open = lpc32xx_ts_open ;
259240 input -> close = lpc32xx_ts_close ;
260241
261- input -> evbit [0 ] = BIT_MASK (EV_KEY ) | BIT_MASK (EV_ABS );
262- input -> keybit [BIT_WORD (BTN_TOUCH )] = BIT_MASK (BTN_TOUCH );
242+ input_set_capability (input , EV_KEY , BTN_TOUCH );
263243 input_set_abs_params (input , ABS_X , LPC32XX_TSC_MIN_XY_VAL ,
264244 LPC32XX_TSC_MAX_XY_VAL , 0 , 0 );
265245 input_set_abs_params (input , ABS_Y , LPC32XX_TSC_MIN_XY_VAL ,
266246 LPC32XX_TSC_MAX_XY_VAL , 0 , 0 );
267247
268248 input_set_drvdata (input , tsc );
249+ tsc -> dev = input ;
269250
270- error = request_irq ( tsc -> irq , lpc32xx_ts_interrupt ,
271- 0 , pdev -> name , tsc );
251+ error = devm_request_irq ( dev , tsc -> irq , lpc32xx_ts_interrupt ,
252+ 0 , pdev -> name , tsc );
272253 if (error ) {
273254 dev_err (& pdev -> dev , "failed requesting interrupt\n" );
274- goto err_put_clock ;
255+ return error ;
275256 }
276257
277258 error = input_register_device (input );
278259 if (error ) {
279260 dev_err (& pdev -> dev , "failed registering input device\n" );
280- goto err_free_irq ;
261+ return error ;
281262 }
282263
283264 platform_set_drvdata (pdev , tsc );
284- device_init_wakeup (& pdev -> dev , 1 );
285-
286- return 0 ;
287-
288- err_free_irq :
289- free_irq (tsc -> irq , tsc );
290- err_put_clock :
291- clk_put (tsc -> clk );
292- err_unmap :
293- iounmap (tsc -> tsc_base );
294- err_release_mem :
295- release_mem_region (res -> start , size );
296- err_free_mem :
297- input_free_device (input );
298- kfree (tsc );
299-
300- return error ;
301- }
302-
303- static int lpc32xx_ts_remove (struct platform_device * pdev )
304- {
305- struct lpc32xx_tsc * tsc = platform_get_drvdata (pdev );
306- struct resource * res ;
307-
308- free_irq (tsc -> irq , tsc );
309-
310- input_unregister_device (tsc -> dev );
311-
312- clk_put (tsc -> clk );
313-
314- iounmap (tsc -> tsc_base );
315- res = platform_get_resource (pdev , IORESOURCE_MEM , 0 );
316- release_mem_region (res -> start , resource_size (res ));
317-
318- kfree (tsc );
265+ device_init_wakeup (& pdev -> dev , true);
319266
320267 return 0 ;
321268}
@@ -384,7 +331,6 @@ MODULE_DEVICE_TABLE(of, lpc32xx_tsc_of_match);
384331
385332static struct platform_driver lpc32xx_ts_driver = {
386333 .probe = lpc32xx_ts_probe ,
387- .remove = lpc32xx_ts_remove ,
388334 .driver = {
389335 .name = MOD_NAME ,
390336 .pm = LPC32XX_TS_PM_OPS ,
0 commit comments