Home | History | Annotate | Line # | Download | only in dev
pmuvar.h revision 1.6.18.1
      1       1.1  macallan /*-
      2       1.1  macallan  * Copyright (c) 2006 Michael Lorenz
      3       1.1  macallan  * All rights reserved.
      4       1.1  macallan  *
      5       1.1  macallan  * Redistribution and use in source and binary forms, with or without
      6       1.1  macallan  * modification, are permitted provided that the following conditions
      7       1.1  macallan  * are met:
      8       1.1  macallan  * 1. Redistributions of source code must retain the above copyright
      9       1.1  macallan  *    notice, this list of conditions and the following disclaimer.
     10       1.1  macallan  * 2. Redistributions in binary form must reproduce the above copyright
     11       1.1  macallan  *    notice, this list of conditions and the following disclaimer in the
     12       1.1  macallan  *    documentation and/or other materials provided with the distribution.
     13       1.1  macallan  *
     14       1.1  macallan  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
     15       1.1  macallan  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
     16       1.1  macallan  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     17       1.1  macallan  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
     18       1.1  macallan  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     19       1.1  macallan  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     20       1.1  macallan  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     21       1.1  macallan  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     22       1.1  macallan  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     23       1.1  macallan  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     24       1.1  macallan  * POSSIBILITY OF SUCH DAMAGE.
     25       1.1  macallan  */
     26       1.1  macallan 
     27       1.1  macallan #include <sys/cdefs.h>
     28  1.6.18.1      yamt __KERNEL_RCSID(0, "$NetBSD: pmuvar.h,v 1.6.18.1 2008/05/18 12:32:23 yamt Exp $");
     29       1.1  macallan 
     30       1.1  macallan #ifndef PMUVAR_H
     31       1.1  macallan #define PMUVAR_H
     32       1.1  macallan 
     33       1.1  macallan /* PMU commands */
     34       1.1  macallan #define PMU_POWER_CTRL0		0x10	/* control power of some devices */
     35       1.1  macallan #define PMU_POWER_CTRL		0x11	/* control power of some devices */
     36       1.1  macallan 
     37       1.1  macallan #define PMU_POWER_OFF		0x7e	/* Turn Power off */
     38       1.1  macallan #define PMU_RESET_CPU		0xd0	/* Reset CPU */
     39       1.1  macallan 
     40       1.1  macallan #define PMU_SET_RTC		0x30	/* Set realtime clock */
     41       1.1  macallan #define PMU_READ_RTC		0x38	/* Read realtime clock */
     42       1.1  macallan 
     43       1.1  macallan #define PMU_WRITE_PRAM		0x32	/* Write PRAM */
     44       1.1  macallan #define PMU_READ_PRAM		0x3a	/* Read PRAM */
     45       1.1  macallan 
     46       1.1  macallan #define PMU_WRITE_NVRAM		0x33	/* Write NVRAM */
     47       1.1  macallan #define PMU_READ_NVRAM		0x3b	/* Read NVRAM */
     48       1.1  macallan 
     49       1.1  macallan #define PMU_EJECT_PCMCIA	0x4c	/* Eject PCMCIA slot */
     50       1.1  macallan 
     51       1.1  macallan #define PMU_SET_BRIGHTNESS	0x41	/* Set backlight brightness */
     52       1.1  macallan #define PMU_READ_BRIGHTNESS	0xd9	/* Read brightness button position */
     53       1.1  macallan 
     54       1.1  macallan #define PMU_POWER_EVENTS        0x8f    /* Send power-event commands to PMU */
     55       1.1  macallan #define PMU_SYSTEM_READY        0xdf    /* tell PMU we are awake */
     56       1.1  macallan 
     57       1.1  macallan #define PMU_BATTERY_STATE	0x6b	/* Read old battery state */
     58       1.1  macallan #define PMU_SMART_BATTERY_STATE	0x6f	/* Read battery state */
     59       1.1  macallan 
     60       1.1  macallan #define PMU_ADB_CMD		0x20	/* Send ADB packet */
     61       1.1  macallan #define PMU_ADB_POLL_OFF	0x21	/* Disable ADB auto-poll */
     62       1.1  macallan #define PMU_SET_VOL		0x40	/* Set volume button position */
     63       1.1  macallan #define PMU_GET_VOL		0x48	/* Get volume button position */
     64       1.1  macallan #define PMU_SET_IMASK		0x70	/* Set interrupt mask */
     65       1.1  macallan #define PMU_INT_ACK		0x78	/* Read interrupt bits */
     66       1.1  macallan #define PMU_CPU_SPEED		0x7d	/* Control CPU speed on some models */
     67       1.1  macallan #define PMU_SLEEP		0x7f	/* Put CPU to sleep */
     68       1.5  macallan #define PMU_SET_POLL_MASK	0x86	/*
     69       1.5  macallan 					 * 16bit mask enables autopolling per
     70       1.5  macallan 					 * device
     71       1.5  macallan 					 */
     72       1.1  macallan #define PMU_I2C_CMD		0x9a	/* i2c commands */
     73       1.1  macallan #define PMU_GET_LID_STATE	0xdc	/* Report lid state */
     74       1.1  macallan #define PMU_GET_VERSION		0xea	/* Identify thyself */
     75       1.1  macallan 
     76       1.1  macallan /* Bits in PMU interrupt and interrupt mask bytes */
     77       1.1  macallan #define PMU_INT_ADB_AUTO	0x04	/* ADB autopoll, when PMU_INT_ADB */
     78       1.1  macallan #define PMU_INT_PCEJECT		0x04	/* PC-card eject buttons */
     79       1.1  macallan #define PMU_INT_SNDBRT		0x08	/* sound/brightness up/down buttons */
     80       1.1  macallan #define PMU_INT_ADB		0x10	/* ADB autopoll or reply data */
     81       1.1  macallan #define PMU_INT_BATTERY		0x20
     82       1.1  macallan #define PMU_INT_ENVIRONMENT	0x40
     83       1.1  macallan #define PMU_INT_TICK		0x80	/* 1-second tick interrupt */
     84       1.1  macallan 
     85       1.1  macallan /* Bits to use with the PMU_POWER_CTRL0 command */
     86       1.1  macallan #define PMU_POW0_ON		0x80	/* OR this to power ON the device */
     87       1.1  macallan #define PMU_POW0_OFF		0x00	/* leave bit 7 to 0 to power it OFF */
     88       1.2  macallan #define PMU_POW0_HARD_DRIVE	0x04	/* wallstreet/lombard? */
     89       1.1  macallan 
     90       1.1  macallan /* Bits to use with the PMU_POWER_CTRL command */
     91       1.1  macallan #define PMU_POW_ON		0x80	/* OR this to power ON the device */
     92       1.1  macallan #define PMU_POW_OFF		0x00	/* leave bit 7 to 0 to power it OFF */
     93       1.1  macallan #define PMU_POW_BACKLIGHT	0x01	/* backlight power */
     94       1.1  macallan #define PMU_POW_CHARGER		0x02	/* battery charger power */
     95       1.1  macallan #define PMU_POW_IRLED		0x04	/* IR led power (on wallstreet) */
     96       1.1  macallan #define PMU_POW_MEDIABAY	0x08	/* media bay power (wallstreet/lombard ?) */
     97       1.1  macallan 
     98       1.1  macallan /* Bits from PMU_GET_LID_STATE or PMU_INT_ENVIRONMENT on core99 */
     99       1.1  macallan #define PMU_ENV_LID_CLOSED	0x01	/* The lid is closed */
    100       1.1  macallan 
    101       1.1  macallan /* PMU PMU_POWER_EVENTS commands */
    102       1.1  macallan enum {
    103       1.1  macallan 	PMU_PWR_GET_POWERUP_EVENTS      = 0x00,
    104       1.1  macallan 	PMU_PWR_SET_POWERUP_EVENTS      = 0x01,
    105       1.1  macallan 	PMU_PWR_CLR_POWERUP_EVENTS      = 0x02,
    106       1.1  macallan 	PMU_PWR_GET_WAKEUP_EVENTS       = 0x03,
    107       1.1  macallan 	PMU_PWR_SET_WAKEUP_EVENTS       = 0x04,
    108       1.1  macallan 	PMU_PWR_CLR_WAKEUP_EVENTS       = 0x05,
    109       1.1  macallan };
    110       1.1  macallan 
    111       1.1  macallan /* PMU Power Information */
    112       1.1  macallan 
    113       1.1  macallan #define PMU_PWR_AC_PRESENT	(1 << 0)
    114       1.1  macallan #define PMU_PWR_BATT_CHARGING	(1 << 1)
    115       1.1  macallan #define PMU_PWR_BATT_PRESENT	(1 << 2)
    116       1.1  macallan #define PMU_PWR_BATT_FULL	(1 << 5)
    117       1.1  macallan #define PMU_PWR_PCHARGE_RESET	(1 << 6)
    118       1.1  macallan #define PMU_PWR_BATT_EXIST	(1 << 7)
    119       1.1  macallan 
    120       1.2  macallan 
    121       1.2  macallan /* I2C related definitions */
    122       1.2  macallan #define PMU_I2C_MODE_SIMPLE	0
    123       1.2  macallan #define PMU_I2C_MODE_STDSUB	1
    124       1.2  macallan #define PMU_I2C_MODE_COMBINED	2
    125       1.2  macallan 
    126       1.2  macallan #define PMU_I2C_BUS_STATUS	0
    127       1.2  macallan #define PMU_I2C_BUS_SYSCLK	1
    128       1.2  macallan #define PMU_I2C_BUS_POWER	2
    129       1.2  macallan 
    130       1.2  macallan #define PMU_I2C_STATUS_OK	0
    131       1.2  macallan #define PMU_I2C_STATUS_DATAREAD	1
    132       1.2  macallan #define PMU_I2C_STATUS_BUSY	0xfe
    133       1.2  macallan 
    134       1.2  macallan /* Power events wakeup bits */
    135       1.2  macallan enum {
    136       1.2  macallan 	PMU_PWR_WAKEUP_KEY		= 0x01, /* Wake on key press */
    137       1.2  macallan 	PMU_PWR_WAKEUP_AC_INSERT	= 0x02, /* Wake on AC adapter plug */
    138       1.2  macallan 	PMU_PWR_WAKEUP_AC_CHANGE 	= 0x04,
    139       1.2  macallan 	PMU_PWR_WAKEUP_LID_OPEN		= 0x08,
    140       1.2  macallan 	PMU_PWR_WAKEUP_RING		= 0x10,
    141       1.2  macallan };
    142       1.2  macallan 
    143       1.2  macallan struct pmu_ops {
    144       1.1  macallan 	void *cookie;
    145       1.3  macallan 	int (*do_command)(void *, int, int, uint8_t *, int, uint8_t *);
    146       1.4  macallan 	void (*register_callback)(void *, void (*)(void *), void *);
    147       1.1  macallan };
    148       1.1  macallan 
    149       1.1  macallan void pmu_poweroff(void);
    150       1.1  macallan void pmu_restart(void);
    151       1.1  macallan 
    152       1.1  macallan #endif /* PMUVAR_H */
    153