1*5db2f26eSSascha Wildner /* 2*5db2f26eSSascha Wildner * Copyright (c) 2009 The DragonFly Project. All rights reserved. 3*5db2f26eSSascha Wildner * 4*5db2f26eSSascha Wildner * This code is derived from software contributed to The DragonFly Project 5*5db2f26eSSascha Wildner * by Sepherosa Ziehau <sepherosa@gmail.com> 6*5db2f26eSSascha Wildner * 7*5db2f26eSSascha Wildner * Redistribution and use in source and binary forms, with or without 8*5db2f26eSSascha Wildner * modification, are permitted provided that the following conditions 9*5db2f26eSSascha Wildner * are met: 10*5db2f26eSSascha Wildner * 11*5db2f26eSSascha Wildner * 1. Redistributions of source code must retain the above copyright 12*5db2f26eSSascha Wildner * notice, this list of conditions and the following disclaimer. 13*5db2f26eSSascha Wildner * 2. Redistributions in binary form must reproduce the above copyright 14*5db2f26eSSascha Wildner * notice, this list of conditions and the following disclaimer in 15*5db2f26eSSascha Wildner * the documentation and/or other materials provided with the 16*5db2f26eSSascha Wildner * distribution. 17*5db2f26eSSascha Wildner * 3. Neither the name of The DragonFly Project nor the names of its 18*5db2f26eSSascha Wildner * contributors may be used to endorse or promote products derived 19*5db2f26eSSascha Wildner * from this software without specific, prior written permission. 20*5db2f26eSSascha Wildner * 21*5db2f26eSSascha Wildner * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22*5db2f26eSSascha Wildner * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23*5db2f26eSSascha Wildner * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 24*5db2f26eSSascha Wildner * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 25*5db2f26eSSascha Wildner * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 26*5db2f26eSSascha Wildner * INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING, 27*5db2f26eSSascha Wildner * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 28*5db2f26eSSascha Wildner * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 29*5db2f26eSSascha Wildner * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 30*5db2f26eSSascha Wildner * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 31*5db2f26eSSascha Wildner * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 32*5db2f26eSSascha Wildner * SUCH DAMAGE. 33*5db2f26eSSascha Wildner */ 34*5db2f26eSSascha Wildner 35*5db2f26eSSascha Wildner #ifndef __ACPI_CPU_PSTATE_H__ 36*5db2f26eSSascha Wildner #define __ACPI_CPU_PSTATE_H__ 37*5db2f26eSSascha Wildner 38*5db2f26eSSascha Wildner #ifndef _SYS_BUS_H_ 39*5db2f26eSSascha Wildner #include <sys/bus.h> 40*5db2f26eSSascha Wildner #endif 41*5db2f26eSSascha Wildner 42*5db2f26eSSascha Wildner struct acpi_pstate { 43*5db2f26eSSascha Wildner uint32_t st_freq; 44*5db2f26eSSascha Wildner uint32_t st_power; 45*5db2f26eSSascha Wildner uint32_t st_xsit_lat; 46*5db2f26eSSascha Wildner uint32_t st_bm_lat; 47*5db2f26eSSascha Wildner uint32_t st_cval; 48*5db2f26eSSascha Wildner uint32_t st_sval; 49*5db2f26eSSascha Wildner }; 50*5db2f26eSSascha Wildner 51*5db2f26eSSascha Wildner struct acpi_pst_res { 52*5db2f26eSSascha Wildner ACPI_GENERIC_ADDRESS pr_gas; 53*5db2f26eSSascha Wildner struct resource *pr_res; 54*5db2f26eSSascha Wildner int pr_rid; 55*5db2f26eSSascha Wildner bus_space_tag_t pr_bt; 56*5db2f26eSSascha Wildner bus_space_handle_t pr_bh; 57*5db2f26eSSascha Wildner }; 58*5db2f26eSSascha Wildner 59*5db2f26eSSascha Wildner struct acpi_pst_md { 60*5db2f26eSSascha Wildner int (*pmd_check_csr) 61*5db2f26eSSascha Wildner (const struct acpi_pst_res *, 62*5db2f26eSSascha Wildner const struct acpi_pst_res *); 63*5db2f26eSSascha Wildner int (*pmd_check_pstates) 64*5db2f26eSSascha Wildner (const struct acpi_pstate *, int); 65*5db2f26eSSascha Wildner 66*5db2f26eSSascha Wildner int (*pmd_init) 67*5db2f26eSSascha Wildner (const struct acpi_pst_res *, 68*5db2f26eSSascha Wildner const struct acpi_pst_res *); 69*5db2f26eSSascha Wildner 70*5db2f26eSSascha Wildner int (*pmd_set_pstate) 71*5db2f26eSSascha Wildner (const struct acpi_pst_res *, 72*5db2f26eSSascha Wildner const struct acpi_pst_res *, 73*5db2f26eSSascha Wildner const struct acpi_pstate *); 74*5db2f26eSSascha Wildner 75*5db2f26eSSascha Wildner const struct acpi_pstate *(*pmd_get_pstate) 76*5db2f26eSSascha Wildner (const struct acpi_pst_res *, 77*5db2f26eSSascha Wildner const struct acpi_pstate *, int); 78*5db2f26eSSascha Wildner }; 79*5db2f26eSSascha Wildner 80*5db2f26eSSascha Wildner const struct acpi_pst_md *acpi_pst_md_probe(void); 81*5db2f26eSSascha Wildner 82*5db2f26eSSascha Wildner #endif /* !__ACPI_CPU_PSTATE_H__ */ 83