[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