This source file includes following definitions.
- SROMbyReadEmbedded
- SROMvReadAllContents
- SROMvReadEtherAddress
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 #include "upc.h"
33 #include "tmacro.h"
34 #include "mac.h"
35 #include "srom.h"
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62 unsigned char SROMbyReadEmbedded(void __iomem *iobase,
63 unsigned char byContntOffset)
64 {
65 unsigned short wDelay, wNoACK;
66 unsigned char byWait;
67 unsigned char byData;
68 unsigned char byOrg;
69
70 byData = 0xFF;
71 VNSvInPortB(iobase + MAC_REG_I2MCFG, &byOrg);
72
73 VNSvOutPortB(iobase + MAC_REG_I2MCFG, (byOrg & (~I2MCFG_NORETRY)));
74 for (wNoACK = 0; wNoACK < W_MAX_I2CRETRY; wNoACK++) {
75 VNSvOutPortB(iobase + MAC_REG_I2MTGID, EEP_I2C_DEV_ID);
76 VNSvOutPortB(iobase + MAC_REG_I2MTGAD, byContntOffset);
77
78
79 VNSvOutPortB(iobase + MAC_REG_I2MCSR, I2MCSR_EEMR);
80
81 for (wDelay = 0; wDelay < W_MAX_TIMEOUT; wDelay++) {
82 VNSvInPortB(iobase + MAC_REG_I2MCSR, &byWait);
83 if (byWait & (I2MCSR_DONE | I2MCSR_NACK))
84 break;
85 PCAvDelayByIO(CB_DELAY_LOOP_WAIT);
86 }
87 if ((wDelay < W_MAX_TIMEOUT) &&
88 (!(byWait & I2MCSR_NACK))) {
89 break;
90 }
91 }
92 VNSvInPortB(iobase + MAC_REG_I2MDIPT, &byData);
93 VNSvOutPortB(iobase + MAC_REG_I2MCFG, byOrg);
94 return byData;
95 }
96
97
98
99
100
101
102
103
104
105
106
107
108
109 void SROMvReadAllContents(void __iomem *iobase, unsigned char *pbyEepromRegs)
110 {
111 int ii;
112
113
114 for (ii = 0; ii < EEP_MAX_CONTEXT_SIZE; ii++) {
115 *pbyEepromRegs = SROMbyReadEmbedded(iobase,
116 (unsigned char)ii);
117 pbyEepromRegs++;
118 }
119 }
120
121
122
123
124
125
126
127
128
129
130
131
132
133 void SROMvReadEtherAddress(void __iomem *iobase,
134 unsigned char *pbyEtherAddress)
135 {
136 unsigned char ii;
137
138
139 for (ii = 0; ii < ETH_ALEN; ii++) {
140 *pbyEtherAddress = SROMbyReadEmbedded(iobase, ii);
141 pbyEtherAddress++;
142 }
143 }