2003-02-21 15:28:22

by Stelian Pop

[permalink] [raw]
Subject: [PATCH 2.5.62-bk] meye suspend/resume capabilities

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 <[email protected]>
+ Copyright (C) 2001-2003 Stelian Pop <[email protected]>
Copyright (C) 2001-2002 Alc?ve <http://www.alcove.com>
Copyright (C) 2000 Andrew Tridgell <[email protected]>

===== 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 <[email protected]>
+ * Copyright (C) 2001-2003 Stelian Pop <[email protected]>
*
* Copyright (C) 2001-2002 Alc?ve <http://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 <[email protected]>
+ * Copyright (C) 2001-2003 Stelian Pop <[email protected]>
*
* Copyright (C) 2001-2002 Alc?ve <http://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 <[email protected]>
+ * Copyright (C) 2001-2003 Stelian Pop <[email protected]>
*
* Copyright (C) 2001-2002 Alc?ve <http://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 <[email protected]>