📄 pktdrv.h
字号:
/*
* Copyright (c) 2005, Dennis Kuschel.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. The name of the author may not be used to endorse or promote
* products derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
#ifndef _PKTDRV_H
#define _PKTDRV_H
#ifndef PEXTERN
#define PEXTERN
#endif
/* pseudo hardware register definitions */
#define PK_REG_ISTATUS int_status /* int status register (self clearing) */
#define PK_REG_IMASK int_mask /* interrupt enable register */
#define PK_REG_FSTATUS fifo_status /* fifo status register */
#define PK_REG_NOTIFY notify_flags /* driver->chip-notification for RX/TX */
#define PK_REG_TXBUF txbuf_adr /* contains address of next tx buffer */
#define PK_REG_RXBUF rxbuf_adr /* contains address of next rx buffer */
#define PK_REG_PSIZE packetsize /* r:rx / w:tx -size of the next packet*/
#define PK_REG_MACLO mac_lo /* low part of mac address (32 bit) */
#define PK_REG_MACHI mac_hi /* high part of mac address (16 bit) */
#define PK_ISTATUS_TX 0x01 /* tx interrupt occurred */
#define PK_ISTATUS_RX 0x02 /* rx interrupt occurred */
#define PK_IMASK_TX 0x01 /* mask bit: enable tx interrupt */
#define PK_IMASK_RX 0x02 /* mask bit: enable rx interrupt */
#define PK_FSTATUS_TXBFREE 0x01 /* a transmit buffer is free again */
#define PK_FSTATUS_RECEIVED 0x02 /* a packet was received */
#define PK_NFLAG_TRANSMITNOW 0x01 /* initiate transmission of packets */
#define PK_NFLAG_RECEIVENEXT 0x02 /* tell chip to receive more data */
/* macros to read/write the hardware registers */
#define PK_WRITEREG(reg, v) do{ pkregister.reg = v; _pk_notify(&pkregister.reg,v); }while(0)
#define PK_READREG(reg) _pk_readreg(&(pkregister.reg))
/* exported functions */
PEXTERN int pktdrv_start(int adapter_num);
PEXTERN void pktdrv_stop(void);
/*---- the following stuff is private to pkdrv.c ----*/
#define PK_TXBUFFER 16
#define PK_RXBUFFER 16
#define PK_TBUFSIZE 1536
typedef struct {
unsigned long volatile int_status;
unsigned long volatile int_mask;
unsigned long volatile fifo_status;
unsigned long volatile notify_flags;
unsigned long volatile packetsize;
unsigned long volatile txbuf_adr;
unsigned long volatile rxbuf_adr;
unsigned long volatile txbuf_in;
unsigned long volatile txbuf_out;
unsigned long volatile rxbuf_in;
unsigned long volatile rxbuf_out;
unsigned long volatile mac_lo;
unsigned long volatile mac_hi;
unsigned long volatile txpsize[PK_TXBUFFER];
unsigned long volatile rxpsize[PK_RXBUFFER];
unsigned char txbuffer[PK_TXBUFFER][PK_TBUFSIZE];
unsigned char rxbuffer[PK_RXBUFFER][PK_TBUFSIZE];
} PK_REGISTER_t;
PEXTERN PK_REGISTER_t pkregister;
PEXTERN void _pk_notify(volatile unsigned long* reg, unsigned long v);
PEXTERN unsigned long _pk_readreg(volatile unsigned long* reg);
#endif /* _PKTDRV_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -