aboutsummaryrefslogtreecommitdiffstats
path: root/include/uapi/linux/pmu.h
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2012-10-13 16:28:32 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2012-10-13 16:28:32 -0400
commit0b381a286e5d748b1fd80095d3dd52326819742f (patch)
treed72fca56123520b9c78661137f8a02b6ad26f95b /include/uapi/linux/pmu.h
parent034b5eeb6bc783e7f60e11299154556e65699e7a (diff)
parent5921e6f8809b1616932ca4afd40fe449faa8fd88 (diff)
Merge tag 'disintegrate-main-20121013' of git://git.infradead.org/users/dhowells/linux-headers
Pull UAPI disintegration for include/linux/{,byteorder/}*.h from David Howells: "The patches contained herein do the following: (1) Remove kernel-only stuff in linux/ppp-comp.h from the UAPI. I checked this with Paul Mackerras before I created the patch and he suggested some extra bits to unexport. (2) Remove linux/blk_types.h entirely from the UAPI as none of it is userspace applicable, and remove from the UAPI that part of linux/fs.h that was the reason for linux/blk_types.h being exported in the first place. I discussed this with Jens Axboe before creating the patch. (3) The big patch of the series to disintegrate include/linux/*.h as a unit. This could be split up, though there would be collisions in moving stuff between the two Kbuild files when the parts are merged as that file is sorted alphabetically rather than being grouped by subsystem. Of this set of headers, 17 files have changed in the UAPI exported region since the 4th and only 8 since the 9th so there isn't much change in this area - as one might expect. It should be pretty obvious and straightforward if it does come to fixing up: stuff in __KERNEL__ guards stays where it is and stuff outside moves to the same file in the include/uapi/linux/ directory. If a new file appears then things get a bit more complicated as the "headers +=" line has to move to include/uapi/linux/Kbuild. Only one new file has appeared since the 9th and I judge this type of event relatively unlikely. (4) A patch to disintegrate include/linux/byteorder/*.h as a unit. Signed-off-by: David Howells <dhowells@redhat.com>" * tag 'disintegrate-main-20121013' of git://git.infradead.org/users/dhowells/linux-headers: UAPI: (Scripted) Disintegrate include/linux/byteorder UAPI: (Scripted) Disintegrate include/linux UAPI: Unexport linux/blk_types.h UAPI: Unexport part of linux/ppp-comp.h
Diffstat (limited to 'include/uapi/linux/pmu.h')
-rw-r--r--include/uapi/linux/pmu.h139
1 files changed, 139 insertions, 0 deletions
diff --git a/include/uapi/linux/pmu.h b/include/uapi/linux/pmu.h
new file mode 100644
index 000000000000..caead364b6eb
--- /dev/null
+++ b/include/uapi/linux/pmu.h
@@ -0,0 +1,139 @@
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
9#ifndef _UAPI_LINUX_PMU_H
10#define _UAPI_LINUX_PMU_H
11
12#define PMU_DRIVER_VERSION 2
13
14/*
15 * PMU commands
16 */
17#define PMU_POWER_CTRL0 0x10 /* control power of some devices */
18#define PMU_POWER_CTRL 0x11 /* control power of some devices */
19#define PMU_ADB_CMD 0x20 /* send ADB packet */
20#define PMU_ADB_POLL_OFF 0x21 /* disable ADB auto-poll */
21#define PMU_WRITE_NVRAM 0x33 /* write non-volatile RAM */
22#define PMU_READ_NVRAM 0x3b /* read non-volatile RAM */
23#define PMU_SET_RTC 0x30 /* set real-time clock */
24#define PMU_READ_RTC 0x38 /* read real-time clock */
25#define PMU_SET_VOLBUTTON 0x40 /* set volume up/down position */
26#define PMU_BACKLIGHT_BRIGHT 0x41 /* set backlight brightness */
27#define PMU_GET_VOLBUTTON 0x48 /* get volume up/down position */
28#define PMU_PCEJECT 0x4c /* eject PC-card from slot */
29#define PMU_BATTERY_STATE 0x6b /* report battery state etc. */
30#define PMU_SMART_BATTERY_STATE 0x6f /* report battery state (new way) */
31#define PMU_SET_INTR_MASK 0x70 /* set PMU interrupt mask */
32#define PMU_INT_ACK 0x78 /* read interrupt bits */
33#define PMU_SHUTDOWN 0x7e /* turn power off */
34#define PMU_CPU_SPEED 0x7d /* control CPU speed on some models */
35#define PMU_SLEEP 0x7f /* put CPU to sleep */
36#define PMU_POWER_EVENTS 0x8f /* Send power-event commands to PMU */
37#define PMU_I2C_CMD 0x9a /* I2C operations */
38#define PMU_RESET 0xd0 /* reset CPU */
39#define PMU_GET_BRIGHTBUTTON 0xd9 /* report brightness up/down pos */
40#define PMU_GET_COVER 0xdc /* report cover open/closed */
41#define PMU_SYSTEM_READY 0xdf /* tell PMU we are awake */
42#define PMU_GET_VERSION 0xea /* read the PMU version */
43
44/* Bits to use with the PMU_POWER_CTRL0 command */
45#define PMU_POW0_ON 0x80 /* OR this to power ON the device */
46#define PMU_POW0_OFF 0x00 /* leave bit 7 to 0 to power it OFF */
47#define PMU_POW0_HARD_DRIVE 0x04 /* Hard drive power (on wallstreet/lombard ?) */
48
49/* Bits to use with the PMU_POWER_CTRL command */
50#define PMU_POW_ON 0x80 /* OR this to power ON the device */
51#define PMU_POW_OFF 0x00 /* leave bit 7 to 0 to power it OFF */
52#define PMU_POW_BACKLIGHT 0x01 /* backlight power */
53#define PMU_POW_CHARGER 0x02 /* battery charger power */
54#define PMU_POW_IRLED 0x04 /* IR led power (on wallstreet) */
55#define PMU_POW_MEDIABAY 0x08 /* media bay power (wallstreet/lombard ?) */
56
57/* Bits in PMU interrupt and interrupt mask bytes */
58#define PMU_INT_PCEJECT 0x04 /* PC-card eject buttons */
59#define PMU_INT_SNDBRT 0x08 /* sound/brightness up/down buttons */
60#define PMU_INT_ADB 0x10 /* ADB autopoll or reply data */
61#define PMU_INT_BATTERY 0x20 /* Battery state change */
62#define PMU_INT_ENVIRONMENT 0x40 /* Environment interrupts */
63#define PMU_INT_TICK 0x80 /* 1-second tick interrupt */
64
65/* Other bits in PMU interrupt valid when PMU_INT_ADB is set */
66#define PMU_INT_ADB_AUTO 0x04 /* ADB autopoll, when PMU_INT_ADB */
67#define PMU_INT_WAITING_CHARGER 0x01 /* ??? */
68#define PMU_INT_AUTO_SRQ_POLL 0x02 /* ??? */
69
70/* Bits in the environement message (either obtained via PMU_GET_COVER,
71 * or via PMU_INT_ENVIRONMENT on core99 */
72#define PMU_ENV_LID_CLOSED 0x01 /* The lid is closed */
73
74/* I2C related definitions */
75#define PMU_I2C_MODE_SIMPLE 0
76#define PMU_I2C_MODE_STDSUB 1
77#define PMU_I2C_MODE_COMBINED 2
78
79#define PMU_I2C_BUS_STATUS 0
80#define PMU_I2C_BUS_SYSCLK 1
81#define PMU_I2C_BUS_POWER 2
82
83#define PMU_I2C_STATUS_OK 0
84#define PMU_I2C_STATUS_DATAREAD 1
85#define PMU_I2C_STATUS_BUSY 0xfe
86
87
88/* Kind of PMU (model) */
89enum {
90 PMU_UNKNOWN,
91 PMU_OHARE_BASED, /* 2400, 3400, 3500 (old G3 powerbook) */
92 PMU_HEATHROW_BASED, /* PowerBook G3 series */
93 PMU_PADDINGTON_BASED, /* 1999 PowerBook G3 */
94 PMU_KEYLARGO_BASED, /* Core99 motherboard (PMU99) */
95 PMU_68K_V1, /* 68K PMU, version 1 */
96 PMU_68K_V2, /* 68K PMU, version 2 */
97};
98
99/* PMU PMU_POWER_EVENTS commands */
100enum {
101 PMU_PWR_GET_POWERUP_EVENTS = 0x00,
102 PMU_PWR_SET_POWERUP_EVENTS = 0x01,
103 PMU_PWR_CLR_POWERUP_EVENTS = 0x02,
104 PMU_PWR_GET_WAKEUP_EVENTS = 0x03,
105 PMU_PWR_SET_WAKEUP_EVENTS = 0x04,
106 PMU_PWR_CLR_WAKEUP_EVENTS = 0x05,
107};
108
109/* Power events wakeup bits */
110enum {
111 PMU_PWR_WAKEUP_KEY = 0x01, /* Wake on key press */
112 PMU_PWR_WAKEUP_AC_INSERT = 0x02, /* Wake on AC adapter plug */
113 PMU_PWR_WAKEUP_AC_CHANGE = 0x04,
114 PMU_PWR_WAKEUP_LID_OPEN = 0x08,
115 PMU_PWR_WAKEUP_RING = 0x10,
116};
117
118/*
119 * Ioctl commands for the /dev/pmu device
120 */
121#include <linux/ioctl.h>
122
123/* no param */
124#define PMU_IOC_SLEEP _IO('B', 0)
125/* out param: u32* backlight value: 0 to 15 */
126#define PMU_IOC_GET_BACKLIGHT _IOR('B', 1, size_t)
127/* in param: u32 backlight value: 0 to 15 */
128#define PMU_IOC_SET_BACKLIGHT _IOW('B', 2, size_t)
129/* out param: u32* PMU model */
130#define PMU_IOC_GET_MODEL _IOR('B', 3, size_t)
131/* out param: u32* has_adb: 0 or 1 */
132#define PMU_IOC_HAS_ADB _IOR('B', 4, size_t)
133/* out param: u32* can_sleep: 0 or 1 */
134#define PMU_IOC_CAN_SLEEP _IOR('B', 5, size_t)
135/* no param, but historically was _IOR('B', 6, 0), meaning 4 bytes */
136#define PMU_IOC_GRAB_BACKLIGHT _IOR('B', 6, size_t)
137
138
139#endif /* _UAPI_LINUX_PMU_H */