OpenCores
URL https://opencores.org/ocsvn/test_project/test_project/trunk

Subversion Repositories test_project

[/] [test_project/] [trunk/] [linux_sd_driver/] [drivers/] [net/] [wan/] [sbni.h] - Blame information for rev 62

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 62 marcus.erl
/* 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
 
25
enum sbni_reg {
26
        CSR0 = 0,
27
        CSR1 = 1,
28
        DAT  = 2
29
};
30
 
31
/* CSR0 mapping */
32
enum {
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
 
46
struct 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 */
69
enum {
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
 
82
enum {
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 */
106
struct 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 */
124
struct 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
 

powered by: WebSVN 2.1.0

© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.