phonepad:fix touch screen driver bug
[firefly-linux-kernel-4.4.55.git] / drivers / input / touchscreen / tps6507x-ts.c
index a644d18c04dce09862663004217864698948fef0..43031492d733a4c51b1888481b93265b2d13e881 100644 (file)
@@ -43,7 +43,6 @@ struct tps6507x_ts {
        struct input_dev        *input_dev;
        struct device           *dev;
        char                    phys[32];
-       struct workqueue_struct *wq;
        struct delayed_work     work;
        unsigned                polling;        /* polling is active */
        struct ts_event         tc;
@@ -220,8 +219,8 @@ done:
        poll = 1;
 
        if (poll) {
-               schd = queue_delayed_work(tsc->wq, &tsc->work,
-                                         msecs_to_jiffies(tsc->poll_period));
+               schd = schedule_delayed_work(&tsc->work,
+                                       msecs_to_jiffies(tsc->poll_period));
                if (schd)
                        tsc->polling = 1;
                else {
@@ -303,7 +302,6 @@ static int tps6507x_ts_probe(struct platform_device *pdev)
        tsc->input_dev = input_dev;
 
        INIT_DELAYED_WORK(&tsc->work, tps6507x_ts_handler);
-       tsc->wq = create_workqueue("TPS6507x Touchscreen");
 
        if (init_data) {
                tsc->poll_period = init_data->poll_period;
@@ -325,8 +323,8 @@ static int tps6507x_ts_probe(struct platform_device *pdev)
        if (error)
                goto err2;
 
-       schd = queue_delayed_work(tsc->wq, &tsc->work,
-                                 msecs_to_jiffies(tsc->poll_period));
+       schd = schedule_delayed_work(&tsc->work,
+                                    msecs_to_jiffies(tsc->poll_period));
 
        if (schd)
                tsc->polling = 1;
@@ -335,12 +333,12 @@ static int tps6507x_ts_probe(struct platform_device *pdev)
                dev_err(tsc->dev, "schedule failed");
                goto err2;
         }
+       platform_set_drvdata(pdev, tps6507x_dev);
 
        return 0;
 
 err2:
        cancel_delayed_work_sync(&tsc->work);
-       destroy_workqueue(tsc->wq);
        input_free_device(input_dev);
 err1:
        kfree(tsc);
@@ -356,9 +354,8 @@ static int __devexit tps6507x_ts_remove(struct platform_device *pdev)
        struct input_dev *input_dev = tsc->input_dev;
 
        cancel_delayed_work_sync(&tsc->work);
-       destroy_workqueue(tsc->wq);
 
-       input_free_device(input_dev);
+       input_unregister_device(input_dev);
 
        tps6507x_dev->ts = NULL;
        kfree(tsc);