PCCardTuples.h
上传用户:xjjlds
上传日期:2015-12-05
资源大小:22823k
文件大小:19k
- /*
- File: PCCardTuples.h
-
- Contains: List of PCMCIA tuple types and definitions of tuple contents.
-
- Version: Technology: System 7.5
- Release: QuickTime 6.0.2
-
- Copyright: (c) 1994-2001 by Apple Computer, Inc. All rights reserved.
-
- Bugs?: For bug reports, consult the following page on
- the World Wide Web:
-
- http://developer.apple.com/bugreporter/
-
- */
- #ifndef __PCCARDTUPLES__
- #define __PCCARDTUPLES__
- #ifndef __MACTYPES__
- #include "MacTypes.h"
- #endif
- #if PRAGMA_ONCE
- #pragma once
- #endif
- #ifdef __cplusplus
- extern "C" {
- #endif
- #if PRAGMA_IMPORT
- #pragma import on
- #endif
- #if PRAGMA_STRUCT_ALIGN
- #pragma options align=mac68k
- #elif PRAGMA_STRUCT_PACKPUSH
- #pragma pack(push, 2)
- #elif PRAGMA_STRUCT_PACK
- #pragma pack(2)
- #endif
- enum {
- MAX_TUPLE_SIZE = 256
- };
- /*------------------------------------------------------------------------
- Defines for Tuple codes
- ------------------------------------------------------------------------*/
- enum {
- CISTPL_NULL = 0x00,
- CISTPL_DEVICE = 0x01,
- CISTPL_LONGLINK_CB = 0x02,
- CISTPL_INDIRECT = 0x03,
- CISTPL_CONFIG_CB = 0x04,
- CISTPL_CFTABLE_ENTRY_CB = 0x05,
- CISTPL_LONGLINK_MFC = 0x06,
- CISTPL_BAR = 0x07,
- CISTPL_CHECKSUM = 0x10,
- CISTPL_LONGLINK_A = 0x11,
- CISTPL_LONGLINK_C = 0x12,
- CISTPL_LINKTARGET = 0x13,
- CISTPL_NO_LINK = 0x14,
- CISTPL_VERS_1 = 0x15,
- CISTPL_ALTSTR = 0x16,
- CISTPL_DEVICE_A = 0x17,
- CISTPL_JEDEC_C = 0x18,
- CISTPL_JEDEC_A = 0x19,
- CISTPL_CONFIG = 0x1A,
- CISTPL_CFTABLE_ENTRY = 0x1B,
- CISTPL_DEVICE_OC = 0x1C,
- CISTPL_DEVICE_OA = 0x1D,
- CISTPL_DEVICE_GEO = 0x1E,
- CISTPL_DEVICE_GEO_A = 0x1F,
- CISTPL_MANFID = 0x20,
- CISTPL_FUNCID = 0x21,
- CISTPL_FUNCE = 0x22,
- CISTPL_SWIL = 0x23,
- CISTPL_VERS_2 = 0x40,
- CISTPL_FORMAT = 0x41,
- CISTPL_GEOMETRY = 0x42,
- CISTPL_BYTEORDER = 0x43,
- CISTPL_DATE = 0x44,
- CISTPL_BATTERY = 0x45,
- CISTPL_ORG = 0x46,
- CISTPL_VENDOR = 0xFE,
- CISTPL_END = 0xFF
- };
- /*------------------------------------------------------------------------
- Tuple Data Block Definitions
- ------------------------------------------------------------------------*/
- /*------------ Device Information Tuple (01H, 17H) ----------- */
- struct DeviceIDTuple {
- Byte TPLDEV_TYPE_WPS_SPEED; /* Device Type Code: 7-4, WPS: 3, Device Speed: 2-0*/
- Byte deviceData[253];
- };
- typedef struct DeviceIDTuple DeviceIDTuple;
- enum {
- TPLDEV_TYPE_MASK = 0xF0, /* device type mask for TPLDEV_TYPE_WPS_SPEED*/
- TPLDEV_TYPE_EXTENDED = 0xE0, /* device type value for extended type*/
- TPLDEV_WPS_MASK = 0x08, /* write-protect switch mask for TPLDEV_TYPE_WPS_SPEED*/
- TPLDEV_SPEED_MASK = 0x07, /* device speed mask for TPLDEV_TYPE_WPS_SPEED*/
- TPLDEV_DSPEED_NULL = 0x00, /* speed for null device type*/
- TPLDEV_DSPEED_250NS = 0x01, /* 250ns card access time*/
- TPLDEV_DSPEED_200NS = 0x02, /* 200ns card access time*/
- TPLDEV_DSPEED_150NS = 0x03, /* 150ns card access time*/
- TPLDEV_DSPEED_100NS = 0x04, /* 100ns card access time*/
- TPLDEV_EXTENDED_SPEED = 0x07, /* device speed value for extended speed*/
- TPLDEV_SPEED_EXPONENT = 0x07, /* extended byte exponent mask*/
- TPLDEV_SPEED_MANTISSA = 0x78, /* extended byte mantissa mask*/
- TPLDEV_SPEED_EXTENDED_MASK = 0x80 /* bit set if more extended speed data follows*/
- };
- /* device ID types*/
- enum {
- DTYPE_NULL = 0,
- DTYPE_ROM = 1,
- DTYPE_OTPROM = 2,
- DTYPE_EPROM = 3,
- DTYPE_EEPROM = 4,
- DTYPE_FLASH = 5,
- DTYPE_SRAM = 6,
- DTYPE_DRAM = 7,
- DTYPE_FUNCSPEC = 0x0D,
- DTYPE_EXTEND = 0x0E
- };
- /*--------------- Checksum Control Tuple (10H) --------------- */
- struct ChecksumControlTuple {
- short TPLCKS_ADDR; /* offset to region to be checksummed, LSB first*/
- short TPLCKS_LEN; /* length of region to be checksummed, LSB first*/
- char TPLCKS_CS; /* checksum of the region*/
- Byte reserved; /* padding*/
- };
- typedef struct ChecksumControlTuple ChecksumControlTuple;
- /*---------------- Long Link Multi-Function Tuple (06H) ------ */
- struct LongLinkMFCTuple {
- UInt8 TPLMFC_NUM; /* Number of sets of config registers for individual functions*/
- UInt8 TPLMFC_TAS1; /* CIS target address space for first function (00 = Attr, 01 = Common)*/
- UInt32 TPLMFC_ADDR1; /* Target address of first CIS, unsigned long, lsb first*/
- UInt8 TPLMFC_TAS2; /* CIS target address space for second function (00 = Attr, 01 = Common)*/
- UInt8 TPLMFC_ADDR2[4]; /* [MISALIGNED!] Target address of second CIS, unsigned long, lsb first*/
- /* the following fields are of undetermined length and should be calculated at runtime*/
- /* */
- /* UInt8 TPLMFC_TASn;*/
- /* UInt32 TPLMFC_ADDRn;*/
- };
- typedef struct LongLinkMFCTuple LongLinkMFCTuple;
- /*---------------- Long Link Tuple (11H, 12H) ---------------- */
- struct LongLinkTuple {
- UInt32 TPLL_ADDR; /* target address, LSB first*/
- };
- typedef struct LongLinkTuple LongLinkTuple;
- /*----------------- Link Target Tuple (13H) ------------------ */
- struct LinkTargetTuple {
- Byte TPLL_TAG[3]; /* tag: should be 'C', 'I', 'S'*/
- };
- typedef struct LinkTargetTuple LinkTargetTuple;
- /*---------------- Level 1 Version Tuple (15H) --------------- */
- struct Level1VersionTuple {
- Byte TPLLV1_MAJOR; /* major version number (0x04)*/
- Byte TPLLV1_MINOR; /* minor version number (0x01 for release 2.0 and 2.01)*/
- Byte TPLLV1_INFO[1]; /* product information string, zero-terminated*/
- };
- typedef struct Level1VersionTuple Level1VersionTuple;
- /*------------- JEDEC Identifier Tuple (18H, 19H) ------------ */
- struct JEDECDeviceInfo {
- Byte manufacturerID;
- Byte manufacturerInfo;
- };
- typedef struct JEDECDeviceInfo JEDECDeviceInfo;
- struct JEDECIdentifierTuple {
- JEDECDeviceInfo device[1];
- };
- typedef struct JEDECIdentifierTuple JEDECIdentifierTuple;
- /*--------- Configuration Tuple (1AH) ---------- */
- struct ConfigTuple {
- Byte TPCC_SZ; /* size of fields byte*/
- Byte TPCC_LAST; /* index number of last config entry*/
- Byte TPCC_RADR; /* config reg's base addr in reg. space*/
- Byte reserved; /* padding*/
- /* the following fields are of undetermined length and should be calculated at runtime*/
- /*UInt32 TPCC_RMSK;*/
- /*UInt32 TPCC_RSVD;*/
- /*UInt32 TPCC_SBTPL;*/
- };
- typedef struct ConfigTuple ConfigTuple;
- /* TPCC_RADR field definitions*/
- enum {
- TPCC_RASZ = 0x03, /* bits 1-0*/
- TPCC_RMSZ = 0x3C, /* bits 5-2*/
- TPCC_RFSZ = 0xC0 /* bits 7-6*/
- };
- /*--------- Device Geometry Tuple (1EH, 1FH) ----------*/
- struct DeviceGeometry {
- UInt8 DGTPL_BUS; /* system bus width = 2^(n-1), n>0*/
- UInt8 DGTPL_EBS; /* erase block size = 2^(n-1), n>0*/
- UInt8 DGTPL_RBS; /* read block size = 2^(n-1), n>0*/
- UInt8 DGTPL_WBS; /* write block size = 2^(n-1), n>0*/
- UInt8 DGTPL_PART; /* partitioning size = 2^(n-1), n>0*/
- UInt8 DGTPL_HWIL; /* hardware interleave = 2^(n-1), n>0*/
- };
- typedef struct DeviceGeometry DeviceGeometry;
- struct DeviceGeometryTuple {
- DeviceGeometry device[42];
- };
- typedef struct DeviceGeometryTuple DeviceGeometryTuple;
- /*--------- Manufacturer Identification Tuple (20H) ---------- */
- struct ManufIDTuple {
- short TPLMID_MANF; /* PCMCIA PC Card manufacturer code*/
- short TPLMID_CARD; /* manufacturer information (part number and/or revision)*/
- };
- typedef struct ManufIDTuple ManufIDTuple;
- /*----------- Function Identification Tuple (21H) ------------ */
- struct FunctionIDTuple {
- Byte TPLFID_FUNCTION; /* PC card function code*/
- Byte TPLFID_SYSINIT; /* system initialization bit mask*/
- };
- typedef struct FunctionIDTuple FunctionIDTuple;
- /* function codes*/
- enum {
- TPLFID_MultiFunction = 0,
- TPLFID_Memory = 1,
- TPLFID_SerialPort = 2,
- TPLFID_ParallelPort = 3,
- TPLFID_FixedDisk = 4,
- TPLFID_VideoAdapter = 5,
- TPLFID_NetworkLANAdapter = 6,
- TPLFID_AIMS = 7,
- TPLFID_SCSI = 8,
- TPLFID_Security = 9
- };
- /*------------ Software Interleave Tuple (23H) --------------- */
- struct SoftwareInterleaveTuple {
- char TPLSWIL_INTRLV; /* software interleave*/
- };
- typedef struct SoftwareInterleaveTuple SoftwareInterleaveTuple;
- /*------- Level 2 Version and Information Tuple (40H) -------- */
- struct Level2VersionTuple {
- Byte TPLLV2_VERS; /* structure version (0x00)*/
- Byte TPLLV2_COMPLY; /* level of compliance with the standard (0x00)*/
- UInt16 TPLLV2_DINDEX; /* byte address of first data byte in card, LSB first*/
- Byte TPLLV2_RSV6; /* reserved, must be zero*/
- Byte TPLLV2_RSV7; /* reserved, must be zero*/
- Byte TPLLV2_VSPEC8; /* vendor specific byte*/
- Byte TPLLV2_VSPEC9; /* vendor specific byte*/
- char TPLLV2_NHDR; /* number of copies of CIS present on this device*/
- char TPLLV2_OEM[1]; /* vendor of software that formatted card, zero-terminated*/
- char TPLLV2_INFO[1]; /* informational message about the card, zero-terminated*/
- Byte reserved; /* padding*/
- };
- typedef struct Level2VersionTuple Level2VersionTuple;
- /*-------------------- Format Tuple (41H) -------------------- */
- /* additional information for disk type:*/
- struct FormatDiskTuple {
- UInt16 TPLFMT_BKSZ; /* block size, or zero if unblocked format*/
- UInt32 TPLFMT_NBLOCKS; /* number of data blocks in this partition*/
- UInt32 TPLFMT_EDCLOC; /* location of error detection code, or zero if interleaved*/
- };
- typedef struct FormatDiskTuple FormatDiskTuple;
- /* additional information for disk type:*/
- struct FormatMemTuple {
- Byte TPLFMT_FLAGS; /* various flags*/
- Byte TPLFMT_RESERVED; /* reserved, set to zero*/
- UInt32 TPLFMT_ADDRESS; /* physical location at which this memory partion must be mapped*/
- UInt32 TPLFMT_EDCLOC; /* location of error detection code, or zero if interleaved*/
- };
- typedef struct FormatMemTuple FormatMemTuple;
- struct FormatTuple {
- char TPLFMT_TYPE; /* format type code*/
- char TPLFMT_EDC; /* error detection method and length of error detection code*/
- long TPLFMT_OFFSET; /* offset to first data byte in this partition*/
- long TPLFMT_NBYTES; /* number of data bytes in this partition*/
- union {
- FormatDiskTuple TPLFMT_DISK;
- FormatMemTuple TPLFMT_MEM;
- } u;
- };
- typedef struct FormatTuple FormatTuple;
- /* format types*/
- enum {
- TPLFMTTYPE_DISK = 0,
- TPLFMTTYPE_MEM = 1,
- TPLFMTTYPE_VS = 0x80
- };
- /* error detection types*/
- enum {
- TPLFMTEDC_NONE = 0,
- TPLFMTEDC_CKSUM = 1,
- TPLFMTEDC_CRC = 2,
- TPLFMTEDC_PCC = 3,
- TPLFMTEDC_VS = 8
- };
- /* bits in TPLFMT_FLAGS*/
- enum {
- TPLFMTFLAGS_ADDR = 0,
- TPLFMTFLAGS_AUTO = 1
- };
- /*------------------ Geometry Tuple (42H) -------------------- */
- struct GeometryTuple {
- char TPLGEO_SPT; /* number of sectors per track*/
- char TPLGEO_TPC; /* number of tracks per cylinder*/
- short TPLGEO_NCYL; /* number of cylinders, total*/
- };
- typedef struct GeometryTuple GeometryTuple;
- /*----------------- Byte-Order Tuple (43H) ------------------- */
- struct ByteOrderTuple {
- char TPLBYTE_ORDER; /* byte order code*/
- char TPLBYTE_MAP; /* byte mapping code*/
- };
- typedef struct ByteOrderTuple ByteOrderTuple;
- /* byte order codes*/
- enum {
- TYPBYTEORD_LOW = 0,
- TYPBYTEORD_HIGH = 1,
- TYPBYTEORD_VS = 0x80
- };
- /* byte mapping codes*/
- enum {
- TYPBYTEMAP_LOW = 0,
- TYPBYTEMAP_HIGH = 1,
- TYPBYTEMAP_VS = 0x80
- };
- /*---------- Card Initialization Date Tuple (44H) ------------ */
- struct CardInitDateTuple {
- UInt16 TPLDATE_TIME; /* hours, minutes, seconds*/
- UInt16 TPLDATE_DAY; /* year, month, day*/
- };
- typedef struct CardInitDateTuple CardInitDateTuple;
- /*---------- Battery-Replacement Date Tuple (45H) ------------ */
- struct BatteryReplaceDateTuple {
- UInt16 TPLBATT_RDAY; /* last replacement date (year, month, day)*/
- UInt16 TPLBATT_XDAY; /* battery expiration date (year, month, day)*/
- };
- typedef struct BatteryReplaceDateTuple BatteryReplaceDateTuple;
- /*---------------------- General Tuple ----------------------- */
- union TupleBody {
- DeviceIDTuple deviceID;
- ChecksumControlTuple checksum;
- LongLinkTuple link;
- LinkTargetTuple target;
- Level1VersionTuple level1;
- JEDECIdentifierTuple jedecID;
- ConfigTuple config;
- DeviceGeometryTuple devGeo;
- ManufIDTuple manufID;
- FunctionIDTuple funcID;
- SoftwareInterleaveTuple swil;
- Level2VersionTuple level2;
- FormatTuple format;
- GeometryTuple geometry;
- ByteOrderTuple order;
- CardInitDateTuple initDate;
- BatteryReplaceDateTuple battDate;
- Byte tupleData[254];
- };
- typedef union TupleBody TupleBody;
- struct Tuple {
- Byte TPL_CODE;
- Byte TPL_LINK;
- TupleBody TPL_BODY;
- };
- typedef struct Tuple Tuple;
- #if PRAGMA_STRUCT_ALIGN
- #pragma options align=reset
- #elif PRAGMA_STRUCT_PACKPUSH
- #pragma pack(pop)
- #elif PRAGMA_STRUCT_PACK
- #pragma pack()
- #endif
- #ifdef PRAGMA_IMPORT_OFF
- #pragma import off
- #elif PRAGMA_IMPORT
- #pragma import reset
- #endif
- #ifdef __cplusplus
- }
- #endif
- #endif /* __PCCARDTUPLES__ */