summaryrefslogblamecommitdiffstats
path: root/private/ntos/nthals/halalpha/environ.h
blob: 8a1abc91c9d4a63bf580ab3ed29337e160e4d421 (plain) (tree)






































































































































































                                                                               
/*++

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