Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 17 Nov 2013 19:46:00 +0200
From:      Konstantin Belousov <kostikbel@gmail.com>
To:        Jean-Sebastien Pedron <dumbbell@FreeBSD.org>
Cc:        svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org
Subject:   Re: svn commit: r258262 - head/sys/dev/drm2
Message-ID:  <20131117174600.GN59496@kib.kiev.ua>
In-Reply-To: <201311171607.rAHG7rY7057352@svn.freebsd.org>
References:  <201311171607.rAHG7rY7057352@svn.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help

--Zh8cApnN4lZdodaB
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

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
>=20
> Log:
>   drm: Support DRM_CAP_TIMESTAMP_MONOTONIC capability
>  =20
>   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.
>  =20
>   Tested by:	Mathias Picker <Mathias.Picker@virtual-earth.de>
>=20
> 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
>=20
> Modified: head/sys/dev/drm2/drm.h
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
> --- 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
> =20
>  #include "drm_mode.h"
> =20
>=20
> Modified: head/sys/dev/drm2/drmP.h
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
> --- 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;
> =20
>  /* Device setup support (drm_drv.c) */
>  int	drm_probe(device_t kdev, drm_pci_id_list_t *idlist);
>=20
> Modified: head/sys/dev/drm2/drm_drv.c
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
> --- 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 =3D 0;
>  unsigned int drm_vblank_offdelay =3D 5000;    /* Default to 5000 msecs. =
*/
>  unsigned int drm_timestamp_precision =3D 20;  /* Default to 20 usecs. */
> =20
> +/*
> + * Default to use monotonic timestamps for wait-for-vblank and page-flip
> + * complete events.
> + */
> +unsigned int drm_timestamp_monotonic =3D 1;
> +
Why do you need a variable there, instead of simply returning true
=66rom 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,
>=20
> Modified: head/sys/dev/drm2/drm_ioctl.c
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
> --- 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 =3D dev->mode_config.prefer_shadow;
>  		break;
> +	case DRM_CAP_TIMESTAMP_MONOTONIC:
> +		req->value =3D drm_timestamp_monotonic;
> +		break;
>  	default:
>  		return EINVAL;
>  	}


--Zh8cApnN4lZdodaB
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.22 (FreeBSD)

iQIcBAEBAgAGBQJSiQDXAAoJEJDCuSvBvK1BSGEQAIkumrRLhZaYfCV/gCoO3Tie
dNPHFdNq/wNHQf5HqxIkovIviorz7gUF+mEwlulJe1mvMhPIrM1QHAgtRIo783Ia
Q0Hyya1dz935Ejg/k7ENmmWaxTEsmV2OhpZD7TaqCH6zI0C2h5NcmfnLUglE01O9
IlY7zMYMvFMFfkl/aZlOOwsfquqVKYp7edB8N/N0LyLWFBIFtLNgZ1Zlt+03LAen
YTt2quSMrMES1gPT7I2mg2PaOsAZ3p09yNrdJz7C5avmenEX2e3a0+CQgJ+Yvv0M
xUOhzOeM/xCqM1lhYKx4kKZHHrK32FR67PqRG3hk+r0P4L3ZFTNx1uyAdnVHKSX8
mPNVliEOnzOWpT0QCou0cHTFb93KBOnTocgH7haZCauVXrnThfuZTz/gbT8Q/bkY
c9ZmGXzo8acUj9Z4l9bQ6xv1M0TyWPg0Y3Mob0OkXuyllEKjKyEu0cGmToyq1aE3
zkD9eR1zGCsma9wSM0zAIFWTyXkGYn4v47A0kb/A8ApyQzoBa1qx4J8QK6Db0bb9
0agcy4qTLHlpg3Vo56KoMYbVpZxRNa6xWetRNjDWynLbLFAa2yE7hSFtSyRiykq7
5nHWTN1UO6gBbV14nx+R2j+La3dQJGYnaO4INONqL0SWssgxzbc8VYZj1sFFqH5P
fbj1Et6j0DPttwKv6pBI
=jV7/
-----END PGP SIGNATURE-----

--Zh8cApnN4lZdodaB--



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