windows-nt/Source/XPSP1/NT/base/busdrv/isapnp/pnpisa.h

184 lines
3.9 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
/*++
Copyright (c) 1991 Microsoft Corporation
Module Name:
pnpisa.h
Abstract:
This module contins definitions/declarations for PNP ISA related
definitions.
Author:
Shie-Lin Tzong (shielint) July-12-1995
Revision History:
--*/
//
// External references
//
extern ULONG ADDRESS_PORT;
extern ULONG COMMAND_PORT;
extern PUCHAR PipReadDataPort;
extern PUCHAR PipAddressPort;
extern PUCHAR PipCommandPort;
//
// Definitions
//
#if defined(_X86_)
#define ADDRESS_PORT_NEC 0x0259
#define COMMAND_PORT_NEC 0x0a59
#endif
//
// Plug and Play Card Control Registers
//
#define SET_READ_DATA_PORT 0x00
#define SERIAL_ISOLATION_PORT 0x01
#define CONFIG_CONTROL_PORT 0x02
#define WAKE_CSN_PORT 0x03
#define CONFIG_DATA_PORT 0x04
#define CONFIG_DATA_STATUS_PORT 0x05
#define SET_CSN_PORT 0x06
#define LOGICAL_DEVICE_PORT 0x07
//
// Plug and Play Logical Device Control Registers
//
#define ACTIVATE_PORT 0x30
#define IO_RANGE_CHECK_PORT 0x31
//
// Config Control command
//
#define CONTROL_RESET 0x01
#define CONTROL_WAIT_FOR_KEY 0x02
#define CONTROL_RESET_CSN 0x04
//
// Memory Space Configuration
//
#define NUMBER_MEMORY_DESCRIPTORS 4
#define ADDRESS_MEMORY_BASE 0x40
#define ADDRESS_MEMORY_INCR 0x08
#define ADDRESS_MEMORY_HI 0x00
#define ADDRESS_MEMORY_LO 0x01
#define ADDRESS_MEMORY_CTL 0x02
#define ADDRESS_MEMORY_CTL_LIMIT 0x01
#define ADDRESS_MEMORY_UPPER_HI 0x03
#define ADDRESS_MEMORY_UPPER_LO 0x04
//
// 32 Bit Memory Space Configuration
//
#define NUMBER_32_MEMORY_DESCRIPTORS 4
#define ADDRESS_32_MEMORY_BASE(x) ((PUCHAR)(0x70+((x)*0x10)+((x==0) ? 6 : 0)))
#define ADDRESS_32_MEMORY_B3 0x0
#define ADDRESS_32_MEMORY_B2 0x1
#define ADDRESS_32_MEMORY_B1 0x2
#define ADDRESS_32_MEMORY_B0 0x3
#define ADDRESS_32_MEMORY_CTL 0x4
#define ADDRESS_32_MEMORY_E3 0x5
#define ADDRESS_32_MEMORY_E2 0x6
#define ADDRESS_32_MEMORY_E1 0x7
#define ADDRESS_32_MEMORY_E0 0x8
//
// Io Space Configuration
//
#define NUMBER_IO_DESCRIPTORS 8
#define ADDRESS_IO_BASE 0x60
#define ADDRESS_IO_INCR 0x02
#define ADDRESS_IO_BASE_HI 0x00
#define ADDRESS_IO_BASE_LO 0x01
//
// Interrupt Configuration
//
#define NUMBER_IRQ_DESCRIPTORS 2
#define ADDRESS_IRQ_BASE 0x70
#define ADDRESS_IRQ_INCR 0x02
#define ADDRESS_IRQ_VALUE 0x00
#define ADDRESS_IRQ_TYPE 0x01
//
// DMA Configuration
//
#define NUMBER_DMA_DESCRIPTORS 2
#define ADDRESS_DMA_BASE 0x74
#define ADDRESS_DMA_INCR 0x01
#define ADDRESS_DMA_VALUE 0x00
#define NO_DMA 0x04
//
// 9 byte serial identifier of a PNP ISA Card
//
#include "pshpack1.h"
typedef struct _SERIAL_IDENTIFIER_ {
ULONG VenderId;
ULONG SerialNumber;
UCHAR Checksum;
} SERIAL_IDENTIFIER, *PSERIAL_IDENTIFIER;
#include "poppack.h"
//
// Misc. definitions
//
#define MIN_READ_DATA_PORT 0x200
#define MAX_READ_DATA_PORT 0x3ff
#define MAX_CHARACTER_LENGTH 255
#define NUMBER_CARD_ID_BYTES 9
#define NUMBER_CARD_ID_BITS (NUMBER_CARD_ID_BYTES * 8)
#define CHECKSUMED_BITS 64
#define LFSR_SEED 0x6A
#define ISOLATION_TEST_BYTE_1 0x55
#define ISOLATION_TEST_BYTE_2 0xAA
#define PipWriteAddress(data) WRITE_PORT_UCHAR (PipAddressPort, (UCHAR)(ULONG_PTR)(data))
#define PipWriteData(data) WRITE_PORT_UCHAR (PipCommandPort, (UCHAR)(ULONG_PTR)(data))
#define PipReadData() READ_PORT_UCHAR (PipReadDataPort)
VOID
PipWaitForKey(
VOID
);
VOID
PipConfig(
IN UCHAR Csn
);
VOID
PipIsolation(
VOID
);
VOID
PipSleep(
VOID
);
VOID
PipSelectDevice(
IN UCHAR Device
);