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

Julien Blache jblache at alioth.debian.org
Thu Feb 22 13:42:11 CET 2007


Author: jblache
Date: 2007-02-22 13:42:11 +0100 (Thu, 22 Feb 2007)
New Revision: 262

Modified:
   trunk/pommed/conffile.c
   trunk/pommed/lcd_backlight.h
   trunk/pommed/pmac/sysfs_backlight.c
Log:
Get the max brightness from the sysfs max_brightness node.


Modified: trunk/pommed/conffile.c
===================================================================
--- trunk/pommed/conffile.c	2007-02-22 00:30:18 UTC (rev 261)
+++ trunk/pommed/conffile.c	2007-02-22 12:42:11 UTC (rev 262)
@@ -300,7 +300,7 @@
   sec = cfg_getsec(cfg, "lcd_r9600");
   lcd_r9600_cfg.init = cfg_getint(sec, "init");
   lcd_r9600_cfg.step = cfg_getint(sec, "step");
-  r9600_backlight_fix_config();
+  /* No _fix_config() call here, it's done at probe time */
 
   sec = cfg_getsec(cfg, "lcd_r128");
   lcd_r128_cfg.init = cfg_getint(sec, "init");

Modified: trunk/pommed/lcd_backlight.h
===================================================================
--- trunk/pommed/lcd_backlight.h	2007-02-22 00:30:18 UTC (rev 261)
+++ trunk/pommed/lcd_backlight.h	2007-02-22 12:42:11 UTC (rev 262)
@@ -44,8 +44,8 @@
 
 
 /* sysfs_backlight.c */
-#define R9600_BACKLIGHT_OFF	0
-#define R9600_BACKLIGHT_MAX	127
+#define SYSFS_BACKLIGHT_OFF	0
+
 void
 sysfs_backlight_step(int dir);
 

Modified: trunk/pommed/pmac/sysfs_backlight.c
===================================================================
--- trunk/pommed/pmac/sysfs_backlight.c	2007-02-22 00:30:18 UTC (rev 261)
+++ trunk/pommed/pmac/sysfs_backlight.c	2007-02-22 12:42:11 UTC (rev 262)
@@ -58,7 +58,14 @@
     "/sys/class/backlight/radeonbl0/brightness"
   };
 
+/* sysfs max_brightness node path */
+static char *max_brightness[] =
+  {
+    "/dev/null",
+    "/sys/class/backlight/radeonbl0/max_brightness"
+  };
 
+
 struct _lcd_bck_info lcd_bck_info;
 
 
@@ -93,6 +100,38 @@
   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)
 {
@@ -126,8 +165,8 @@
     {
       newval = val + lcd_r9600_cfg.step;
 
-      if (newval > R9600_BACKLIGHT_MAX)
-	newval = R9600_BACKLIGHT_MAX;
+      if (newval > lcd_bck_info.max)
+	newval = lcd_bck_info.max;
 
       logdebug("LCD stepping +%d -> %d\n", lcd_r9600_cfg.step, newval);
     }
@@ -135,8 +174,8 @@
     {
       newval = val - lcd_r9600_cfg.step;
 
-      if (newval < R9600_BACKLIGHT_OFF)
-	newval = R9600_BACKLIGHT_OFF;
+      if (newval < SYSFS_BACKLIGHT_OFF)
+	newval = SYSFS_BACKLIGHT_OFF;
 
       logdebug("LCD stepping -%d -> %d\n", lcd_r9600_cfg.step, newval);
     }
@@ -151,6 +190,26 @@
 }
 
 
+/* 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_r9600_cfg.init < 0)
+    lcd_r9600_cfg.init = -1;
+
+  if (lcd_r9600_cfg.init > lcd_bck_info.max)
+    lcd_r9600_cfg.init = lcd_bck_info.max;
+
+  if (lcd_r9600_cfg.step < 1)
+    lcd_r9600_cfg.step = 1;
+
+  if (lcd_r9600_cfg.step > (lcd_bck_info.max / 2))
+    lcd_r9600_cfg.step = lcd_bck_info.max / 2;
+}
+
+
 /* Look for the radeon backlight driver */
 int
 r9600_sysfs_backlight_probe(void)
@@ -169,8 +228,11 @@
 
   bck_driver = SYSFS_DRIVER_RADEON;
 
-  lcd_bck_info.max = R9600_BACKLIGHT_MAX;
+  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
@@ -184,20 +246,3 @@
 
     return 0;
 }
-
-void
-r9600_backlight_fix_config(void)
-{
-  if (lcd_r9600_cfg.init < 0)
-    lcd_r9600_cfg.init = -1;
-
-  if (lcd_r9600_cfg.init > R9600_BACKLIGHT_MAX)
-    lcd_r9600_cfg.init = R9600_BACKLIGHT_MAX;
-
-  if (lcd_r9600_cfg.step < 1)
-    lcd_r9600_cfg.step = 1;
-
-  if (lcd_r9600_cfg.step > (R9600_BACKLIGHT_MAX / 2))
-    lcd_r9600_cfg.step = R9600_BACKLIGHT_MAX / 2;
-}
-




More information about the Pommed-commits mailing list