mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
174 lines
5.1 KiB
174 lines
5.1 KiB
/*++
|
|
|
|
Copyright (c) 1990-1995 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
D:\nt\private\ntos\ndis\aic5900\eeprom.h
|
|
|
|
Abstract:
|
|
|
|
AIC5900 PCI EEPROM information.
|
|
|
|
Author:
|
|
|
|
Kyle Brandon (KyleB)
|
|
|
|
Environment:
|
|
|
|
Kernel mode
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
#ifndef __EEPROM_H
|
|
#define __EEPROM_H
|
|
|
|
#define EEPROM_READ_BUFFER(pDst, pSrc, Length) \
|
|
{ \
|
|
UINT _c; \
|
|
\
|
|
for (_c = 0; _c < Length; _c++) \
|
|
{ \
|
|
NdisReadRegisterUchar((PUCHAR)(pSrc) + _c, (PUCHAR)(pDst) + _c); \
|
|
} \
|
|
}
|
|
|
|
#define EEPROM_READ_UCHAR(Src, Dst) NdisReadRegisterUchar((Src), (Dst))
|
|
|
|
#define EEPROM_READ_ULONG(Src, Dst) \
|
|
{ \
|
|
NdisReadRegisterUchar((PUCHAR)(Src) + 0, (PUCHAR)(Dst) + 3); \
|
|
NdisReadRegisterUchar((PUCHAR)(Src) + 1, (PUCHAR)(Dst) + 2); \
|
|
NdisReadRegisterUchar((PUCHAR)(Src) + 2, (PUCHAR)(Dst) + 1); \
|
|
NdisReadRegisterUchar((PUCHAR)(Src) + 3, (PUCHAR)(Dst) + 0); \
|
|
}
|
|
|
|
#define AIC_ULONG_TO_ULONG(Dst, Src) \
|
|
{ \
|
|
*((PUCHAR)(Dst) + 3) = *((PUCHAR)(Src) + 0); \
|
|
*((PUCHAR)(Dst) + 2) = *((PUCHAR)(Src) + 1); \
|
|
*((PUCHAR)(Dst) + 1) = *((PUCHAR)(Src) + 2); \
|
|
*((PUCHAR)(Dst) + 0) = *((PUCHAR)(Src) + 3); \
|
|
}
|
|
|
|
|
|
//
|
|
// EEPROM manufacturer structure.
|
|
//
|
|
typedef struct EEPROM_MANUFACTURER_INFO
|
|
{
|
|
UCHAR MacAddress[6];
|
|
UCHAR InverseMacAddress[6];
|
|
UCHAR Padding[52];
|
|
}
|
|
EEPROM_MANUFACTURER_INFO,
|
|
*PEEPROM_MANUFACTURER_INFO;
|
|
|
|
|
|
|
|
//
|
|
// BUGBUG: Remove this structure if i don't use it anywhere.
|
|
//
|
|
// Structure definitions
|
|
//
|
|
typedef struct PCI_ROM_BIOS_HEADER
|
|
{
|
|
UCHAR PciBiosSignature[2]; // Literal 0x55AA
|
|
UCHAR PciFCodeOffset[2]; // Offset from the begining of
|
|
// this header to where the FCode
|
|
// image starts. This item is
|
|
// storred as little endian
|
|
UCHAR Reserved[18]; // PCI forum reserved space
|
|
UCHAR PciDataOffset[2]; // Offset from the begining of
|
|
// this header to where the PCI
|
|
// data structure image starts.
|
|
// This item is storred as
|
|
// little endian.
|
|
}
|
|
PCI_ROM_BIOS_HEADER,
|
|
*PPCI_ROM_BIOS_HEADER;
|
|
|
|
|
|
#define FCODE_NAME ((ULONG)'atmo')
|
|
|
|
//
|
|
// Offsets into the PCI_FCODE_IMAGE.
|
|
//
|
|
#define FCODE_HEADER_LEN 0x08 // FCode tokenizer crates this header
|
|
#define NAME_STRING_OFFSET 0x100 // pascal string at this offset
|
|
#define MODEL_STRING_OFFSET 0x180 // pascal string at this offset
|
|
#define INTERUPT_NUM_OFFSET 0x200 // 32-bit number at this offset
|
|
#define VERSION_NUM_OFFSET 0x280 // pascal string at this offset
|
|
#define VERSION_STRING_OFFSET 0x300 // pascal string at this offset
|
|
#define DATE_STRING_OFFSET 0x380 // pascal string at this offset
|
|
|
|
#define EEPROM_R_ADDR_OFFSET 0x400 // 32-bit number at this offset
|
|
#define EEPROM_R_SIZE_OFFSET 0x40C // 32-bit number at this offset
|
|
|
|
#define EEPROM_RW_ADDR_OFFSET 0x420 // 32-bit number at this offset
|
|
#define EEPROM_RW_SIZE_OFFSET 0x42C // 32-bit number at this offset
|
|
|
|
#define PHY_REGS_ADDR_OFFSET 0x440 // 32-bit number at this offset
|
|
#define PHY_REGS_SIZE_OFFSET 0x44C // 32-bit number at this offset
|
|
|
|
#define EXTERN_REGS_ADDR_OFFSET 0x460 // 32-bit number at this offset
|
|
#define EXTERN_REGS_SIZE_OFFSET 0x46C // 32-bit number at this offset
|
|
|
|
#define ORION_SAR_REGS_ADDR_OFFSET 0x480 // 32-bit number at this offset
|
|
#define ORION_SAR_REGS_SIZE_OFFSET 0x48C // 32-bit number at this offset
|
|
|
|
#define ORION_PCI_REGS_ADDR_OFFSET 0x4A0 // 32-bit number at this offset
|
|
#define ORION_PCI_REGS_SIZE_OFFSET 0x4AC // 32-bit number at this offset
|
|
|
|
#define SRAM_ADDR_OFFSET 0x4C0 // 32-bit number at this offset
|
|
#define SRAM_SIZE_OFFSET 0x4CC // 32-bit number at this offset
|
|
|
|
#define FCODE_SIZE 0x64B
|
|
|
|
//
|
|
// Format of the PCI FCode.
|
|
//
|
|
typedef struct PCI_FCODE_IMAGE
|
|
{
|
|
UCHAR FCodeHeader[NAME_STRING_OFFSET];
|
|
|
|
UCHAR Name[MODEL_STRING_OFFSET - NAME_STRING_OFFSET];
|
|
|
|
UCHAR Model[INTERUPT_NUM_OFFSET - MODEL_STRING_OFFSET];
|
|
|
|
UCHAR Intr[VERSION_NUM_OFFSET - INTERUPT_NUM_OFFSET];
|
|
|
|
UCHAR RomVersionNumber[VERSION_STRING_OFFSET - VERSION_NUM_OFFSET];
|
|
|
|
UCHAR RomVersionString[DATE_STRING_OFFSET - VERSION_STRING_OFFSET];
|
|
|
|
UCHAR RomDateString[EEPROM_R_ADDR_OFFSET - DATE_STRING_OFFSET];
|
|
|
|
UCHAR roEpromOffset[EEPROM_R_SIZE_OFFSET - EEPROM_R_ADDR_OFFSET];
|
|
UCHAR roEpromSize[EEPROM_RW_ADDR_OFFSET - EEPROM_R_SIZE_OFFSET];
|
|
|
|
UCHAR rwEpromOffset[EEPROM_RW_SIZE_OFFSET - EEPROM_RW_ADDR_OFFSET];
|
|
UCHAR rwEpromSize[PHY_REGS_ADDR_OFFSET - EEPROM_RW_SIZE_OFFSET];
|
|
|
|
UCHAR PhyOffset[PHY_REGS_SIZE_OFFSET - PHY_REGS_ADDR_OFFSET];
|
|
UCHAR PhySize[EXTERN_REGS_ADDR_OFFSET - PHY_REGS_SIZE_OFFSET];
|
|
|
|
UCHAR ExternalOffset[EXTERN_REGS_SIZE_OFFSET - EXTERN_REGS_ADDR_OFFSET];
|
|
UCHAR ExternalSize[ORION_SAR_REGS_ADDR_OFFSET - EXTERN_REGS_SIZE_OFFSET];
|
|
|
|
UCHAR SarOffset[ORION_SAR_REGS_SIZE_OFFSET - ORION_SAR_REGS_ADDR_OFFSET];
|
|
UCHAR SarSize[ORION_PCI_REGS_ADDR_OFFSET - ORION_SAR_REGS_SIZE_OFFSET];
|
|
|
|
UCHAR PciConfigOffset[ORION_PCI_REGS_SIZE_OFFSET - ORION_PCI_REGS_ADDR_OFFSET];
|
|
UCHAR PciConfigSize[SRAM_ADDR_OFFSET - ORION_PCI_REGS_SIZE_OFFSET];
|
|
|
|
UCHAR SarMemOffset[SRAM_SIZE_OFFSET - SRAM_ADDR_OFFSET];
|
|
UCHAR SarMemSize[FCODE_SIZE - SRAM_SIZE_OFFSET];
|
|
}
|
|
PCI_FCODE_IMAGE,
|
|
*PPCI_FCODE_IMAGE;
|
|
|
|
|
|
#endif // __EEPROM_H
|