Staging: Merge branch 'staging-next' into 2.6.38-rc3
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / drivers / staging / ste_rmi4 / synaptics_i2c_rmi4.c
index fa1ee9d1188859c7965786acec309c96e35679a1..51b4a79e4b837ba506d1a8d0a771b098cee63158 100644 (file)
@@ -984,12 +984,6 @@ static int __devinit synaptics_rmi4_probe
        input_set_abs_params(rmi4_data->input_dev, ABS_MT_TOUCH_MAJOR, 0,
                                                MAX_TOUCH_MAJOR, 0, 0);
 
-       retval = input_register_device(rmi4_data->input_dev);
-       if (retval) {
-               dev_err(&client->dev, "%s:input register failed\n", __func__);
-               goto err_query_dev;
-       }
-
        /* Clear interrupts */
        synaptics_rmi4_i2c_block_read(rmi4_data,
                        rmi4_data->fn01_data_base_addr + 1, intr_status,
@@ -1001,14 +995,19 @@ static int __devinit synaptics_rmi4_probe
        if (retval) {
                dev_err(&client->dev, "%s:Unable to get attn irq %d\n",
                                __func__, platformdata->irq_number);
-               goto err_request_irq;
+               goto err_query_dev;
+       }
+
+       retval = input_register_device(rmi4_data->input_dev);
+       if (retval) {
+               dev_err(&client->dev, "%s:input register failed\n", __func__);
+               goto err_free_irq;
        }
 
        return retval;
 
-err_request_irq:
+err_free_irq:
        free_irq(platformdata->irq_number, rmi4_data);
-       input_unregister_device(rmi4_data->input_dev);
 err_query_dev:
        if (platformdata->regulator_en) {
                regulator_disable(rmi4_data->regulator);