ihid->ops->shutdown_tail(ihid->ops);
 }
 
+static int i2c_hid_core_suspend(struct i2c_hid *ihid)
+{
+       struct i2c_client *client = ihid->client;
+       struct hid_device *hid = ihid->hid;
+       int ret;
+
+       ret = hid_driver_suspend(hid, PMSG_SUSPEND);
+       if (ret < 0)
+               return ret;
+
+       /* Save some power */
+       i2c_hid_set_power(ihid, I2C_HID_PWR_SLEEP);
+
+       disable_irq(client->irq);
+
+       if (!device_may_wakeup(&client->dev))
+               i2c_hid_core_power_down(ihid);
+
+       return 0;
+}
+
+static int i2c_hid_core_resume(struct i2c_hid *ihid)
+{
+       struct i2c_client *client = ihid->client;
+       struct hid_device *hid = ihid->hid;
+       int ret;
+
+       if (!device_may_wakeup(&client->dev))
+               i2c_hid_core_power_up(ihid);
+
+       enable_irq(client->irq);
+
+       /* Instead of resetting device, simply powers the device on. This
+        * solves "incomplete reports" on Raydium devices 2386:3118 and
+        * 2386:4B33 and fixes various SIS touchscreens no longer sending
+        * data after a suspend/resume.
+        *
+        * However some ALPS touchpads generate IRQ storm without reset, so
+        * let's still reset them here.
+        */
+       if (ihid->quirks & I2C_HID_QUIRK_RESET_ON_RESUME)
+               ret = i2c_hid_hwreset(ihid);
+       else
+               ret = i2c_hid_set_power(ihid, I2C_HID_PWR_ON);
+
+       if (ret)
+               return ret;
+
+       return hid_driver_reset_resume(hid);
+}
+
 /**
  * i2c_hid_core_initial_power_up() - First time power up of the i2c-hid device.
  * @ihid: The ihid object created during probe.
 }
 EXPORT_SYMBOL_GPL(i2c_hid_core_shutdown);
 
-static int i2c_hid_core_suspend(struct device *dev)
+static int i2c_hid_core_pm_suspend(struct device *dev)
 {
        struct i2c_client *client = to_i2c_client(dev);
        struct i2c_hid *ihid = i2c_get_clientdata(client);
-       struct hid_device *hid = ihid->hid;
-       int ret;
-
-       ret = hid_driver_suspend(hid, PMSG_SUSPEND);
-       if (ret < 0)
-               return ret;
 
-       /* Save some power */
-       i2c_hid_set_power(ihid, I2C_HID_PWR_SLEEP);
-
-       disable_irq(client->irq);
-
-       if (!device_may_wakeup(&client->dev))
-               i2c_hid_core_power_down(ihid);
-
-       return 0;
+       return i2c_hid_core_suspend(ihid);
 }
 
-static int i2c_hid_core_resume(struct device *dev)
+static int i2c_hid_core_pm_resume(struct device *dev)
 {
-       int ret;
        struct i2c_client *client = to_i2c_client(dev);
        struct i2c_hid *ihid = i2c_get_clientdata(client);
-       struct hid_device *hid = ihid->hid;
 
-       if (!device_may_wakeup(&client->dev))
-               i2c_hid_core_power_up(ihid);
-
-       enable_irq(client->irq);
-
-       /* Instead of resetting device, simply powers the device on. This
-        * solves "incomplete reports" on Raydium devices 2386:3118 and
-        * 2386:4B33 and fixes various SIS touchscreens no longer sending
-        * data after a suspend/resume.
-        *
-        * However some ALPS touchpads generate IRQ storm without reset, so
-        * let's still reset them here.
-        */
-       if (ihid->quirks & I2C_HID_QUIRK_RESET_ON_RESUME)
-               ret = i2c_hid_hwreset(ihid);
-       else
-               ret = i2c_hid_set_power(ihid, I2C_HID_PWR_ON);
-
-       if (ret)
-               return ret;
-
-       return hid_driver_reset_resume(hid);
+       return i2c_hid_core_resume(ihid);
 }
 
 const struct dev_pm_ops i2c_hid_core_pm = {
-       SYSTEM_SLEEP_PM_OPS(i2c_hid_core_suspend, i2c_hid_core_resume)
+       SYSTEM_SLEEP_PM_OPS(i2c_hid_core_pm_suspend, i2c_hid_core_pm_resume)
 };
 EXPORT_SYMBOL_GPL(i2c_hid_core_pm);