Commit cfc3a44c3c32abe48898398d9a92e8524c976803

Authored by Jaswinder Singh Rajput
Committed by David S. Miller
1 parent 077f849de4

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);
... ... @@ -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
... ... @@ -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