Commit cfc3a44c3c32abe48898398d9a92e8524c976803
Committed by
David S. Miller
1 parent
077f849de4
Exists in
master
and in
4 other branches
starfire: use request_firmware()
Firmware blob is big endian Signed-off-by: Jaswinder Singh Rajput <jaswinderrajput@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Showing 7 changed files with 175 additions and 383 deletions Side-by-side Diff
drivers/net/starfire.c
... | ... | @@ -42,11 +42,11 @@ |
42 | 42 | #include <linux/mii.h> |
43 | 43 | #include <linux/if_vlan.h> |
44 | 44 | #include <linux/mm.h> |
45 | +#include <linux/firmware.h> | |
45 | 46 | #include <asm/processor.h> /* Processor type for cache alignment. */ |
46 | 47 | #include <asm/uaccess.h> |
47 | 48 | #include <asm/io.h> |
48 | 49 | |
49 | -#include "starfire_firmware.h" | |
50 | 50 | /* |
51 | 51 | * The current frame processor firmware fails to checksum a fragment |
52 | 52 | * of length 1. If and when this is fixed, the #define below can be removed. |
... | ... | @@ -173,6 +173,10 @@ |
173 | 173 | #define skb_first_frag_len(skb) skb_headlen(skb) |
174 | 174 | #define skb_num_frags(skb) (skb_shinfo(skb)->nr_frags + 1) |
175 | 175 | |
176 | +/* Firmware names */ | |
177 | +#define FIRMWARE_RX "adaptec/starfire_rx.bin" | |
178 | +#define FIRMWARE_TX "adaptec/starfire_tx.bin" | |
179 | + | |
176 | 180 | /* These identify the driver base version and may not be removed. */ |
177 | 181 | static char version[] = |
178 | 182 | KERN_INFO "starfire.c:v1.03 7/26/2000 Written by Donald Becker <becker@scyld.com>\n" |
... | ... | @@ -182,6 +186,8 @@ |
182 | 186 | MODULE_DESCRIPTION("Adaptec Starfire Ethernet driver"); |
183 | 187 | MODULE_LICENSE("GPL"); |
184 | 188 | MODULE_VERSION(DRV_VERSION); |
189 | +MODULE_FIRMWARE(FIRMWARE_RX); | |
190 | +MODULE_FIRMWARE(FIRMWARE_TX); | |
185 | 191 | |
186 | 192 | module_param(max_interrupt_work, int, 0); |
187 | 193 | module_param(mtu, int, 0); |
188 | 194 | |
... | ... | @@ -902,9 +908,12 @@ |
902 | 908 | |
903 | 909 | static int netdev_open(struct net_device *dev) |
904 | 910 | { |
911 | + const struct firmware *fw_rx, *fw_tx; | |
912 | + const __be32 *fw_rx_data, *fw_tx_data; | |
905 | 913 | struct netdev_private *np = netdev_priv(dev); |
906 | 914 | void __iomem *ioaddr = np->base; |
907 | 915 | int i, retval; |
916 | + size_t tx_size, rx_size; | |
908 | 917 | size_t tx_done_q_size, rx_done_q_size, tx_ring_size, rx_ring_size; |
909 | 918 | |
910 | 919 | /* Do we ever need to reset the chip??? */ |
911 | 920 | |
... | ... | @@ -1040,11 +1049,40 @@ |
1040 | 1049 | writel(ETH_P_8021Q, ioaddr + VlanType); |
1041 | 1050 | #endif /* VLAN_SUPPORT */ |
1042 | 1051 | |
1052 | + retval = request_firmware(&fw_rx, FIRMWARE_RX, &np->pci_dev->dev); | |
1053 | + if (retval) { | |
1054 | + printk(KERN_ERR "starfire: Failed to load firmware \"%s\"\n", | |
1055 | + FIRMWARE_RX); | |
1056 | + return retval; | |
1057 | + } | |
1058 | + if (fw_rx->size % 4) { | |
1059 | + printk(KERN_ERR "starfire: bogus length %zu in \"%s\"\n", | |
1060 | + fw_rx->size, FIRMWARE_RX); | |
1061 | + retval = -EINVAL; | |
1062 | + goto out_rx; | |
1063 | + } | |
1064 | + retval = request_firmware(&fw_tx, FIRMWARE_TX, &np->pci_dev->dev); | |
1065 | + if (retval) { | |
1066 | + printk(KERN_ERR "starfire: Failed to load firmware \"%s\"\n", | |
1067 | + FIRMWARE_TX); | |
1068 | + goto out_rx; | |
1069 | + } | |
1070 | + if (fw_tx->size % 4) { | |
1071 | + printk(KERN_ERR "starfire: bogus length %zu in \"%s\"\n", | |
1072 | + fw_tx->size, FIRMWARE_TX); | |
1073 | + retval = -EINVAL; | |
1074 | + goto out_tx; | |
1075 | + } | |
1076 | + fw_rx_data = (const __be32 *)&fw_rx->data[0]; | |
1077 | + fw_tx_data = (const __be32 *)&fw_tx->data[0]; | |
1078 | + rx_size = fw_rx->size / 4; | |
1079 | + tx_size = fw_tx->size / 4; | |
1080 | + | |
1043 | 1081 | /* Load Rx/Tx firmware into the frame processors */ |
1044 | - for (i = 0; i < FIRMWARE_RX_SIZE * 2; i++) | |
1045 | - writel(firmware_rx[i], ioaddr + RxGfpMem + i * 4); | |
1046 | - for (i = 0; i < FIRMWARE_TX_SIZE * 2; i++) | |
1047 | - writel(firmware_tx[i], ioaddr + TxGfpMem + i * 4); | |
1082 | + for (i = 0; i < rx_size; i++) | |
1083 | + writel(be32_to_cpup(&fw_rx_data[i]), ioaddr + RxGfpMem + i * 4); | |
1084 | + for (i = 0; i < tx_size; i++) | |
1085 | + writel(be32_to_cpup(&fw_tx_data[i]), ioaddr + TxGfpMem + i * 4); | |
1048 | 1086 | if (enable_hw_cksum) |
1049 | 1087 | /* Enable the Rx and Tx units, and the Rx/Tx frame processors. */ |
1050 | 1088 | writel(TxEnable|TxGFPEnable|RxEnable|RxGFPEnable, ioaddr + GenCtrl); |
... | ... | @@ -1056,7 +1094,11 @@ |
1056 | 1094 | printk(KERN_DEBUG "%s: Done netdev_open().\n", |
1057 | 1095 | dev->name); |
1058 | 1096 | |
1059 | - return 0; | |
1097 | +out_tx: | |
1098 | + release_firmware(fw_tx); | |
1099 | +out_rx: | |
1100 | + release_firmware(fw_rx); | |
1101 | + return retval; | |
1060 | 1102 | } |
1061 | 1103 | |
1062 | 1104 |
drivers/net/starfire_firmware.h
1 | -/* | |
2 | - * Copyright 2003 Adaptec, Inc. | |
3 | - * | |
4 | - * Please read the following license before using the Adaptec Software | |
5 | - * ("Program"). If you do not agree to the license terms, do not use the | |
6 | - * Program: | |
7 | - * | |
8 | - * You agree to be bound by version 2 of the General Public License ("GPL") | |
9 | - * dated June 1991, which can be found at http://www.fsf.org/licenses/gpl.html. | |
10 | - * If the link is broken, write to Free Software Foundation, 59 Temple Place, | |
11 | - * Boston, Massachusetts 02111-1307. | |
12 | - * | |
13 | - * BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE IT IS LICENSED "AS IS" AND | |
14 | - * THERE IS NO WARRANTY FOR THE PROGRAM, INCLUDING BUT NOT LIMITED TO THE | |
15 | - * IMPLIED WARRANTIES OF MERCHANTIBILITY OR FITNESS FOR A PARTICULAR PURPOSE | |
16 | - * (TO THE EXTENT PERMITTED BY APPLICABLE LAW). USE OF THE PROGRAM IS AT YOUR | |
17 | - * OWN RISK. IN NO EVENT WILL ADAPTEC OR ITS LICENSORS BE LIABLE TO YOU FOR | |
18 | - * DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES | |
19 | - * ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM. | |
20 | - * | |
21 | - */ | |
22 | - | |
23 | -static const u32 firmware_rx[] = { | |
24 | - 0x010003dc, 0x00000000, | |
25 | - 0x04000421, 0x00000086, | |
26 | - 0x80000015, 0x0000180e, | |
27 | - 0x81000015, 0x00006664, | |
28 | - 0x1a0040ab, 0x00000b06, | |
29 | - 0x14200011, 0x00000000, | |
30 | - 0x14204022, 0x0000aaaa, | |
31 | - 0x14204022, 0x00000300, | |
32 | - 0x14204022, 0x00000000, | |
33 | - 0x1a0040ab, 0x00000b14, | |
34 | - 0x14200011, 0x00000000, | |
35 | - 0x83000015, 0x00000002, | |
36 | - 0x04000021, 0x00000000, | |
37 | - 0x00000010, 0x00000000, | |
38 | - 0x04000421, 0x00000087, | |
39 | - 0x00000010, 0x00000000, | |
40 | - 0x00000010, 0x00000000, | |
41 | - 0x00008015, 0x00000000, | |
42 | - 0x0000003e, 0x00000000, | |
43 | - 0x00000010, 0x00000000, | |
44 | - 0x82000015, 0x00004000, | |
45 | - 0x009e8050, 0x00000000, | |
46 | - 0x03008015, 0x00000000, | |
47 | - 0x86008015, 0x00000000, | |
48 | - 0x82000015, 0x00008000, | |
49 | - 0x0100001c, 0x00000000, | |
50 | - 0x000050a0, 0x0000010c, | |
51 | - 0x4e20d011, 0x00006008, | |
52 | - 0x1420d012, 0x00004008, | |
53 | - 0x0000f090, 0x00007000, | |
54 | - 0x0000c8b0, 0x00003000, | |
55 | - 0x00004040, 0x00000000, | |
56 | - 0x00108015, 0x00000000, | |
57 | - 0x00a2c150, 0x00004000, | |
58 | - 0x00a400b0, 0x00000014, | |
59 | - 0x00000020, 0x00000000, | |
60 | - 0x2500400d, 0x00002525, | |
61 | - 0x00047220, 0x00003100, | |
62 | - 0x00934070, 0x00000000, | |
63 | - 0x00000020, 0x00000000, | |
64 | - 0x00924460, 0x00000184, | |
65 | - 0x2b20c011, 0x00000000, | |
66 | - 0x0000c420, 0x00000540, | |
67 | - 0x36014018, 0x0000422d, | |
68 | - 0x14200011, 0x00000000, | |
69 | - 0x00924460, 0x00000183, | |
70 | - 0x3200001f, 0x00000034, | |
71 | - 0x02ac0015, 0x00000002, | |
72 | - 0x00a60110, 0x00000008, | |
73 | - 0x42200011, 0x00000000, | |
74 | - 0x00924060, 0x00000103, | |
75 | - 0x0000001e, 0x00000000, | |
76 | - 0x00000020, 0x00000100, | |
77 | - 0x0000001e, 0x00000000, | |
78 | - 0x00924460, 0x00000086, | |
79 | - 0x00004080, 0x00000000, | |
80 | - 0x0092c070, 0x00000000, | |
81 | - 0x00924060, 0x00000100, | |
82 | - 0x0000c890, 0x00005000, | |
83 | - 0x00a6c110, 0x00000000, | |
84 | - 0x00b0c090, 0x00000012, | |
85 | - 0x021c0015, 0x00000000, | |
86 | - 0x3200001f, 0x00000034, | |
87 | - 0x00924460, 0x00000510, | |
88 | - 0x44210011, 0x00000000, | |
89 | - 0x42000011, 0x00000000, | |
90 | - 0x83000015, 0x00000040, | |
91 | - 0x00924460, 0x00000508, | |
92 | - 0x45014018, 0x00004545, | |
93 | - 0x00808050, 0x00000000, | |
94 | - 0x62208012, 0x00000000, | |
95 | - 0x82000015, 0x00000800, | |
96 | - 0x15200011, 0x00000000, | |
97 | - 0x00000010, 0x00000000, | |
98 | - 0x00000010, 0x00000000, | |
99 | - 0x00000010, 0x00000000, | |
100 | - 0x00000010, 0x00000000, | |
101 | - 0x00000010, 0x00000000, | |
102 | - 0x80000015, 0x0000eea4, | |
103 | - 0x81000015, 0x0000005f, | |
104 | - 0x00000060, 0x00000000, | |
105 | - 0x00004120, 0x00000000, | |
106 | - 0x00004a00, 0x00004000, | |
107 | - 0x00924460, 0x00000190, | |
108 | - 0x5601401a, 0x00005956, | |
109 | - 0x14000011, 0x00000000, | |
110 | - 0x00934050, 0x00000018, | |
111 | - 0x00930050, 0x00000018, | |
112 | - 0x3601403a, 0x0000002d, | |
113 | - 0x000643a9, 0x00000000, | |
114 | - 0x0000c420, 0x00000140, | |
115 | - 0x5601401a, 0x00005956, | |
116 | - 0x14000011, 0x00000000, | |
117 | - 0x00000010, 0x00000000, | |
118 | - 0x00000010, 0x00000000, | |
119 | - 0x000642a9, 0x00000000, | |
120 | - 0x00024420, 0x00000183, | |
121 | - 0x5601401a, 0x00005956, | |
122 | - 0x82000015, 0x00002000, | |
123 | - 0x15200011, 0x00000000, | |
124 | - 0x82000015, 0x00000010, | |
125 | - 0x15200011, 0x00000000, | |
126 | - 0x82000015, 0x00000010, | |
127 | - 0x15200011, 0x00000000, | |
128 | -}; /* 104 Rx instructions */ | |
129 | -#define FIRMWARE_RX_SIZE 104 | |
130 | - | |
131 | -static const u32 firmware_tx[] = { | |
132 | - 0x010003dc, 0x00000000, | |
133 | - 0x04000421, 0x00000086, | |
134 | - 0x80000015, 0x0000180e, | |
135 | - 0x81000015, 0x00006664, | |
136 | - 0x1a0040ab, 0x00000b06, | |
137 | - 0x14200011, 0x00000000, | |
138 | - 0x14204022, 0x0000aaaa, | |
139 | - 0x14204022, 0x00000300, | |
140 | - 0x14204022, 0x00000000, | |
141 | - 0x1a0040ab, 0x00000b14, | |
142 | - 0x14200011, 0x00000000, | |
143 | - 0x83000015, 0x00000002, | |
144 | - 0x04000021, 0x00000000, | |
145 | - 0x00000010, 0x00000000, | |
146 | - 0x04000421, 0x00000087, | |
147 | - 0x00000010, 0x00000000, | |
148 | - 0x00000010, 0x00000000, | |
149 | - 0x00008015, 0x00000000, | |
150 | - 0x0000003e, 0x00000000, | |
151 | - 0x00000010, 0x00000000, | |
152 | - 0x82000015, 0x00004000, | |
153 | - 0x009e8050, 0x00000000, | |
154 | - 0x03008015, 0x00000000, | |
155 | - 0x86008015, 0x00000000, | |
156 | - 0x82000015, 0x00008000, | |
157 | - 0x0100001c, 0x00000000, | |
158 | - 0x000050a0, 0x0000010c, | |
159 | - 0x4e20d011, 0x00006008, | |
160 | - 0x1420d012, 0x00004008, | |
161 | - 0x0000f090, 0x00007000, | |
162 | - 0x0000c8b0, 0x00003000, | |
163 | - 0x00004040, 0x00000000, | |
164 | - 0x00108015, 0x00000000, | |
165 | - 0x00a2c150, 0x00004000, | |
166 | - 0x00a400b0, 0x00000014, | |
167 | - 0x00000020, 0x00000000, | |
168 | - 0x2500400d, 0x00002525, | |
169 | - 0x00047220, 0x00003100, | |
170 | - 0x00934070, 0x00000000, | |
171 | - 0x00000020, 0x00000000, | |
172 | - 0x00924460, 0x00000184, | |
173 | - 0x2b20c011, 0x00000000, | |
174 | - 0x0000c420, 0x00000540, | |
175 | - 0x36014018, 0x0000422d, | |
176 | - 0x14200011, 0x00000000, | |
177 | - 0x00924460, 0x00000183, | |
178 | - 0x3200001f, 0x00000034, | |
179 | - 0x02ac0015, 0x00000002, | |
180 | - 0x00a60110, 0x00000008, | |
181 | - 0x42200011, 0x00000000, | |
182 | - 0x00924060, 0x00000103, | |
183 | - 0x0000001e, 0x00000000, | |
184 | - 0x00000020, 0x00000100, | |
185 | - 0x0000001e, 0x00000000, | |
186 | - 0x00924460, 0x00000086, | |
187 | - 0x00004080, 0x00000000, | |
188 | - 0x0092c070, 0x00000000, | |
189 | - 0x00924060, 0x00000100, | |
190 | - 0x0000c890, 0x00005000, | |
191 | - 0x00a6c110, 0x00000000, | |
192 | - 0x00b0c090, 0x00000012, | |
193 | - 0x021c0015, 0x00000000, | |
194 | - 0x3200001f, 0x00000034, | |
195 | - 0x00924460, 0x00000510, | |
196 | - 0x44210011, 0x00000000, | |
197 | - 0x42000011, 0x00000000, | |
198 | - 0x83000015, 0x00000040, | |
199 | - 0x00924460, 0x00000508, | |
200 | - 0x45014018, 0x00004545, | |
201 | - 0x00808050, 0x00000000, | |
202 | - 0x62208012, 0x00000000, | |
203 | - 0x82000015, 0x00000800, | |
204 | - 0x15200011, 0x00000000, | |
205 | - 0x00000010, 0x00000000, | |
206 | - 0x00000010, 0x00000000, | |
207 | - 0x00000010, 0x00000000, | |
208 | - 0x00000010, 0x00000000, | |
209 | - 0x00000010, 0x00000000, | |
210 | - 0x80000015, 0x0000eea4, | |
211 | - 0x81000015, 0x0000005f, | |
212 | - 0x00000060, 0x00000000, | |
213 | - 0x00004120, 0x00000000, | |
214 | - 0x00004a00, 0x00004000, | |
215 | - 0x00924460, 0x00000190, | |
216 | - 0x5601401a, 0x00005956, | |
217 | - 0x14000011, 0x00000000, | |
218 | - 0x00934050, 0x00000018, | |
219 | - 0x00930050, 0x00000018, | |
220 | - 0x3601403a, 0x0000002d, | |
221 | - 0x000643a9, 0x00000000, | |
222 | - 0x0000c420, 0x00000140, | |
223 | - 0x5601401a, 0x00005956, | |
224 | - 0x14000011, 0x00000000, | |
225 | - 0x00000010, 0x00000000, | |
226 | - 0x00000010, 0x00000000, | |
227 | - 0x000642a9, 0x00000000, | |
228 | - 0x00024420, 0x00000183, | |
229 | - 0x5601401a, 0x00005956, | |
230 | - 0x82000015, 0x00002000, | |
231 | - 0x15200011, 0x00000000, | |
232 | - 0x82000015, 0x00000010, | |
233 | - 0x15200011, 0x00000000, | |
234 | - 0x82000015, 0x00000010, | |
235 | - 0x15200011, 0x00000000, | |
236 | -}; /* 104 Tx instructions */ | |
237 | -#define FIRMWARE_TX_SIZE 104 | |
238 | -#if 0 | |
239 | -static const u32 firmware_wol[] = { | |
240 | - 0x010003dc, 0x00000000, | |
241 | - 0x19000421, 0x00000087, | |
242 | - 0x80000015, 0x00001a1a, | |
243 | - 0x81000015, 0x00001a1a, | |
244 | - 0x1a0040ab, 0x00000b06, | |
245 | - 0x15200011, 0x00000000, | |
246 | - 0x15204022, 0x0000aaaa, | |
247 | - 0x15204022, 0x00000300, | |
248 | - 0x15204022, 0x00000000, | |
249 | - 0x1a0040ab, 0x00000b15, | |
250 | - 0x15200011, 0x00000000, | |
251 | - 0x83000015, 0x00000002, | |
252 | - 0x04000021, 0x00000000, | |
253 | - 0x00000010, 0x00000000, | |
254 | - 0x04000421, 0x00000087, | |
255 | - 0x00000010, 0x00000000, | |
256 | - 0x00000010, 0x00000000, | |
257 | - 0x00008015, 0x00000000, | |
258 | - 0x0000003e, 0x00000000, | |
259 | - 0x00000010, 0x00000000, | |
260 | - 0x00000010, 0x00000000, | |
261 | - 0x82000015, 0x00004000, | |
262 | - 0x82000015, 0x00008000, | |
263 | - 0x0000000c, 0x00000000, | |
264 | - 0x00000010, 0x00000000, | |
265 | - 0x00004080, 0x00000100, | |
266 | - 0x1f20c011, 0x00001122, | |
267 | - 0x2720f011, 0x00003011, | |
268 | - 0x19200071, 0x00000000, | |
269 | - 0x1a200051, 0x00000000, | |
270 | - 0x00000010, 0x00000000, | |
271 | - 0x00000010, 0x00000000, | |
272 | - 0x1d2040a4, 0x00003344, | |
273 | - 0x1d2040a2, 0x00005566, | |
274 | - 0x000040a0, 0x00000100, | |
275 | - 0x00108050, 0x00000001, | |
276 | - 0x1a208012, 0x00000006, | |
277 | - 0x82000015, 0x00008080, | |
278 | - 0x010003dc, 0x00000000, | |
279 | - 0x1d2040a4, 0x00002233, | |
280 | - 0x1d2040a4, 0x00004455, | |
281 | - 0x2d208011, 0x00000005, | |
282 | - 0x1d2040a4, 0x00006611, | |
283 | - 0x00108050, 0x00000001, | |
284 | - 0x27200011, 0x00000000, | |
285 | - 0x1d2050a4, 0x00006600, | |
286 | - 0x82000015, 0x00008080, | |
287 | - 0x010003dc, 0x00000000, | |
288 | - 0x00000050, 0x00000000, | |
289 | - 0x1b200031, 0x00000000, | |
290 | - 0x0000001e, 0x00000000, | |
291 | - 0x0000001e, 0x00000000, | |
292 | - 0x0000001e, 0x00000000, | |
293 | - 0x0000001e, 0x00000000, | |
294 | - 0x00924460, 0x00000086, | |
295 | - 0x00004080, 0x00000000, | |
296 | - 0x0092c070, 0x00000000, | |
297 | - 0x00924060, 0x00000100, | |
298 | - 0x0000c890, 0x00005000, | |
299 | - 0x00a6c110, 0x00000000, | |
300 | - 0x00b0c090, 0x00000012, | |
301 | - 0x021c0015, 0x00000000, | |
302 | - 0x3200001f, 0x00000034, | |
303 | - 0x00924460, 0x00000510, | |
304 | - 0x44210011, 0x00000000, | |
305 | - 0x42000011, 0x00000000, | |
306 | - 0x83000015, 0x00000040, | |
307 | - 0x00924460, 0x00000508, | |
308 | - 0x476a0012, 0x00000100, | |
309 | - 0x83000015, 0x00000008, | |
310 | - 0x16200011, 0x00000000, | |
311 | - 0x001e8050, 0x00000000, | |
312 | - 0x001e8050, 0x00000000, | |
313 | - 0x00808050, 0x00000000, | |
314 | - 0x03008015, 0x00000000, | |
315 | - 0x62208012, 0x00000000, | |
316 | - 0x82000015, 0x00000800, | |
317 | - 0x16200011, 0x00000000, | |
318 | - 0x80000015, 0x0000eea4, | |
319 | - 0x81000015, 0x0000005f, | |
320 | - 0x00000020, 0x00000000, | |
321 | - 0x00004120, 0x00000000, | |
322 | - 0x00004a00, 0x00004000, | |
323 | - 0x00924460, 0x00000190, | |
324 | - 0x5c01401a, 0x0000595c, | |
325 | - 0x15000011, 0x00000000, | |
326 | - 0x00934050, 0x00000018, | |
327 | - 0x00930050, 0x00000018, | |
328 | - 0x3601403a, 0x0000002d, | |
329 | - 0x00064029, 0x00000000, | |
330 | - 0x0000c420, 0x00000140, | |
331 | - 0x5c01401a, 0x0000595c, | |
332 | - 0x15000011, 0x00000000, | |
333 | - 0x00000010, 0x00000000, | |
334 | - 0x00000010, 0x00000000, | |
335 | - 0x00064029, 0x00000000, | |
336 | - 0x00024420, 0x00000183, | |
337 | - 0x5c01401a, 0x0000595c, | |
338 | - 0x82000015, 0x00002000, | |
339 | - 0x16200011, 0x00000000, | |
340 | - 0x82000015, 0x00000010, | |
341 | - 0x16200011, 0x00000000, | |
342 | - 0x82000015, 0x00000010, | |
343 | - 0x16200011, 0x00000000, | |
344 | -}; /* 104 WoL instructions */ | |
345 | -#define FIRMWARE_WOL_SIZE 104 | |
346 | -#endif |
drivers/net/starfire_firmware.pl
1 | -#!/usr/bin/perl | |
2 | - | |
3 | -# This script can be used to generate a new starfire_firmware.h | |
4 | -# from GFP_RX.DAT and GFP_TX.DAT, files included with the DDK | |
5 | -# and also with the Novell drivers. | |
6 | - | |
7 | -open FW, "GFP_RX.DAT" || die; | |
8 | -open FWH, ">starfire_firmware.h" || die; | |
9 | - | |
10 | -printf(FWH "static u32 firmware_rx[] = {\n"); | |
11 | -$counter = 0; | |
12 | -while ($foo = <FW>) { | |
13 | - chomp; | |
14 | - printf(FWH " 0x%s, 0x0000%s,\n", substr($foo, 4, 8), substr($foo, 0, 4)); | |
15 | - $counter++; | |
16 | -} | |
17 | - | |
18 | -close FW; | |
19 | -open FW, "GFP_TX.DAT" || die; | |
20 | - | |
21 | -printf(FWH "};\t/* %d Rx instructions */\n#define FIRMWARE_RX_SIZE %d\n\nstatic u32 firmware_tx[] = {\n", $counter, $counter); | |
22 | -$counter = 0; | |
23 | -while ($foo = <FW>) { | |
24 | - chomp; | |
25 | - printf(FWH " 0x%s, 0x0000%s,\n", substr($foo, 4, 8), substr($foo, 0, 4)); | |
26 | - $counter++; | |
27 | -} | |
28 | - | |
29 | -close FW; | |
30 | -printf(FWH "};\t/* %d Tx instructions */\n#define FIRMWARE_TX_SIZE %d\n", $counter, $counter); | |
31 | -close(FWH); |
firmware/Makefile
... | ... | @@ -27,6 +27,8 @@ |
27 | 27 | acenic-objs := acenic/tg1.bin acenic/tg2.bin |
28 | 28 | endif |
29 | 29 | fw-shipped-$(CONFIG_ACENIC) += $(acenic-objs) |
30 | +fw-shipped-$(CONFIG_ADAPTEC_STARFIRE) += adaptec/starfire_rx.bin \ | |
31 | + adaptec/starfire_tx.bin | |
30 | 32 | fw-shipped-$(CONFIG_ATARI_DSP56K) += dsp56k/bootstrap.bin |
31 | 33 | fw-shipped-$(CONFIG_ATM_AMBASSADOR) += atmsar11.fw |
32 | 34 | fw-shipped-$(CONFIG_CASSINI) += sun/cassini.bin |
firmware/WHENCE
... | ... | @@ -390,4 +390,23 @@ |
390 | 390 | Found in hex form in kernel source. |
391 | 391 | |
392 | 392 | -------------------------------------------------------------------------- |
393 | + | |
394 | +Driver: ADAPTEC_STARFIRE - Adaptec Starfire/DuraLAN support | |
395 | + | |
396 | +File: adaptec/starfire_rx.bin | |
397 | +File: adaptec/starfire_tx.bin | |
398 | + | |
399 | +Licence: Allegedly GPLv2, but no source visible. | |
400 | + | |
401 | +Found in hex form in kernel source, with the following notice: | |
402 | + | |
403 | + BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE IT IS LICENSED "AS IS" AND | |
404 | + THERE IS NO WARRANTY FOR THE PROGRAM, INCLUDING BUT NOT LIMITED TO THE | |
405 | + IMPLIED WARRANTIES OF MERCHANTIBILITY OR FITNESS FOR A PARTICULAR PURPOSE | |
406 | + (TO THE EXTENT PERMITTED BY APPLICABLE LAW). USE OF THE PROGRAM IS AT YOUR | |
407 | + OWN RISK. IN NO EVENT WILL ADAPTEC OR ITS LICENSORS BE LIABLE TO YOU FOR | |
408 | + DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES | |
409 | + ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM. | |
410 | + | |
411 | +-------------------------------------------------------------------------- |
firmware/adaptec/starfire_rx.bin.ihex
1 | +:10000000010003DC00000000040004210000008661 | |
2 | +:10001000800000150000180E8100001500006664C5 | |
3 | +:100020001A0040AB00000B06142000110000000075 | |
4 | +:10003000142040220000AAAA14204022000003003D | |
5 | +:1000400014204022000000001A0040AB00000B14F6 | |
6 | +:1000500014200011000000008300001500000002C1 | |
7 | +:10006000040000210000000000000010000000005B | |
8 | +:1000700004000421000000870000001000000000C0 | |
9 | +:1000800000000010000000000000801500000000CB | |
10 | +:100090000000003E00000000000000100000000012 | |
11 | +:1000A0008200001500004000009E8050000000000B | |
12 | +:1000B000030080150000000086008015000000008D | |
13 | +:1000C00082000015000080000100001C00000000FC | |
14 | +:1000D000000050A00000010C4E20D011000060086C | |
15 | +:1000E0001420D012000040080000F09000007000C2 | |
16 | +:1000F0000000C8B0000030000000404000000000D8 | |
17 | +:10010000001080150000000000A2C1500000400057 | |
18 | +:1001100000A400B000000014000000200000000057 | |
19 | +:100120002500400D0000252500047220000031004C | |
20 | +:10013000009340700000000000000020000000005C | |
21 | +:1001400000924460000001842B20C01100000000D8 | |
22 | +:100150000000C42000000540360140180000422D78 | |
23 | +:100160001420001100000000009244600000018390 | |
24 | +:100170003200001F0000003402AC00150000000235 | |
25 | +:1001800000A601100000000842200011000000003D | |
26 | +:1001900000924060000001030000001E000000000B | |
27 | +:1001A00000000020000001000000001E0000000010 | |
28 | +:1001B00000924460000000860000408000000000C3 | |
29 | +:1001C0000092C0700000000000924060000001003A | |
30 | +:1001D0000000C8900000500000A6C1100000000000 | |
31 | +:1001E00000B0C09000000012021C001500000000CA | |
32 | +:1001F0003200001F0000003400924460000005102F | |
33 | +:100200004421001100000000420000110000000025 | |
34 | +:1002100083000015000000400092446000000508C3 | |
35 | +:100220004501401800004545008080500000000056 | |
36 | +:10023000622080120000000082000015000008000B | |
37 | +:100240001520001100000000000000100000000058 | |
38 | +:10025000000000100000000000000010000000007E | |
39 | +:10026000000000100000000000000010000000006E | |
40 | +:10027000800000150000EEA4810000150000005F62 | |
41 | +:1002800000000060000000000000412000000000AD | |
42 | +:1002900000004A000000400000924460000001900D | |
43 | +:1002A0005601401A000059561400001100000000C9 | |
44 | +:1002B0000093405000000018009300500000001808 | |
45 | +:1002C0003601403A0000002D000643A9000000005E | |
46 | +:1002D0000000C420000001405601401A0000595699 | |
47 | +:1002E00014000011000000000000001000000000D9 | |
48 | +:1002F0000000001000000000000642A900000000FD | |
49 | +:1003000000024420000001835601401A00005956A3 | |
50 | +:1003100082000015000020001520001100000000E0 | |
51 | +:1003200082000015000000101520001100000000E0 | |
52 | +:1003300082000015000000101520001100000000D0 | |
53 | +:00000001FF |
firmware/adaptec/starfire_tx.bin.ihex
1 | +:10000000010003DC00000000040004210000008661 | |
2 | +:10001000800000150000180E8100001500006664C5 | |
3 | +:100020001A0040AB00000B06142000110000000075 | |
4 | +:10003000142040220000AAAA14204022000003003D | |
5 | +:1000400014204022000000001A0040AB00000B14F6 | |
6 | +:1000500014200011000000008300001500000002C1 | |
7 | +:10006000040000210000000000000010000000005B | |
8 | +:1000700004000421000000870000001000000000C0 | |
9 | +:1000800000000010000000000000801500000000CB | |
10 | +:100090000000003E00000000000000100000000012 | |
11 | +:1000A0008200001500004000009E8050000000000B | |
12 | +:1000B000030080150000000086008015000000008D | |
13 | +:1000C00082000015000080000100001C00000000FC | |
14 | +:1000D000000050A00000010C4E20D011000060086C | |
15 | +:1000E0001420D012000040080000F09000007000C2 | |
16 | +:1000F0000000C8B0000030000000404000000000D8 | |
17 | +:10010000001080150000000000A2C1500000400057 | |
18 | +:1001100000A400B000000014000000200000000057 | |
19 | +:100120002500400D0000252500047220000031004C | |
20 | +:10013000009340700000000000000020000000005C | |
21 | +:1001400000924460000001842B20C01100000000D8 | |
22 | +:100150000000C42000000540360140180000422D78 | |
23 | +:100160001420001100000000009244600000018390 | |
24 | +:100170003200001F0000003402AC00150000000235 | |
25 | +:1001800000A601100000000842200011000000003D | |
26 | +:1001900000924060000001030000001E000000000B | |
27 | +:1001A00000000020000001000000001E0000000010 | |
28 | +:1001B00000924460000000860000408000000000C3 | |
29 | +:1001C0000092C0700000000000924060000001003A | |
30 | +:1001D0000000C8900000500000A6C1100000000000 | |
31 | +:1001E00000B0C09000000012021C001500000000CA | |
32 | +:1001F0003200001F0000003400924460000005102F | |
33 | +:100200004421001100000000420000110000000025 | |
34 | +:1002100083000015000000400092446000000508C3 | |
35 | +:100220004501401800004545008080500000000056 | |
36 | +:10023000622080120000000082000015000008000B | |
37 | +:100240001520001100000000000000100000000058 | |
38 | +:10025000000000100000000000000010000000007E | |
39 | +:10026000000000100000000000000010000000006E | |
40 | +:10027000800000150000EEA4810000150000005F62 | |
41 | +:1002800000000060000000000000412000000000AD | |
42 | +:1002900000004A000000400000924460000001900D | |
43 | +:1002A0005601401A000059561400001100000000C9 | |
44 | +:1002B0000093405000000018009300500000001808 | |
45 | +:1002C0003601403A0000002D000643A9000000005E | |
46 | +:1002D0000000C420000001405601401A0000595699 | |
47 | +:1002E00014000011000000000000001000000000D9 | |
48 | +:1002F0000000001000000000000642A900000000FD | |
49 | +:1003000000024420000001835601401A00005956A3 | |
50 | +:1003100082000015000020001520001100000000E0 | |
51 | +:1003200082000015000000101520001100000000E0 | |
52 | +:1003300082000015000000101520001100000000D0 | |
53 | +:00000001FF |