1 /* 2 * Definitions for talking to the PMU. The PMU is a microcontroller 3 * which controls battery charging and system power on PowerBook 3400 4 * and 2400 models as well as the RTC and various other things. 5 * 6 * Copyright (C) 1998 Paul Mackerras. 7 */ 8 #ifndef _LINUX_PMU_H 9 #define _LINUX_PMU_H 10 11 #include <uapi/linux/pmu.h> 12 13 14 extern int find_via_pmu(void); 15 16 extern int pmu_request(struct adb_request *req, 17 void (*done)(struct adb_request *), int nbytes, ...); 18 extern int pmu_queue_request(struct adb_request *req); 19 extern void pmu_poll(void); 20 extern void pmu_poll_adb(void); /* For use by xmon */ 21 extern void pmu_wait_complete(struct adb_request *req); 22 23 /* For use before switching interrupts off for a long time; 24 * warning: not stackable 25 */ 26 #if defined(CONFIG_ADB_PMU) 27 extern void pmu_suspend(void); 28 extern void pmu_resume(void); 29 #else pmu_suspend(void)30static inline void pmu_suspend(void) 31 {} pmu_resume(void)32static inline void pmu_resume(void) 33 {} 34 #endif 35 36 extern void pmu_enable_irled(int on); 37 38 extern void pmu_restart(void); 39 extern void pmu_shutdown(void); 40 extern void pmu_unlock(void); 41 42 extern int pmu_present(void); 43 extern int pmu_get_model(void); 44 45 extern void pmu_backlight_set_sleep(int sleep); 46 47 #define PMU_MAX_BATTERIES 2 48 49 /* values for pmu_power_flags */ 50 #define PMU_PWR_AC_PRESENT 0x00000001 51 52 /* values for pmu_battery_info.flags */ 53 #define PMU_BATT_PRESENT 0x00000001 54 #define PMU_BATT_CHARGING 0x00000002 55 #define PMU_BATT_TYPE_MASK 0x000000f0 56 #define PMU_BATT_TYPE_SMART 0x00000010 /* Smart battery */ 57 #define PMU_BATT_TYPE_HOOPER 0x00000020 /* 3400/3500 */ 58 #define PMU_BATT_TYPE_COMET 0x00000030 /* 2400 */ 59 60 struct pmu_battery_info 61 { 62 unsigned int flags; 63 unsigned int charge; /* current charge */ 64 unsigned int max_charge; /* maximum charge */ 65 signed int amperage; /* current, positive if charging */ 66 unsigned int voltage; /* voltage */ 67 unsigned int time_remaining; /* remaining time */ 68 }; 69 70 extern int pmu_battery_count; 71 extern struct pmu_battery_info pmu_batteries[PMU_MAX_BATTERIES]; 72 extern unsigned int pmu_power_flags; 73 74 /* Backlight */ 75 extern void pmu_backlight_init(void); 76 77 /* some code needs to know if the PMU was suspended for hibernation */ 78 #if defined(CONFIG_SUSPEND) && defined(CONFIG_PPC32) 79 extern int pmu_sys_suspended; 80 #else 81 /* if power management is not configured it can't be suspended */ 82 #define pmu_sys_suspended 0 83 #endif 84 85 #endif /* _LINUX_PMU_H */ 86