⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pciscc_drv.h

📁 高速同步串口芯片PEB20534的驱动程序
💻 H
📖 第 1 页 / 共 2 页
字号:

#ifndef _PCISCC_H_
#define _PCISCC_H_

#include <ntddk.h>
#include <devioctl.h>
#include "pciscc_flex.h"

/* File system device name.*/
#define PCISCC_W32_NAME L"\\DosDevices\\PCISCC"
#define PCISCC_NT_NAME	L"\\Device\\PCISCC0"

/* PEB-20534H PCI identification */
#define	PCI_VENDOR_ID	0x110A
#define	PCI_DEVICE_ID	0x2102

/* Chip parameters */
#define	CFG_IQLEN		32		/* Interrupt queue length */
#define	CFG_TX_DESC		16		/* TX descriptors */
#define	CFG_RX_DESC		16		/* RX descriptors */
#define	CFG_FIFO_RX_T	64		/* RX FIFO DMA init threshold dwords */

#define	CFG_MTU			384		/* maximum transfer unit */

/* General Registers */
#define GCMDR			0x0000		/* Global Command Register */
#define  AR				0x00000001	/* Action Request */
#define  IMAR			0x00000200	/* Interrupt Mask Action Request */
#define  TXPR0			0x00000400	/* Transmit Poll Request Channel 0 */
#define  TXPR1			0x00000800	/* Transmit Poll Request Channel 1 */
#define  TXPR2			0x00001000	/* Transmit Poll Request Channel 2 */
#define  TXPR3			0x00002000	/* Transmit Poll Request Channel 3 */
#define  CFGIQP			0x00100000	/* Configure IQ Peripheral */
#define  CFGIQCFG		0x00200000	/* Configure IQ Peripheral */
#define  CFGIQSCC0TX	0x01000000	/* Configure IQ SCC0 Transmit */
#define  CFGIQSCC1TX	0x02000000	/* Configure IQ SCC1 Transmit */
#define  CFGIQSCC2TX	0x04000000	/* Configure IQ SCC2 Transmit */
#define  CFGIQSCC3TX	0x08000000	/* Configure IQ SCC3 Transmit */
#define  CFGIQSCC0RX	0x10000000	/* Configure IQ SCC0 Receive */
#define  CFGIQSCC1RX	0x20000000	/* Configure IQ SCC1 Receive */
#define  CFGIQSCC2RX	0x40000000	/* Configure IQ SCC2 Receive */
#define  CFGIQSCC3RX	0x80000000	/* Configure IQ SCC3 Receive */
#define GSTAR			0x0004		/* Global Status Register */
#define  ARACK			0x00000001	/* Action Request Acknowledge Status */
#define  ARF			0x00000002	/* Action Request Failed Status */
#define  IIPGPP			0x00010000	/* Int. Indication Peripheral Queue GPP */
#define  IIPLBI			0x00040000	/* Int. Indication Peripheral Queue LBI */
#define  IIPSSC			0x00080000	/* Int. Indication Peripheral Queue SSC */
#define  IICFG			0x00200000	/* Int. Indication Configuration Queue */
#define  IISCC0TX		0x01000000	/* Int. Indication Queue SCC0 TX */
#define  IISCC1TX		0x02000000	/* Int. Indication Queue SCC1 TX */
#define  IISCC2TX		0x04000000	/* Int. Indication Queue SCC2 TX */
#define  IISCC3TX		0x08000000	/* Int. Indication Queue SCC3 TX */
#define  IISCC0RX		0x10000000	/* Int. Indication Queue SCC0 RX */
#define  IISCC1RX		0x20000000	/* Int. Indication Queue SCC1 RX */
#define  IISCC2RX		0x40000000	/* Int. Indication Queue SCC2 RX */
#define  IISCC3RX		0x80000000	/* Int. Indication Queue SCC3 RX */
#define GMODE			0x0008		/* Global Mode Register */
#define  CMODE			0x00000001	/* DMA Control Mode */
#define  DBE			0x00000002	/* DEMUX Burst Enable */
#define  ENDIAN			0x00000004	/* Endian Selection */
#define  CHN			0x00002000	/* Channel Number Highest Priority */
#define  SPRI			0x00008000	/* Select Priority */
#define  PERCFG			0x00010000	/* Peripheral Block Configuration */
#define  LCD			0x00080000	/* LBI Clock Division */
#define  OSCPD			0x00200000	/* Oscillator Power Down */

