1fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang/** @file 250a64e5b0b92772b3aa02c23a64745b51094916bjji Provides services to send progress/error codes to a POST card. 3fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang 49df063a06aef048c042498e2f542fb693e93493ahhtianCopyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR> 59df063a06aef048c042498e2f542fb693e93493ahhtianThis program and the accompanying materials 650a64e5b0b92772b3aa02c23a64745b51094916bjjiare licensed and made available under the terms and conditions of the BSD License 750a64e5b0b92772b3aa02c23a64745b51094916bjjiwhich accompanies this distribution. The full text of the license may be found at 850a64e5b0b92772b3aa02c23a64745b51094916bjjihttp://opensource.org/licenses/bsd-license.php 9fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang 1050a64e5b0b92772b3aa02c23a64745b51094916bjjiTHE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 1150a64e5b0b92772b3aa02c23a64745b51094916bjjiWITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 12fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang 13fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang**/ 14fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang 15fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang#ifndef __POST_CODE_LIB_H__ 16fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang#define __POST_CODE_LIB_H__ 17fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang 18fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang#define POST_CODE_PROPERTY_POST_CODE_ENABLED 0x00000008 19fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang#define POST_CODE_PROPERTY_POST_CODE_DESCRIPTION_ENABLED 0x00000010 20fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang 21fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang/** 221a2f870c9babe077c2d3abea23b6e8e044778341pkandel Sends a 32-bit value to a POST card. 23fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang 24fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang Sends the 32-bit value specified by Value to a POST card, and returns Value. 25fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang Some implementations of this library function may perform I/O operations 26fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang directly to a POST card device. Other implementations may send Value to 27fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang ReportStatusCode(), and the status code reporting mechanism will eventually 28fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang display the 32-bit value on the status reporting device. 29fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang 30fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang PostCode() must actively prevent recursion. If PostCode() is called while 311a2f870c9babe077c2d3abea23b6e8e044778341pkandel processing another Post Code Library function, then 32fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang PostCode() must return Value immediately. 33fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang 34fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang @param Value The 32-bit value to write to the POST card. 35fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang 36122e21915101b8f38d81edc6d4f1fd1dd353e28ajji @return The 32-bit value to write to the POST card. 37fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang 38fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang**/ 39fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshangUINT32 40fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshangEFIAPI 41fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshangPostCode ( 42fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang IN UINT32 Value 43fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang ); 44fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang 45fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang 46fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang/** 471a2f870c9babe077c2d3abea23b6e8e044778341pkandel Sends a 32-bit value to a POST and associated ASCII string. 48fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang 49fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang Sends the 32-bit value specified by Value to a POST card, and returns Value. 50fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang If Description is not NULL, then the ASCII string specified by Description is 51fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang also passed to the handler that displays the POST card value. Some 52fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang implementations of this library function may perform I/O operations directly 53fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang to a POST card device. Other implementations may send Value to ReportStatusCode(), 54fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang and the status code reporting mechanism will eventually display the 32-bit 55fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang value on the status reporting device. 56fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang 57fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang PostCodeWithDescription()must actively prevent recursion. If 58122e21915101b8f38d81edc6d4f1fd1dd353e28ajji PostCodeWithDescription() is called while processing another any other Post 59122e21915101b8f38d81edc6d4f1fd1dd353e28ajji Code Library function, then PostCodeWithDescription() must return Value 60122e21915101b8f38d81edc6d4f1fd1dd353e28ajji immediately. 61fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang 62fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang @param Value The 32-bit value to write to the POST card. 63fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang @param Description Pointer to an ASCII string that is a description of the 64fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang POST code value. This is an optional parameter that may 65fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang be NULL. 66fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang 67122e21915101b8f38d81edc6d4f1fd1dd353e28ajji @return The 32-bit value to write to the POST card. 68fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang 69fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang**/ 70fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshangUINT32 71fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshangEFIAPI 72fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshangPostCodeWithDescription ( 73fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang IN UINT32 Value, 74fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang IN CONST CHAR8 *Description OPTIONAL 75fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang ); 76fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang 77fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang 78fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang/** 79fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang Returns TRUE if POST Codes are enabled. 80fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang 81fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang This function returns TRUE if the POST_CODE_PROPERTY_POST_CODE_ENABLED 82fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang bit of PcdPostCodePropertyMask is set. Otherwise FALSE is returned. 83fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang 84fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang @retval TRUE The POST_CODE_PROPERTY_POST_CODE_ENABLED bit of 85fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang PcdPostCodeProperyMask is set. 86fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang @retval FALSE The POST_CODE_PROPERTY_POST_CODE_ENABLED bit of 87fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang PcdPostCodeProperyMask is clear. 88fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang 89fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang**/ 90fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshangBOOLEAN 91fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshangEFIAPI 92fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshangPostCodeEnabled ( 93fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang VOID 94fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang ); 95fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang 96fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang 97fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang/** 98fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang Returns TRUE if POST code descriptions are enabled. 99fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang 100eceb3a4cb9b97d331ba91ea0a930465c05e8e20blgao This function returns TRUE if the POST_CODE_PROPERTY_POST_CODE_DESCRIPTION_ENABLED 101eceb3a4cb9b97d331ba91ea0a930465c05e8e20blgao bit of PcdPostCodePropertyMask is set. Otherwise FALSE is returned. 102fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang 103eceb3a4cb9b97d331ba91ea0a930465c05e8e20blgao @retval TRUE The POST_CODE_PROPERTY_POST_CODE_DESCRIPTION_ENABLED bit of 104eceb3a4cb9b97d331ba91ea0a930465c05e8e20blgao PcdPostCodeProperyMask is set. 105eceb3a4cb9b97d331ba91ea0a930465c05e8e20blgao @retval FALSE The POST_CODE_PROPERTY_POST_CODE_DESCRIPTION_ENABLED bit of 106eceb3a4cb9b97d331ba91ea0a930465c05e8e20blgao PcdPostCodeProperyMask is clear. 107fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang 108fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang**/ 109fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshangBOOLEAN 110fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshangEFIAPI 111fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshangPostCodeDescriptionEnabled ( 112fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang VOID 113fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang ); 114fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang 115fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang 116fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang/** 1171a2f870c9babe077c2d3abea23b6e8e044778341pkandel Sends a 32-bit value to a POST card. 118fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang 119fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang If POST codes are enabled in PcdPostCodeProperyMask, then call PostCode() 120fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang passing in Value. Value is returned. 121fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang 122fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang @param Value The 32-bit value to write to the POST card. 123fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang 124eceb3a4cb9b97d331ba91ea0a930465c05e8e20blgao @return Value The 32-bit value to write to the POST card. 125fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang 126fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang**/ 127fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang#define POST_CODE(Value) PostCodeEnabled() ? PostCode(Value) : Value 128fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang 129fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang/** 1301a2f870c9babe077c2d3abea23b6e8e044778341pkandel Sends a 32-bit value to a POST and associated ASCII string. 131fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang 132fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang If POST codes and POST code descriptions are enabled in 133fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang PcdPostCodeProperyMask, then call PostCodeWithDescription() passing in 134fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang Value and Description. If only POST codes are enabled, then call PostCode() 135fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang passing in Value. Value is returned. 136fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang 137fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang @param Value The 32-bit value to write to the POST card. 138fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang @param Description Pointer to an ASCII string that is a description of the 139fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang POST code value. 140fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang 141eceb3a4cb9b97d331ba91ea0a930465c05e8e20blgao @return Value The 32-bit value to write to the POST card. 142fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang**/ 143fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang#define POST_CODE_WITH_DESCRIPTION(Value,Description) \ 144fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang PostCodeEnabled() ? \ 145fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang (PostCodeDescriptionEnabled() ? \ 146fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang PostCodeWithDescription(Value,Description) : \ 147fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang PostCode(Value)) : \ 148fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang Value 149fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang 150fb3df220f89e6eecaf1862b9241d8a1214eeda1cyshang#endif 151