176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#ifndef _PIFLASH64_H 276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _PIFLASH64_H 376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/*++ 576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 676d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanCopyright (c) 1999 Intel Corporation 776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 876d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanModule Name: 976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 1076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman PIflash64.h 1176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 1276d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanAbstract: 1376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 1476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman Iflash64.efi protocol to abstract iflash from 1576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman the system. 1676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 1776d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanRevision History 1876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 1976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman--*/ 2076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 2176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman// 2276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman// Guid that identifies the IFLASH protocol 2376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman// 2476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IFLASH64_PROTOCOL_PROTOCOL \ 2576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman { 0x65cba110, 0x74ab, 0x11d3, 0xbb, 0x89, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 }; 2676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 2776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman// 2876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman// Unlock FLASH from StartAddress to EndAddress and return a LockKey 2976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman// 3076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef 3176d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanEFI_STATUS 3276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman(EFIAPI *UNLOCK_FLASH_API)( 3376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN struct _IFLASH64_PROTOCOL_INTERFACE *This 3476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman ); 3576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 3676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman// 3776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman// Lock the flash represented by the LockKey 3876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman// 3976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef 4076d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanEFI_STATUS 4176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman(EFIAPI *LOCK_FLASH_API)( 4276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN struct _IFLASH64_PROTOCOL_INTERFACE *This 4376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman ); 4476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 4576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman// 4676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman// Status callback for a utility like IFLASH64 4776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman// 4876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman// Token would map to a list like Ted proposed. The utility has no idea what 4976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman// happens on the other side. 5076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman// ErrorStatus - Level of Error or success. Independent of Token. If you 5176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman// don't know the token you will at least know pass or fail. 5276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman// String - Optional extra information about the error. Could be used for 5376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman// debug or future expansion 5476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman// 5576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman// Attributes - Options screen attributes for String. Could allow the string to be different colors. 5676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman// 5776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef 5876d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanEFI_STATUS 5976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman(EFIAPI *UTILITY_PROGRESS_API)( 6076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN struct _IFLASH64_PROTOCOL_INTERFACE *This, 6176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN UINTN Token, 6276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN EFI_STATUS ErrorStatus, 6376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN CHAR16 *String, OPTIONAL 6476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN UINTN *Attributes OPTIONAL 6576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman ); 6676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 6776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman// 6876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman// Token Values 6976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman// 7076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman// IFlash64 Token Codes 7176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IFLASH_TOKEN_IFLASHSTART 0xB0 // IFlash64 has started 7276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IFLASH_TOKEN_READINGFILE 0xB1 // Reading File 7376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IFLASH_TOKEN_INITVPP 0xB2 // Initializing Vpp 7476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IFLASH_TOKEN_DISABLEVPP 0x10 // Disable Vpp 7576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IFLASH_TOKEN_FLASHUNLOCK 0xB3 // Unlocking FLASH Devices 7676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IFLASH_TOKEN_FLASHERASE 0xB4 // Erasing FLASH Devices 7776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IFLASH_TOKEN_FLASHPROGRAM 0xB5 // Programming FLASH 7876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IFLASH_TOKEN_FLASHVERIFY 0xB6 // Verifying FLASH 7976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IFLASH_TOKEN_UPDATESUCCES 0xB7 // FLASH Updage Success! 8076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 8176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IFLASH_TOKEN_PROGRESS_READINGFILE 0x11 // % Reading File 8276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IFLASH_TOKEN_PROGRESS_FLASHUNLOCK 0x13 // % Unlocking FLASH Devices 8376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IFLASH_TOKEN_PROGRESS_FLASHERASE 0x14 // % Erasing FLASH Devices 8476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IFLASH_TOKEN_PROGRESS_FLASHPROGRAM 0x15 // % Programming FLASH 8576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IFLASH_TOKEN_PROGRESS_FLASHVERIFY 0x16 // % Verifying FLASH 8676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 8776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IFLASH_TOKEN_READINGFILE_ER 0xB8 // File Read Error 8876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IFLASH_TOKEN_INITVPP_ER 0xB9 // Initialization of IFB Error 8976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IFLASH_TOKEN_FLASHUNLOCK_ER 0xBA // FLASH Unlock Error 9076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IFLASH_TOKEN_FLASHERASE_ER 0xBB // FLASH Erase Error 9176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IFLASH_TOKEN_FLASHVERIFY_ER 0xBC // FLASH Verify Error 9276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IFLASH_TOKEN_FLASHPROG_ER 0xBD // FLASH Program Error 9376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 9476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IFLASH_TABLE_END 0x00 9576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 9676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman// 9776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman// If this number changes one of the existing API's has changes 9876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman// 9976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IFLASH_PI_MAJOR_VERSION 0x01 10076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 10176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman// 10276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman// This number changes when new APIs or data variables get added to the end 10376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman// of the data structure 10476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman// 10576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define IFLASH_PI_MINOR_VERSION 0x01 10676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 10776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef struct _IFLASH64_PROTOCOL_INTERFACE { 10876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman UINT32 MajorVersion; 10976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman UINT32 MinorVersion; 11076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman UNLOCK_FLASH_API UnlockFlash; 11176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman LOCK_FLASH_API LockFlash; 11276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman UTILITY_PROGRESS_API Progress; 11376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 11476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman // 11576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman // Future expansion goes here 11676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman // 11776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 11876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} IFLASH64_PROTOCOL_INTERFACE; 11976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 12076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 12176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#endif 122