/* IRQ Queue Control Registers */
#define IQLENR1		0x000c		/* Interrupt Queue Length Register 1 */
#define  IQSCC0TXLEN	0x00001000	/* Interrupt Queue SCC0 TX Length */
#define  IQSCC1TXLEN	0x00000100	/* Interrupt Queue SCC1 TX Length */
#define  IQSCC2TXLEN	0x00000010	/* Interrupt Queue SCC2 TX Length */
#define  IQSCC3TXLEN	0x00000001	/* Interrupt Queue SCC3 TX Length */
#define  IQSCC0RXLEN	0x10000000	/* Interrupt Queue SCC0 RX Length */
#define  IQSCC1RXLEN	0x01000000	/* Interrupt Queue SCC1 RX Length */
#define  IQSCC2RXLEN	0x00100000	/* Interrupt Queue SCC2 RX Length */
#define  IQSCC3RXLEN	0x00010000	/* Interrupt Queue SCC3 RX Length */
#define IQLENR2			0x0010		/* Interrupt Queue Length Register 2 */
#define  IQPLEN			0x00010000	/* Interrupt Queue Peripheral Length */
#define  IQCFGLEN		0x00100000	/* Interrupt Queue Configuration Length */
#define IQSCC0RXBAR		0x0014		/* Interrupt Queue SCC0 RX Base Address */
#define IQSCC1RXBAR		0x0018		/* Interrupt Queue SCC1 RX Base Address */
#define IQSCC2RXBAR		0x001c		/* Interrupt Queue SCC2 RX Base Address */
#define IQSCC3RXBAR		0x0020		/* Interrupt Queue SCC3 RX Base Address */
#define IQSCC0TXBAR		0x0024		/* Interrupt Queue SCC0 TX Base Address */
#define IQSCC1TXBAR		0x0028		/* Interrupt Queue SCC1 TX Base Address */
#define IQSCC2TXBAR		0x002c		/* Interrupt Queue SCC2 TX Base Address */
#define IQSCC3TXBAR		0x0030		/* Interrupt Queue SCC3 TX Base Address */
#define FIFOCR4			0x0034		/* FIFO Control Register 4 */
#define  TFFTHRES0		0x00000001	/* Transmit FIFO Forward Threshold Chan. 0 */
#define  TFFTHRES1		0x00000100	/* Transmit FIFO Forward Threshold Chan. 1 */
#define  TFFTHRES2		0x00010000	/* Transmit FIFO Forward Threshold Chan. 2 */
#define  TFFTHRES3		0x01000000	/* Transmit FIFO Forward Threshold Chan. 3 */
#define IQCFGBAR		0x003c		/* CFG Interrupt Queue Base Address */
#define IQPBAR			0x0040		/* PER Interrupt Queue Base Address */

