if (error)
                return error;
 
-       input_set_drvdata(input, joy);
-       error = input_register_device(input);
-       if (error) {
-               dev_err(dev, "Unable to register input device\n");
-               return error;
-       }
-
        joy->buffer = iio_channel_get_all_cb(dev, adc_joystick_handle, joy);
        if (IS_ERR(joy->buffer)) {
                dev_err(dev, "Unable to allocate callback buffer\n");
                return error;
        }
 
+       input_set_drvdata(input, joy);
+
+       error = input_register_device(input);
+       if (error) {
+               dev_err(dev, "Unable to register input device\n");
+               return error;
+       }
+
        return 0;
 }