Rev 422 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
422 | giacomo | 1 | /* |
2 | * Linux ARCnet driver - COM20020 chipset support - function declarations |
||
3 | * |
||
4 | * Written 1997 by David Woodhouse. |
||
5 | * Written 1994-1999 by Avery Pennarun. |
||
6 | * Derived from skeleton.c by Donald Becker. |
||
7 | * |
||
8 | * Special thanks to Contemporary Controls, Inc. (www.ccontrols.com) |
||
9 | * for sponsoring the further development of this driver. |
||
10 | * |
||
11 | * ********************** |
||
12 | * |
||
13 | * The original copyright of skeleton.c was as follows: |
||
14 | * |
||
15 | * skeleton.c Written 1993 by Donald Becker. |
||
16 | * Copyright 1993 United States Government as represented by the |
||
17 | * Director, National Security Agency. This software may only be used |
||
18 | * and distributed according to the terms of the GNU General Public License as |
||
19 | * modified by SRC, incorporated herein by reference. |
||
20 | * |
||
21 | * ********************** |
||
22 | * |
||
23 | * For more details, see drivers/net/arcnet.c |
||
24 | * |
||
25 | * ********************** |
||
26 | */ |
||
27 | #ifndef __COM20020_H |
||
28 | #define __COM20020_H |
||
29 | |||
30 | int com20020_check(struct net_device *dev); |
||
31 | int com20020_found(struct net_device *dev, int shared); |
||
32 | void com20020_remove(struct net_device *dev); |
||
33 | |||
34 | /* The number of low I/O ports used by the card. */ |
||
35 | #define ARCNET_TOTAL_SIZE 8 |
||
36 | |||
37 | /* various register addresses */ |
||
38 | #define _INTMASK (ioaddr+0) /* writable */ |
||
39 | #define _STATUS (ioaddr+0) /* readable */ |
||
40 | #define _COMMAND (ioaddr+1) /* standard arcnet commands */ |
||
41 | #define _DIAGSTAT (ioaddr+1) /* diagnostic status register */ |
||
42 | #define _ADDR_HI (ioaddr+2) /* control registers for IO-mapped memory */ |
||
43 | #define _ADDR_LO (ioaddr+3) |
||
44 | #define _MEMDATA (ioaddr+4) /* data port for IO-mapped memory */ |
||
45 | #define _SUBADR (ioaddr+5) /* the extended port _XREG refers to */ |
||
46 | #define _CONFIG (ioaddr+6) /* configuration register */ |
||
47 | #define _XREG (ioaddr+7) /* extra registers (indexed by _CONFIG |
||
48 | or _SUBADR) */ |
||
49 | |||
50 | /* in the ADDR_HI register */ |
||
51 | #define RDDATAflag 0x80 /* next access is a read (not a write) */ |
||
52 | |||
53 | /* in the DIAGSTAT register */ |
||
54 | #define NEWNXTIDflag 0x02 /* ID to which token is passed has changed */ |
||
55 | |||
56 | /* in the CONFIG register */ |
||
57 | #define RESETcfg 0x80 /* put card in reset state */ |
||
58 | #define TXENcfg 0x20 /* enable TX */ |
||
59 | |||
60 | /* in SETUP register */ |
||
61 | #define PROMISCset 0x10 /* enable RCV_ALL */ |
||
62 | #define P1MODE 0x80 /* enable P1-MODE for Backplane */ |
||
63 | #define SLOWARB 0x01 /* enable Slow Arbitration for >=5Mbps */ |
||
64 | |||
65 | /* COM2002x */ |
||
66 | #define SUB_TENTATIVE 0 /* tentative node ID */ |
||
67 | #define SUB_NODE 1 /* node ID */ |
||
68 | #define SUB_SETUP1 2 /* various options */ |
||
69 | #define SUB_TEST 3 /* test/diag register */ |
||
70 | |||
71 | /* COM20022 only */ |
||
72 | #define SUB_SETUP2 4 /* sundry options */ |
||
73 | #define SUB_BUSCTL 5 /* bus control options */ |
||
74 | #define SUB_DMACOUNT 6 /* DMA count options */ |
||
75 | |||
76 | #define SET_SUBADR(x) do { \ |
||
77 | if ((x) < 4) \ |
||
78 | { \ |
||
79 | lp->config = (lp->config & ~0x03) | (x); \ |
||
80 | SETCONF; \ |
||
81 | } \ |
||
82 | else \ |
||
83 | { \ |
||
84 | outb(x, _SUBADR); \ |
||
85 | } \ |
||
86 | } while (0) |
||
87 | |||
88 | #undef ARCRESET |
||
89 | #undef ASTATUS |
||
90 | #undef ACOMMAND |
||
91 | #undef AINTMASK |
||
92 | |||
93 | #define ARCRESET { outb(lp->config | 0x80, _CONFIG); \ |
||
94 | udelay(5); \ |
||
95 | outb(lp->config , _CONFIG); \ |
||
96 | } |
||
97 | #define ARCRESET0 { outb(0x18 | 0x80, _CONFIG); \ |
||
98 | udelay(5); \ |
||
99 | outb(0x18 , _CONFIG); \ |
||
100 | } |
||
101 | |||
102 | #define ASTATUS() inb(_STATUS) |
||
103 | #define ACOMMAND(cmd) outb((cmd),_COMMAND) |
||
104 | #define AINTMASK(msk) outb((msk),_INTMASK) |
||
105 | |||
106 | #define SETCONF outb(lp->config, _CONFIG) |
||
107 | |||
108 | #endif /* __COM20020_H */ |