/* DMAC control registers */
#define FIFOCR1			0x0044		/* FIFO Control Register 1 */
#define  TFSIZE0		0x08000000	/* Transmit FIFO Size Channel 0 */
#define  TFSIZE1		0x00400000	/* Transmit FIFO Size Channel 1 */
#define  TFSIZE2		0x00020000	/* Transmit FIFO Size Channel 2 */
#define  TFSIZE3		0x00000800	/* Transmit FIFO Size Channel 3 */
#define FIFOCR2			0x0048		/* FIFO Control Register 2 */
#define  M4_0			0x00000080	/* Multiplier 4 FIFO Channel 0 */
#define  M2_0			0x00000040	/* Multiplier 2 FIFO Channel 0 */
#define  M4_1			0x00000020	/* Multiplier 4 FIFO Channel 1 */
#define  M2_1			0x00000010	/* Multiplier 2 FIFO Channel 1 */
#define  M4_2			0x00000008	/* Multiplier 4 FIFO Channel 2 */
#define  M2_2			0x00000004	/* Multiplier 2 FIFO Channel 2 */
#define  M4_3			0x00000002	/* Multiplier 4 FIFO Channel 3 */
#define  M2_3			0x00000001	/* Multiplier 2 FIFO Channel 3 */
#define  TFRTHRES0		0x08000000	/* Transmit FIFO Refill Threshold Chan. 0 */
#define  TFRTHRES1		0x00400000	/* Transmit FIFO Refill Threshold Chan. 1 */
#define  TFRTHRES2		0x00020000	/* Transmit FIFO Refill Threshold Chan. 2 */
#define  TFRTHRES3		0x00000800	/* Transmit FIFO Refill Threshold Chan. 3 */
#define FIFOCR3			0x004c		/* FIFO Control Register 3 */
#define  RFTHRES		0x00000001	/* RX FIFO Threshold */
#define  M2				0x00000080	/* RX FIFO Threshold Multiplier 2 */
#define  M4				0x00000100	/* RX FIFO Threshold Multiplier 4 */
#define CH0CFG			0x0050		/* Channel 0 Configuration */
#define CH0BRDA			0x0054		/* Channel 0 Base Address RX Descriptor */
#define CH0BTDA			0x0058		/* Channel 0 Base Address TX Descriptor */
#define CH1CFG			0x005c		/* Channel 1 Configuration */
#define CH1BRDA			0x0060		/* Channel 1 Base Address RX Descriptor */
#define CH1BTDA			0x0064		/* Channel 1 Base Address TX Descriptor */
#define CH2CFG			0x0068		/* Channel 2 Configuration */
#define CH2BRDA			0x006c		/* Channel 2 Base Address RX Descriptor */
#define CH2BTDA			0x0070		/* Channel 2 Base Address TX Descriptor */
#define CH3CFG			0x0074		/* Channel 3 Configuration */
#define CH3BRDA			0x0078		/* Channel 3 Base Address RX Descriptor */
#define CH3BTDA			0x007c		/* Channel 3 Base Address TX Descriptor */
#define  IDT			0x00080000
#define  IDR			0x00100000
#define  RDT			0x00200000
#define  RDR			0x00400000
#define  MTERR			0x01000000	/* Mask TX ERR-Interrupt */
#define  MRERR			0x02000000	/* Mask RX ERR-Interrupt */
#define  MTFI			0x04000000	/* Mask RX FI-Interrupt */
#define  MRFI			0x08000000	/* Mask TX FI-Interrupt */
#define CH0FRDA			0x0098		/* Channel 0 First RX Descriptor Address */
#define CH1FRDA			0x009c		/* Channel 1 First RX Descriptor Address */
#define CH2FRDA			0x00a0		/* Channel 2 First RX Descriptor Address */
#define CH3FRDA			0x00a4		/* Channel 3 First RX Descriptor Address */
#define CH0FTDA			0x00b0		/* Channel 0 First TX Descriptor Address */
#define CH1FTDA			0x00b4		/* Channel 1 First TX Descriptor Address */
#define CH2FTDA			0x00b8		/* Channel 2 First TX Descriptor Address */
#define CH3FTDA			0x00bc		/* Channel 3 First TX Descriptor Address */
#define CH0LRDA			0x00c8		/* Channel 0 Last RX Descriptor Address */
#define CH1LRDA			0x00cc		/* Channel 1 Last RX Descriptor Address */
#define CH2LRDA			0x00d0		/* Channel 2 Last RX Descriptor Address */
#define CH3LRDA			0x00d4		/* Channel 3 Last RX Descriptor Address */
#define CH0LTDA			0x00e0		/* Channel 0 Last TX Descriptor Address */
#define CH1LTDA			0x00e4		/* Channel 1 Last TX Descriptor Address */
#define CH2LTDA			0x00e8		/* Channel 2 Last TX Descriptor Address */
#define CH3LTDA			0x00ec		/* Channel 3 Last TX Descriptor Address */

