16573Sphitran /* 26573Sphitran * CDDL HEADER START 36573Sphitran * 46573Sphitran * The contents of this file are subject to the terms of the 56573Sphitran * Common Development and Distribution License (the "License"). 66573Sphitran * You may not use this file except in compliance with the License. 76573Sphitran * 86573Sphitran * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 96573Sphitran * or http://www.opensolaris.org/os/licensing. 106573Sphitran * See the License for the specific language governing permissions 116573Sphitran * and limitations under the License. 126573Sphitran * 136573Sphitran * When distributing Covered Code, include this CDDL HEADER in each 146573Sphitran * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 156573Sphitran * If applicable, add the following below this CDDL HEADER, with the 166573Sphitran * fields enclosed by brackets "[]" replaced with your own identifying 176573Sphitran * information: Portions Copyright [yyyy] [name of copyright owner] 186573Sphitran * 196573Sphitran * CDDL HEADER END 206573Sphitran */ 216573Sphitran 226573Sphitran /* 23*8693SKerry.Shu@Sun.COM * Copyright 2009 Sun Microsystems, Inc. All rights reserved. 246573Sphitran * Use is subject to license terms. 256573Sphitran */ 266573Sphitran 276573Sphitran #ifndef _ACPI_DRV_H 286573Sphitran #define _ACPI_DRV_H 296573Sphitran 306573Sphitran #ifdef __cplusplus 316573Sphitran extern "C" { 326573Sphitran #endif 336573Sphitran 346573Sphitran #include <sys/param.h> 356573Sphitran #include <sys/kstat.h> 366573Sphitran 376573Sphitran enum acpi_drv_ioctl { 386573Sphitran ACPI_DRV_IOC_BAY, 396573Sphitran ACPI_DRV_IOC_INFO, 406573Sphitran ACPI_DRV_IOC_STATUS, 416573Sphitran ACPI_DRV_IOC_AC_COUNT, 426573Sphitran ACPI_DRV_IOC_POWER_STATUS, 436573Sphitran ACPI_DRV_IOC_SET_WARNING, 446573Sphitran ACPI_DRV_IOC_GET_WARNING, 456573Sphitran ACPI_DRV_IOC_LID_STATUS, 467651SPhi.Tran@Sun.COM ACPI_DRV_IOC_LID_UPDATE, 476573Sphitran ACPI_DRV_IOC_LEVELS, 486573Sphitran ACPI_DRV_IOC_SET_BRIGHTNESS 496573Sphitran }; 506573Sphitran 516573Sphitran #define ACPI_DRV_BST_CHARGING 2 526573Sphitran #define ACPI_DRV_BST_DISCHARGING 1 536573Sphitran 546573Sphitran typedef struct batt_bay { 556573Sphitran /* Total number of bays in the system */ 566573Sphitran int bay_number; 576573Sphitran 586573Sphitran /* 596573Sphitran * Bitmap for each bay and its battery. 606573Sphitran * battery_map bit i: 616573Sphitran * 1 -- battery inserted to bay i 626573Sphitran * 0 -- bay i empty 636573Sphitran */ 646573Sphitran uint64_t battery_map; 656573Sphitran } batt_bay_t; 666573Sphitran 676573Sphitran typedef struct acpi_bif { 686573Sphitran uint32_t bif_unit; 696573Sphitran 706573Sphitran /* 716573Sphitran * 0x00000000 - 0x7fffffff 726573Sphitran * 0xffffffff - Unknown design capacity in [mWh] or [mAh] 736573Sphitran */ 746573Sphitran uint32_t bif_design_cap; 756573Sphitran 766573Sphitran /* 776573Sphitran * 0x00000000 - 0x7fffffff 786573Sphitran * 0xffffffff - Unknown last full charge capacity in [mWh] or [mAh] 796573Sphitran */ 806573Sphitran uint32_t bif_last_cap; 816573Sphitran 826573Sphitran uint32_t bif_tech; 836573Sphitran 846573Sphitran /* 856573Sphitran * 0x00000000 - 0x7fffffff 866573Sphitran * 0xffffffff - Unknown design voltage in [mV] 876573Sphitran */ 886573Sphitran uint32_t bif_voltage; 896573Sphitran 906573Sphitran /* 916573Sphitran * 0x00000000 - 0x7fffffff in [mWh] or [mAh] 926573Sphitran */ 936573Sphitran uint32_t bif_warn_cap; 946573Sphitran 956573Sphitran /* 966573Sphitran * 0x00000000 - 0x7fffffff in [mWh] or [mAh] 976573Sphitran */ 986573Sphitran uint32_t bif_low_cap; 996573Sphitran 1006573Sphitran uint32_t bif_gran1_cap; 1016573Sphitran uint32_t bif_gran2_cap; 1026573Sphitran char bif_model[MAXNAMELEN]; 1036573Sphitran char bif_serial[MAXNAMELEN]; 1046573Sphitran char bif_type[MAXNAMELEN]; 1056573Sphitran char bif_oem_info[MAXNAMELEN]; 1066573Sphitran } acpi_bif_t; 1076573Sphitran 1086573Sphitran typedef struct acpi_bst { 1096573Sphitran uint32_t bst_state; 1106573Sphitran 1116573Sphitran /* 1126573Sphitran * 0x00000000 - 0x7fffffff in [mW] or [mA] 1136573Sphitran * 0xffffffff - Unknown rate 1146573Sphitran */ 1156573Sphitran uint32_t bst_rate; 1166573Sphitran 1176573Sphitran /* 1186573Sphitran * 0x00000000 - 0x7fffffff in [mWh] or [mAh] 1196573Sphitran * 0xffffffff - Unknown capacity 1206573Sphitran */ 1216573Sphitran uint32_t bst_rem_cap; 1226573Sphitran 1236573Sphitran /* 1246573Sphitran * 0x00000000 - 0x7fffffff in [mV] 1256573Sphitran * 0xffffffff - Unknown voltage 1266573Sphitran */ 1276573Sphitran uint32_t bst_voltage; 1286573Sphitran } acpi_bst_t; 1296573Sphitran 1306573Sphitran /* Battery warnning levels in percentage */ 1316573Sphitran typedef struct acpi_drv_warn { 1326573Sphitran uint32_t bw_enabled; /* Enabled */ 1336573Sphitran uint32_t bw_charge_warn; /* charge warn threshold */ 1346573Sphitran uint32_t bw_charge_low; /* charge low threshold */ 1356573Sphitran } acpi_drv_warn_t; 1366573Sphitran 1376573Sphitran #define ACPI_DRV_NAME "acpi_drv" 1386573Sphitran #define ACPI_DRV_POWER_KSTAT_NAME "power" 1396573Sphitran #define ACPI_DRV_BTWARN_KSTAT_NAME "battery warning" 1406573Sphitran #define ACPI_DRV_BIF_KSTAT_NAME "battery BIF" 1416573Sphitran #define ACPI_DRV_BST_KSTAT_NAME "battery BST" 1426573Sphitran 1436573Sphitran #define AC "AC" 1446573Sphitran #define BATTERY "battery" 1456573Sphitran #define SYSTEM_POWER "system power" 1466573Sphitran #define SUPPORTED_BATTERY_COUNT "supported_battery_count" 1476573Sphitran 1486573Sphitran #define BW_ENABLED "enabled" 1496573Sphitran #define BW_POWEROFF_THRESHOLD "warn capacity threshold" 1506573Sphitran #define BW_SHUTDOWN_THRESHOLD "low capacity threshold" 1516573Sphitran 1526573Sphitran #define BIF_UNIT "bif_unit" 1536573Sphitran #define BIF_DESIGN_CAP "bif_design_cap" 1546573Sphitran #define BIF_LAST_CAP "bif_last_cap" 1556573Sphitran #define BIF_TECH "bif_tech" 1566573Sphitran #define BIF_VOLTAGE "bif_voltage" 1576573Sphitran #define BIF_WARN_CAP "bif_warn_cap" 1586573Sphitran #define BIF_LOW_CAP "bif_low_cap" 1596573Sphitran #define BIF_GRAN1_CAP "bif_gran1_cap" 1606573Sphitran #define BIF_GRAN2_CAP "bif_gran2_cap" 1616573Sphitran #define BIF_MODEL "bif_model" 1626573Sphitran #define BIF_SERIAL "bif_serial" 1636573Sphitran #define BIF_TYPE "bif_type" 1646573Sphitran #define BIF_OEM_INFO "bif_oem_info" 1656573Sphitran 1666573Sphitran #define BST_STATE "bst_state" 1676573Sphitran #define BST_RATE "bst_rate" 1686573Sphitran #define BST_REM_CAP "bst_rem_cap" 1696573Sphitran #define BST_VOLTAGE "bst_voltage" 1706573Sphitran 1716573Sphitran #define PSR_AC_PRESENT "psr_ac_present" 1726573Sphitran 1736573Sphitran typedef struct acpi_drv_power_kstat_s { 1746573Sphitran struct kstat_named acpi_drv_power; 1756573Sphitran struct kstat_named acpi_drv_supported_battery_count; 1766573Sphitran } acpi_drv_power_kstat_t; 1776573Sphitran 1786573Sphitran typedef struct acpi_drv_warn_kstat_s { 1796573Sphitran struct kstat_named acpi_drv_bw_enabled; 1806573Sphitran struct kstat_named acpi_drv_bw_charge_warn; 1816573Sphitran struct kstat_named acpi_drv_bw_charge_low; 1826573Sphitran } acpi_drv_warn_kstat_t; 1836573Sphitran 1846573Sphitran /* BIF kstat */ 1856573Sphitran typedef struct acpi_drv_bif_kstat_s { 1866573Sphitran struct kstat_named acpi_drv_bif_unit; 1876573Sphitran struct kstat_named acpi_drv_bif_design_cap; 1886573Sphitran struct kstat_named acpi_drv_bif_last_cap; 1896573Sphitran struct kstat_named acpi_drv_bif_tech; 1906573Sphitran struct kstat_named acpi_drv_bif_voltage; 1916573Sphitran struct kstat_named acpi_drv_bif_warn_cap; 1926573Sphitran struct kstat_named acpi_drv_bif_low_cap; 1936573Sphitran struct kstat_named acpi_drv_bif_gran1_cap; 1946573Sphitran struct kstat_named acpi_drv_bif_gran2_cap; 1956573Sphitran struct kstat_named acpi_drv_bif_model; 1966573Sphitran struct kstat_named acpi_drv_bif_serial; 1976573Sphitran struct kstat_named acpi_drv_bif_type; 1986573Sphitran struct kstat_named acpi_drv_bif_oem_info; 1996573Sphitran } acpi_drv_bif_kstat_t; 2006573Sphitran 2016573Sphitran /* BST kstat */ 2026573Sphitran typedef struct acpi_drv_bst_kstat_s { 2036573Sphitran struct kstat_named acpi_drv_bst_state; 2046573Sphitran struct kstat_named acpi_drv_bst_rate; 2056573Sphitran struct kstat_named acpi_drv_bst_rem_cap; 2066573Sphitran struct kstat_named acpi_drv_bst_voltage; 2076573Sphitran } acpi_drv_bst_kstat_t; 2086573Sphitran 209*8693SKerry.Shu@Sun.COM /* acpi device types */ 210*8693SKerry.Shu@Sun.COM enum acpi_drv_type { 211*8693SKerry.Shu@Sun.COM ACPI_DRV_TYPE_UNKNOWN, 212*8693SKerry.Shu@Sun.COM ACPI_DRV_TYPE_CBAT, 213*8693SKerry.Shu@Sun.COM ACPI_DRV_TYPE_AC, 214*8693SKerry.Shu@Sun.COM ACPI_DRV_TYPE_LID, 215*8693SKerry.Shu@Sun.COM ACPI_DRV_TYPE_DISPLAY, 216*8693SKerry.Shu@Sun.COM ACPI_DRV_TYPE_HOTKEY 2176573Sphitran }; 2186573Sphitran 2196573Sphitran struct acpi_drv_output_info { 2206573Sphitran uint32_t adr; /* unique ID for this output device */ 2216573Sphitran int nlev; /* number of brightness levels */ 2226573Sphitran }; 2236573Sphitran 2246573Sphitran struct acpi_drv_output_status { 2256573Sphitran int state; 2266573Sphitran int num_levels; 2276573Sphitran int cur_level; 2286573Sphitran int cur_level_index; 2296573Sphitran }; 2306573Sphitran 231*8693SKerry.Shu@Sun.COM #define ACPI_DRV_OK 0 232*8693SKerry.Shu@Sun.COM #define ACPI_DRV_ERR -1 233*8693SKerry.Shu@Sun.COM 2346573Sphitran #ifdef __cplusplus 2356573Sphitran } 2366573Sphitran #endif 2376573Sphitran 2386573Sphitran #endif /* _ACPI_DRV_H */ 239