1a9f12690SJung-uk Kim /****************************************************************************** 2a9f12690SJung-uk Kim * 3a9f12690SJung-uk Kim * Name: achware.h -- hardware specific interfaces 4a9f12690SJung-uk Kim * 5a9f12690SJung-uk Kim *****************************************************************************/ 6a9f12690SJung-uk Kim 7d244b227SJung-uk Kim /* 8ec3fc72fSJung-uk Kim * Copyright (C) 2000 - 2012, Intel Corp. 9a9f12690SJung-uk Kim * All rights reserved. 10a9f12690SJung-uk Kim * 11d244b227SJung-uk Kim * Redistribution and use in source and binary forms, with or without 12d244b227SJung-uk Kim * modification, are permitted provided that the following conditions 13d244b227SJung-uk Kim * are met: 14d244b227SJung-uk Kim * 1. Redistributions of source code must retain the above copyright 15d244b227SJung-uk Kim * notice, this list of conditions, and the following disclaimer, 16d244b227SJung-uk Kim * without modification. 17d244b227SJung-uk Kim * 2. Redistributions in binary form must reproduce at minimum a disclaimer 18d244b227SJung-uk Kim * substantially similar to the "NO WARRANTY" disclaimer below 19d244b227SJung-uk Kim * ("Disclaimer") and any redistribution must be conditioned upon 20d244b227SJung-uk Kim * including a substantially similar Disclaimer requirement for further 21d244b227SJung-uk Kim * binary redistribution. 22d244b227SJung-uk Kim * 3. Neither the names of the above-listed copyright holders nor the names 23d244b227SJung-uk Kim * of any contributors may be used to endorse or promote products derived 24d244b227SJung-uk Kim * from this software without specific prior written permission. 25a9f12690SJung-uk Kim * 26d244b227SJung-uk Kim * Alternatively, this software may be distributed under the terms of the 27d244b227SJung-uk Kim * GNU General Public License ("GPL") version 2 as published by the Free 28d244b227SJung-uk Kim * Software Foundation. 29a9f12690SJung-uk Kim * 30d244b227SJung-uk Kim * NO WARRANTY 31d244b227SJung-uk Kim * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 32d244b227SJung-uk Kim * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 33d244b227SJung-uk Kim * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 34d244b227SJung-uk Kim * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 35d244b227SJung-uk Kim * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 36d244b227SJung-uk Kim * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 37d244b227SJung-uk Kim * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 38d244b227SJung-uk Kim * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 39d244b227SJung-uk Kim * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 40d244b227SJung-uk Kim * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 41d244b227SJung-uk Kim * POSSIBILITY OF SUCH DAMAGES. 42d244b227SJung-uk Kim */ 43a9f12690SJung-uk Kim 44a9f12690SJung-uk Kim #ifndef __ACHWARE_H__ 45a9f12690SJung-uk Kim #define __ACHWARE_H__ 46a9f12690SJung-uk Kim 47a9f12690SJung-uk Kim 48a9f12690SJung-uk Kim /* Values for the _SST predefined method */ 49a9f12690SJung-uk Kim 50a9f12690SJung-uk Kim #define ACPI_SST_INDICATOR_OFF 0 51a9f12690SJung-uk Kim #define ACPI_SST_WORKING 1 52a9f12690SJung-uk Kim #define ACPI_SST_WAKING 2 53a9f12690SJung-uk Kim #define ACPI_SST_SLEEPING 3 54a9f12690SJung-uk Kim #define ACPI_SST_SLEEP_CONTEXT 4 55a9f12690SJung-uk Kim 56a9f12690SJung-uk Kim 57a9f12690SJung-uk Kim /* 58a9f12690SJung-uk Kim * hwacpi - high level functions 59a9f12690SJung-uk Kim */ 60a9f12690SJung-uk Kim ACPI_STATUS 61a9f12690SJung-uk Kim AcpiHwSetMode ( 62a9f12690SJung-uk Kim UINT32 Mode); 63a9f12690SJung-uk Kim 64a9f12690SJung-uk Kim UINT32 65a9f12690SJung-uk Kim AcpiHwGetMode ( 66a9f12690SJung-uk Kim void); 67a9f12690SJung-uk Kim 68a9f12690SJung-uk Kim 69a9f12690SJung-uk Kim /* 70a9f12690SJung-uk Kim * hwregs - ACPI Register I/O 71a9f12690SJung-uk Kim */ 72d6dd1baeSJung-uk Kim ACPI_STATUS 73d6dd1baeSJung-uk Kim AcpiHwValidateRegister ( 74d6dd1baeSJung-uk Kim ACPI_GENERIC_ADDRESS *Reg, 75d6dd1baeSJung-uk Kim UINT8 MaxBitWidth, 76d6dd1baeSJung-uk Kim UINT64 *Address); 77d6dd1baeSJung-uk Kim 78d6dd1baeSJung-uk Kim ACPI_STATUS 79d6dd1baeSJung-uk Kim AcpiHwRead ( 80d6dd1baeSJung-uk Kim UINT32 *Value, 81d6dd1baeSJung-uk Kim ACPI_GENERIC_ADDRESS *Reg); 82d6dd1baeSJung-uk Kim 83d6dd1baeSJung-uk Kim ACPI_STATUS 84d6dd1baeSJung-uk Kim AcpiHwWrite ( 85d6dd1baeSJung-uk Kim UINT32 Value, 86d6dd1baeSJung-uk Kim ACPI_GENERIC_ADDRESS *Reg); 87d6dd1baeSJung-uk Kim 88a9f12690SJung-uk Kim ACPI_BIT_REGISTER_INFO * 89a9f12690SJung-uk Kim AcpiHwGetBitRegisterInfo ( 90a9f12690SJung-uk Kim UINT32 RegisterId); 91a9f12690SJung-uk Kim 92a9f12690SJung-uk Kim ACPI_STATUS 93a9f12690SJung-uk Kim AcpiHwWritePm1Control ( 94a9f12690SJung-uk Kim UINT32 Pm1aControl, 95a9f12690SJung-uk Kim UINT32 Pm1bControl); 96a9f12690SJung-uk Kim 97a9f12690SJung-uk Kim ACPI_STATUS 98a9f12690SJung-uk Kim AcpiHwRegisterRead ( 99a9f12690SJung-uk Kim UINT32 RegisterId, 100a9f12690SJung-uk Kim UINT32 *ReturnValue); 101a9f12690SJung-uk Kim 102a9f12690SJung-uk Kim ACPI_STATUS 103a9f12690SJung-uk Kim AcpiHwRegisterWrite ( 104a9f12690SJung-uk Kim UINT32 RegisterId, 105a9f12690SJung-uk Kim UINT32 Value); 106a9f12690SJung-uk Kim 107a9f12690SJung-uk Kim ACPI_STATUS 108a9f12690SJung-uk Kim AcpiHwClearAcpiStatus ( 109a9f12690SJung-uk Kim void); 110a9f12690SJung-uk Kim 111a9f12690SJung-uk Kim 112a9f12690SJung-uk Kim /* 113*a159c266SJung-uk Kim * hwsleep - sleep/wake support (Legacy sleep registers) 114*a159c266SJung-uk Kim */ 115*a159c266SJung-uk Kim ACPI_STATUS 116*a159c266SJung-uk Kim AcpiHwLegacySleep ( 117*a159c266SJung-uk Kim UINT8 SleepState); 118*a159c266SJung-uk Kim 119*a159c266SJung-uk Kim ACPI_STATUS 120*a159c266SJung-uk Kim AcpiHwLegacyWakePrep ( 121*a159c266SJung-uk Kim UINT8 SleepState); 122*a159c266SJung-uk Kim 123*a159c266SJung-uk Kim ACPI_STATUS 124*a159c266SJung-uk Kim AcpiHwLegacyWake ( 125*a159c266SJung-uk Kim UINT8 SleepState); 126*a159c266SJung-uk Kim 127*a159c266SJung-uk Kim 128*a159c266SJung-uk Kim /* 129*a159c266SJung-uk Kim * hwesleep - sleep/wake support (Extended FADT-V5 sleep registers) 130*a159c266SJung-uk Kim */ 131*a159c266SJung-uk Kim void 132*a159c266SJung-uk Kim AcpiHwExecuteSleepMethod ( 133*a159c266SJung-uk Kim char *MethodName, 134*a159c266SJung-uk Kim UINT32 IntegerArgument); 135*a159c266SJung-uk Kim 136*a159c266SJung-uk Kim ACPI_STATUS 137*a159c266SJung-uk Kim AcpiHwExtendedSleep ( 138*a159c266SJung-uk Kim UINT8 SleepState); 139*a159c266SJung-uk Kim 140*a159c266SJung-uk Kim ACPI_STATUS 141*a159c266SJung-uk Kim AcpiHwExtendedWakePrep ( 142*a159c266SJung-uk Kim UINT8 SleepState); 143*a159c266SJung-uk Kim 144*a159c266SJung-uk Kim ACPI_STATUS 145*a159c266SJung-uk Kim AcpiHwExtendedWake ( 146*a159c266SJung-uk Kim UINT8 SleepState); 147*a159c266SJung-uk Kim 148*a159c266SJung-uk Kim 149*a159c266SJung-uk Kim /* 150a9f12690SJung-uk Kim * hwvalid - Port I/O with validation 151a9f12690SJung-uk Kim */ 152a9f12690SJung-uk Kim ACPI_STATUS 153a9f12690SJung-uk Kim AcpiHwReadPort ( 154a9f12690SJung-uk Kim ACPI_IO_ADDRESS Address, 155a9f12690SJung-uk Kim UINT32 *Value, 156a9f12690SJung-uk Kim UINT32 Width); 157a9f12690SJung-uk Kim 158a9f12690SJung-uk Kim ACPI_STATUS 159a9f12690SJung-uk Kim AcpiHwWritePort ( 160a9f12690SJung-uk Kim ACPI_IO_ADDRESS Address, 161a9f12690SJung-uk Kim UINT32 Value, 162a9f12690SJung-uk Kim UINT32 Width); 163a9f12690SJung-uk Kim 164a9f12690SJung-uk Kim 165a9f12690SJung-uk Kim /* 166a9f12690SJung-uk Kim * hwgpe - GPE support 167a9f12690SJung-uk Kim */ 168a88e22b7SJung-uk Kim UINT32 169a88e22b7SJung-uk Kim AcpiHwGetGpeRegisterBit ( 170a88e22b7SJung-uk Kim ACPI_GPE_EVENT_INFO *GpeEventInfo, 171a88e22b7SJung-uk Kim ACPI_GPE_REGISTER_INFO *GpeRegisterInfo); 172a9f12690SJung-uk Kim 173a9f12690SJung-uk Kim ACPI_STATUS 174a88e22b7SJung-uk Kim AcpiHwLowSetGpe ( 175a88e22b7SJung-uk Kim ACPI_GPE_EVENT_INFO *GpeEventInfo, 176a88e22b7SJung-uk Kim UINT32 Action); 177a9f12690SJung-uk Kim 178a9f12690SJung-uk Kim ACPI_STATUS 179a9f12690SJung-uk Kim AcpiHwDisableGpeBlock ( 180a9f12690SJung-uk Kim ACPI_GPE_XRUPT_INFO *GpeXruptInfo, 181a9f12690SJung-uk Kim ACPI_GPE_BLOCK_INFO *GpeBlock, 182a9f12690SJung-uk Kim void *Context); 183a9f12690SJung-uk Kim 184a9f12690SJung-uk Kim ACPI_STATUS 185a9f12690SJung-uk Kim AcpiHwClearGpe ( 186a9f12690SJung-uk Kim ACPI_GPE_EVENT_INFO *GpeEventInfo); 187a9f12690SJung-uk Kim 188a9f12690SJung-uk Kim ACPI_STATUS 189a9f12690SJung-uk Kim AcpiHwClearGpeBlock ( 190a9f12690SJung-uk Kim ACPI_GPE_XRUPT_INFO *GpeXruptInfo, 191a9f12690SJung-uk Kim ACPI_GPE_BLOCK_INFO *GpeBlock, 192a9f12690SJung-uk Kim void *Context); 193a9f12690SJung-uk Kim 194a9f12690SJung-uk Kim ACPI_STATUS 195a9f12690SJung-uk Kim AcpiHwGetGpeStatus ( 196a9f12690SJung-uk Kim ACPI_GPE_EVENT_INFO *GpeEventInfo, 197a9f12690SJung-uk Kim ACPI_EVENT_STATUS *EventStatus); 198a9f12690SJung-uk Kim 199a9f12690SJung-uk Kim ACPI_STATUS 200a9f12690SJung-uk Kim AcpiHwDisableAllGpes ( 201a9f12690SJung-uk Kim void); 202a9f12690SJung-uk Kim 203a9f12690SJung-uk Kim ACPI_STATUS 204a9f12690SJung-uk Kim AcpiHwEnableAllRuntimeGpes ( 205a9f12690SJung-uk Kim void); 206a9f12690SJung-uk Kim 207a9f12690SJung-uk Kim ACPI_STATUS 208a9f12690SJung-uk Kim AcpiHwEnableAllWakeupGpes ( 209a9f12690SJung-uk Kim void); 210a9f12690SJung-uk Kim 211a9f12690SJung-uk Kim ACPI_STATUS 212a9f12690SJung-uk Kim AcpiHwEnableRuntimeGpeBlock ( 213a9f12690SJung-uk Kim ACPI_GPE_XRUPT_INFO *GpeXruptInfo, 214a9f12690SJung-uk Kim ACPI_GPE_BLOCK_INFO *GpeBlock, 215a9f12690SJung-uk Kim void *Context); 216a9f12690SJung-uk Kim 217a9f12690SJung-uk Kim 218a9f12690SJung-uk Kim /* 21942fecd12SJung-uk Kim * hwpci - PCI configuration support 22042fecd12SJung-uk Kim */ 22142fecd12SJung-uk Kim ACPI_STATUS 22242fecd12SJung-uk Kim AcpiHwDerivePciId ( 22342fecd12SJung-uk Kim ACPI_PCI_ID *PciId, 22442fecd12SJung-uk Kim ACPI_HANDLE RootPciDevice, 22542fecd12SJung-uk Kim ACPI_HANDLE PciRegion); 22642fecd12SJung-uk Kim 22742fecd12SJung-uk Kim 228a9f12690SJung-uk Kim #endif /* __ACHWARE_H__ */ 229