On Sun, Nov 17, 2013 at 04:07:53PM +0000, Jean-Sebastien Pedron wrote:
> Author: dumbbell
> Date: Sun Nov 17 16:07:52 2013
> New Revision: 258262
> URL: http://svnweb.freebsd.org/changeset/base/258262
> 
> Log:
>   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 <[email protected]>
> 
> Modified:
>   head/sys/dev/drm2/drm.h
>   head/sys/dev/drm2/drmP.h
>   head/sys/dev/drm2/drm_drv.c
>   head/sys/dev/drm2/drm_ioctl.c
> 
> Modified: head/sys/dev/drm2/drm.h
> ==============================================================================
> --- head/sys/dev/drm2/drm.h   Sun Nov 17 15:58:13 2013        (r258261)
> +++ head/sys/dev/drm2/drm.h   Sun Nov 17 16:07:52 2013        (r258262)
> @@ -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: head/sys/dev/drm2/drmP.h
> ==============================================================================
> --- head/sys/dev/drm2/drmP.h  Sun Nov 17 15:58:13 2013        (r258261)
> +++ head/sys/dev/drm2/drmP.h  Sun Nov 17 16:07:52 2013        (r258262)
> @@ -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: head/sys/dev/drm2/drm_drv.c
> ==============================================================================
> --- head/sys/dev/drm2/drm_drv.c       Sun Nov 17 15:58:13 2013        
> (r258261)
> +++ head/sys/dev/drm2/drm_drv.c       Sun Nov 17 16:07:52 2013        
> (r258262)
> @@ -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;
> +
Why do you need a variable there, instead of simply returning true
from the drm_getcap ? I do not see any way to change the value of the
drm_timestamp_monotonic.

>  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: head/sys/dev/drm2/drm_ioctl.c
> ==============================================================================
> --- head/sys/dev/drm2/drm_ioctl.c     Sun Nov 17 15:58:13 2013        
> (r258261)
> +++ head/sys/dev/drm2/drm_ioctl.c     Sun Nov 17 16:07:52 2013        
> (r258262)
> @@ -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;
>       }

Attachment: pgp1Kq_fdB3u8.pgp
Description: PGP signature

Reply via email to