/* module FSHWA.H "X-1" ** ************************************************************************** ** * ** © Copyright 2005 Hewlett-Packard Development Company, L.P. * ** * ** Confidential computer software. * ** Valid license from HP required for possession, use or copying. * ** * ** Consistent with FAR 12.211 and 12.212, Commercial Computer Software, * ** Computer Software Documentation, and Technical Data for Commercial * ** Items are licensed to the U.S. Government under vendor's standard * ** commercial license. * ** * ** Neither HP nor any of its subsidiaries shall be liable for technical * ** or editorial errors or omissions contained herein. The information * ** in this document is provided "as is" without warranty of any kind and * ** is subject to change without notice. The warranties for HP products * ** are set forth in the express limited warranty statements accompanying * ** such products. Nothing herein should be construed as constituting an * ** additional warranty. * ** * ************************************************************************** ** **++ ** FACILITY: ** ** VMS Executive (LIB_H) ** ** MODULE DESCRIPTION: ** ** Definitions for the fPars Shared Hardware Assist (FSHWA) ** EFI protocol extension interface. ** ** AUTHORS: ** ** Eric Rasmussen ** ** CREATION DATE: 22-Apr-2005 ** ** SUPPORTING DOCUMENTS: ** ** SPPA Firmware EAS Version 1.6 (Draft 0.56) 20-Apr-2005 ** Appendix E: fPar Extensions ** http://arch.cup.hp.com/sppa_platform/doc/sppa-x/hp_sal/fw1_6.pdf ** ** MODIFICATION HISTORY: ** ** X-1 ER Eric Rasmussen 22-Apr-2005 ** Initial revision. **-- */ #ifndef __FSHWA_H_ #define __FSHWA_H_ 1 #pragma __required_pointer_size __save #pragma __required_pointer_size __long // // EFI status codes returned by FSHWA services. // #define EFI_SUCCESS(a) (!a) #define EFI_FAILURE(a) (((uint64) a) < 0) #define EFI_ERROR 0x8000000000000000L #define EFI_INVALID_PARAMETER ( EFI_ERROR | 0x0002 ) #define EFI_UNSUPPORTED ( EFI_ERROR | 0x0003 ) #define EFI_BUFFER_TOO_SMALL ( EFI_ERROR | 0x0005 ) #define EFI_DEVICE_ERROR ( EFI_ERROR | 0x0007 ) #define EFI_OUT_OF_RESOURCES ( EFI_ERROR | 0x0009 ) #define EFI_NOT_FOUND ( EFI_ERROR | 0x000E ) #define EFI_ACCESS_DENIED ( EFI_ERROR | 0x000F ) #define EFI_TIMEOUT ( EFI_ERROR | 0x0012 ) struct _FSHWA_INTERFACE; typedef struct _FSHWA_RET { __int64 Status; unsigned __int64 Rsvd1; unsigned __int64 Rsvd2; unsigned __int64 Rsvd3; } FSHWA_RET; #pragma linkage_ia64 fshwa_linkage=( result( r8,r9,r10,r11 ) ) // // FSHWA Shared Register // #define FSHWA$M_VMASK_ROOT_GPE_BLK 0x0000000000000001 #define FSHWA$M_VMASK_RESERVED 0xFFFFFFFFFFFFFFFE typedef FSHWA_RET ( FSHWA_GET_VIRTUALIZED_MASK ) ( struct _FSHWA_INTERFACE *This, unsigned __int64 *UseVirtualAccess ); #pragma use_linkage fshwa_linkage( FSHWA_GET_VIRTUALIZED_MASK ) typedef enum { FshwaAccessWidthUint8 = 1, FshwaAccessWidthUint16 = 2, FshwaAccessWidthUint32 = 4, FshwaAccessWidthUint64 = 8 } FSHWA_ACCESS_WIDTH; typedef FSHWA_RET ( FSHWA_VIRTUAL_READ ) ( struct _FSHWA_INTERFACE *This, FSHWA_ACCESS_WIDTH AccessWidth, unsigned __int64 Address, unsigned __int64 Size, void *Buffer ); #pragma use_linkage fshwa_linkage( FSHWA_VIRTUAL_READ ) typedef FSHWA_RET ( FSHWA_VIRTUAL_WRITE ) ( struct _FSHWA_INTERFACE *This, FSHWA_ACCESS_WIDTH AccessWidth, unsigned __int64 Address, unsigned __int64 Size, void *Buffer ); #pragma use_linkage fshwa_linkage( FSHWA_VIRTUAL_WRITE ) // // FSHWA Shared IOSAPIC // typedef FSHWA_RET ( FSHWA_GET_SHARED_IOSAPIC_COUNT ) ( struct _FSHWA_INTERFACE *This, unsigned __int64 *CountOfSharedIoSapics ); #pragma use_linkage fshwa_linkage( FSHWA_GET_SHARED_IOSAPIC_COUNT ) typedef struct _FSHWA_SHARED_IOSAPIC_DESC { unsigned __int64 PhysicalAddress; unsigned __int64 AccessMode[4]; } FSHWA_SHARED_IOSAPIC_DESC; typedef FSHWA_RET ( FSHWA_GET_SHARED_IOSAPIC_LIST ) ( struct _FSHWA_INTERFACE *This, FSHWA_SHARED_IOSAPIC_DESC *List, unsigned __int64 *Size ); #pragma use_linkage fshwa_linkage( FSHWA_GET_SHARED_IOSAPIC_LIST ) typedef FSHWA_RET ( FSHWA_GET_SHARED_IOSAPIC_VERS ) ( struct _FSHWA_INTERFACE *This, unsigned __int64 IoSapicAddress, unsigned __int64 *Version ); #pragma use_linkage fshwa_linkage( FSHWA_GET_SHARED_IOSAPIC_VERS ) typedef FSHWA_RET ( FSHWA_SET_IOSAPIC_REDIR ) ( struct _FSHWA_INTERFACE *This, unsigned __int64 IoSapicAddress, unsigned __int64 RedirNumber, unsigned __int64 RedirValue ); #pragma use_linkage fshwa_linkage( FSHWA_SET_IOSAPIC_REDIR ) typedef FSHWA_RET ( FSHWA_GET_IOSAPIC_REDIR ) ( struct _FSHWA_INTERFACE *This, unsigned __int64 IoSapicAddress, unsigned __int64 RedirNumber, unsigned __int64 *RedirValue ); #pragma use_linkage fshwa_linkage( FSHWA_GET_IOSAPIC_REDIR ) typedef FSHWA_RET ( FSHWA_CLEAR_INTERRUPT ) ( struct _FSHWA_INTERFACE *This, unsigned __int64 IoSapicAddress, unsigned __int64 RedirNumber, unsigned __int64 EoiValue ); #pragma use_linkage fshwa_linkage( FSHWA_CLEAR_INTERRUPT ) typedef FSHWA_RET ( FSHWA_ACQUIRE_EXCLUSIVE_REDIR ) ( struct _FSHWA_INTERFACE *This, unsigned __int64 IoSapicAddress, unsigned __int64 RedirNumber, unsigned __int64 *WhoHasIt ); #pragma use_linkage fshwa_linkage( FSHWA_ACQUIRE_EXCLUSIVE_REDIR ) typedef FSHWA_RET ( FSHWA_RELEASE_EXCLUSIVE_REDIR ) ( struct _FSHWA_INTERFACE *This, unsigned __int64 IoSapicAddress, unsigned __int64 RedirNumber ); #pragma use_linkage fshwa_linkage( FSHWA_RELEASE_EXCLUSIVE_REDIR ) // // FSHWA Shared IPMI // typedef FSHWA_RET ( FSHWA_GET_SEQUENCE ) ( struct _FSHWA_INTERFACE *This, unsigned __int64 *SequenceNum ); #pragma use_linkage fshwa_linkage( FSHWA_GET_SEQUENCE ) typedef FSHWA_RET ( FSHWA_ENQUEUE_MSG ) ( struct _FSHWA_INTERFACE *This, unsigned __int64 SequenceNum, void *BtMessage, unsigned __int64 Size ); #pragma use_linkage fshwa_linkage( FSHWA_ENQUEUE_MSG ) typedef FSHWA_RET ( FSHWA_DEQUEUE_MSG ) ( struct _FSHWA_INTERFACE *This, unsigned __int64 *SequenceNum, void *BtMessage, unsigned __int64 *Size ); #pragma use_linkage fshwa_linkage( FSHWA_DEQUEUE_MSG ) // // FSHWA Protocol Interface // typedef struct _FSHWA_INTERFACE { unsigned __int64 Revision; // // Shared Register Interface // FSHWA_GET_VIRTUALIZED_MASK *GetVirtualizedMask; FSHWA_VIRTUAL_READ *VirtualRead; FSHWA_VIRTUAL_WRITE *VirtualWrite; // // Shared IOSAPIC Interface // FSHWA_GET_SHARED_IOSAPIC_COUNT *GetSharedIoSapicCount; FSHWA_GET_SHARED_IOSAPIC_LIST *GetSharedIoSapicList; FSHWA_GET_SHARED_IOSAPIC_VERS *GetSharedIoSapicVers; FSHWA_SET_IOSAPIC_REDIR *SetIoSapicRedir; FSHWA_GET_IOSAPIC_REDIR *GetIoSapicRedir; FSHWA_CLEAR_INTERRUPT *ClearIoSapicInterrupt; FSHWA_ACQUIRE_EXCLUSIVE_REDIR *AcquireExclusiveIoSapicRedir; FSHWA_RELEASE_EXCLUSIVE_REDIR *ReleaseExclusiveIoSapicRedir; // // Shared IPMI BT Interface // FSHWA_GET_SEQUENCE *GetIpmiSeq; FSHWA_ENQUEUE_MSG *EnqueueIpmiMsg; FSHWA_DEQUEUE_MSG *DequeueIpmiMsg; } FSHWA_INTERFACE; #pragma __required_pointer_size __restore #endif /* __FSHWA_H_ */