{ KE_KEY,  65, { KEY_PROG4 } },
        { KE_KEY,  66, { KEY_TOUCHPAD_OFF } },
        { KE_KEY,  67, { KEY_TOUCHPAD_ON } },
-       { KE_KEY,  68, { KEY_TOUCHPAD_TOGGLE } },
        { KE_KEY, 128, { KEY_ESC } },
 
        /*
        if (priv->features.ctrl_ps2_aux_port)
                i8042_command(¶m, value ? I8042_CMD_AUX_ENABLE : I8042_CMD_AUX_DISABLE);
 
-       if (send_events) {
-               /*
-                * On older models the EC controls the touchpad and toggles it
-                * on/off itself, in this case we report KEY_TOUCHPAD_ON/_OFF.
-                * If the EC did not toggle, report KEY_TOUCHPAD_TOGGLE.
-                */
-               if (value != priv->r_touchpad_val) {
-                       ideapad_input_report(priv, value ? 67 : 66);
-                       sysfs_notify(&priv->platform_device->dev.kobj, NULL, "touchpad");
-               } else {
-                       ideapad_input_report(priv, 68);
-               }
+       /*
+        * On older models the EC controls the touchpad and toggles it on/off
+        * itself, in this case we report KEY_TOUCHPAD_ON/_OFF. Some models do
+        * an acpi-notify with VPC bit 5 set on resume, so this function get
+        * called with send_events=true on every resume. Therefor if the EC did
+        * not toggle, do nothing to avoid sending spurious KEY_TOUCHPAD_TOGGLE.
+        */
+       if (send_events && value != priv->r_touchpad_val) {
+               ideapad_input_report(priv, value ? 67 : 66);
+               sysfs_notify(&priv->platform_device->dev.kobj, NULL, "touchpad");
        }
 
        priv->r_touchpad_val = value;