[PATCH 2.5.62-bk] meye suspend/resume capabilities

From: Stelian Pop (stelian@popies.net)
Date: Fri Feb 21 2003 - 10:38:10 EST


Hi,

The attached patch adds suspend/resume capabilities
to the meye driver.

Linus, Alan, please apply.

Thanks,

Stelian.

===== Documentation/video4linux/meye.txt 1.5 vs edited =====
--- 1.5/Documentation/video4linux/meye.txt Fri Nov 8 16:32:10 2002
+++ edited/Documentation/video4linux/meye.txt Tue Feb 18 11:32:29 2003
@@ -1,6 +1,6 @@
 Vaio Picturebook Motion Eye Camera Driver Readme
 ------------------------------------------------
- Copyright (C) 2001-2002 Stelian Pop <stelian@popies.net>
+ Copyright (C) 2001-2003 Stelian Pop <stelian@popies.net>
         Copyright (C) 2001-2002 Alcôve <www.alcove.com>
         Copyright (C) 2000 Andrew Tridgell <tridge@samba.org>
 
===== include/linux/meye.h 1.2 vs edited =====
--- 1.2/include/linux/meye.h Fri Nov 8 16:26:15 2002
+++ edited/include/linux/meye.h Tue Feb 18 11:31:51 2003
@@ -1,7 +1,7 @@
 /*
  * Motion Eye video4linux driver for Sony Vaio PictureBook
  *
- * Copyright (C) 2001-2002 Stelian Pop <stelian@popies.net>
+ * Copyright (C) 2001-2003 Stelian Pop <stelian@popies.net>
  *
  * Copyright (C) 2001-2002 Alcôve <www.alcove.com>
  *
===== drivers/media/video/meye.h 1.6 vs edited =====
--- 1.6/drivers/media/video/meye.h Mon Nov 18 12:54:26 2002
+++ edited/drivers/media/video/meye.h Tue Feb 18 11:30:51 2003
@@ -1,7 +1,7 @@
 /*
  * Motion Eye video4linux driver for Sony Vaio PictureBook
  *
- * Copyright (C) 2001-2002 Stelian Pop <stelian@popies.net>
+ * Copyright (C) 2001-2003 Stelian Pop <stelian@popies.net>
  *
  * Copyright (C) 2001-2002 Alcôve <www.alcove.com>
  *
@@ -31,7 +31,13 @@
 #define _MEYE_PRIV_H_
 
 #define MEYE_DRIVER_MAJORVERSION 1
-#define MEYE_DRIVER_MINORVERSION 5
+#define MEYE_DRIVER_MINORVERSION 6
+
+#include <linux/config.h>
+#include <linux/types.h>
+#include <linux/pci.h>
+#include <linux/sonypi.h>
+#include <linux/meye.h>
 
 /****************************************************************************/
 /* Motion JPEG chip registers */
@@ -309,6 +315,10 @@
         struct video_device video_dev; /* video device parameters */
         struct video_picture picture; /* video picture parameters */
         struct meye_params params; /* additional parameters */
+#ifdef CONFIG_PM
+ u32 pm_state[16]; /* PCI configuration space */
+ u8 pm_mchip_mode; /* old mchip mode */
+#endif
 };
 
 #endif
===== drivers/media/video/meye.c 1.13 vs edited =====
--- 1.13/drivers/media/video/meye.c Fri Nov 22 16:01:02 2002
+++ edited/drivers/media/video/meye.c Tue Feb 18 11:30:43 2003
@@ -1,7 +1,7 @@
 /*
  * Motion Eye video4linux driver for Sony Vaio PictureBook
  *
- * Copyright (C) 2001-2002 Stelian Pop <stelian@popies.net>
+ * Copyright (C) 2001-2003 Stelian Pop <stelian@popies.net>
  *
  * Copyright (C) 2001-2002 Alcôve <www.alcove.com>
  *
@@ -1225,6 +1225,42 @@
         .fops = &meye_fops,
 };
 
+#ifdef CONFIG_PM
+static int meye_suspend(struct pci_dev *pdev, u32 state)
+{
+ pci_save_state(pdev, meye.pm_state);
+ meye.pm_mchip_mode = meye.mchip_mode;
+ mchip_hic_stop();
+ mchip_set(MCHIP_MM_INTA, 0x0);
+ return 0;
+}
+
+static int meye_resume(struct pci_dev *pdev)
+{
+ pci_restore_state(pdev, meye.pm_state);
+ pci_write_config_word(meye.mchip_dev, MCHIP_PCI_SOFTRESET_SET, 1);
+
+ mchip_delay(MCHIP_HIC_CMD, 0);
+ mchip_delay(MCHIP_HIC_STATUS, MCHIP_HIC_STATUS_IDLE);
+ wait_ms(1);
+ mchip_set(MCHIP_VRJ_SOFT_RESET, 1);
+ wait_ms(1);
+ mchip_set(MCHIP_MM_PCI_MODE, 5);
+ wait_ms(1);
+ mchip_set(MCHIP_MM_INTA, MCHIP_MM_INTA_HIC_1_MASK);
+
+ switch (meye.pm_mchip_mode) {
+ case MCHIP_HIC_MODE_CONT_OUT:
+ mchip_continuous_start();
+ break;
+ case MCHIP_HIC_MODE_CONT_COMP:
+ mchip_cont_compression_start();
+ break;
+ }
+ return 0;
+}
+#endif
+
 static int __devinit meye_probe(struct pci_dev *pcidev,
                                 const struct pci_device_id *ent) {
         int ret;
@@ -1391,6 +1427,10 @@
         .id_table = meye_pci_tbl,
         .probe = meye_probe,
         .remove = __devexit_p(meye_remove),
+#ifdef CONFIG_PM
+ .suspend = meye_suspend,
+ .resume = meye_resume,
+#endif
 };
 
 static int __init meye_init_module(void) {

-- 
Stelian Pop <stelian@popies.net>
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Sun Feb 23 2003 - 22:00:33 EST