goto err2;
        }
 
+       device_init_wakeup(&client->dev, 1);
        return 0;
 
  err2:
        return 0;
 }
 
+static int migor_ts_suspend(struct i2c_client *client, pm_message_t mesg)
+{
+       struct migor_ts_priv *priv = dev_get_drvdata(&client->dev);
+
+       if (device_may_wakeup(&client->dev))
+               enable_irq_wake(priv->irq);
+
+       return 0;
+}
+
+static int migor_ts_resume(struct i2c_client *client)
+{
+       struct migor_ts_priv *priv = dev_get_drvdata(&client->dev);
+
+       if (device_may_wakeup(&client->dev))
+               disable_irq_wake(priv->irq);
+
+       return 0;
+}
+
 static const struct i2c_device_id migor_ts_id[] = {
        { "migor_ts", 0 },
        { }
        },
        .probe = migor_ts_probe,
        .remove = migor_ts_remove,
+       .suspend = migor_ts_suspend,
+       .resume = migor_ts_resume,
        .id_table = migor_ts_id,
 };