Module Name: src
Committed By: maya
Date: Sun Apr 19 17:19:13 UTC 2020
Modified Files:
src/sys/external/bsd/drm2/dist/drm: drm_drv.c drm_probe_helper.c
src/sys/external/bsd/drm2/dist/include/drm: drmP.h
Log Message:
For drm drivers and on monitor hotplug, report a 'display-cycle' hotkey click
If powerd is running, it will invoke the script
/etc/powerd/actions/display-cycle
To generate a diff of this commit:
cvs rdiff -u -r1.13 -r1.14 src/sys/external/bsd/drm2/dist/drm/drm_drv.c
cvs rdiff -u -r1.4 -r1.5 \
src/sys/external/bsd/drm2/dist/drm/drm_probe_helper.c
cvs rdiff -u -r1.39 -r1.40 src/sys/external/bsd/drm2/dist/include/drm/drmP.h
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/drm_drv.c
diff -u src/sys/external/bsd/drm2/dist/drm/drm_drv.c:1.13 src/sys/external/bsd/drm2/dist/drm/drm_drv.c:1.14
--- src/sys/external/bsd/drm2/dist/drm/drm_drv.c:1.13 Thu Mar 5 07:46:59 2020
+++ src/sys/external/bsd/drm2/dist/drm/drm_drv.c Sun Apr 19 17:19:13 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: drm_drv.c,v 1.13 2020/03/05 07:46:59 riastradh Exp $ */
+/* $NetBSD: drm_drv.c,v 1.14 2020/04/19 17:19:13 maya Exp $ */
/*
* Created: Fri Jan 19 10:48:35 2001 by [email protected]
@@ -29,7 +29,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: drm_drv.c,v 1.13 2020/03/05 07:46:59 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_drv.c,v 1.14 2020/04/19 17:19:13 maya Exp $");
#include <linux/debugfs.h>
#include <linux/fs.h>
@@ -660,6 +660,14 @@ struct drm_device *drm_dev_alloc(struct
kref_init(&dev->ref);
dev->dev = parent;
dev->driver = driver;
+#ifdef __NetBSD__
+ dev->sc_monitor_hotplug.smpsw_name = PSWITCH_HK_DISPLAY_CYCLE;
+ dev->sc_monitor_hotplug.smpsw_type = PSWITCH_TYPE_HOTKEY;
+
+ ret = sysmon_pswitch_register(&dev->sc_monitor_hotplug);
+ if (ret)
+ goto err_pswitch;
+#endif
INIT_LIST_HEAD(&dev->filelist);
INIT_LIST_HEAD(&dev->ctxlist);
@@ -727,6 +735,10 @@ err_free:
mutex_destroy(&dev->master_mutex);
mutex_destroy(&dev->ctxlist_mutex);
mutex_destroy(&dev->struct_mutex);
+#ifdef __NetBSD__
+err_pswitch:
+ sysmon_pswitch_unregister(&dev->sc_monitor_hotplug);
+#endif
kfree(dev);
return NULL;
}
@@ -739,6 +751,10 @@ static void drm_dev_release(struct kref
if (drm_core_check_feature(dev, DRIVER_GEM))
drm_gem_destroy(dev);
+#ifdef __NetBSD__
+ sysmon_pswitch_unregister(&dev->sc_monitor_hotplug);
+#endif
+
drm_legacy_ctxbitmap_cleanup(dev);
drm_ht_remove(&dev->map_hash);
drm_fs_inode_free(dev->anon_inode);
Index: src/sys/external/bsd/drm2/dist/drm/drm_probe_helper.c
diff -u src/sys/external/bsd/drm2/dist/drm/drm_probe_helper.c:1.4 src/sys/external/bsd/drm2/dist/drm/drm_probe_helper.c:1.5
--- src/sys/external/bsd/drm2/dist/drm/drm_probe_helper.c:1.4 Fri Feb 14 14:34:57 2020
+++ src/sys/external/bsd/drm2/dist/drm/drm_probe_helper.c Sun Apr 19 17:19:13 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: drm_probe_helper.c,v 1.4 2020/02/14 14:34:57 maya Exp $ */
+/* $NetBSD: drm_probe_helper.c,v 1.5 2020/04/19 17:19:13 maya Exp $ */
/*
* Copyright (c) 2006-2008 Intel Corporation
@@ -32,7 +32,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: drm_probe_helper.c,v 1.4 2020/02/14 14:34:57 maya Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_probe_helper.c,v 1.5 2020/04/19 17:19:13 maya Exp $");
#include <linux/export.h>
#include <linux/moduleparam.h>
@@ -328,6 +328,9 @@ EXPORT_SYMBOL(drm_helper_probe_single_co
*/
void drm_kms_helper_hotplug_event(struct drm_device *dev)
{
+#ifdef __NetBSD__
+ sysmon_pswitch_event(&dev->sc_monitor_hotplug, PSWITCH_EVENT_PRESSED);
+#endif
/* send a uevent + call fbdev */
drm_sysfs_hotplug_event(dev);
if (dev->mode_config.funcs->output_poll_changed)
Index: src/sys/external/bsd/drm2/dist/include/drm/drmP.h
diff -u src/sys/external/bsd/drm2/dist/include/drm/drmP.h:1.39 src/sys/external/bsd/drm2/dist/include/drm/drmP.h:1.40
--- src/sys/external/bsd/drm2/dist/include/drm/drmP.h:1.39 Thu Mar 5 08:36:53 2020
+++ src/sys/external/bsd/drm2/dist/include/drm/drmP.h Sun Apr 19 17:19:13 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: drmP.h,v 1.39 2020/03/05 08:36:53 riastradh Exp $ */
+/* $NetBSD: drmP.h,v 1.40 2020/04/19 17:19:13 maya Exp $ */
/*
* Internal Header for the Direct Rendering Manager
@@ -903,6 +903,7 @@ struct drm_device {
int irq;
#ifdef __NetBSD__
struct drm_bus_irq_cookie *irq_cookie;
+ struct sysmon_pswitch sc_monitor_hotplug;
#endif
/*