]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - sys/dev/ie/if_ie507.h
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / sys / dev / ie / if_ie507.h
1 /*
2  * $FreeBSD$
3  * Definitions for 3C507
4  */
5
6 #define IE507_CTRL      6       /* control port */
7 #define IE507_ICTRL     10      /* interrupt control */
8 #define IE507_ATTN      11      /* any write here sends a chan attn */
9 #define IE507_ROM       13      /* rom configuration? */
10 #define IE507_MADDR     14      /* shared memory configuration */
11 #define IE507_IRQ       15      /* IRQ configuration */
12
13 /* Bank 0 -- "*3COM*" signature */
14 #define EL_SIG          0       /* offset of ASCII signature -- "*3COM*" */
15
16 /* Bank 1 -- ethernet address */
17 #define EL_ADDR         0       /* offset of card's ethernet address */
18
19 /* Bank 2 -- card part #, revision, date of manufacture */
20 #define EL_TYPE         0       /* offset of card part # */
21 #define EL_TYPE_HI      0       /* offset of card part # -- high byte */
22 #define EL_TYPE_MID     1       /* offset of card part # -- middle byte */
23 #define EL_TYPE_LOW     2       /* offset of card part # -- low byte */
24 #define EL_REV          3       /* offset of card revision, in BCD */
25 #define EL_DOM_DAY      4       /* offset of date of manf: day in BCD */
26 #define EL_DOM_MY       4       /* offset of date of manf: month, year in BCD */
27
28 /*
29  * Definitions for non-bankswitched registers
30  */
31
32 /* General control register */
33 #define EL_CTRL_BNK0    0x00    /* register bank 0 */
34 #define EL_CTRL_BNK1    0x01    /* register bank 1 */
35 #define EL_CTRL_BNK2    0x02    /* register bank 2 */
36 #define EL_CTRL_IEN     0x04    /* interrupt enable */
37 #define EL_CTRL_INTL    0x08    /* interrupt active latch */
38 #define EL_CTRL_16BIT   0x10    /* bus width; clear = 8-bit, set = 16-bit */
39 #define EL_CTRL_LOOP    0x20    /* loopback mode */
40 #define EL_CTRL_NRST    0x80    /* turn off to reset */
41 #define EL_CTRL_RESET   (EL_CTRL_LOOP)
42 #define EL_CTRL_NORMAL  (EL_CTRL_NRST | EL_CTRL_IEN | EL_CTRL_BNK1)
43
44 /* ROM & media control register */
45 #define EL_MEDIA_MASK   0x80    /* m1 = (EL_MEDIA register) & EL_MEDIA_MASK */
46 #define EL_MEDIA_SHIFT  7       /* media index = m1 >> EL_MEDIA_SHIFT */
47
48 /* shared memory control register */
49 #define EL_MADDR_HIGH   0x20    /* memory mapping above 15Meg */
50 #define EL_MADDR_MASK   0x1c    /* m1 = (EL_MADDR register) & EL_MADDR_MASK */
51 #define EL_MADDR_SHIFT  12      /* m2 = m1 << EL_MADDR_SHIFT  */
52 #define EL_MADDR_BASE   0xc0000 /* maddr = m2 + EL_MADDR_BASE */
53 #define EL_MSIZE_MASK   0x03    /* m1 = (EL_MADDR register) & EL_MSIZE_MASK */
54 #define EL_MSIZE_STEP   16384   /* msize = (m1 + 1) * EL_MSIZE_STEP */
55
56 /* interrupt control register */
57 #define EL_IRQ_MASK     0x0f    /* irq = (EL_IRQ register) & EL_IRQ_MASK */
58
59 /*
60  * Definitions for Bank 0 registers
61  */
62 #define EL_SIG_LEN      6       /* signature length */
63 #define EL_SIGNATURE    "*3COM*"
64
65 /*
66  * Definitions for Bank 1 registers
67  */
68 #define EL_ADDR_LEN     6       /* ether address length */
69
70 /*
71  * Definitions for Bank 2 registers
72  */
73 #define EL_TYPE_LEN     3       /* card part # length */
74
75 /*
76  * General card-specific macros and definitions
77  */
78 #define EL_IOBASE_LOW   0x200
79 #define EL_IOBASE_HIGH  0x3e0
80 #define EL_IOSIZE       16
81
82 /*
83  * XXX: It seems that the 3C507-TP is differentiated from AUI/BNC 3C507
84  * by part numbers, but I'm not sure how accurate this test is, seeing
85  * as it's based on the sample of 3 cards I own (2AUI/BNC, 1 TP).
86  */
87 #define EL_IS_TP(type)  ((type)[EL_TYPE_MID] > 0x70)
88
89 #define EL_CARD_BNC     0       /* regular AUI/BNC 3C507 */
90 #define EL_CARD_TP      1       /* 3C507-TP -- no AUI/BNC */