[Pommed-commits] r521 - in trunk/pommed: . pmac

jblache at alioth.debian.org jblache at alioth.debian.org
Thu Dec 11 13:54:23 UTC 2008


Author: jblache
Date: 2008-12-11 13:54:23 +0000 (Thu, 11 Dec 2008)
New Revision: 521

Added:
   trunk/pommed/sysfs_backlight.c
Removed:
   trunk/pommed/pmac/sysfs_backlight.c
Modified:
   trunk/pommed/Makefile
Log:
Move sysfs backlight driver to generic code, out of pmac.


Modified: trunk/pommed/Makefile
===================================================================
--- trunk/pommed/Makefile	2008-12-11 13:44:15 UTC (rev 520)
+++ trunk/pommed/Makefile	2008-12-11 13:54:23 UTC (rev 521)
@@ -1,4 +1,4 @@
-ARCH ?= $(shell uname -m)
+#ARCH ?= $(shell uname -m)
 
 CC = gcc
 
@@ -21,11 +21,13 @@
 LDFLAGS = -pthread -lrt $(DBUS_LIBS) $(ALSA_LIBS) $(AUDIOFILE_LIBS) $(CONFUSE_LIBS)
 
 ifneq (, $(findstring ppc, $(ARCH)))
+CFLAGS += -D__powerpc__
+
 OFLIB ?=
 
 SOURCES = pommed.c cd_eject.c evdev.c conffile.c audio.c \
 		evloop.c dbus.c power.c beep.c video.c \
-		pmac/sysfs_backlight.c pmac/pmu.c \
+		sysfs_backlight.c pmac/pmu.c \
 		pmac/kbd_backlight.c pmac/ambient.c
 
 OF_SOURCES = pmac/ofapi/of_externals.c pmac/ofapi/of_internals.c \
@@ -91,7 +93,7 @@
 # PowerMac-specific files
 pmac/kbd_backlight.o: pmac/kbd_backlight.c kbd_auto.c kbd_backlight.h evloop.h pommed.h ambient.h conffile.h dbus.h
 
-pmac/sysfs_backlight.o: pmac/sysfs_backlight.c pommed.h lcd_backlight.h conffile.h dbus.h
+sysfs_backlight.o: sysfs_backlight.c pommed.h lcd_backlight.h conffile.h dbus.h
 
 pmac/ambient.o: pmac/ambient.c ambient.h pommed.h dbus.h
 