/* SCC base addresses */
unsigned long SCCBASE[] = {0x0100, 0x0180, 0x0200, 0x0280};

/* SCC registers */
#define CMDR			0x0000		/* Command Register */
#define  RNR			0x00000001	/* Receiver Not Ready Command */
#define  STI			0x00000100	/* Start Timer Command */
#define  RRES			0x00010000	/* Receiver Reset Command */
#define  RFRD			0x00020000	/* Receive FIFO Read Enable Command */
#define  HUNT			0x00040000	/* Enter Hunt State Command */
#define  XRES			0x01000000	/* Transmitter Reset Command */
#define STAR			0x0004		/* Status Register */
#define  RRNR			0x00010000	/* Received RNR Status */
#define  XRNR			0x00020000	/* Transmit RNR Status */
#define  WFA			0x00040000	/* Wait For Acknowledgement */
#define  DPLA			0x00080000	/* DPLL Asynchronous */
#define  RLI			0x00100000	/* Receive Line Inactive */
#define  CD				0x00200000	/* Carrier Detect Input Signal State */
#define  RFNE			0x00400000	/* Receive FIFO Not Empty */
#define  SYNC			0x00800000	/* Synchronisation Status */
#define  CTS			0x01000000	/* Clear To Send Input Signal State */
#define  FCS			0x08000000	/* Flow Control Status */
#define  CEC			0x10000000	/* Command Executing */
#define  TEC			0x20000000	/* TIC executing */
#define CCR0			0x0008		/* Channel Configuration Register 0 */
#define  CM				0x00000001	/* Clock Mode */
#define  CM0			0x00000001
#define  CM1			0x00000002
#define  CM2			0x00000004
#define  HS				0x00000008	/* High Speed (PEB-20534H-52) */
#define  SSEL			0x00000010	/* Clock Source Select (a/b Select) */
#define  TOE			0x00000020	/* Transmit Clock Out Enable */
#define  BCR			0x00000080	/* Bit Clock Rate */
#define	 PSD			0x00000100	/* DPLL Phase Shift Disable */
#define  VIS			0x00001000	/* Masked Interrupts Visible */
#define  SM				0x00010000	/* Serial Port Mode */
#define  SM0			0x00010000
#define	 SM1			0x00020000
#define  SC				0x00100000	/* Serial Port Configuration */
#define  SC0			0x00100000
#define  SC1			0x00200000
#define  SC2			0x00400000
#define  PU				0x80000000	/* Power Up */
#define CCR1			0x000c		/* Channel Configuration Register 1 */
#define  C32			0x00000001	/* CRC-32 Select */
#define  TOLEN			0x00000001	/* Time Out Length */
#define  CRL			0x00000002	/* CRC Reset Value */
#define  SFLAG			0x00000080	/* Shared Flags Transmission */
#define  TOIE			0x00000080	/* Time Out Indication Enable */
#define  TLP			0x00000100	/* Test Loop */
#define  MCS			0x00000200	/* Modulo Count Select */
#define  PPM0			0x00000400	/* PPP Mode Select 0 */
#define  BISNC			0x00000400	/* Enable BISYNC Mode */
#define  PPM1			0x00000800	/* PPP Mode Select 1 */
#define  SLEN			0x00000800	/* SYNC Character Length */
#define  NRM			0x00001000	/* Normal Response Mode */
#define  ADM			0x00002000	/* Address Mode Select */
#define  MDS0			0x00004000	/* Mode Select (HDLC Protocol Sub-Mode) */
#define  MDS1			0x00008000
#define  CAS			0x00020000	/* Carrier Detect Auto Start */
#define  FCTS			0x00040000	/* Flow Control (Using Signal /CTS) */
#define  FRTS			0x00080000	/* Flow Control (Using Signal /RTS) */
#define  RTS			0x00100000	/* Request To Send Pin Control */
#define  TCLKO			0x00200000	/* Transmit Clock Output */
#define  ICD			0x00400000	/* Invert Carrier Detect Pin Polarity */
#define  ODS			0x02000000	/* Output Driver Select */
#define  DIV			0x04000000	/* Data Inversion */
#define  SOC0			0x10000000	/* Serial Output Control */
#define  SOC1			0x20000000
#define CCR2			0x0010		/* Channel Configuration Register 2 */
#define  XCRC			0x00000001	/* Transmit CRC Checking Mode */
#define  FLON			0x00000001	/* Flow Control Enable */
#define  CRCM			0x00000001	/* CRC Mode Select */
#define  OIN			0x00000002	/* One Insertion */
#define  CAPP			0x00000002	/* CRC Append */
#define  SXIF			0x00000004	/* Selects Transmission Of I-Frames */
#define  CRLBS			0x00000004	/* CRC Reset Value In BISYNC Mode */
#define  ITF			0x00000008	/* Interframe Time Fill */
#define  PRE0			0x00000010	/* Number Of Preamble Repetitions */
#define  PRE1			0x00000020
#define  EPT			0x00000080	/* Enable Preamble Transmission */
#define  PRE			0x00000100	/* Preamble */
#define  RFTH			0x00010000	/* Receive FIFO Threshold */
#define  RFDF			0x00080000	/* Receive FIFO Data Format */
#define  RADD			0x00100000	/* Receive Address Pushed To FIFO */
#define  DPS			0x00100000	/* Data Parity Storage */
#define  RCRC			0x00200000	/* Receive CRC Checking Mode */
#define  PARE			0x00200000	/* Parity Enable */
#define  DRCRC			0x00400000	/* Disable Receive CRC Checking */
#define  PAR0			0x00400000	/* Parity Format */
#define  PAR1			0x00800000
#define  STOP			0x01000000	/* Stop Bit Number */
#define  SLOAD			0x01000000	/* Enable SYNC Character Load */
#define  XBRK			0x02000000	/* Transmit Break */
#define  DXS			0x04000000	/* Disable Storage of XON/XOFF-Characters */
#define  RAC			0x08000000	/* Receiver Active */
#define  CHL0			0x10000000	/* Character Length */
#define  CHL1			0x20000000
#define ACCM			0x0014		/* ASYNC Control Character Map */
#define UDAC			0x0018		/* User Defined ASYNC Character */
#define  AC0			0x00000001	/* User Defined ASYNC Character Control Map */
#define  AC1			0x00000100	/* User Defined ASYNC Character Control Map */
#define  AC2			0x00010000	/* User Defined ASYNC Character Control Map */
#define  AC3			0x01000000	/* User Defined ASYNC Character Control Map */
#define TTSA			0x001c		/* TX Time Slot Assignment Register */
#define  TCC			0x00000001	/* Transmit Channel Capacity */
#define  TEPCM			0x00008000	/* Enable PCM Mask Transmit */
#define  TCS			0x00010000	/* Transmit Clock Shift */
#define  TTSN			0x01000000	/* Transmit Time Slot Number */
#define RTSA			0x0020		/* RX Time Slot Assignment Register */
#define  RCC			0x00000001	/* Receive Channel Capacity */
#define  REPCM			0x00008000	/* Enable PCM Mask Receive */
#define  RCS			0x00010000	/* Receive Clock Shift */
#define  RTSN			0x01000000	/* Receive Time Slot Number */
#define PCMMTX			0x0024		/* PCM Mask for Transmit */
#define PCMMRX			0x0028		/* PCM Mask for Receive */
#define BRR				0x002c		/* Baud Rate Register */
#define  BRN			0x00000001	/* Baud Rate Factor N */
#define  BRM			0x00000100	/* Baud Rate Factor M   k=(N+1)*2^M */
#define TIMR			0x0030		/* Timer Register */
#define  TVALUE			0x00000001	/* Timer Expiration Value */
#define  CNT			0x01000000	/* Counter */
#define  TMD			0x10000000	/* Timer Mode */
#define  SRC			0x80000000	/* Clock Source */
#define XADR			0x0034		/* TX Address Register */
#define  XAD1			0x00000001	/* Transmit Address 1 */
#define  XAD2			0x00000100	/* Transmit Address 2 */
#define RADR			0x0038		/* RX Address Register */
#define  RAL1			0x00010000	/* RX Address 1 Low-Byte */
#define  RAH1			0x01000000	/* RX Address 1 High-Byte */
#define  RAL2			0x00000001	/* RX Address 2 Low-Byte */
#define  RAH2			0x00000100	/* RX Address 2 High-Byte */
#define RAMR			0x003c		/* Receive Address Mask Register */
#define  AMRAL1			0x00000001	/* Receive Mask Address 1 Low-Byte */
#define  AMRAH1			0x00000100	/* Receive Mask Address 1 High-Byte */
#define  AMRAL2			0x00010000	/* Receive Mask Address 2 Low-Byte */
#define  AMRAH2			0x01000000	/* Receive Mask Address 2 High-Byte */
#define RLCR			0x0040		/* Receive Length Check Register */
#define  RL				0x00000001	/* Receive Length Check Limit */
#define  RCE			0x00008000	/* Receive Length Check Enable */
#define XNXFR			0x0044		/* XON/XOFF Register */
#define  MXOFF			0x00000001	/* XOFF Character Mask */
#define  MXON			0x00000100	/* XON Character Mask */
#define  CXOFF			0x00010000	/* XOFF Character */
#define  CXON			0x01000000	/* XON Character */
#define TCR				0x0048		/* Termination Character Register */
#define  TC				0x00000001	/* Termination Character */
#define  TCDE			0x00008000	/* Termination Character Detection Enable */
#define TICR			0x004c		/* Transmit Immediate Character Register */
#define SYNCR			0x0050		/* Synchronization Character Register */
#define  SYNCL			0x00000001	/* Synchronization Character Low */
#define  SYNCH			0x00000100	/* Synchronization Character High */
#define IMR				0x0054		/* Interrupt Mask Register */
#define ISR				0x0058		/* Interrupt Status Register */
#define  FLEX			0x00000001	/* Frame Length Exceeded Interrupt */
#define  RFO			0x00000002	/* RX FIFO Overflow Interrupt */
#define  CDSC			0x00000004	/* Carrier Detect Status Change Interrupt */
#define  PLLA			0x00000008	/* DPLL Asynchronous Interrupt */
#define  PCE			0x00000010	/* Protocol Error Interrupt */
#define  FERR			0x00000010	/* Framing Error Interrupt */
#define  SCD			0x00000010	/* SYN Character Detected Interrupt */
#define  RSC			0x00000020	/* Receive Status Change Interrupt */
#define  PERR			0x00000020	/* Parity Error Interrupt */
#define  RFS			0x00000040	/* Receive Frame Start Interrupt */
#define  TOUT			0x00000040	/* Time Out Interrupt */
#define  RDO			0x00000080	/* Receive Data Overflow Interrupt */
#define  TCD			0x00000080	/* Termination Character Detected Interrupt */
#define  BRKT			0x00000100	/* Break Terminated Interrupt */
#define  BRK			0x00000200	/* Break Interrupt */
#define  XPR			0x00001000	/* Transmit Pool Ready Interrupt */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -