168 lines
4.6 KiB
C
168 lines
4.6 KiB
C
|
/*++
|
|||
|
|
|||
|
Copyright (c) 1992, 1993 Digital Equipment Corporation
|
|||
|
|
|||
|
Module Name:
|
|||
|
|
|||
|
environ.h
|
|||
|
|
|||
|
Abstract:
|
|||
|
|
|||
|
This module contains definitions for environment variable support
|
|||
|
under the HAL. (Parts taken from J. Derosa's FWP.H)
|
|||
|
|
|||
|
Author:
|
|||
|
|
|||
|
Jeff McLeman (DEC) 17-Sep-1992
|
|||
|
|
|||
|
Revision History:
|
|||
|
|
|||
|
--*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
//
|
|||
|
// Define the private configuration packet structure, which contains a
|
|||
|
// configuration component as well as pointers to the component's parent,
|
|||
|
// peer, child, and configuration data.
|
|||
|
//
|
|||
|
|
|||
|
typedef struct _CONFIGURATION_PACKET {
|
|||
|
CONFIGURATION_COMPONENT Component;
|
|||
|
struct _CONFIGURATION_PACKET *Parent;
|
|||
|
struct _CONFIGURATION_PACKET *Peer;
|
|||
|
struct _CONFIGURATION_PACKET *Child;
|
|||
|
PVOID ConfigurationData;
|
|||
|
} CONFIGURATION_PACKET, *PCONFIGURATION_PACKET;
|
|||
|
|
|||
|
//
|
|||
|
// The compressed configuration packet structure used to store configuration
|
|||
|
// data in NVRAM.
|
|||
|
//
|
|||
|
|
|||
|
typedef struct _COMPRESSED_CONFIGURATION_PACKET {
|
|||
|
UCHAR Parent;
|
|||
|
UCHAR Class;
|
|||
|
UCHAR Type;
|
|||
|
UCHAR Flags;
|
|||
|
ULONG Key;
|
|||
|
UCHAR Version;
|
|||
|
UCHAR Revision;
|
|||
|
USHORT ConfigurationDataLength;
|
|||
|
USHORT Identifier;
|
|||
|
USHORT ConfigurationData;
|
|||
|
} COMPRESSED_CONFIGURATION_PACKET, *PCOMPRESSED_CONFIGURATION_PACKET;
|
|||
|
|
|||
|
//
|
|||
|
// Defines for Identifier index.
|
|||
|
//
|
|||
|
|
|||
|
#define NO_CONFIGURATION_IDENTIFIER 0xFFFF
|
|||
|
|
|||
|
#ifdef EISA_PLATFORM
|
|||
|
//
|
|||
|
// Defines for the non-volatile configuration tables.
|
|||
|
//
|
|||
|
|
|||
|
#define NV_NUMBER_OF_ENTRIES 40
|
|||
|
#define NV_LENGTH_OF_IDENTIFIER (1024 - (NV_NUMBER_OF_ENTRIES * 16) - 8)
|
|||
|
#define NV_LENGTH_OF_DATA (2048 -16)
|
|||
|
#define LENGTH_OF_ENVIRONMENT 1024
|
|||
|
#define LENGTH_OF_EISA_DATA 2044
|
|||
|
|
|||
|
#define MAXIMUM_ENVIRONMENT_VALUE 256
|
|||
|
#define MAX_NUMBER_OF_ENVIRONMENT_VARIABLES 40
|
|||
|
|
|||
|
//
|
|||
|
// The non-volatile configuration table structure.
|
|||
|
//
|
|||
|
|
|||
|
typedef struct _NV_CONFIGURATION {
|
|||
|
COMPRESSED_CONFIGURATION_PACKET Packet[NV_NUMBER_OF_ENTRIES]; // 0 to 640-4
|
|||
|
UCHAR Identifier[NV_LENGTH_OF_IDENTIFIER]; // 640 to (1K - 8 - 4)
|
|||
|
ULONG Monitor; // 1K-8
|
|||
|
ULONG Floppy; // 1K-4
|
|||
|
ULONG Floppy2; // 1K
|
|||
|
ULONG KeyboardType; // 1K+4
|
|||
|
UCHAR Data[NV_LENGTH_OF_DATA]; // Unused space 1K+8 to 3K-8-4
|
|||
|
UCHAR Checksum1[4]; // Data checksum 3K-8
|
|||
|
UCHAR Environment[LENGTH_OF_ENVIRONMENT]; // Env Variables 3K-4 to 4K-4-4
|
|||
|
UCHAR Checksum2[4]; // Env checksum 4K-4
|
|||
|
UCHAR EisaData[LENGTH_OF_EISA_DATA]; // Eisa Data (4K to 6K-4)
|
|||
|
UCHAR Checksum3[4]; // EisaData checksum
|
|||
|
} NV_CONFIGURATION, *PNV_CONFIGURATION;
|
|||
|
|
|||
|
//
|
|||
|
// Defines for the volatile configuration tables.
|
|||
|
// smd - Increased the number of entries, length of Identifier and length
|
|||
|
// of data.
|
|||
|
//
|
|||
|
|
|||
|
#define NUMBER_OF_ENTRIES 200
|
|||
|
#define LENGTH_OF_IDENTIFIER (3*1024)
|
|||
|
#define LENGTH_OF_DATA 2048
|
|||
|
|
|||
|
//
|
|||
|
// The volatile configuration table structure.
|
|||
|
//
|
|||
|
|
|||
|
typedef struct _CONFIGURATION {
|
|||
|
CONFIGURATION_PACKET Packet[NUMBER_OF_ENTRIES];
|
|||
|
UCHAR Identifier[LENGTH_OF_IDENTIFIER];
|
|||
|
UCHAR Data[LENGTH_OF_DATA];
|
|||
|
UCHAR EisaData[LENGTH_OF_EISA_DATA];
|
|||
|
} CONFIGURATION, *PCONFIGURATION;
|
|||
|
|
|||
|
#else // EISA_PLATFORM
|
|||
|
|
|||
|
//
|
|||
|
// Defines for the Non-Volatile configuration tables.
|
|||
|
//
|
|||
|
// SMD - We have reduced the size of the NVRAM from 6K to 3K
|
|||
|
// If needed we could take a few bytes from ENVIRONMENT
|
|||
|
// since there is tons of empty space there.
|
|||
|
//
|
|||
|
|
|||
|
#define LENGTH_OF_ENVIRONMENT ((3*1024) - 16 - 4)
|
|||
|
|
|||
|
#define MAXIMUM_ENVIRONMENT_VALUE 256
|
|||
|
#define MAXIMUM_NUMBER_OF_ENVIRONMENT_VARIABLES 28
|
|||
|
#define MAX_NUMBER_OF_ENVIRONMENT_VARIABLES 28
|
|||
|
//
|
|||
|
// The non-volatile configuration table structure.
|
|||
|
//
|
|||
|
|
|||
|
typedef struct _NV_CONFIGURATION {
|
|||
|
ULONG Monitor; //0
|
|||
|
ULONG Floppy; //4
|
|||
|
ULONG Floppy2; //8
|
|||
|
ULONG KeyboardType; //12
|
|||
|
UCHAR Environment[LENGTH_OF_ENVIRONMENT]; //16 to (3K-4)
|
|||
|
UCHAR Checksum[4];
|
|||
|
} NV_CONFIGURATION, *PNV_CONFIGURATION;
|
|||
|
|
|||
|
//
|
|||
|
// Defines for the Volatile configuration tables.
|
|||
|
//
|
|||
|
|
|||
|
#define NUMBER_OF_ENTRIES 40
|
|||
|
#define LENGTH_OF_IDENTIFIER (1024 - (NUMBER_OF_ENTRIES * 16))
|
|||
|
#define LENGTH_OF_DATA 2048
|
|||
|
|
|||
|
//
|
|||
|
// The volatile configuration table structure.
|
|||
|
//
|
|||
|
|
|||
|
typedef struct _CONFIGURATION {
|
|||
|
CONFIGURATION_PACKET Packet[NUMBER_OF_ENTRIES];
|
|||
|
UCHAR Identifier[LENGTH_OF_IDENTIFIER];
|
|||
|
UCHAR Data[LENGTH_OF_DATA];
|
|||
|
} CONFIGURATION, *PCONFIGURATION;
|
|||
|
|
|||
|
#endif // EISA_PLATFORM
|
|||
|
|
|||
|
//
|
|||
|
// The value of HalpCMOSRamBase must be set at initialization:
|
|||
|
//
|
|||
|
#define NVRAM_CONFIGURATION HalpCMOSRamBase
|