Deleted: trunk/pommed/pmac/sysfs_backlight.c
===================================================================
--- trunk/pommed/pmac/sysfs_backlight.c	2008-12-11 13:44:15 UTC (rev 520)
+++ trunk/pommed/pmac/sysfs_backlight.c	2008-12-11 13:54:23 UTC (rev 521)
@@ -1,343 +0,0 @@
-/*
- * pommed - Apple laptops hotkeys handler daemon
- *
- * $Id$
- *
- * Copyright (C) 2006-2008 Julien BLACHE <jb at jblache.org>
- * Copyright (C) 2006 Yves-Alexis Perez <corsac at corsac.net>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */ 
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <syslog.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <string.h>
-#include <errno.h>
-
-#include "../pommed.h"
-#include "../conffile.h"
-#include "../lcd_backlight.h"
-#include "../dbus.h"
-
-
-#define SYSFS_DRIVER_NONE      0
-#define SYSFS_DRIVER_ATY128    1
-#define SYSFS_DRIVER_RADEON    2
-#define SYSFS_DRIVER_NVIDIA    3
-
-
-/* sysfs backlight driver in use */
-static int bck_driver = SYSFS_DRIVER_NONE;
-
-/* sysfs actual_brightness node path */
-static char *actual_brightness[] =
-  {
-    "/dev/null",
-    "/sys/class/backlight/aty128bl0/actual_brightness",
-    "/sys/class/backlight/radeonbl0/actual_brightness",
-    "/sys/class/backlight/nvidiabl0/actual_brightness"
-  };
-
-/* sysfs brightness node path */
-static char *brightness[] =
-  {
-    "/dev/null",
-    "/sys/class/backlight/aty128bl0/brightness",
-    "/sys/class/backlight/radeonbl0/brightness",
-    "/sys/class/backlight/nvidiabl0/brightness"
-  };
-
-/* sysfs max_brightness node path */
-static char *max_brightness[] =
-  {
-    "/dev/null",
-    "/sys/class/backlight/aty128bl0/max_brightness",
-    "/sys/class/backlight/radeonbl0/max_brightness",
-    "/sys/class/backlight/nvidiabl0/max_brightness"
-  };
-
-
-struct _lcd_bck_info lcd_bck_info;
-
-
-static int
-sysfs_backlight_get(void)
-{
-  int fd;
-  int n;
-  char buffer[4];
-
-  if (bck_driver == SYSFS_DRIVER_NONE)
-    return 0;
-
-  fd = open(actual_brightness[bck_driver], O_RDONLY);
-  if (fd < 0)
-    {
-      logmsg(LOG_WARNING, "Could not open sysfs actual_brightness node: %s", strerror(errno));
-
-      return 0;
-    }
-
-  n = read(fd, buffer, sizeof(buffer) -1);
-  if (n < 1)
-    {
-      logmsg(LOG_WARNING, "Could not read sysfs actual_brightness node");
-
-      close(fd);
-      return 0;
-    }
-  close(fd);
-
-  return atoi(buffer);
-}
-
-static int
-sysfs_backlight_get_max(void)
-{
-  int fd;
-  int n;
-  char buffer[4];
-
-  if (bck_driver == SYSFS_DRIVER_NONE)
-    return 0;
-
-  fd = open(max_brightness[bck_driver], O_RDONLY);
-  if (fd < 0)
-    {
-      logmsg(LOG_WARNING, "Could not open sysfs max_brightness node: %s", strerror(errno));
-
-      return 0;
-    }
-
-  n = read(fd, buffer, sizeof(buffer) -1);
-  if (n < 1)
-    {
-      logmsg(LOG_WARNING, "Could not read sysfs max_brightness node");
-
-      close(fd);
-      return 0;
-    }
-  close(fd);
-
-  return atoi(buffer);
-}
-
-
-static void
-sysfs_backlight_set(int value)
-{
-  FILE *fp;
-
-  fp = fopen(brightness[bck_driver], "a");
-  if (fp == NULL)
-    {
-      logmsg(LOG_WARNING, "Could not open sysfs brightness node: %s", strerror(errno));
-
-      return;
-    }
-
-  fprintf(fp, "%d", value);
-
-  fclose(fp);
-}
-
-void
-sysfs_backlight_step(int dir)
-{
-  int val;
-  int newval;
-
-  if (bck_driver == SYSFS_DRIVER_NONE)
-    return;
-
-  val = sysfs_backlight_get();
-
-  if (dir == STEP_UP)
-    {
-      newval = val + lcd_sysfs_cfg.step;
-
-      if (newval > lcd_bck_info.max)
-	newval = lcd_bck_info.max;
-
-      logdebug("LCD stepping +%d -> %d\n", lcd_sysfs_cfg.step, newval);
-    }
-  else if (dir == STEP_DOWN)
-    {
-      newval = val - lcd_sysfs_cfg.step;
-
-      if (newval < SYSFS_BACKLIGHT_OFF)
-	newval = SYSFS_BACKLIGHT_OFF;
-
-      logdebug("LCD stepping -%d -> %d\n", lcd_sysfs_cfg.step, newval);
-    }
-  else
-    return;
-
-  sysfs_backlight_set(newval);
-
-  mbpdbus_send_lcd_backlight(newval, val, LCD_USER);
-
-  lcd_bck_info.level = newval;
-}
-
-
-void
-sysfs_backlight_toggle(int lvl)
-{
-  if (lcd_sysfs_cfg.on_batt == 0)
-    return;
-
-  switch (lvl)
-    {
-      case LCD_ON_AC_LEVEL:
-	logdebug("LCD switching to AC level\n");
-
-	sysfs_backlight_set(lcd_bck_info.ac_lvl);
-
-	mbpdbus_send_lcd_backlight(lcd_bck_info.ac_lvl, lcd_bck_info.level, LCD_AUTO);
-
-	lcd_bck_info.level = lcd_bck_info.ac_lvl;
-	break;
-
-      case LCD_ON_BATT_LEVEL:
-	logdebug("LCD switching to battery level\n");
-
-	lcd_bck_info.ac_lvl = lcd_bck_info.level;
-
-	if (lcd_bck_info.level > lcd_sysfs_cfg.on_batt)
-	  {
-	    sysfs_backlight_set(lcd_sysfs_cfg.on_batt);
-	    lcd_bck_info.level = lcd_sysfs_cfg.on_batt;
-
-	    mbpdbus_send_lcd_backlight(lcd_bck_info.level, lcd_bck_info.ac_lvl, LCD_AUTO);
-	  }
-	break;
-    }
-}
-
-
-/* When brightness keys are handled by the kernel itself,
- * we're only updating our internal buffers
- */
-void
-sysfs_backlight_step_kernel(int dir)
-{
-  int val;
-
-  val = sysfs_backlight_get();
-
-  logdebug("LCD stepping: %d -> %d\n", lcd_bck_info.level, val);
-
-  mbpdbus_send_lcd_backlight(val, lcd_bck_info.level, LCD_USER);
-
-  lcd_bck_info.level = val;
-}
-
-void
-sysfs_backlight_toggle_kernel(int lvl)
-{
-  return;
-}
-
-
-/* We can't fix the config until we know the max backlight value,
- * so, here, fix_config() is static and called at probe time
- */
-static void
-sysfs_backlight_fix_config(void)
-{
-  if (lcd_sysfs_cfg.init < 0)
-    lcd_sysfs_cfg.init = -1;
-
-  if (lcd_sysfs_cfg.init > lcd_bck_info.max)
-    lcd_sysfs_cfg.init = lcd_bck_info.max;
-
-  if (lcd_sysfs_cfg.step < 1)
-    lcd_sysfs_cfg.step = 1;
-
-  if (lcd_sysfs_cfg.step > (lcd_bck_info.max / 2))
-    lcd_sysfs_cfg.step = lcd_bck_info.max / 2;
-
-  if ((lcd_sysfs_cfg.on_batt > lcd_bck_info.max)
-      || (lcd_sysfs_cfg.on_batt < SYSFS_BACKLIGHT_OFF))
-    lcd_sysfs_cfg.on_batt = 0;
-}
-
-
-/* Look for the backlight driver */
-static int
-sysfs_backlight_probe(int driver)
-{
-  if (access(brightness[driver], W_OK) != 0)
-    {
-      logdebug("Failed to access brightness node: %s\n", strerror(errno));
-      return -1;
-    }
-
-  if (access(actual_brightness[driver], R_OK) != 0)
-    {
-      logdebug("Failed to access actual_brightness node: %s\n", strerror(errno));
-      return -1;
-    }
-
-  if (access(max_brightness[driver], R_OK) != 0)
-    {
-      logdebug("Failed to access max_brightness node: %s\n", strerror(errno));
-      return -1;
-    }
-
-  bck_driver = driver;
-
-  lcd_bck_info.max = sysfs_backlight_get_max();
-
-  /* Now we can fix the config */
-  sysfs_backlight_fix_config();
-
-  /*
-   * Set the initial backlight level
-   * The value has been sanity checked already
-   */
-  if (lcd_sysfs_cfg.init > -1)
-    {
-      sysfs_backlight_set(lcd_sysfs_cfg.init);
-    }
-
-  lcd_bck_info.level = sysfs_backlight_get();
-  lcd_bck_info.ac_lvl = lcd_bck_info.level;
-
-  return 0;
-}
-
-int
-aty128_sysfs_backlight_probe(void)
-{
-  return sysfs_backlight_probe(SYSFS_DRIVER_ATY128);
-}
-
-int
-r9x00_sysfs_backlight_probe(void)
-{
-  return sysfs_backlight_probe(SYSFS_DRIVER_RADEON);
-}
-
-int
-nvidia_sysfs_backlight_probe(void)
-{
-  return sysfs_backlight_probe(SYSFS_DRIVER_NVIDIA);
-}

