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 14extern int find_via_pmu(void); 15 16extern int pmu_request(struct adb_request *req, 17 void (*done)(struct adb_request *), int nbytes, ...); 18extern int pmu_queue_request(struct adb_request *req); 19extern void pmu_poll(void); 20extern void pmu_poll_adb(void); /* For use by xmon */ 21extern 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) 27extern void pmu_suspend(void); 28extern void pmu_resume(void); 29#else 30static inline void pmu_suspend(void) 31{} 32static inline void pmu_resume(void) 33{} 34#endif 35 36extern void pmu_enable_irled(int on); 37 38extern void pmu_restart(void); 39extern void pmu_shutdown(void); 40extern void pmu_unlock(void); 41 42extern int pmu_present(void); 43extern int pmu_get_model(void); 44 45extern 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 60struct 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 70extern int pmu_battery_count; 71extern struct pmu_battery_info pmu_batteries[PMU_MAX_BATTERIES]; 72extern unsigned int pmu_power_flags; 73 74/* Backlight */ 75extern 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) 79extern 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