ts: rk29_i2c_goodix: fix shutdown panic, prevent unregister_early_suspend before...
author黄涛 <huangtao@rock-chips.com>
Thu, 8 Aug 2013 06:37:19 +0000 (14:37 +0800)
committer黄涛 <huangtao@rock-chips.com>
Thu, 8 Aug 2013 09:53:53 +0000 (17:53 +0800)
drivers/input/touchscreen/rk29_i2c_goodix.c

index 4ad739b43d32275a258465aebb58c8526605e323..d607eccecc8d545a727788941d89119522fbcdc6 100755 (executable)
@@ -780,7 +780,6 @@ static int rk_ts_probe(struct i2c_client *client, const struct i2c_device_id *id
        ts->power = goodix_ts_power;\r
        ts->get_touch_info = goodix_get_touch_info;\r
        ts->input_parms_init = goodix_input_params_init;\r
-       i2c_set_clientdata(client, ts);\r
        \r
 \r
        if (pdata->init_platform_hw)\r
@@ -821,6 +820,7 @@ static int rk_ts_probe(struct i2c_client *client, const struct i2c_device_id *id
        ts->early_suspend.resume = rk_ts_late_resume;\r
        register_early_suspend(&ts->early_suspend);\r
 #endif\r
+       i2c_set_clientdata(client, ts);\r
 \r
        info_buf= kzalloc(ts->max_touch_num*sizeof(struct rk_touch_info), GFP_KERNEL);\r
        if(!info_buf)\r
@@ -901,7 +901,8 @@ static void rk_ts_shutdown(struct i2c_client *client)
 {\r
 #ifdef CONFIG_HAS_EARLYSUSPEND\r
        struct rk_ts_data *ts = i2c_get_clientdata(client);\r
-       unregister_early_suspend(&ts->early_suspend);\r
+       if (ts)\r
+               unregister_early_suspend(&ts->early_suspend);\r
 #endif\r
 }\r
 \r