{
        struct input_dev *input;
        struct device *dev = lradc->dev;
-       int ret;
 
        if (!lradc->use_touchscreen)
                return 0;
 
-       input = input_allocate_device();
+       input = devm_input_allocate_device(dev);
        if (!input)
                return -ENOMEM;
 
        input->name = DRIVER_NAME;
        input->id.bustype = BUS_HOST;
-       input->dev.parent = dev;
        input->open = mxs_lradc_ts_open;
        input->close = mxs_lradc_ts_close;
 
 
        lradc->ts_input = input;
        input_set_drvdata(input, lradc);
-       ret = input_register_device(input);
-       if (ret)
-               input_free_device(lradc->ts_input);
 
-       return ret;
+       return input_register_device(input);
 }
 
 static void mxs_lradc_ts_unregister(struct mxs_lradc *lradc)
                return;
 
        mxs_lradc_disable_ts(lradc);
-       input_unregister_device(lradc->ts_input);
 }
 
 /*