1433d6423SLionel Sambuc /****************************************************************************** 2433d6423SLionel Sambuc * 3433d6423SLionel Sambuc * Name: achware.h -- hardware specific interfaces 4433d6423SLionel Sambuc * 5433d6423SLionel Sambuc *****************************************************************************/ 6433d6423SLionel Sambuc 7*29492bb7SDavid van Moolenbroek /* 8*29492bb7SDavid van Moolenbroek * Copyright (C) 2000 - 2014, Intel Corp. 9433d6423SLionel Sambuc * All rights reserved. 10433d6423SLionel Sambuc * 11*29492bb7SDavid van Moolenbroek * Redistribution and use in source and binary forms, with or without 12*29492bb7SDavid van Moolenbroek * modification, are permitted provided that the following conditions 13*29492bb7SDavid van Moolenbroek * are met: 14*29492bb7SDavid van Moolenbroek * 1. Redistributions of source code must retain the above copyright 15*29492bb7SDavid van Moolenbroek * notice, this list of conditions, and the following disclaimer, 16*29492bb7SDavid van Moolenbroek * without modification. 17*29492bb7SDavid van Moolenbroek * 2. Redistributions in binary form must reproduce at minimum a disclaimer 18*29492bb7SDavid van Moolenbroek * substantially similar to the "NO WARRANTY" disclaimer below 19*29492bb7SDavid van Moolenbroek * ("Disclaimer") and any redistribution must be conditioned upon 20*29492bb7SDavid van Moolenbroek * including a substantially similar Disclaimer requirement for further 21*29492bb7SDavid van Moolenbroek * binary redistribution. 22*29492bb7SDavid van Moolenbroek * 3. Neither the names of the above-listed copyright holders nor the names 23*29492bb7SDavid van Moolenbroek * of any contributors may be used to endorse or promote products derived 24*29492bb7SDavid van Moolenbroek * from this software without specific prior written permission. 25433d6423SLionel Sambuc * 26*29492bb7SDavid van Moolenbroek * Alternatively, this software may be distributed under the terms of the 27*29492bb7SDavid van Moolenbroek * GNU General Public License ("GPL") version 2 as published by the Free 28*29492bb7SDavid van Moolenbroek * Software Foundation. 29433d6423SLionel Sambuc * 30*29492bb7SDavid van Moolenbroek * NO WARRANTY 31*29492bb7SDavid van Moolenbroek * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 32*29492bb7SDavid van Moolenbroek * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 33*29492bb7SDavid van Moolenbroek * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 34*29492bb7SDavid van Moolenbroek * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 35*29492bb7SDavid van Moolenbroek * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 36*29492bb7SDavid van Moolenbroek * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 37*29492bb7SDavid van Moolenbroek * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 38*29492bb7SDavid van Moolenbroek * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 39*29492bb7SDavid van Moolenbroek * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 40*29492bb7SDavid van Moolenbroek * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 41*29492bb7SDavid van Moolenbroek * POSSIBILITY OF SUCH DAMAGES. 42*29492bb7SDavid van Moolenbroek */ 43433d6423SLionel Sambuc 44433d6423SLionel Sambuc #ifndef __ACHWARE_H__ 45433d6423SLionel Sambuc #define __ACHWARE_H__ 46433d6423SLionel Sambuc 47433d6423SLionel Sambuc 48433d6423SLionel Sambuc /* Values for the _SST predefined method */ 49433d6423SLionel Sambuc 50433d6423SLionel Sambuc #define ACPI_SST_INDICATOR_OFF 0 51433d6423SLionel Sambuc #define ACPI_SST_WORKING 1 52433d6423SLionel Sambuc #define ACPI_SST_WAKING 2 53433d6423SLionel Sambuc #define ACPI_SST_SLEEPING 3 54433d6423SLionel Sambuc #define ACPI_SST_SLEEP_CONTEXT 4 55433d6423SLionel Sambuc 56433d6423SLionel Sambuc 57433d6423SLionel Sambuc /* 58433d6423SLionel Sambuc * hwacpi - high level functions 59433d6423SLionel Sambuc */ 60433d6423SLionel Sambuc ACPI_STATUS 61433d6423SLionel Sambuc AcpiHwSetMode ( 62433d6423SLionel Sambuc UINT32 Mode); 63433d6423SLionel Sambuc 64433d6423SLionel Sambuc UINT32 65433d6423SLionel Sambuc AcpiHwGetMode ( 66433d6423SLionel Sambuc void); 67433d6423SLionel Sambuc 68433d6423SLionel Sambuc 69433d6423SLionel Sambuc /* 70433d6423SLionel Sambuc * hwregs - ACPI Register I/O 71433d6423SLionel Sambuc */ 72433d6423SLionel Sambuc ACPI_STATUS 73433d6423SLionel Sambuc AcpiHwValidateRegister ( 74433d6423SLionel Sambuc ACPI_GENERIC_ADDRESS *Reg, 75433d6423SLionel Sambuc UINT8 MaxBitWidth, 76433d6423SLionel Sambuc UINT64 *Address); 77433d6423SLionel Sambuc 78433d6423SLionel Sambuc ACPI_STATUS 79433d6423SLionel Sambuc AcpiHwRead ( 80433d6423SLionel Sambuc UINT32 *Value, 81433d6423SLionel Sambuc ACPI_GENERIC_ADDRESS *Reg); 82433d6423SLionel Sambuc 83433d6423SLionel Sambuc ACPI_STATUS 84433d6423SLionel Sambuc AcpiHwWrite ( 85433d6423SLionel Sambuc UINT32 Value, 86433d6423SLionel Sambuc ACPI_GENERIC_ADDRESS *Reg); 87433d6423SLionel Sambuc 88433d6423SLionel Sambuc ACPI_BIT_REGISTER_INFO * 89433d6423SLionel Sambuc AcpiHwGetBitRegisterInfo ( 90433d6423SLionel Sambuc UINT32 RegisterId); 91433d6423SLionel Sambuc 92433d6423SLionel Sambuc ACPI_STATUS 93433d6423SLionel Sambuc AcpiHwWritePm1Control ( 94433d6423SLionel Sambuc UINT32 Pm1aControl, 95433d6423SLionel Sambuc UINT32 Pm1bControl); 96433d6423SLionel Sambuc 97433d6423SLionel Sambuc ACPI_STATUS 98433d6423SLionel Sambuc AcpiHwRegisterRead ( 99433d6423SLionel Sambuc UINT32 RegisterId, 100433d6423SLionel Sambuc UINT32 *ReturnValue); 101433d6423SLionel Sambuc 102433d6423SLionel Sambuc ACPI_STATUS 103433d6423SLionel Sambuc AcpiHwRegisterWrite ( 104433d6423SLionel Sambuc UINT32 RegisterId, 105433d6423SLionel Sambuc UINT32 Value); 106433d6423SLionel Sambuc 107433d6423SLionel Sambuc ACPI_STATUS 108433d6423SLionel Sambuc AcpiHwClearAcpiStatus ( 109433d6423SLionel Sambuc void); 110433d6423SLionel Sambuc 111433d6423SLionel Sambuc 112433d6423SLionel Sambuc /* 113*29492bb7SDavid van Moolenbroek * hwsleep - sleep/wake support (Legacy sleep registers) 114*29492bb7SDavid van Moolenbroek */ 115*29492bb7SDavid van Moolenbroek ACPI_STATUS 116*29492bb7SDavid van Moolenbroek AcpiHwLegacySleep ( 117*29492bb7SDavid van Moolenbroek UINT8 SleepState); 118*29492bb7SDavid van Moolenbroek 119*29492bb7SDavid van Moolenbroek ACPI_STATUS 120*29492bb7SDavid van Moolenbroek AcpiHwLegacyWakePrep ( 121*29492bb7SDavid van Moolenbroek UINT8 SleepState); 122*29492bb7SDavid van Moolenbroek 123*29492bb7SDavid van Moolenbroek ACPI_STATUS 124*29492bb7SDavid van Moolenbroek AcpiHwLegacyWake ( 125*29492bb7SDavid van Moolenbroek UINT8 SleepState); 126*29492bb7SDavid van Moolenbroek 127*29492bb7SDavid van Moolenbroek 128*29492bb7SDavid van Moolenbroek /* 129*29492bb7SDavid van Moolenbroek * hwesleep - sleep/wake support (Extended FADT-V5 sleep registers) 130*29492bb7SDavid van Moolenbroek */ 131*29492bb7SDavid van Moolenbroek void 132*29492bb7SDavid van Moolenbroek AcpiHwExecuteSleepMethod ( 133*29492bb7SDavid van Moolenbroek char *MethodName, 134*29492bb7SDavid van Moolenbroek UINT32 IntegerArgument); 135*29492bb7SDavid van Moolenbroek 136*29492bb7SDavid van Moolenbroek ACPI_STATUS 137*29492bb7SDavid van Moolenbroek AcpiHwExtendedSleep ( 138*29492bb7SDavid van Moolenbroek UINT8 SleepState); 139*29492bb7SDavid van Moolenbroek 140*29492bb7SDavid van Moolenbroek ACPI_STATUS 141*29492bb7SDavid van Moolenbroek AcpiHwExtendedWakePrep ( 142*29492bb7SDavid van Moolenbroek UINT8 SleepState); 143*29492bb7SDavid van Moolenbroek 144*29492bb7SDavid van Moolenbroek ACPI_STATUS 145*29492bb7SDavid van Moolenbroek AcpiHwExtendedWake ( 146*29492bb7SDavid van Moolenbroek UINT8 SleepState); 147*29492bb7SDavid van Moolenbroek 148*29492bb7SDavid van Moolenbroek 149*29492bb7SDavid van Moolenbroek /* 150433d6423SLionel Sambuc * hwvalid - Port I/O with validation 151433d6423SLionel Sambuc */ 152433d6423SLionel Sambuc ACPI_STATUS 153433d6423SLionel Sambuc AcpiHwReadPort ( 154433d6423SLionel Sambuc ACPI_IO_ADDRESS Address, 155433d6423SLionel Sambuc UINT32 *Value, 156433d6423SLionel Sambuc UINT32 Width); 157433d6423SLionel Sambuc 158433d6423SLionel Sambuc ACPI_STATUS 159433d6423SLionel Sambuc AcpiHwWritePort ( 160433d6423SLionel Sambuc ACPI_IO_ADDRESS Address, 161433d6423SLionel Sambuc UINT32 Value, 162433d6423SLionel Sambuc UINT32 Width); 163433d6423SLionel Sambuc 164433d6423SLionel Sambuc 165433d6423SLionel Sambuc /* 166433d6423SLionel Sambuc * hwgpe - GPE support 167433d6423SLionel Sambuc */ 168433d6423SLionel Sambuc UINT32 169433d6423SLionel Sambuc AcpiHwGetGpeRegisterBit ( 170*29492bb7SDavid van Moolenbroek ACPI_GPE_EVENT_INFO *GpeEventInfo); 171433d6423SLionel Sambuc 172433d6423SLionel Sambuc ACPI_STATUS 173433d6423SLionel Sambuc AcpiHwLowSetGpe ( 174433d6423SLionel Sambuc ACPI_GPE_EVENT_INFO *GpeEventInfo, 175433d6423SLionel Sambuc UINT32 Action); 176433d6423SLionel Sambuc 177433d6423SLionel Sambuc ACPI_STATUS 178433d6423SLionel Sambuc AcpiHwDisableGpeBlock ( 179433d6423SLionel Sambuc ACPI_GPE_XRUPT_INFO *GpeXruptInfo, 180433d6423SLionel Sambuc ACPI_GPE_BLOCK_INFO *GpeBlock, 181433d6423SLionel Sambuc void *Context); 182433d6423SLionel Sambuc 183433d6423SLionel Sambuc ACPI_STATUS 184433d6423SLionel Sambuc AcpiHwClearGpe ( 185433d6423SLionel Sambuc ACPI_GPE_EVENT_INFO *GpeEventInfo); 186433d6423SLionel Sambuc 187433d6423SLionel Sambuc ACPI_STATUS 188433d6423SLionel Sambuc AcpiHwClearGpeBlock ( 189433d6423SLionel Sambuc ACPI_GPE_XRUPT_INFO *GpeXruptInfo, 190433d6423SLionel Sambuc ACPI_GPE_BLOCK_INFO *GpeBlock, 191433d6423SLionel Sambuc void *Context); 192433d6423SLionel Sambuc 193433d6423SLionel Sambuc ACPI_STATUS 194433d6423SLionel Sambuc AcpiHwGetGpeStatus ( 195433d6423SLionel Sambuc ACPI_GPE_EVENT_INFO *GpeEventInfo, 196433d6423SLionel Sambuc ACPI_EVENT_STATUS *EventStatus); 197433d6423SLionel Sambuc 198433d6423SLionel Sambuc ACPI_STATUS 199433d6423SLionel Sambuc AcpiHwDisableAllGpes ( 200433d6423SLionel Sambuc void); 201433d6423SLionel Sambuc 202433d6423SLionel Sambuc ACPI_STATUS 203433d6423SLionel Sambuc AcpiHwEnableAllRuntimeGpes ( 204433d6423SLionel Sambuc void); 205433d6423SLionel Sambuc 206433d6423SLionel Sambuc ACPI_STATUS 207433d6423SLionel Sambuc AcpiHwEnableAllWakeupGpes ( 208433d6423SLionel Sambuc void); 209433d6423SLionel Sambuc 210433d6423SLionel Sambuc ACPI_STATUS 211433d6423SLionel Sambuc AcpiHwEnableRuntimeGpeBlock ( 212433d6423SLionel Sambuc ACPI_GPE_XRUPT_INFO *GpeXruptInfo, 213433d6423SLionel Sambuc ACPI_GPE_BLOCK_INFO *GpeBlock, 214433d6423SLionel Sambuc void *Context); 215433d6423SLionel Sambuc 216433d6423SLionel Sambuc 217433d6423SLionel Sambuc /* 218*29492bb7SDavid van Moolenbroek * hwpci - PCI configuration support 219433d6423SLionel Sambuc */ 220433d6423SLionel Sambuc ACPI_STATUS 221*29492bb7SDavid van Moolenbroek AcpiHwDerivePciId ( 222*29492bb7SDavid van Moolenbroek ACPI_PCI_ID *PciId, 223*29492bb7SDavid van Moolenbroek ACPI_HANDLE RootPciDevice, 224*29492bb7SDavid van Moolenbroek ACPI_HANDLE PciRegion); 225433d6423SLionel Sambuc 226433d6423SLionel Sambuc 227433d6423SLionel Sambuc #endif /* __ACHWARE_H__ */ 228