Copied: trunk/pommed/sysfs_backlight.c (from rev 509, trunk/pommed/pmac/sysfs_backlight.c)
===================================================================
--- trunk/pommed/sysfs_backlight.c	                        (rev 0)
+++ trunk/pommed/sysfs_backlight.c	2008-12-11 13:54:23 UTC (rev 521)
@@ -0,0 +1,343 @@
+/*
+ * pommed - Apple laptops hotkeys handler daemon
+ *
+ * $Id$
+ *
+ * Copyright (C) 2006-2008 Julien BLACHE <jb at jblache.org>
+ * Copyright (C) 2006 Yves-Alexis Perez <corsac at corsac.net>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */ 
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <syslog.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <string.h>
+#include <errno.h>
+
+#include "pommed.h"
+#include "conffile.h"
+#include "lcd_backlight.h"
+#include "dbus.h"
+
+
+#define SYSFS_DRIVER_NONE      0
+#define SYSFS_DRIVER_ATY128    1
+#define SYSFS_DRIVER_RADEON    2
+#define SYSFS_DRIVER_NVIDIA    3
+
+
+/* sysfs backlight driver in use */
+static int bck_driver = SYSFS_DRIVER_NONE;
+
+/* sysfs actual_brightness node path */
+static char *actual_brightness[] =
+  {
+    "/dev/null",
+    "/sys/class/backlight/aty128bl0/actual_brightness",
+    "/sys/class/backlight/radeonbl0/actual_brightness",
+    "/sys/class/backlight/nvidiabl0/actual_brightness"
+  };
+
+/* sysfs brightness node path */
+static char *brightness[] =
+  {
+    "/dev/null",
+    "/sys/class/backlight/aty128bl0/brightness",
+    "/sys/class/backlight/radeonbl0/brightness",
+    "/sys/class/backlight/nvidiabl0/brightness"
+  };
+
+/* sysfs max_brightness node path */
+static char *max_brightness[] =
+  {
+    "/dev/null",
+    "/sys/class/backlight/aty128bl0/max_brightness",
+    "/sys/class/backlight/radeonbl0/max_brightness",
+    "/sys/class/backlight/nvidiabl0/max_brightness"
+  };
+
+
+struct _lcd_bck_info lcd_bck_info;
+
+
+static int
+sysfs_backlight_get(void)
+{
+  int fd;
+  int n;
+  char buffer[4];
+
+  if (bck_driver == SYSFS_DRIVER_NONE)
+    return 0;
+
+  fd = open(actual_brightness[bck_driver], O_RDONLY);
+  if (fd < 0)
+    {
+      logmsg(LOG_WARNING, "Could not open sysfs actual_brightness node: %s", strerror(errno));
+
+      return 0;
+    }
+
+  n = read(fd, buffer, sizeof(buffer) -1);
+  if (n < 1)
+    {
+      logmsg(LOG_WARNING, "Could not read sysfs actual_brightness node");
+
+      close(fd);
+      return 0;
+    }
+  close(fd);
+
+  return atoi(buffer);
+}
+
+static int
+sysfs_backlight_get_max(void)
+{
+  int fd;
+  int n;
+  char buffer[4];
+
+  if (bck_driver == SYSFS_DRIVER_NONE)
+    return 0;
+
+  fd = open(max_brightness[bck_driver], O_RDONLY);
+  if (fd < 0)
+    {
+      logmsg(LOG_WARNING, "Could not open sysfs max_brightness node: %s", strerror(errno));
+
+      return 0;
+    }
+
+  n = read(fd, buffer, sizeof(buffer) -1);
+  if (n < 1)
+    {
+      logmsg(LOG_WARNING, "Could not read sysfs max_brightness node");
+
+      close(fd);
+      return 0;
+    }
+  close(fd);
+
+  return atoi(buffer);
+}
+
+
+static void
+sysfs_backlight_set(int value)
+{
+  FILE *fp;
+
+  fp = fopen(brightness[bck_driver], "a");
+  if (fp == NULL)
+    {
+      logmsg(LOG_WARNING, "Could not open sysfs brightness node: %s", strerror(errno));
+
+      return;
+    }
+
+  fprintf(fp, "%d", value);
+
+  fclose(fp);
+}
+
+void
+sysfs_backlight_step(int dir)
+{
+  int val;
+  int newval;
+
+  if (bck_driver == SYSFS_DRIVER_NONE)
+    return;
+
+  val = sysfs_backlight_get();
+
+  if (dir == STEP_UP)
+    {
+      newval = val + lcd_sysfs_cfg.step;
+
+      if (newval > lcd_bck_info.max)
+	newval = lcd_bck_info.max;
+
+      logdebug("LCD stepping +%d -> %d\n", lcd_sysfs_cfg.step, newval);
+    }
+  else if (dir == STEP_DOWN)
+    {
+      newval = val - lcd_sysfs_cfg.step;
+
+      if (newval < SYSFS_BACKLIGHT_OFF)
+	newval = SYSFS_BACKLIGHT_OFF;
+
+      logdebug("LCD stepping -%d -> %d\n", lcd_sysfs_cfg.step, newval);
+    }
+  else
+    return;
+
+  sysfs_backlight_set(newval);
+
+  mbpdbus_send_lcd_backlight(newval, val, LCD_USER);
+
+  lcd_bck_info.level = newval;
+}
+
+
+void
+sysfs_backlight_toggle(int lvl)
+{
+  if (lcd_sysfs_cfg.on_batt == 0)
+    return;
+
+  switch (lvl)
+    {
+      case LCD_ON_AC_LEVEL:
+	logdebug("LCD switching to AC level\n");
+
+	sysfs_backlight_set(lcd_bck_info.ac_lvl);
+
+	mbpdbus_send_lcd_backlight(lcd_bck_info.ac_lvl, lcd_bck_info.level, LCD_AUTO);
+
+	lcd_bck_info.level = lcd_bck_info.ac_lvl;
+	break;
+
+      case LCD_ON_BATT_LEVEL:
+	logdebug("LCD switching to battery level\n");
+
+	lcd_bck_info.ac_lvl = lcd_bck_info.level;
+
+	if (lcd_bck_info.level > lcd_sysfs_cfg.on_batt)
+	  {
+	    sysfs_backlight_set(lcd_sysfs_cfg.on_batt);
+	    lcd_bck_info.level = lcd_sysfs_cfg.on_batt;
+
+	    mbpdbus_send_lcd_backlight(lcd_bck_info.level, lcd_bck_info.ac_lvl, LCD_AUTO);
+	  }
+	break;
+    }
+}
+
+
+/* When brightness keys are handled by the kernel itself,
+ * we're only updating our internal buffers
+ */
+void
+sysfs_backlight_step_kernel(int dir)
+{
+  int val;
+
+  val = sysfs_backlight_get();
+
+  logdebug("LCD stepping: %d -> %d\n", lcd_bck_info.level, val);
+
+  mbpdbus_send_lcd_backlight(val, lcd_bck_info.level, LCD_USER);
+
+  lcd_bck_info.level = val;
+}
+
+void
+sysfs_backlight_toggle_kernel(int lvl)
+{
+  return;
+}
+
+
+/* We can't fix the config until we know the max backlight value,
+ * so, here, fix_config() is static and called at probe time
+ */
+static void
+sysfs_backlight_fix_config(void)
+{
+  if (lcd_sysfs_cfg.init < 0)
+    lcd_sysfs_cfg.init = -1;
+
+  if (lcd_sysfs_cfg.init > lcd_bck_info.max)
+    lcd_sysfs_cfg.init = lcd_bck_info.max;
+
+  if (lcd_sysfs_cfg.step < 1)
+    lcd_sysfs_cfg.step = 1;
+
+  if (lcd_sysfs_cfg.step > (lcd_bck_info.max / 2))
+    lcd_sysfs_cfg.step = lcd_bck_info.max / 2;
+
+  if ((lcd_sysfs_cfg.on_batt > lcd_bck_info.max)
+      || (lcd_sysfs_cfg.on_batt < SYSFS_BACKLIGHT_OFF))
+    lcd_sysfs_cfg.on_batt = 0;
+}
+
+
+/* Look for the backlight driver */
+static int
+sysfs_backlight_probe(int driver)
+{
+  if (access(brightness[driver], W_OK) != 0)
+    {
+      logdebug("Failed to access brightness node: %s\n", strerror(errno));
+      return -1;
+    }
+
+  if (access(actual_brightness[driver], R_OK) != 0)
+    {
+      logdebug("Failed to access actual_brightness node: %s\n", strerror(errno));
+      return -1;
+    }
+
+  if (access(max_brightness[driver], R_OK) != 0)
+    {
+      logdebug("Failed to access max_brightness node: %s\n", strerror(errno));
+      return -1;
+    }
+
+  bck_driver = driver;
+
+  lcd_bck_info.max = sysfs_backlight_get_max();
+
+  /* Now we can fix the config */
+  sysfs_backlight_fix_config();
+
+  /*
+   * Set the initial backlight level
+   * The value has been sanity checked already
+   */
+  if (lcd_sysfs_cfg.init > -1)
+    {
+      sysfs_backlight_set(lcd_sysfs_cfg.init);
+    }
+
+  lcd_bck_info.level = sysfs_backlight_get();
+  lcd_bck_info.ac_lvl = lcd_bck_info.level;
+
+  return 0;
+}
+
+int
+aty128_sysfs_backlight_probe(void)
+{
+  return sysfs_backlight_probe(SYSFS_DRIVER_ATY128);
+}
+
+int
+r9x00_sysfs_backlight_probe(void)
+{
+  return sysfs_backlight_probe(SYSFS_DRIVER_RADEON);
+}
+
+int
+nvidia_sysfs_backlight_probe(void)
+{
+  return sysfs_backlight_probe(SYSFS_DRIVER_NVIDIA);
+}


Property changes on: trunk/pommed/sysfs_backlight.c
___________________________________________________________________
Name: svn:keywords
   + Id
Name: svn:mergeinfo
   + 




More information about the Pommed-commits mailing list