1*6573Sphitran /* 2*6573Sphitran * CDDL HEADER START 3*6573Sphitran * 4*6573Sphitran * The contents of this file are subject to the terms of the 5*6573Sphitran * Common Development and Distribution License (the "License"). 6*6573Sphitran * You may not use this file except in compliance with the License. 7*6573Sphitran * 8*6573Sphitran * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9*6573Sphitran * or http://www.opensolaris.org/os/licensing. 10*6573Sphitran * See the License for the specific language governing permissions 11*6573Sphitran * and limitations under the License. 12*6573Sphitran * 13*6573Sphitran * When distributing Covered Code, include this CDDL HEADER in each 14*6573Sphitran * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15*6573Sphitran * If applicable, add the following below this CDDL HEADER, with the 16*6573Sphitran * fields enclosed by brackets "[]" replaced with your own identifying 17*6573Sphitran * information: Portions Copyright [yyyy] [name of copyright owner] 18*6573Sphitran * 19*6573Sphitran * CDDL HEADER END 20*6573Sphitran */ 21*6573Sphitran 22*6573Sphitran /* 23*6573Sphitran * Copyright 2008 Sun Microsystems, Inc. All rights reserved. 24*6573Sphitran * Use is subject to license terms. 25*6573Sphitran */ 26*6573Sphitran 27*6573Sphitran #ifndef _ACPI_DRV_H 28*6573Sphitran #define _ACPI_DRV_H 29*6573Sphitran 30*6573Sphitran #pragma ident "%Z%%M% %I% %E% SMI" 31*6573Sphitran 32*6573Sphitran #ifdef __cplusplus 33*6573Sphitran extern "C" { 34*6573Sphitran #endif 35*6573Sphitran 36*6573Sphitran #include <sys/param.h> 37*6573Sphitran #include <sys/kstat.h> 38*6573Sphitran 39*6573Sphitran enum acpi_drv_ioctl { 40*6573Sphitran ACPI_DRV_IOC_BAY, 41*6573Sphitran ACPI_DRV_IOC_INFO, 42*6573Sphitran ACPI_DRV_IOC_STATUS, 43*6573Sphitran ACPI_DRV_IOC_AC_COUNT, 44*6573Sphitran ACPI_DRV_IOC_POWER_STATUS, 45*6573Sphitran ACPI_DRV_IOC_SET_WARNING, 46*6573Sphitran ACPI_DRV_IOC_GET_WARNING, 47*6573Sphitran ACPI_DRV_IOC_LID_STATUS, 48*6573Sphitran ACPI_DRV_IOC_LEVELS, 49*6573Sphitran ACPI_DRV_IOC_SET_BRIGHTNESS 50*6573Sphitran }; 51*6573Sphitran 52*6573Sphitran #define ACPI_DRV_BST_CHARGING 2 53*6573Sphitran #define ACPI_DRV_BST_DISCHARGING 1 54*6573Sphitran 55*6573Sphitran typedef struct batt_bay { 56*6573Sphitran /* Total number of bays in the system */ 57*6573Sphitran int bay_number; 58*6573Sphitran 59*6573Sphitran /* 60*6573Sphitran * Bitmap for each bay and its battery. 61*6573Sphitran * battery_map bit i: 62*6573Sphitran * 1 -- battery inserted to bay i 63*6573Sphitran * 0 -- bay i empty 64*6573Sphitran */ 65*6573Sphitran uint64_t battery_map; 66*6573Sphitran } batt_bay_t; 67*6573Sphitran 68*6573Sphitran typedef struct acpi_bif { 69*6573Sphitran uint32_t bif_unit; 70*6573Sphitran 71*6573Sphitran /* 72*6573Sphitran * 0x00000000 - 0x7fffffff 73*6573Sphitran * 0xffffffff - Unknown design capacity in [mWh] or [mAh] 74*6573Sphitran */ 75*6573Sphitran uint32_t bif_design_cap; 76*6573Sphitran 77*6573Sphitran /* 78*6573Sphitran * 0x00000000 - 0x7fffffff 79*6573Sphitran * 0xffffffff - Unknown last full charge capacity in [mWh] or [mAh] 80*6573Sphitran */ 81*6573Sphitran uint32_t bif_last_cap; 82*6573Sphitran 83*6573Sphitran uint32_t bif_tech; 84*6573Sphitran 85*6573Sphitran /* 86*6573Sphitran * 0x00000000 - 0x7fffffff 87*6573Sphitran * 0xffffffff - Unknown design voltage in [mV] 88*6573Sphitran */ 89*6573Sphitran uint32_t bif_voltage; 90*6573Sphitran 91*6573Sphitran /* 92*6573Sphitran * 0x00000000 - 0x7fffffff in [mWh] or [mAh] 93*6573Sphitran */ 94*6573Sphitran uint32_t bif_warn_cap; 95*6573Sphitran 96*6573Sphitran /* 97*6573Sphitran * 0x00000000 - 0x7fffffff in [mWh] or [mAh] 98*6573Sphitran */ 99*6573Sphitran uint32_t bif_low_cap; 100*6573Sphitran 101*6573Sphitran uint32_t bif_gran1_cap; 102*6573Sphitran uint32_t bif_gran2_cap; 103*6573Sphitran char bif_model[MAXNAMELEN]; 104*6573Sphitran char bif_serial[MAXNAMELEN]; 105*6573Sphitran char bif_type[MAXNAMELEN]; 106*6573Sphitran char bif_oem_info[MAXNAMELEN]; 107*6573Sphitran } acpi_bif_t; 108*6573Sphitran 109*6573Sphitran typedef struct acpi_bst { 110*6573Sphitran uint32_t bst_state; 111*6573Sphitran 112*6573Sphitran /* 113*6573Sphitran * 0x00000000 - 0x7fffffff in [mW] or [mA] 114*6573Sphitran * 0xffffffff - Unknown rate 115*6573Sphitran */ 116*6573Sphitran uint32_t bst_rate; 117*6573Sphitran 118*6573Sphitran /* 119*6573Sphitran * 0x00000000 - 0x7fffffff in [mWh] or [mAh] 120*6573Sphitran * 0xffffffff - Unknown capacity 121*6573Sphitran */ 122*6573Sphitran uint32_t bst_rem_cap; 123*6573Sphitran 124*6573Sphitran /* 125*6573Sphitran * 0x00000000 - 0x7fffffff in [mV] 126*6573Sphitran * 0xffffffff - Unknown voltage 127*6573Sphitran */ 128*6573Sphitran uint32_t bst_voltage; 129*6573Sphitran } acpi_bst_t; 130*6573Sphitran 131*6573Sphitran /* Battery warnning levels in percentage */ 132*6573Sphitran typedef struct acpi_drv_warn { 133*6573Sphitran uint32_t bw_enabled; /* Enabled */ 134*6573Sphitran uint32_t bw_charge_warn; /* charge warn threshold */ 135*6573Sphitran uint32_t bw_charge_low; /* charge low threshold */ 136*6573Sphitran } acpi_drv_warn_t; 137*6573Sphitran 138*6573Sphitran #define ACPI_DRV_NAME "acpi_drv" 139*6573Sphitran #define ACPI_DRV_POWER_KSTAT_NAME "power" 140*6573Sphitran #define ACPI_DRV_BTWARN_KSTAT_NAME "battery warning" 141*6573Sphitran #define ACPI_DRV_BIF_KSTAT_NAME "battery BIF" 142*6573Sphitran #define ACPI_DRV_BST_KSTAT_NAME "battery BST" 143*6573Sphitran 144*6573Sphitran #define AC "AC" 145*6573Sphitran #define BATTERY "battery" 146*6573Sphitran #define SYSTEM_POWER "system power" 147*6573Sphitran #define SUPPORTED_BATTERY_COUNT "supported_battery_count" 148*6573Sphitran 149*6573Sphitran #define BW_ENABLED "enabled" 150*6573Sphitran #define BW_POWEROFF_THRESHOLD "warn capacity threshold" 151*6573Sphitran #define BW_SHUTDOWN_THRESHOLD "low capacity threshold" 152*6573Sphitran 153*6573Sphitran #define BIF_UNIT "bif_unit" 154*6573Sphitran #define BIF_DESIGN_CAP "bif_design_cap" 155*6573Sphitran #define BIF_LAST_CAP "bif_last_cap" 156*6573Sphitran #define BIF_TECH "bif_tech" 157*6573Sphitran #define BIF_VOLTAGE "bif_voltage" 158*6573Sphitran #define BIF_WARN_CAP "bif_warn_cap" 159*6573Sphitran #define BIF_LOW_CAP "bif_low_cap" 160*6573Sphitran #define BIF_GRAN1_CAP "bif_gran1_cap" 161*6573Sphitran #define BIF_GRAN2_CAP "bif_gran2_cap" 162*6573Sphitran #define BIF_MODEL "bif_model" 163*6573Sphitran #define BIF_SERIAL "bif_serial" 164*6573Sphitran #define BIF_TYPE "bif_type" 165*6573Sphitran #define BIF_OEM_INFO "bif_oem_info" 166*6573Sphitran 167*6573Sphitran #define BST_STATE "bst_state" 168*6573Sphitran #define BST_RATE "bst_rate" 169*6573Sphitran #define BST_REM_CAP "bst_rem_cap" 170*6573Sphitran #define BST_VOLTAGE "bst_voltage" 171*6573Sphitran 172*6573Sphitran #define PSR_AC_PRESENT "psr_ac_present" 173*6573Sphitran 174*6573Sphitran typedef struct acpi_drv_power_kstat_s { 175*6573Sphitran struct kstat_named acpi_drv_power; 176*6573Sphitran struct kstat_named acpi_drv_supported_battery_count; 177*6573Sphitran } acpi_drv_power_kstat_t; 178*6573Sphitran 179*6573Sphitran typedef struct acpi_drv_warn_kstat_s { 180*6573Sphitran struct kstat_named acpi_drv_bw_enabled; 181*6573Sphitran struct kstat_named acpi_drv_bw_charge_warn; 182*6573Sphitran struct kstat_named acpi_drv_bw_charge_low; 183*6573Sphitran } acpi_drv_warn_kstat_t; 184*6573Sphitran 185*6573Sphitran /* BIF kstat */ 186*6573Sphitran typedef struct acpi_drv_bif_kstat_s { 187*6573Sphitran struct kstat_named acpi_drv_bif_unit; 188*6573Sphitran struct kstat_named acpi_drv_bif_design_cap; 189*6573Sphitran struct kstat_named acpi_drv_bif_last_cap; 190*6573Sphitran struct kstat_named acpi_drv_bif_tech; 191*6573Sphitran struct kstat_named acpi_drv_bif_voltage; 192*6573Sphitran struct kstat_named acpi_drv_bif_warn_cap; 193*6573Sphitran struct kstat_named acpi_drv_bif_low_cap; 194*6573Sphitran struct kstat_named acpi_drv_bif_gran1_cap; 195*6573Sphitran struct kstat_named acpi_drv_bif_gran2_cap; 196*6573Sphitran struct kstat_named acpi_drv_bif_model; 197*6573Sphitran struct kstat_named acpi_drv_bif_serial; 198*6573Sphitran struct kstat_named acpi_drv_bif_type; 199*6573Sphitran struct kstat_named acpi_drv_bif_oem_info; 200*6573Sphitran } acpi_drv_bif_kstat_t; 201*6573Sphitran 202*6573Sphitran /* BST kstat */ 203*6573Sphitran typedef struct acpi_drv_bst_kstat_s { 204*6573Sphitran struct kstat_named acpi_drv_bst_state; 205*6573Sphitran struct kstat_named acpi_drv_bst_rate; 206*6573Sphitran struct kstat_named acpi_drv_bst_rem_cap; 207*6573Sphitran struct kstat_named acpi_drv_bst_voltage; 208*6573Sphitran } acpi_drv_bst_kstat_t; 209*6573Sphitran 210*6573Sphitran struct acpi_drv_display_info { 211*6573Sphitran int noutput; /* number of output devices */ 212*6573Sphitran int sw_on; 213*6573Sphitran int bright_on; 214*6573Sphitran }; 215*6573Sphitran 216*6573Sphitran struct acpi_drv_output_info { 217*6573Sphitran uint32_t adr; /* unique ID for this output device */ 218*6573Sphitran int nlev; /* number of brightness levels */ 219*6573Sphitran }; 220*6573Sphitran 221*6573Sphitran struct acpi_drv_output_status { 222*6573Sphitran int state; 223*6573Sphitran int num_levels; 224*6573Sphitran int cur_level; 225*6573Sphitran int cur_level_index; 226*6573Sphitran }; 227*6573Sphitran 228*6573Sphitran #ifdef __cplusplus 229*6573Sphitran } 230*6573Sphitran #endif 231*6573Sphitran 232*6573Sphitran #endif /* _ACPI_DRV_H */ 233