+static int old_camera_power;
+
+static int sonypi_suspend(struct sys_device *dev, u32 state) {
+ sonypi_call2(0x81, 0); /* make sure we don't get any more events */
+ if (camera) {
+ old_camera_power = sonypi_device.camera_power;
+ sonypi_camera_off();
+ }
+ if (sonypi_device.model == SONYPI_DEVICE_MODEL_TYPE2)
+ sonypi_type2_dis();
+ else
+ sonypi_type1_dis();
+ /* disable ACPI mode */
+ if (!SONYPI_ACPI_ACTIVE && fnkeyinit)
+ outb(0xf1, 0xb2);
+ return 0;
+}
+
+static int sonypi_resume(struct sys_device *dev) {
+ /* Enable ACPI mode to get Fn key events */
+ if (!SONYPI_ACPI_ACTIVE && fnkeyinit)
+ outb(0xf0, 0xb2);
+ if (sonypi_device.model == SONYPI_DEVICE_MODEL_TYPE2)
+ sonypi_type2_srs();
+ else
+ sonypi_type1_srs();
+ sonypi_call1(0x82);
+ sonypi_call2(0x81, 0xff);
+ if (compat)
+ sonypi_call1(0x92);
+ else
+ sonypi_call1(0x82);
+ if (camera && old_camera_power)
+ sonypi_camera_on();
+ return 0;
+}
+
+/* Old PM scheme */