Module Name:    src
Committed By:   riastradh
Date:           Thu Feb 11 04:51:44 UTC 2016

Modified Files:
        src/sys/external/bsd/drm2/dist/drm/nouveau: nouveau_drm.c nouveau_drm.h
        src/sys/external/bsd/drm2/nouveau: nouveau_pci.c

Log Message:
Pass a sensible device state pointer to nouveau suspend/resume ops.

Gives nouveau half a chance of suspending and resuming -- not that it
works on my test laptop yet, but it's a start.


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 \
    src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.c
cvs rdiff -u -r1.3 -r1.4 \
    src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.h
cvs rdiff -u -r1.6 -r1.7 src/sys/external/bsd/drm2/nouveau/nouveau_pci.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.c
diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.c:1.7 src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.c:1.8
--- src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.c:1.7	Tue Oct 27 13:21:18 2015
+++ src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.c	Thu Feb 11 04:51:44 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: nouveau_drm.c,v 1.7 2015/10/27 13:21:18 riastradh Exp $	*/
+/*	$NetBSD: nouveau_drm.c,v 1.8 2016/02/11 04:51:44 riastradh Exp $	*/
 
 /*
  * Copyright 2012 Red Hat Inc.
@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nouveau_drm.c,v 1.7 2015/10/27 13:21:18 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nouveau_drm.c,v 1.8 2016/02/11 04:51:44 riastradh Exp $");
 
 #include <linux/console.h>
 #include <linux/module.h>
@@ -612,12 +612,13 @@ fail_display:
 	return ret;
 }
 
-int nouveau_pmops_suspend(struct device *dev)
-{
 #ifdef __NetBSD__
-	struct drm_device *drm_dev = device_private(dev);
-	struct pci_dev *pdev __unused = drm_dev->pdev;
+int nouveau_pmops_suspend(struct drm_device *drm_dev)
 #else
+int nouveau_pmops_suspend(struct device *dev)
+#endif
+{
+#ifndef __NetBSD__
 	struct pci_dev *pdev = to_pci_dev(dev);
 	struct drm_device *drm_dev = pci_get_drvdata(pdev);
 #endif
@@ -674,12 +675,13 @@ nouveau_do_resume(struct drm_device *dev
 	return 0;
 }
 
-int nouveau_pmops_resume(struct device *dev)
-{
 #ifdef __NetBSD__
-	struct drm_device *drm_dev = device_private(dev);
-	struct pci_dev *pdev __unused = drm_dev->pdev;
+int nouveau_pmops_resume(struct drm_device *drm_dev)
 #else
+int nouveau_pmops_resume(struct device *dev)
+#endif
+{
+#ifndef __NetBSD__
 	struct pci_dev *pdev = to_pci_dev(dev);
 	struct drm_device *drm_dev = pci_get_drvdata(pdev);
 #endif

Index: src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.h
diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.h:1.3 src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.h:1.4
--- src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.h:1.3	Thu Oct 29 08:08:52 2015
+++ src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.h	Thu Feb 11 04:51:44 2016
@@ -160,8 +160,13 @@ nouveau_dev(struct drm_device *dev)
 	return nv_device(nouveau_drm(dev)->device);
 }
 
+#ifdef __NetBSD__
+int nouveau_pmops_suspend(struct drm_device *);
+int nouveau_pmops_resume(struct drm_device *);
+#else
 int nouveau_pmops_suspend(struct device *);
 int nouveau_pmops_resume(struct device *);
+#endif
 
 #define NV_FATAL(cli, fmt, args...) nv_fatal((cli), fmt, ##args)
 #define NV_ERROR(cli, fmt, args...) nv_error((cli), fmt, ##args)

Index: src/sys/external/bsd/drm2/nouveau/nouveau_pci.c
diff -u src/sys/external/bsd/drm2/nouveau/nouveau_pci.c:1.6 src/sys/external/bsd/drm2/nouveau/nouveau_pci.c:1.7
--- src/sys/external/bsd/drm2/nouveau/nouveau_pci.c:1.6	Tue Oct 27 21:46:42 2015
+++ src/sys/external/bsd/drm2/nouveau/nouveau_pci.c	Thu Feb 11 04:51:44 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: nouveau_pci.c,v 1.6 2015/10/27 21:46:42 mrg Exp $	*/
+/*	$NetBSD: nouveau_pci.c,v 1.7 2016/02/11 04:51:44 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2015 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nouveau_pci.c,v 1.6 2015/10/27 21:46:42 mrg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nouveau_pci.c,v 1.7 2016/02/11 04:51:44 riastradh Exp $");
 
 #include <sys/types.h>
 #include <sys/device.h>
@@ -208,15 +208,17 @@ out0:	pmf_device_deregister(self);
 static bool
 nouveau_pci_suspend(device_t self, const pmf_qual_t *qual __unused)
 {
+	struct nouveau_pci_softc *const sc = device_private(self);
 
-	return nouveau_pmops_suspend(self) == 0;
+	return nouveau_pmops_suspend(sc->sc_drm_dev) == 0;
 }
 
 static bool
 nouveau_pci_resume(device_t self, const pmf_qual_t *qual)
 {
+	struct nouveau_pci_softc *const sc = device_private(self);
 
-	return nouveau_pmops_resume(self) == 0;
+	return nouveau_pmops_resume(sc->sc_drm_dev) == 0;
 }
 
 static void

Reply via email to