[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