From patchwork Tue Aug 18 17:07:23 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthias Hopf X-Patchwork-Id: 42380 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by demeter.kernel.org (8.14.2/8.14.2) with ESMTP id n7IH7UU3031932 for ; Tue, 18 Aug 2009 17:07:30 GMT Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 949689E761; Tue, 18 Aug 2009 10:07:29 -0700 (PDT) X-Original-To: intel-gfx@lists.freedesktop.org Delivered-To: intel-gfx@lists.freedesktop.org Received: from mx1.suse.de (cantor.suse.de [195.135.220.2]) by gabe.freedesktop.org (Postfix) with ESMTP id 48E489E761 for ; Tue, 18 Aug 2009 10:07:28 -0700 (PDT) Received: from relay2.suse.de (relay-ext.suse.de [195.135.221.8]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.suse.de (Postfix) with ESMTP id 2B6ED749C2 for ; Tue, 18 Aug 2009 19:07:27 +0200 (CEST) From: Matthias Hopf To: intel-gfx@lists.freedesktop.org Date: Tue, 18 Aug 2009 19:07:23 +0200 Message-Id: <1250615246-26111-1-git-send-email-mhopf@suse.de> X-Mailer: git-send-email 1.6.0.2 Subject: [Intel-gfx] [PATCH] Also write to bl_power when setting brightness. X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.9 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: intel-gfx-bounces@lists.freedesktop.org Errors-To: intel-gfx-bounces@lists.freedesktop.org Switches backlight on/off on controllers that support this api. --- src/drmmode_display.c | 25 +++++++++++++++++++++++-- 1 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/drmmode_display.c b/src/drmmode_display.c index 4fb20d9..f41b978 100644 --- a/src/drmmode_display.c +++ b/src/drmmode_display.c @@ -109,6 +109,12 @@ static char *backlight_interfaces[] = { /* Enough for 10 digits of backlight + '\n' + '\0' */ #define BACKLIGHT_VALUE_LEN 12 +/* Constants from include/linux/fb.h */ +enum { + FB_BLANK_UNBLANK = 0, + FB_BLANK_POWERDOWN = 4 +}; + static void drmmode_backlight_set(xf86OutputPtr output, int level) { @@ -121,22 +127,37 @@ drmmode_backlight_set(xf86OutputPtr output, int level) if (! drmmode_output->backlight_iface || level < 0) return; - len = snprintf(val, BACKLIGHT_VALUE_LEN, "%d\n", level); sprintf(path, "%s/%s/brightness", BACKLIGHT_CLASS, drmmode_output->backlight_iface); + len = snprintf(val, BACKLIGHT_VALUE_LEN, "%d\n", level); fd = open(path, O_RDWR); if (fd == -1) { xf86DrvMsg(output->scrn->scrnIndex, X_ERROR, "failed to open %s for backlight " "control: %s\n", path, strerror(errno)); return; } - ret = write(fd, val, len); if (ret == -1) { xf86DrvMsg(output->scrn->scrnIndex, X_ERROR, "write to %s for backlight " "control failed: %s\n", path, strerror(errno)); } + close(fd); + sprintf(path, "%s/%s/bl_power", + BACKLIGHT_CLASS, drmmode_output->backlight_iface); + len = snprintf(val, BACKLIGHT_VALUE_LEN, "%d\n", + level > 0 ? FB_BLANK_UNBLANK : FB_BLANK_POWERDOWN); + fd = open(path, O_RDWR); + if (fd == -1) { + xf86DrvMsg(output->scrn->scrnIndex, X_ERROR, "failed to open %s for backlight " + "control: %s\n", path, strerror(errno)); + return; + } + ret = write(fd, val, len); + if (ret == -1) { + xf86DrvMsg(output->scrn->scrnIndex, X_ERROR, "write to %s for backlight " + "control failed: %s\n", path, strerror(errno)); + } close(fd); }