Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 28 Nov 2013 09:30:05 +0000 (UTC)
From:      Jean-Sebastien Pedron <dumbbell@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org
Subject:   svn commit: r258706 - stable/10/sys/dev/drm2
Message-ID:  <201311280930.rAS9U59h066580@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: dumbbell
Date: Thu Nov 28 09:30:05 2013
New Revision: 258706
URL: http://svnweb.freebsd.org/changeset/base/258706

Log:
  MFC r258262:
  
  drm: Support DRM_CAP_TIMESTAMP_MONOTONIC capability
  
  This fixes DPMS with KDE and radeonkms. Without this, the display would
  freeze when the monitor is put into sleep state, and only resumes after
  several dozens of minutes once the monitor is powered on again.
  
  Tested by:	Mathias Picker <Mathias.Picker@virtual-earth.de>
  Approved by:	re (kib)

Modified:
  stable/10/sys/dev/drm2/drm.h
  stable/10/sys/dev/drm2/drmP.h
  stable/10/sys/dev/drm2/drm_drv.c
  stable/10/sys/dev/drm2/drm_ioctl.c
Directory Properties:
  stable/10/sys/   (props changed)

Modified: stable/10/sys/dev/drm2/drm.h
==============================================================================
--- stable/10/sys/dev/drm2/drm.h	Thu Nov 28 08:54:15 2013	(r258705)
+++ stable/10/sys/dev/drm2/drm.h	Thu Nov 28 09:30:05 2013	(r258706)
@@ -1015,6 +1015,8 @@ struct drm_event_vblank {
 #define DRM_CAP_VBLANK_HIGH_CRTC 0x2
 #define DRM_CAP_DUMB_PREFERRED_DEPTH 0x3
 #define DRM_CAP_DUMB_PREFER_SHADOW 0x4
+#define DRM_CAP_PRIME 0x5
+#define DRM_CAP_TIMESTAMP_MONOTONIC 0x6
 
 #include "drm_mode.h"
 

Modified: stable/10/sys/dev/drm2/drmP.h
==============================================================================
--- stable/10/sys/dev/drm2/drmP.h	Thu Nov 28 08:54:15 2013	(r258705)
+++ stable/10/sys/dev/drm2/drmP.h	Thu Nov 28 09:30:05 2013	(r258706)
@@ -1067,6 +1067,7 @@ extern int	drm_debug_flag;
 extern int	drm_notyet_flag;
 extern unsigned int drm_vblank_offdelay;
 extern unsigned int drm_timestamp_precision;
+extern unsigned int drm_timestamp_monotonic;
 
 /* Device setup support (drm_drv.c) */
 int	drm_probe(device_t kdev, drm_pci_id_list_t *idlist);

Modified: stable/10/sys/dev/drm2/drm_drv.c
==============================================================================
--- stable/10/sys/dev/drm2/drm_drv.c	Thu Nov 28 08:54:15 2013	(r258705)
+++ stable/10/sys/dev/drm2/drm_drv.c	Thu Nov 28 09:30:05 2013	(r258706)
@@ -56,6 +56,12 @@ int drm_notyet_flag = 0;
 unsigned int drm_vblank_offdelay = 5000;    /* Default to 5000 msecs. */
 unsigned int drm_timestamp_precision = 20;  /* Default to 20 usecs. */
 
+/*
+ * Default to use monotonic timestamps for wait-for-vblank and page-flip
+ * complete events.
+ */
+unsigned int drm_timestamp_monotonic = 1;
+
 static int drm_load(struct drm_device *dev);
 static void drm_unload(struct drm_device *dev);
 static drm_pci_id_list_t *drm_find_description(int vendor, int device,

Modified: stable/10/sys/dev/drm2/drm_ioctl.c
==============================================================================
--- stable/10/sys/dev/drm2/drm_ioctl.c	Thu Nov 28 08:54:15 2013	(r258705)
+++ stable/10/sys/dev/drm2/drm_ioctl.c	Thu Nov 28 09:30:05 2013	(r258706)
@@ -250,6 +250,9 @@ int drm_getcap(struct drm_device *dev, v
 	case DRM_CAP_DUMB_PREFER_SHADOW:
 		req->value = dev->mode_config.prefer_shadow;
 		break;
+	case DRM_CAP_TIMESTAMP_MONOTONIC:
+		req->value = drm_timestamp_monotonic;
+		break;
 	default:
 		return EINVAL;
 	}



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201311280930.rAS9U59h066580>