[Pommed-commits] r511 - in trunk: . pommed pommed/mactel pommed/pmac
jblache at alioth.debian.org
jblache at alioth.debian.org
Sat Oct 18 15:51:22 UTC 2008
Author: jblache
Date: 2008-10-18 15:51:22 +0000 (Sat, 18 Oct 2008)
New Revision: 511
Modified:
trunk/ChangeLog
trunk/pommed/mactel/acpi.c
trunk/pommed/pmac/pmu.c
trunk/pommed/power.c
trunk/pommed/power.h
Log:
Use a common routine for sysfs power class, add support for sysfs power class for pmac machines.
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2008-10-07 16:10:00 UTC (rev 510)
+++ trunk/ChangeLog 2008-10-18 15:51:22 UTC (rev 511)
@@ -8,6 +8,8 @@
code in the kbd_{lmu,pmu}_backlight_set() routines.
- gpomme: add japanese translation for gpomme, courtesy of
Nobuhiro Iwamatsu <iwamatsu at nigauri.org>.
+ - pommed: use a common sysfs power class routine in power.c, add
+ sysfs power class support for pmac machines.
version 1.21:
- gpomme: use compositing if available, patch by Soeren Sonnenburg.
Modified: trunk/pommed/mactel/acpi.c
===================================================================
--- trunk/pommed/mactel/acpi.c 2008-10-07 16:10:00 UTC (rev 510)
+++ trunk/pommed/mactel/acpi.c 2008-10-18 15:51:22 UTC (rev 511)
@@ -28,68 +28,16 @@
#include "../power.h"
-#define SYSFS_ACPI_AC_STATE "/sys/class/power_supply/ADP1/online"
-
#define PROC_ACPI_AC_STATE "/proc/acpi/ac_adapter/ADP1/state"
#define PROC_ACPI_AC_ONLINE "on-line\n"
#define PROC_ACPI_AC_OFFLINE "off-line\n"
-static int
-proc_check_ac_state(void);
-
-static int
-sysfs_check_ac_state(void);
-
-
-/* Internal API */
+/* Internal API - procfs ACPI */
int
-check_ac_state(void)
+procfs_check_ac_state(void)
{
- if (access(SYSFS_ACPI_AC_STATE, R_OK) == 0)
- return sysfs_check_ac_state();
- else
- return proc_check_ac_state();
-}
-
-
-/* sysfs power_supply class variant */
-static int
-sysfs_check_ac_state(void)
-{
FILE *fp;
- char ac_state;
- int ret;
-
- fp = fopen(SYSFS_ACPI_AC_STATE, "r");
- if (fp == NULL)
- return AC_STATE_ERROR;
-
- ret = fread(&ac_state, 1, 1, fp);
-
- if (ferror(fp) != 0)
- {
- logdebug("acpi: Error reading sysfs AC state: %s\n", strerror(errno));
- return AC_STATE_ERROR;
- }
-
- fclose(fp);
-
- if (ac_state == '1')
- return AC_STATE_ONLINE;
-
- if (ac_state == '0')
- return AC_STATE_OFFLINE;
-
- return AC_STATE_UNKNOWN;
-}
-
-
-/* procfs variant */
-static int
-proc_check_ac_state(void)
-{
- FILE *fp;
char buf[128];
int ret;
Modified: trunk/pommed/pmac/pmu.c
===================================================================
--- trunk/pommed/pmac/pmu.c 2008-10-07 16:10:00 UTC (rev 510)
+++ trunk/pommed/pmac/pmu.c 2008-10-18 15:51:22 UTC (rev 511)
@@ -3,7 +3,7 @@
*
* $Id$
*
- * Copyright (C) 2006-2007 Julien BLACHE <jb at jblache.org>
+ * Copyright (C) 2006-2008 Julien BLACHE <jb at jblache.org>
*
* 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
@@ -27,22 +27,22 @@
#include "../power.h"
-#define PMU_AC_STATE_FILE "/proc/pmu/info"
-#define PMU_AC_STATE "AC Power"
-#define PMU_AC_ONLINE '1'
-#define PMU_AC_OFFLINE '0'
+#define PROC_PMU_AC_STATE_FILE "/proc/pmu/info"
+#define PROC_PMU_AC_STATE "AC Power"
+#define PROC_PMU_AC_ONLINE '1'
+#define PROC_PMU_AC_OFFLINE '0'
-/* Internal API */
+/* Internal API - procfs PMU */
int
-check_ac_state(void)
+procfs_check_ac_state(void)
{
FILE *fp;
char buf[128];
char *ac_state;
int ret;
- fp = fopen(PMU_AC_STATE_FILE, "r");
+ fp = fopen(PROC_PMU_AC_STATE_FILE, "r");
if (fp == NULL)
return AC_STATE_ERROR;
@@ -64,7 +64,7 @@
buf[ret] = '\0';
- ac_state = strstr(buf, PMU_AC_STATE);
+ ac_state = strstr(buf, PROC_PMU_AC_STATE);
if (ac_state == NULL)
return AC_STATE_ERROR;
@@ -72,10 +72,10 @@
if ((ac_state == NULL) || (ac_state == buf))
return AC_STATE_ERROR;
- if (ac_state[-1] == PMU_AC_ONLINE)
+ if (ac_state[-1] == PROC_PMU_AC_ONLINE)
return AC_STATE_ONLINE;
- if (ac_state[-1] == PMU_AC_OFFLINE)
+ if (ac_state[-1] == PROC_PMU_AC_OFFLINE)
return AC_STATE_OFFLINE;
return AC_STATE_UNKNOWN;
Modified: trunk/pommed/power.c
===================================================================
--- trunk/pommed/power.c 2008-10-07 16:10:00 UTC (rev 510)
+++ trunk/pommed/power.c 2008-10-18 15:51:22 UTC (rev 511)
@@ -22,6 +22,8 @@
#include <stdio.h>
#include <unistd.h>
#include <stdint.h>
+#include <string.h>
+#include <errno.h>
#include <syslog.h>
@@ -31,15 +33,59 @@
#include "power.h"
-/* Internal API */
+/* Internal API - legacy procfs interface, ACPI or PMU */
int
-check_ac_state(void);
+procfs_check_ac_state(void);
static int prev_state;
static int power_timer;
+/* sysfs power_supply class */
+static int
+sysfs_check_ac_state(void)
+{
+ FILE *fp;
+ char ac_state;
+ int ret;
+
+ fp = fopen(SYSFS_POWER_AC_STATE, "r");
+ if (fp == NULL)
+ return AC_STATE_ERROR;
+
+ ret = fread(&ac_state, 1, 1, fp);
+
+ if (ferror(fp) != 0)
+ {
+ logdebug("power: Error reading sysfs AC state: %s\n", strerror(errno));
+ return AC_STATE_ERROR;
+ }
+
+ fclose(fp);
+
+ if (ac_state == '1')
+ return AC_STATE_ONLINE;
+
+ if (ac_state == '0')
+ return AC_STATE_OFFLINE;
+
+ return AC_STATE_UNKNOWN;
+}
+
+static int
+check_ac_state(void)
+{
+ int ret;
+
+ ret = sysfs_check_ac_state();
+ if (ret == AC_STATE_ERROR)
+ return procfs_check_ac_state();
+
+ return ret;
+}
+
+
static void
power_check_ac_state(int id, uint64_t ticks)
{
Modified: trunk/pommed/power.h
===================================================================
--- trunk/pommed/power.h 2008-10-07 16:10:00 UTC (rev 510)
+++ trunk/pommed/power.h 2008-10-18 15:51:22 UTC (rev 511)
@@ -14,7 +14,13 @@
#define POWER_TIMEOUT 200
+#ifdef __powerpc__
+# define SYSFS_POWER_AC_STATE "/sys/class/power_supply/pmu-ac/online"
+#else
+# define SYSFS_POWER_AC_STATE "/sys/class/power_supply/ADP1/online"
+#endif
+
void
power_init(void);
More information about the Pommed-commits
mailing list