mirror of https://github.com/tongzx/nt5src
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.
183 lines
3.9 KiB
183 lines
3.9 KiB
/*++
|
|
|
|
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
|
|
);
|