git: b52e36384091 - main - LinuxKPI: Implement backlight_enable and backlight_disable functions

Vladimir Kondratyev wulf at FreeBSD.org
Wed Sep 29 20:27:45 UTC 2021


The branch main has been updated by wulf:

URL: https://cgit.FreeBSD.org/src/commit/?id=b52e36384091c5f80b06b79f5889492eac074426

commit b52e36384091c5f80b06b79f5889492eac074426
Author:     Vladimir Kondratyev <wulf at FreeBSD.org>
AuthorDate: 2021-09-29 20:15:12 +0000
Commit:     Vladimir Kondratyev <wulf at FreeBSD.org>
CommitDate: 2021-09-29 20:15:12 +0000

    LinuxKPI: Implement backlight_enable and backlight_disable functions
    
    For now, disable backlight if brightness level is set to 0.
    In the future we may implement separate knob in backlight(8).
    
    Required by drm-kmod v5.6
    
    Reviewed by:    hselasky, manu
    MFC after:      2 weeks
    Differential revision:  https://reviews.freebsd.org/D32165
---
 .../linuxkpi/common/include/linux/backlight.h      | 22 ++++++++++++++++++++--
 sys/compat/linuxkpi/common/src/linux_pci.c         |  2 ++
 2 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/sys/compat/linuxkpi/common/include/linux/backlight.h b/sys/compat/linuxkpi/common/include/linux/backlight.h
index 1d2224811124..b3a07c4cdcaa 100644
--- a/sys/compat/linuxkpi/common/include/linux/backlight.h
+++ b/sys/compat/linuxkpi/common/include/linux/backlight.h
@@ -79,10 +79,10 @@ void linux_backlight_device_unregister(struct backlight_device *bd);
 	linux_backlight_device_register(name, dev, data, ops, props)
 #define	backlight_device_unregister(bd)	linux_backlight_device_unregister(bd)
 
-static inline void
+static inline int
 backlight_update_status(struct backlight_device *bd)
 {
-	bd->ops->update_status(bd);
+	return (bd->ops->update_status(bd));
 }
 
 static inline void
@@ -91,4 +91,22 @@ backlight_force_update(struct backlight_device *bd, int reason)
 	bd->props.brightness = bd->ops->get_brightness(bd);
 }
 
+static inline int
+backlight_enable(struct backlight_device *bd)
+{
+	if (bd == NULL)
+		return (0);
+	bd->props.power = 0/* FB_BLANK_UNBLANK */;
+	return (backlight_update_status(bd));
+}
+
+static inline int
+backlight_disable(struct backlight_device *bd)
+{
+	if (bd == NULL)
+		return (0);
+	bd->props.power = 4/* FB_BLANK_POWERDOWN */;
+	return (backlight_update_status(bd));
+}
+
 #endif	/* _LINUX_BACKLIGHT_H_ */
diff --git a/sys/compat/linuxkpi/common/src/linux_pci.c b/sys/compat/linuxkpi/common/src/linux_pci.c
index 73c9b67bbedb..44ed4b22de6f 100644
--- a/sys/compat/linuxkpi/common/src/linux_pci.c
+++ b/sys/compat/linuxkpi/common/src/linux_pci.c
@@ -1215,6 +1215,8 @@ linux_backlight_update_status(device_t dev, struct backlight_props *props)
 
 	pdev->dev.bd->props.brightness = pdev->dev.bd->props.max_brightness *
 		props->brightness / 100;
+	pdev->dev.bd->props.power = props->brightness == 0 ?
+		4/* FB_BLANK_POWERDOWN */ : 0/* FB_BLANK_UNBLANK */;
 	return (pdev->dev.bd->ops->update_status(pdev->dev.bd));
 }
 


More information about the dev-commits-src-all mailing list