1/* sbni.h: definitions for a Granch SBNI12 driver, version 5.0.0 2 * Written 2001 Denis I.Timofeev (timofeev@granch.ru) 3 * This file is distributed under the GNU GPL 4 */ 5 6#ifndef SBNI_H 7#define SBNI_H 8 9#ifdef SBNI_DEBUG 10#define DP( A ) A 11#else 12#define DP( A ) 13#endif 14 15 16/* We don't have official vendor id yet... */ 17#define SBNI_PCI_VENDOR 0x55 18#define SBNI_PCI_DEVICE 0x9f 19 20#define ISA_MODE 0x00 21#define PCI_MODE 0x01 22 23#define SBNI_IO_EXTENT 4 24 25enum sbni_reg { 26 CSR0 = 0, 27 CSR1 = 1, 28 DAT = 2 29}; 30 31/* CSR0 mapping */ 32enum { 33 BU_EMP = 0x02, 34 RC_CHK = 0x04, 35 CT_ZER = 0x08, 36 TR_REQ = 0x10, 37 TR_RDY = 0x20, 38 EN_INT = 0x40, 39 RC_RDY = 0x80 40}; 41 42 43/* CSR1 mapping */ 44#define PR_RES 0x80 45 46struct sbni_csr1 { 47#ifdef __LITTLE_ENDIAN_BITFIELD 48 u8 rxl : 5; 49 u8 rate : 2; 50 u8 : 1; 51#else 52 u8 : 1; 53 u8 rate : 2; 54 u8 rxl : 5; 55#endif 56}; 57 58/* fields in frame header */ 59#define FRAME_ACK_MASK (unsigned short)0x7000 60#define FRAME_LEN_MASK (unsigned short)0x03FF 61#define FRAME_FIRST (unsigned short)0x8000 62#define FRAME_RETRY (unsigned short)0x0800 63 64#define FRAME_SENT_BAD (unsigned short)0x4000 65#define FRAME_SENT_OK (unsigned short)0x3000 66 67 68/* state flags */ 69enum { 70 FL_WAIT_ACK = 0x01, 71 FL_NEED_RESEND = 0x02, 72 FL_PREV_OK = 0x04, 73 FL_SLOW_MODE = 0x08, 74 FL_SECONDARY = 0x10, 75#ifdef CONFIG_SBNI_MULTILINE 76 FL_SLAVE = 0x20, 77#endif 78 FL_LINE_DOWN = 0x40 79}; 80 81 82enum { 83 DEFAULT_IOBASEADDR = 0x210, 84 DEFAULT_INTERRUPTNUMBER = 5, 85 DEFAULT_RATE = 0, 86 DEFAULT_FRAME_LEN = 1012 87}; 88 89#define DEF_RXL_DELTA -1 90#define DEF_RXL 0xf 91 92#define SBNI_SIG 0x5a 93 94#define SBNI_MIN_LEN 60 /* Shortest Ethernet frame without FCS */ 95#define SBNI_MAX_FRAME 1023 96#define ETHER_MAX_LEN 1518 97 98#define SBNI_TIMEOUT (HZ/10) 99 100#define TR_ERROR_COUNT 32 101#define CHANGE_LEVEL_START_TICKS 4 102 103#define SBNI_MAX_NUM_CARDS 16 104 105/* internal SBNI-specific statistics */ 106struct sbni_in_stats { 107 u32 all_rx_number; 108 u32 bad_rx_number; 109 u32 timeout_number; 110 u32 all_tx_number; 111 u32 resend_tx_number; 112}; 113 114/* SBNI ioctl params */ 115#define SIOCDEVGETINSTATS SIOCDEVPRIVATE 116#define SIOCDEVRESINSTATS SIOCDEVPRIVATE+1 117#define SIOCDEVGHWSTATE SIOCDEVPRIVATE+2 118#define SIOCDEVSHWSTATE SIOCDEVPRIVATE+3 119#define SIOCDEVENSLAVE SIOCDEVPRIVATE+4 120#define SIOCDEVEMANSIPATE SIOCDEVPRIVATE+5 121 122 123/* data packet for SIOCDEVGHWSTATE/SIOCDEVSHWSTATE ioctl requests */ 124struct sbni_flags { 125 u32 rxl : 4; 126 u32 rate : 2; 127 u32 fixed_rxl : 1; 128 u32 slow_mode : 1; 129 u32 mac_addr : 24; 130}; 131 132/* 133 * CRC-32 stuff 134 */ 135#define CRC32(c,crc) (crc32tab[((size_t)(crc) ^ (c)) & 0xff] ^ (((crc) >> 8) & 0x00FFFFFF)) 136 /* CRC generator 0xEDB88320 */ 137 /* CRC remainder 0x2144DF1C */ 138 /* CRC initial value 0x00000000 */ 139#define CRC32_REMAINDER 0x2144DF1C 140#define CRC32_INITIAL 0x00000000 141 142#ifndef __initdata 143#define __initdata 144#endif 145 146#endif 147 148