linux/drivers/net/wan/sbni.h
<<
>>
Prefs
   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