1a9f12690SJung-uk Kim /****************************************************************************** 2a9f12690SJung-uk Kim * 3a9f12690SJung-uk Kim * Name: achware.h -- hardware specific interfaces 4a9f12690SJung-uk Kim * 5a9f12690SJung-uk Kim *****************************************************************************/ 6a9f12690SJung-uk Kim 7*d244b227SJung-uk Kim /* 8*d244b227SJung-uk Kim * Copyright (C) 2000 - 2011, Intel Corp. 9a9f12690SJung-uk Kim * All rights reserved. 10a9f12690SJung-uk Kim * 11*d244b227SJung-uk Kim * Redistribution and use in source and binary forms, with or without 12*d244b227SJung-uk Kim * modification, are permitted provided that the following conditions 13*d244b227SJung-uk Kim * are met: 14*d244b227SJung-uk Kim * 1. Redistributions of source code must retain the above copyright 15*d244b227SJung-uk Kim * notice, this list of conditions, and the following disclaimer, 16*d244b227SJung-uk Kim * without modification. 17*d244b227SJung-uk Kim * 2. Redistributions in binary form must reproduce at minimum a disclaimer 18*d244b227SJung-uk Kim * substantially similar to the "NO WARRANTY" disclaimer below 19*d244b227SJung-uk Kim * ("Disclaimer") and any redistribution must be conditioned upon 20*d244b227SJung-uk Kim * including a substantially similar Disclaimer requirement for further 21*d244b227SJung-uk Kim * binary redistribution. 22*d244b227SJung-uk Kim * 3. Neither the names of the above-listed copyright holders nor the names 23*d244b227SJung-uk Kim * of any contributors may be used to endorse or promote products derived 24*d244b227SJung-uk Kim * from this software without specific prior written permission. 25a9f12690SJung-uk Kim * 26*d244b227SJung-uk Kim * Alternatively, this software may be distributed under the terms of the 27*d244b227SJung-uk Kim * GNU General Public License ("GPL") version 2 as published by the Free 28*d244b227SJung-uk Kim * Software Foundation. 29a9f12690SJung-uk Kim * 30*d244b227SJung-uk Kim * NO WARRANTY 31*d244b227SJung-uk Kim * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 32*d244b227SJung-uk Kim * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 33*d244b227SJung-uk Kim * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 34*d244b227SJung-uk Kim * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 35*d244b227SJung-uk Kim * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 36*d244b227SJung-uk Kim * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 37*d244b227SJung-uk Kim * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 38*d244b227SJung-uk Kim * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 39*d244b227SJung-uk Kim * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 40*d244b227SJung-uk Kim * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 41*d244b227SJung-uk Kim * POSSIBILITY OF SUCH DAMAGES. 42*d244b227SJung-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 /* 113a9f12690SJung-uk Kim * hwvalid - Port I/O with validation 114a9f12690SJung-uk Kim */ 115a9f12690SJung-uk Kim ACPI_STATUS 116a9f12690SJung-uk Kim AcpiHwReadPort ( 117a9f12690SJung-uk Kim ACPI_IO_ADDRESS Address, 118a9f12690SJung-uk Kim UINT32 *Value, 119a9f12690SJung-uk Kim UINT32 Width); 120a9f12690SJung-uk Kim 121a9f12690SJung-uk Kim ACPI_STATUS 122a9f12690SJung-uk Kim AcpiHwWritePort ( 123a9f12690SJung-uk Kim ACPI_IO_ADDRESS Address, 124a9f12690SJung-uk Kim UINT32 Value, 125a9f12690SJung-uk Kim UINT32 Width); 126a9f12690SJung-uk Kim 127a9f12690SJung-uk Kim 128a9f12690SJung-uk Kim /* 129a9f12690SJung-uk Kim * hwgpe - GPE support 130a9f12690SJung-uk Kim */ 131a88e22b7SJung-uk Kim UINT32 132a88e22b7SJung-uk Kim AcpiHwGetGpeRegisterBit ( 133a88e22b7SJung-uk Kim ACPI_GPE_EVENT_INFO *GpeEventInfo, 134a88e22b7SJung-uk Kim ACPI_GPE_REGISTER_INFO *GpeRegisterInfo); 135a9f12690SJung-uk Kim 136a9f12690SJung-uk Kim ACPI_STATUS 137a88e22b7SJung-uk Kim AcpiHwLowSetGpe ( 138a88e22b7SJung-uk Kim ACPI_GPE_EVENT_INFO *GpeEventInfo, 139a88e22b7SJung-uk Kim UINT32 Action); 140a9f12690SJung-uk Kim 141a9f12690SJung-uk Kim ACPI_STATUS 142a9f12690SJung-uk Kim AcpiHwDisableGpeBlock ( 143a9f12690SJung-uk Kim ACPI_GPE_XRUPT_INFO *GpeXruptInfo, 144a9f12690SJung-uk Kim ACPI_GPE_BLOCK_INFO *GpeBlock, 145a9f12690SJung-uk Kim void *Context); 146a9f12690SJung-uk Kim 147a9f12690SJung-uk Kim ACPI_STATUS 148a9f12690SJung-uk Kim AcpiHwClearGpe ( 149a9f12690SJung-uk Kim ACPI_GPE_EVENT_INFO *GpeEventInfo); 150a9f12690SJung-uk Kim 151a9f12690SJung-uk Kim ACPI_STATUS 152a9f12690SJung-uk Kim AcpiHwClearGpeBlock ( 153a9f12690SJung-uk Kim ACPI_GPE_XRUPT_INFO *GpeXruptInfo, 154a9f12690SJung-uk Kim ACPI_GPE_BLOCK_INFO *GpeBlock, 155a9f12690SJung-uk Kim void *Context); 156a9f12690SJung-uk Kim 157a9f12690SJung-uk Kim ACPI_STATUS 158a9f12690SJung-uk Kim AcpiHwGetGpeStatus ( 159a9f12690SJung-uk Kim ACPI_GPE_EVENT_INFO *GpeEventInfo, 160a9f12690SJung-uk Kim ACPI_EVENT_STATUS *EventStatus); 161a9f12690SJung-uk Kim 162a9f12690SJung-uk Kim ACPI_STATUS 163a9f12690SJung-uk Kim AcpiHwDisableAllGpes ( 164a9f12690SJung-uk Kim void); 165a9f12690SJung-uk Kim 166a9f12690SJung-uk Kim ACPI_STATUS 167a9f12690SJung-uk Kim AcpiHwEnableAllRuntimeGpes ( 168a9f12690SJung-uk Kim void); 169a9f12690SJung-uk Kim 170a9f12690SJung-uk Kim ACPI_STATUS 171a9f12690SJung-uk Kim AcpiHwEnableAllWakeupGpes ( 172a9f12690SJung-uk Kim void); 173a9f12690SJung-uk Kim 174a9f12690SJung-uk Kim ACPI_STATUS 175a9f12690SJung-uk Kim AcpiHwEnableRuntimeGpeBlock ( 176a9f12690SJung-uk Kim ACPI_GPE_XRUPT_INFO *GpeXruptInfo, 177a9f12690SJung-uk Kim ACPI_GPE_BLOCK_INFO *GpeBlock, 178a9f12690SJung-uk Kim void *Context); 179a9f12690SJung-uk Kim 180a9f12690SJung-uk Kim 181a9f12690SJung-uk Kim /* 18242fecd12SJung-uk Kim * hwpci - PCI configuration support 18342fecd12SJung-uk Kim */ 18442fecd12SJung-uk Kim ACPI_STATUS 18542fecd12SJung-uk Kim AcpiHwDerivePciId ( 18642fecd12SJung-uk Kim ACPI_PCI_ID *PciId, 18742fecd12SJung-uk Kim ACPI_HANDLE RootPciDevice, 18842fecd12SJung-uk Kim ACPI_HANDLE PciRegion); 18942fecd12SJung-uk Kim 19042fecd12SJung-uk Kim 19142fecd12SJung-uk Kim /* 192a9f12690SJung-uk Kim * hwtimer - ACPI Timer prototypes 193a9f12690SJung-uk Kim */ 194a9f12690SJung-uk Kim ACPI_STATUS 195a9f12690SJung-uk Kim AcpiGetTimerResolution ( 196a9f12690SJung-uk Kim UINT32 *Resolution); 197a9f12690SJung-uk Kim 198a9f12690SJung-uk Kim ACPI_STATUS 199a9f12690SJung-uk Kim AcpiGetTimer ( 200a9f12690SJung-uk Kim UINT32 *Ticks); 201a9f12690SJung-uk Kim 202a9f12690SJung-uk Kim ACPI_STATUS 203a9f12690SJung-uk Kim AcpiGetTimerDuration ( 204a9f12690SJung-uk Kim UINT32 StartTicks, 205a9f12690SJung-uk Kim UINT32 EndTicks, 206a9f12690SJung-uk Kim UINT32 *TimeElapsed); 207a9f12690SJung-uk Kim 208a9f12690SJung-uk Kim 209a9f12690SJung-uk Kim #endif /* __ACHWARE_H__ */ 210