Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
linux-davinci
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
linux
linux-davinci
Commits
03d661d3
Commit
03d661d3
authored
Jun 04, 2005
by
Committed by
Jeff Garzik
Jun 04, 2005
Browse files
Options
Browse Files
Download
Plain Diff
Automatic merge of /spare/repo/netdev-2.6 branch starfire
parents
1a950599
fdecea66
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
386 additions
and
102 deletions
+386
-102
drivers/net/starfire.c
drivers/net/starfire.c
+40
-102
drivers/net/starfire_firmware.h
drivers/net/starfire_firmware.h
+346
-0
No files found.
drivers/net/starfire.c
View file @
03d661d3
...
...
@@ -2,7 +2,7 @@
/*
Written 1998-2000 by Donald Becker.
Current maintainer is Ion Badulescu <ionut
@cs.columbia.edu
>. Please
Current maintainer is Ion Badulescu <ionut
ta badula tod org
>. Please
send all bug reports to me, and not to Donald Becker, as this code
has been heavily modified from Donald's original version.
...
...
@@ -129,12 +129,18 @@
- put the chip to a D3 slumber on driver unload
- added config option to enable/disable NAPI
TODO: bugfixes (no bugs known as of right now)
LK1.4.2 (Ion Badulescu)
- finally added firmware (GPL'ed by Adaptec)
- removed compatibility code for 2.2.x
TODO: - fix forced speed/duplexing code (broken a long time ago, when
somebody converted the driver to use the generic MII code)
- fix VLAN support
*/
#define DRV_NAME "starfire"
#define DRV_VERSION "1.03+LK1.4.
1
"
#define DRV_RELDATE "
February 10, 2002
"
#define DRV_VERSION "1.03+LK1.4.
2
"
#define DRV_RELDATE "
January 19, 2005
"
#include <linux/config.h>
#include <linux/version.h>
...
...
@@ -145,25 +151,15 @@ TODO: bugfixes (no bugs known as of right now)
#include <linux/etherdevice.h>
#include <linux/init.h>
#include <linux/delay.h>
#include <linux/crc32.h>
#include <linux/ethtool.h>
#include <linux/mii.h>
#include <linux/if_vlan.h>
#include <asm/processor.h>
/* Processor type for cache alignment. */
#include <asm/uaccess.h>
#include <asm/io.h>
/*
* Adaptec's license for their drivers (which is where I got the
* firmware files) does not allow one to redistribute them. Thus, we can't
* include the firmware with this driver.
*
* However, should a legal-to-distribute firmware become available,
* the driver developer would need only to obtain the firmware in the
* form of a C header file.
* Once that's done, the #undef below must be changed into a #define
* for this driver to really use the firmware. Note that Rx/Tx
* hardware TCP checksumming is not possible without the firmware.
*
* WANTED: legal firmware to include with this GPL'd driver.
*/
#undef HAS_FIRMWARE
#include "starfire_firmware.h"
/*
* The current frame processor firmware fails to checksum a fragment
* of length 1. If and when this is fixed, the #define below can be removed.
...
...
@@ -172,13 +168,7 @@ TODO: bugfixes (no bugs known as of right now)
/*
* Define this if using the driver with the zero-copy patch
*/
#if defined(HAS_FIRMWARE) && defined(MAX_SKB_FRAGS)
#define ZEROCOPY
#endif
#ifdef HAS_FIRMWARE
#include "starfire_firmware.h"
#endif
/* HAS_FIRMWARE */
#if defined(CONFIG_VLAN_8021Q) || defined(CONFIG_VLAN_8021Q_MODULE)
#define VLAN_SUPPORT
...
...
@@ -202,11 +192,7 @@ static int mtu;
The Starfire has a 512 element hash table based on the Ethernet CRC. */
static
int
multicast_filter_limit
=
512
;
/* Whether to do TCP/UDP checksums in hardware */
#ifdef HAS_FIRMWARE
static
int
enable_hw_cksum
=
1
;
#else
static
int
enable_hw_cksum
=
0
;
#endif
#define PKT_BUF_SZ 1536
/* Size of each temporary Rx buffer.*/
/*
...
...
@@ -291,43 +277,15 @@ static int full_duplex[MAX_UNITS] = {0, };
#define RX_DESC_ADDR_SIZE RxDescAddr32bit
#endif
#ifdef MAX_SKB_FRAGS
#define skb_first_frag_len(skb) skb_headlen(skb)
#define skb_num_frags(skb) (skb_shinfo(skb)->nr_frags + 1)
#else
/* not MAX_SKB_FRAGS */
#define skb_first_frag_len(skb) (skb->len)
#define skb_num_frags(skb) 1
#endif
/* not MAX_SKB_FRAGS */
/* 2.2.x compatibility code */
#if LINUX_VERSION_CODE < 0x20300
#include "starfire-kcomp22.h"
#else
/* LINUX_VERSION_CODE > 0x20300 */
#include <linux/crc32.h>
#include <linux/ethtool.h>
#include <linux/mii.h>
#include <linux/if_vlan.h>
#define init_tx_timer(dev, func, timeout) \
dev->tx_timeout = func; \
dev->watchdog_timeo = timeout;
#define kick_tx_timer(dev, func, timeout)
#define netif_start_if(dev)
#define netif_stop_if(dev)
#define PCI_SLOT_NAME(pci_dev) pci_name(pci_dev)
#endif
/* LINUX_VERSION_CODE > 0x20300 */
#ifdef HAVE_NETDEV_POLL
#define init_poll(dev) \
do { \
dev->poll = &netdev_poll; \
dev->weight = max_interrupt_work;
dev->weight = max_interrupt_work; \
} while (0)
#define netdev_rx(dev, ioaddr) \
do { \
u32 intr_enable; \
...
...
@@ -341,7 +299,7 @@ do { \
/* Paranoia check */
\
intr_enable = readl(ioaddr + IntrEnable); \
if (intr_enable & (IntrRxDone | IntrRxEmpty)) { \
printk("%s: interrupt while in polling mode!\n", dev->name); \
printk(
KERN_INFO
"%s: interrupt while in polling mode!\n", dev->name); \
intr_enable &= ~(IntrRxDone | IntrRxEmpty); \
writel(intr_enable, ioaddr + IntrEnable); \
} \
...
...
@@ -371,6 +329,7 @@ KERN_INFO " (unofficial 2.2/2.4 kernel port, version " DRV_VERSION ", " DRV_RELD
MODULE_AUTHOR
(
"Donald Becker <becker@scyld.com>"
);
MODULE_DESCRIPTION
(
"Adaptec Starfire Ethernet driver"
);
MODULE_LICENSE
(
"GPL"
);
MODULE_VERSION
(
DRV_VERSION
);
module_param
(
max_interrupt_work
,
int
,
0
);
module_param
(
mtu
,
int
,
0
);
...
...
@@ -425,7 +384,7 @@ on the 32/64 bitness of the architecture), and relies on automatic
minimum-length padding. It does not use the completion queue
consumer index, but instead checks for non-zero status entries.
For receive this driver uses type
0/1/
2/3 receive descriptors. The driver
For receive this driver uses type 2/3 receive descriptors. The driver
allocates full frame size skbuffs for the Rx ring buffers, so all frames
should fit in a single descriptor. The driver does not use the completion
queue consumer index, but instead checks for non-zero status entries.
...
...
@@ -476,7 +435,7 @@ IVc. Errata
*/
enum
chip_capability_flags
{
CanHaveMII
=
1
,
};
...
...
@@ -670,7 +629,6 @@ struct full_rx_done_desc {
u32
timestamp
;
};
/* XXX: this is ugly and I'm not sure it's worth the trouble -Ion */
#ifdef HAS_FIRMWARE
#ifdef VLAN_SUPPORT
typedef
struct
full_rx_done_desc
rx_done_desc
;
#define RxComplType RxComplType3
...
...
@@ -678,15 +636,6 @@ typedef struct full_rx_done_desc rx_done_desc;
typedef
struct
csum_rx_done_desc
rx_done_desc
;
#define RxComplType RxComplType2
#endif
/* not VLAN_SUPPORT */
#else
/* not HAS_FIRMWARE */
#ifdef VLAN_SUPPORT
typedef
struct
basic_rx_done_desc
rx_done_desc
;
#define RxComplType RxComplType1
#else
/* not VLAN_SUPPORT */
typedef
struct
short_rx_done_desc
rx_done_desc
;
#define RxComplType RxComplType0
#endif
/* not VLAN_SUPPORT */
#endif
/* not HAS_FIRMWARE */
enum
rx_done_bits
{
RxOK
=
0x20000000
,
RxFIFOErr
=
0x10000000
,
RxBufQ2
=
0x08000000
,
...
...
@@ -898,13 +847,10 @@ static int __devinit starfire_init_one(struct pci_dev *pdev,
/* enable MWI -- it vastly improves Rx performance on sparc64 */
pci_set_mwi
(
pdev
);
#ifdef MAX_SKB_FRAGS
dev
->
features
|=
NETIF_F_SG
;
#endif
/* MAX_SKB_FRAGS */
#ifdef ZEROCOPY
/* Starfire can do TCP/UDP checksumming */
if
(
enable_hw_cksum
)
dev
->
features
|=
NETIF_F_IP_CSUM
;
dev
->
features
|=
NETIF_F_IP_CSUM
|
NETIF_F_SG
;
#endif
/* ZEROCOPY */
#ifdef VLAN_SUPPORT
dev
->
features
|=
NETIF_F_HW_VLAN_RX
|
NETIF_F_HW_VLAN_FILTER
;
...
...
@@ -1008,7 +954,8 @@ static int __devinit starfire_init_one(struct pci_dev *pdev,
/* The chip-specific entries in the device structure. */
dev
->
open
=
&
netdev_open
;
dev
->
hard_start_xmit
=
&
start_tx
;
init_tx_timer
(
dev
,
tx_timeout
,
TX_TIMEOUT
);
dev
->
tx_timeout
=
tx_timeout
;
dev
->
watchdog_timeo
=
TX_TIMEOUT
;
init_poll
(
dev
);
dev
->
stop
=
&
netdev_close
;
dev
->
get_stats
=
&
get_stats
;
...
...
@@ -1039,7 +986,7 @@ static int __devinit starfire_init_one(struct pci_dev *pdev,
if
((
mdio_read
(
dev
,
phy
,
MII_BMCR
)
&
BMCR_RESET
)
==
0
)
break
;
if
(
boguscnt
==
0
)
{
printk
(
"%s: PHY
reset never completed!
\n
"
,
dev
->
name
);
printk
(
"%s: PHY
#%d reset never completed!
\n
"
,
dev
->
name
,
phy
);
continue
;
}
mii_status
=
mdio_read
(
dev
,
phy
,
MII_BMSR
);
...
...
@@ -1110,6 +1057,7 @@ static int netdev_open(struct net_device *dev)
size_t
tx_done_q_size
,
rx_done_q_size
,
tx_ring_size
,
rx_ring_size
;
/* Do we ever need to reset the chip??? */
retval
=
request_irq
(
dev
->
irq
,
&
intr_handler
,
SA_SHIRQ
,
dev
->
name
,
dev
);
if
(
retval
)
return
retval
;
...
...
@@ -1211,7 +1159,6 @@ static int netdev_open(struct net_device *dev)
writel
(
np
->
intr_timer_ctrl
,
ioaddr
+
IntrTimerCtrl
);
netif_start_if
(
dev
);
netif_start_queue
(
dev
);
if
(
debug
>
1
)
...
...
@@ -1238,13 +1185,11 @@ static int netdev_open(struct net_device *dev)
writel
(
ETH_P_8021Q
,
ioaddr
+
VlanType
);
#endif
/* VLAN_SUPPORT */
#ifdef HAS_FIRMWARE
/* Load Rx/Tx firmware into the frame processors */
for
(
i
=
0
;
i
<
FIRMWARE_RX_SIZE
*
2
;
i
++
)
writel
(
firmware_rx
[
i
],
ioaddr
+
RxGfpMem
+
i
*
4
);
for
(
i
=
0
;
i
<
FIRMWARE_TX_SIZE
*
2
;
i
++
)
writel
(
firmware_tx
[
i
],
ioaddr
+
TxGfpMem
+
i
*
4
);
#endif
/* HAS_FIRMWARE */
if
(
enable_hw_cksum
)
/* Enable the Rx and Tx units, and the Rx/Tx frame processors. */
writel
(
TxEnable
|
TxGFPEnable
|
RxEnable
|
RxGFPEnable
,
ioaddr
+
GenCtrl
);
...
...
@@ -1378,8 +1323,6 @@ static int start_tx(struct sk_buff *skb, struct net_device *dev)
u32
status
;
int
i
;
kick_tx_timer
(
dev
,
tx_timeout
,
TX_TIMEOUT
);
/*
* be cautious here, wrapping the queue has weird semantics
* and we may not have enough slots even when it seems we do.
...
...
@@ -1404,7 +1347,7 @@ static int start_tx(struct sk_buff *skb, struct net_device *dev)
}
if
(
has_bad_length
)
skb_checksum_help
(
skb
);
skb_checksum_help
(
skb
,
0
);
}
#endif
/* ZEROCOPY && HAS_BROKEN_FIRMWARE */
...
...
@@ -1433,12 +1376,10 @@ static int start_tx(struct sk_buff *skb, struct net_device *dev)
np
->
tx_info
[
entry
].
mapping
=
pci_map_single
(
np
->
pci_dev
,
skb
->
data
,
skb_first_frag_len
(
skb
),
PCI_DMA_TODEVICE
);
}
else
{
#ifdef MAX_SKB_FRAGS
skb_frag_t
*
this_frag
=
&
skb_shinfo
(
skb
)
->
frags
[
i
-
1
];
status
|=
this_frag
->
size
;
np
->
tx_info
[
entry
].
mapping
=
pci_map_single
(
np
->
pci_dev
,
page_address
(
this_frag
->
page
)
+
this_frag
->
page_offset
,
this_frag
->
size
,
PCI_DMA_TODEVICE
);
#endif
/* MAX_SKB_FRAGS */
}
np
->
tx_ring
[
entry
].
addr
=
cpu_to_dma
(
np
->
tx_info
[
entry
].
mapping
);
...
...
@@ -1531,7 +1472,6 @@ static irqreturn_t intr_handler(int irq, void *dev_instance, struct pt_regs *rgs
np
->
tx_info
[
entry
].
mapping
=
0
;
np
->
dirty_tx
+=
np
->
tx_info
[
entry
].
used_slots
;
entry
=
(
entry
+
np
->
tx_info
[
entry
].
used_slots
)
%
TX_RING_SIZE
;
#ifdef MAX_SKB_FRAGS
{
int
i
;
for
(
i
=
0
;
i
<
skb_shinfo
(
skb
)
->
nr_frags
;
i
++
)
{
...
...
@@ -1543,7 +1483,7 @@ static irqreturn_t intr_handler(int irq, void *dev_instance, struct pt_regs *rgs
entry
++
;
}
}
#endif
/* MAX_SKB_FRAGS */
dev_kfree_skb_irq
(
skb
);
}
np
->
tx_done_q
[
np
->
tx_done
].
status
=
0
;
...
...
@@ -1603,7 +1543,7 @@ static int __netdev_rx(struct net_device *dev, int *quota)
if
(
debug
>
4
)
printk
(
KERN_DEBUG
" netdev_rx() status of %d was %#8.8x.
\n
"
,
np
->
rx_done
,
desc_status
);
if
(
!
(
desc_status
&
RxOK
))
{
/* There was a error. */
/* There was a
n
error. */
if
(
debug
>
2
)
printk
(
KERN_DEBUG
" netdev_rx() Rx error was %#8.8x.
\n
"
,
desc_status
);
np
->
stats
.
rx_errors
++
;
...
...
@@ -1656,11 +1596,10 @@ static int __netdev_rx(struct net_device *dev, int *quota)
#endif
skb
->
protocol
=
eth_type_trans
(
skb
,
dev
);
#if
defined(HAS_FIRMWARE) || defined(VLAN_SUPPORT)
#if
def VLAN_SUPPORT
if
(
debug
>
4
)
printk
(
KERN_DEBUG
" netdev_rx() status2 of %d was %#4.4x.
\n
"
,
np
->
rx_done
,
le16_to_cpu
(
desc
->
status2
));
#endif
#ifdef HAS_FIRMWARE
if
(
le16_to_cpu
(
desc
->
status2
)
&
0x0100
)
{
skb
->
ip_summed
=
CHECKSUM_UNNECESSARY
;
np
->
stats
.
rx_compressed
++
;
...
...
@@ -1679,7 +1618,6 @@ static int __netdev_rx(struct net_device *dev, int *quota)
skb
->
csum
=
le16_to_cpu
(
desc
->
csum
);
printk
(
KERN_DEBUG
"%s: checksum_hw, status2 = %#x
\n
"
,
dev
->
name
,
le16_to_cpu
(
desc
->
status2
));
}
#endif
/* HAS_FIRMWARE */
#ifdef VLAN_SUPPORT
if
(
np
->
vlgrp
&&
le16_to_cpu
(
desc
->
status2
)
&
0x0200
)
{
if
(
debug
>
4
)
...
...
@@ -1900,9 +1838,6 @@ static struct net_device_stats *get_stats(struct net_device *dev)
}
/* Chips may use the upper or lower CRC bits, and may reverse and/or invert
them. Select the endian-ness that results in minimal calculations.
*/
static
void
set_rx_mode
(
struct
net_device
*
dev
)
{
struct
netdev_private
*
np
=
netdev_priv
(
dev
);
...
...
@@ -1969,6 +1904,8 @@ static void set_rx_mode(struct net_device *dev)
memset
(
mc_filter
,
0
,
sizeof
(
mc_filter
));
for
(
i
=
0
,
mclist
=
dev
->
mc_list
;
mclist
&&
i
<
dev
->
mc_count
;
i
++
,
mclist
=
mclist
->
next
)
{
/* The chip uses the upper 9 CRC bits
as index into the hash table */
int
bit_nr
=
ether_crc_le
(
ETH_ALEN
,
mclist
->
dmi_addr
)
>>
23
;
__u32
*
fptr
=
(
__u32
*
)
&
mc_filter
[(
bit_nr
>>
4
)
&
~
1
];
...
...
@@ -2001,7 +1938,7 @@ static void get_drvinfo(struct net_device *dev, struct ethtool_drvinfo *info)
struct
netdev_private
*
np
=
netdev_priv
(
dev
);
strcpy
(
info
->
driver
,
DRV_NAME
);
strcpy
(
info
->
version
,
DRV_VERSION
);
strcpy
(
info
->
bus_info
,
PCI_SLOT_NAME
(
np
->
pci_dev
));
strcpy
(
info
->
bus_info
,
pci_name
(
np
->
pci_dev
));
}
static
int
get_settings
(
struct
net_device
*
dev
,
struct
ethtool_cmd
*
ecmd
)
...
...
@@ -2083,7 +2020,6 @@ static int netdev_close(struct net_device *dev)
int
i
;
netif_stop_queue
(
dev
);
netif_stop_if
(
dev
);
if
(
debug
>
1
)
{
printk
(
KERN_DEBUG
"%s: Shutting down ethercard, Intr status %#8.8x.
\n
"
,
...
...
@@ -2184,7 +2120,13 @@ static int __init starfire_init (void)
/* when a module, this is printed whether or not devices are found in probe */
#ifdef MODULE
printk
(
version
);
#ifdef HAVE_NETDEV_POLL
printk
(
KERN_INFO
DRV_NAME
": polling (NAPI) enabled
\n
"
);
#else
printk
(
KERN_INFO
DRV_NAME
": polling (NAPI) disabled
\n
"
);
#endif
#endif
#ifndef ADDR_64BITS
/* we can do this test only at run-time... sigh */
if
(
sizeof
(
dma_addr_t
)
==
sizeof
(
u64
))
{
...
...
@@ -2192,10 +2134,6 @@ static int __init starfire_init (void)
return
-
ENODEV
;
}
#endif
/* not ADDR_64BITS */
#ifndef HAS_FIRMWARE
/* unconditionally disable hw cksums if firmware is not present */
enable_hw_cksum
=
0
;
#endif
/* not HAS_FIRMWARE */
return
pci_module_init
(
&
starfire_driver
);
}
...
...
drivers/net/starfire_firmware.h
0 → 100644
View file @
03d661d3
/*
* Copyright 2003 Adaptec, Inc.
*
* Please read the following license before using the Adaptec Software
* ("Program"). If you do not agree to the license terms, do not use the
* Program:
*
* You agree to be bound by version 2 of the General Public License ("GPL")
* dated June 1991, which can be found at http://www.fsf.org/licenses/gpl.html.
* If the link is broken, write to Free Software Foundation, 59 Temple Place,
* Boston, Massachusetts 02111-1307.
*
* BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE IT IS LICENSED "AS IS" AND
* THERE IS NO WARRANTY FOR THE PROGRAM, INCLUDING BUT NOT LIMITED TO THE
* IMPLIED WARRANTIES OF MERCHANTIBILITY OR FITNESS FOR A PARTICULAR PURPOSE
* (TO THE EXTENT PERMITTED BY APPLICABLE LAW). USE OF THE PROGRAM IS AT YOUR
* OWN RISK. IN NO EVENT WILL ADAPTEC OR ITS LICENSORS BE LIABLE TO YOU FOR
* DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES
* ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM.
*
*/
static
const
u32
firmware_rx
[]
=
{
0x010003dc
,
0x00000000
,
0x04000421
,
0x00000086
,
0x80000015
,
0x0000180e
,
0x81000015
,
0x00006664
,
0x1a0040ab
,
0x00000b06
,
0x14200011
,
0x00000000
,
0x14204022
,
0x0000aaaa
,
0x14204022
,
0x00000300
,
0x14204022
,
0x00000000
,
0x1a0040ab
,
0x00000b14
,
0x14200011
,
0x00000000
,
0x83000015
,
0x00000002
,
0x04000021
,
0x00000000
,
0x00000010
,
0x00000000
,
0x04000421
,
0x00000087
,
0x00000010
,
0x00000000
,
0x00000010
,
0x00000000
,
0x00008015
,
0x00000000
,
0x0000003e
,
0x00000000
,
0x00000010
,
0x00000000
,
0x82000015
,
0x00004000
,
0x009e8050
,
0x00000000
,
0x03008015
,
0x00000000
,
0x86008015
,
0x00000000
,
0x82000015
,
0x00008000
,
0x0100001c
,
0x00000000
,
0x000050a0
,
0x0000010c
,
0x4e20d011
,
0x00006008
,
0x1420d012
,
0x00004008
,
0x0000f090
,
0x00007000
,
0x0000c8b0
,
0x00003000
,
0x00004040
,
0x00000000
,
0x00108015
,
0x00000000
,
0x00a2c150
,
0x00004000
,
0x00a400b0
,
0x00000014
,
0x00000020
,
0x00000000
,
0x2500400d
,
0x00002525
,
0x00047220
,
0x00003100
,
0x00934070
,
0x00000000
,
0x00000020
,
0x00000000
,
0x00924460
,
0x00000184
,
0x2b20c011
,
0x00000000
,
0x0000c420
,
0x00000540
,
0x36014018
,
0x0000422d
,
0x14200011
,
0x00000000
,
0x00924460
,
0x00000183
,
0x3200001f
,
0x00000034
,
0x02ac0015
,
0x00000002
,
0x00a60110
,
0x00000008
,
0x42200011
,
0x00000000
,
0x00924060
,
0x00000103
,
0x0000001e
,
0x00000000
,
0x00000020
,
0x00000100
,
0x0000001e
,
0x00000000
,
0x00924460
,
0x00000086
,
0x00004080
,
0x00000000
,
0x0092c070
,
0x00000000
,
0x00924060
,
0x00000100
,
0x0000c890
,
0x00005000
,
0x00a6c110
,
0x00000000
,
0x00b0c090
,
0x00000012
,
0x021c0015
,
0x00000000
,
0x3200001f
,
0x00000034
,
0x00924460
,
0x00000510
,
0x44210011
,
0x00000000
,
0x42000011
,
0x00000000
,
0x83000015
,
0x00000040
,
0x00924460
,
0x00000508
,
0x45014018
,
0x00004545
,
0x00808050
,
0x00000000
,
0x62208012
,
0x00000000
,
0x82000015
,
0x00000800
,
0x15200011
,
0x00000000
,
0x00000010
,
0x00000000
,
0x00000010
,
0x00000000
,
0x00000010
,
0x00000000
,
0x00000010
,
0x00000000
,
0x00000010
,
0x00000000
,
0x80000015
,
0x0000eea4
,
0x81000015
,
0x0000005f
,
0x00000060
,
0x00000000
,
0x00004120
,
0x00000000
,
0x00004a00
,
0x00004000
,
0x00924460
,
0x00000190
,
0x5601401a
,
0x00005956
,
0x14000011
,
0x00000000
,
0x00934050
,
0x00000018
,
0x00930050
,
0x00000018
,
0x3601403a
,
0x0000002d
,
0x000643a9
,
0x00000000
,
0x0000c420
,
0x00000140
,
0x5601401a
,
0x00005956
,
0x14000011
,
0x00000000
,
0x00000010
,
0x00000000
,
0x00000010
,
0x00000000
,
0x000642a9
,
0x00000000
,
0x00024420
,
0x00000183
,
0x5601401a
,
0x00005956
,
0x82000015
,
0x00002000
,
0x15200011
,
0x00000000
,
0x82000015
,
0x00000010
,
0x15200011
,
0x00000000
,
0x82000015
,
0x00000010
,
0x15200011
,
0x00000000
,
};
/* 104 Rx instructions */
#define FIRMWARE_RX_SIZE 104
static
const
u32
firmware_tx
[]
=
{
0x010003dc
,
0x00000000
,
0x04000421
,
0x00000086
,
0x80000015
,
0x0000180e
,
0x81000015
,
0x00006664
,
0x1a0040ab
,
0x00000b06
,
0x14200011
,
0x00000000
,
0x14204022
,
0x0000aaaa
,
0x14204022
,
0x00000300
,
0x14204022
,
0x00000000
,
0x1a0040ab
,
0x00000b14
,
0x14200011
,
0x00000000
,
0x83000015
,
0x00000002
,
0x04000021
,
0x00000000
,
0x00000010
,
0x00000000
,
0x04000421
,
0x00000087
,
0x00000010
,
0x00000000
,
0x00000010
,
0x00000000
,
0x00008015
,
0x00000000
,
0x0000003e
,
0x00000000
,
0x00000010
,
0x00000000
,
0x82000015
,
0x00004000
,
0x009e8050
,
0x00000000
,
0x03008015
,
0x00000000
,
0x86008015
,
0x00000000
,
0x82000015
,
0x00008000
,
0x0100001c
,
0x00000000
,
0x000050a0
,
0x0000010c
,
0x4e20d011
,
0x00006008
,
0x1420d012
,
0x00004008
,
0x0000f090
,
0x00007000
,
0x0000c8b0
,
0x00003000
,
0x00004040
,
0x00000000
,
0x00108015
,
0x00000000
,
0x00a2c150
,
0x00004000
,
0x00a400b0
,
0x00000014
,
0x00000020
,
0x00000000
,
0x2500400d
,
0x00002525
,
0x00047220
,
0x00003100
,
0x00934070
,
0x00000000
,
0x00000020
,
0x00000000
,
0x00924460
,
0x00000184
,
0x2b20c011
,
0x00000000
,
0x0000c420
,
0x00000540
,
0x36014018
,
0x0000422d
,
0x14200011
,
0x00000000
,
0x00924460
,
0x00000183
,
0x3200001f
,
0x00000034
,
0x02ac0015
,
0x00000002
,
0x00a60110
,
0x00000008
,
0x42200011
,
0x00000000
,
0x00924060
,
0x00000103
,
0x0000001e
,
0x00000000
,
0x00000020
,
0x00000100
,
0x0000001e
,
0x00000000
,
0x00924460
,
0x00000086
,
0x00004080
,
0x00000000
,
0x0092c070
,
0x00000000
,
0x00924060
,
0x00000100
,
0x0000c890
,
0x00005000
,
0x00a6c110
,
0x00000000
,
0x00b0c090
,
0x00000012
,
0x021c0015
,
0x00000000
,
0x3200001f
,
0x00000034
,
0x00924460
,
0x00000510
,
0x44210011
,
0x00000000
,
0x42000011
,
0x00000000
,
0x83000015
,
0x00000040
,
0x00924460
,
0x00000508
,
0x45014018
,
0x00004545
,
0x00808050
,
0x00000000
,
0x62208012
,
0x00000000
,
0x82000015
,
0x00000800
,
0x15200011
,
0x00000000
,
0x00000010
,
0x00000000
,
0x00000010
,
0x00000000
,
0x00000010
,
0x00000000
,
0x00000010
,
0x00000000
,
0x00000010
,
0x00000000
,
0x80000015
,
0x0000eea4
,
0x81000015
,
0x0000005f
,
0x00000060
,
0x00000000
,
0x00004120
,
0x00000000
,
0x00004a00
,
0x00004000
,
0x00924460
,
0x00000190
,
0x5601401a
,
0x00005956
,
0x14000011
,
0x00000000
,
0x00934050
,
0x00000018
,
0x00930050
,
0x00000018
,
0x3601403a
,
0x0000002d
,
0x000643a9
,
0x00000000
,
0x0000c420
,
0x00000140
,
0x5601401a
,
0x00005956
,
0x14000011
,
0x00000000
,
0x00000010
,
0x00000000
,
0x00000010
,
0x00000000
,
0x000642a9
,
0x00000000
,
0x00024420
,
0x00000183
,
0x5601401a
,
0x00005956
,
0x82000015
,
0x00002000
,
0x15200011
,
0x00000000
,
0x82000015
,
0x00000010
,
0x15200011
,
0x00000000
,
0x82000015
,
0x00000010
,
0x15200011
,
0x00000000
,
};
/* 104 Tx instructions */
#define FIRMWARE_TX_SIZE 104
#if 0
static const u32 firmware_wol[] = {
0x010003dc, 0x00000000,
0x19000421, 0x00000087,
0x80000015, 0x00001a1a,
0x81000015, 0x00001a1a,
0x1a0040ab, 0x00000b06,
0x15200011, 0x00000000,
0x15204022, 0x0000aaaa,
0x15204022, 0x00000300,
0x15204022, 0x00000000,
0x1a0040ab, 0x00000b15,
0x15200011, 0x00000000,
0x83000015, 0x00000002,
0x04000021, 0x00000000,
0x00000010, 0x00000000,
0x04000421, 0x00000087,
0x00000010, 0x00000000,
0x00000010, 0x00000000,
0x00008015, 0x00000000,
0x0000003e, 0x00000000,
0x00000010, 0x00000000,
0x00000010, 0x00000000,
0x82000015, 0x00004000,
0x82000015, 0x00008000,
0x0000000c, 0x00000000,
0x00000010, 0x00000000,
0x00004080, 0x00000100,
0x1f20c011, 0x00001122,
0x2720f011, 0x00003011,
0x19200071, 0x00000000,
0x1a200051, 0x00000000,
0x00000010, 0x00000000,
0x00000010, 0x00000000,
0x1d2040a4, 0x00003344,
0x1d2040a2, 0x00005566,
0x000040a0, 0x00000100,
0x00108050, 0x00000001,
0x1a208012, 0x00000006,
0x82000015, 0x00008080,
0x010003dc, 0x00000000,
0x1d2040a4, 0x00002233,
0x1d2040a4, 0x00004455,
0x2d208011, 0x00000005,
0x1d2040a4, 0x00006611,
0x00108050, 0x00000001,
0x27200011, 0x00000000,
0x1d2050a4, 0x00006600,
0x82000015, 0x00008080,
0x010003dc, 0x00000000,
0x00000050, 0x00000000,
0x1b200031, 0x00000000,
0x0000001e, 0x00000000,
0x0000001e, 0x00000000,
0x0000001e, 0x00000000,
0x0000001e, 0x00000000,
0x00924460, 0x00000086,
0x00004080, 0x00000000,
0x0092c070, 0x00000000,
0x00924060, 0x00000100,
0x0000c890, 0x00005000,
0x00a6c110, 0x00000000,
0x00b0c090, 0x00000012,
0x021c0015, 0x00000000,
0x3200001f, 0x00000034,
0x00924460, 0x00000510,
0x44210011, 0x00000000,
0x42000011, 0x00000000,
0x83000015, 0x00000040,
0x00924460, 0x00000508,
0x476a0012, 0x00000100,
0x83000015, 0x00000008,
0x16200011, 0x00000000,
0x001e8050, 0x00000000,
0x001e8050, 0x00000000,
0x00808050, 0x00000000,
0x03008015, 0x00000000,
0x62208012, 0x00000000,
0x82000015, 0x00000800,
0x16200011, 0x00000000,
0x80000015, 0x0000eea4,
0x81000015, 0x0000005f,
0x00000020, 0x00000000,
0x00004120, 0x00000000,
0x00004a00, 0x00004000,
0x00924460, 0x00000190,
0x5c01401a, 0x0000595c,
0x15000011, 0x00000000,
0x00934050, 0x00000018,
0x00930050, 0x00000018,
0x3601403a, 0x0000002d,
0x00064029, 0x00000000,
0x0000c420, 0x00000140,
0x5c01401a, 0x0000595c,
0x15000011, 0x00000000,
0x00000010, 0x00000000,
0x00000010, 0x00000000,
0x00064029, 0x00000000,
0x00024420, 0x00000183,
0x5c01401a, 0x0000595c,
0x82000015, 0x00002000,
0x16200011, 0x00000000,
0x82000015, 0x00000010,
0x16200011, 0x00000000,
0x82000015, 0x00000010,
0x16200011, 0x00000000,
}; /* 104 WoL instructions */
#define FIRMWARE_WOL_SIZE 104
#endif
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment