Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
56970f58
Commit
56970f58
authored
Jun 15, 2002
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge
http://gkernel.bkbits.net/net-drivers-2.5
into home.transmeta.com:/home/torvalds/v2.5/linux
parents
39412eff
996dec15
Changes
12
Show whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
254 additions
and
44 deletions
+254
-44
drivers/net/8139cp.c
drivers/net/8139cp.c
+166
-14
drivers/net/atarilance.c
drivers/net/atarilance.c
+10
-4
drivers/net/e100/e100_proc.c
drivers/net/e100/e100_proc.c
+2
-1
drivers/net/eepro.c
drivers/net/eepro.c
+4
-2
drivers/net/eexpress.c
drivers/net/eexpress.c
+30
-4
drivers/net/hamradio/yam.c
drivers/net/hamradio/yam.c
+13
-5
drivers/net/ni65.c
drivers/net/ni65.c
+12
-8
drivers/net/pcmcia/ray_cs.c
drivers/net/pcmcia/ray_cs.c
+6
-3
drivers/net/wan/comx-hw-comx.c
drivers/net/wan/comx-hw-comx.c
+2
-2
drivers/net/wan/sdlamain.c
drivers/net/wan/sdlamain.c
+7
-1
drivers/pci/pci.ids
drivers/pci/pci.ids
+1
-0
include/linux/pci_ids.h
include/linux/pci_ids.h
+1
-0
No files found.
drivers/net/8139cp.c
View file @
56970f58
...
@@ -32,7 +32,7 @@
...
@@ -32,7 +32,7 @@
h/w stats can be reset only by software reset
h/w stats can be reset only by software reset
* Tx checksumming
* Tx checksumming
* Handle netif_rx return value
* Handle netif_rx return value
* ETHTOOL_
GREGS, ETHTOOL_
[GS]WOL,
* ETHTOOL_[GS]WOL,
* Investigate using skb->priority with h/w VLAN priority
* Investigate using skb->priority with h/w VLAN priority
* Investigate using High Priority Tx Queue with skb->priority
* Investigate using High Priority Tx Queue with skb->priority
* Adjust Rx FIFO threshold and Max Rx DMA burst on Rx FIFO error
* Adjust Rx FIFO threshold and Max Rx DMA burst on Rx FIFO error
...
@@ -41,12 +41,14 @@
...
@@ -41,12 +41,14 @@
Tx descriptor bit
Tx descriptor bit
* The real minimum of CP_MIN_MTU is 4 bytes. However,
* The real minimum of CP_MIN_MTU is 4 bytes. However,
for this to be supported, one must(?) turn on packet padding.
for this to be supported, one must(?) turn on packet padding.
* Support 8169 GMII
* Support external MII transceivers
*/
*/
#define DRV_NAME "8139cp"
#define DRV_NAME "8139cp"
#define DRV_VERSION "0.
0.7
"
#define DRV_VERSION "0.
1.0
"
#define DRV_RELDATE "
Feb 27
, 2002"
#define DRV_RELDATE "
Jun 14
, 2002"
#include <linux/config.h>
#include <linux/config.h>
...
@@ -99,6 +101,7 @@ MODULE_PARM_DESC (multicast_filter_limit, "8139cp maximum number of filtered mul
...
@@ -99,6 +101,7 @@ MODULE_PARM_DESC (multicast_filter_limit, "8139cp maximum number of filtered mul
NETIF_MSG_PROBE | \
NETIF_MSG_PROBE | \
NETIF_MSG_LINK)
NETIF_MSG_LINK)
#define CP_REGS_SIZE (0xff + 1)
#define CP_REGS_SIZE (0xff + 1)
#define CP_REGS_VER 1
/* version 1 */
#define CP_RX_RING_SIZE 64
#define CP_RX_RING_SIZE 64
#define CP_TX_RING_SIZE 64
#define CP_TX_RING_SIZE 64
#define CP_RING_BYTES \
#define CP_RING_BYTES \
...
@@ -152,7 +155,9 @@ enum {
...
@@ -152,7 +155,9 @@ enum {
NWayExpansion
=
0x6A
,
/* MII Expansion */
NWayExpansion
=
0x6A
,
/* MII Expansion */
Config5
=
0xD8
,
/* Config5 */
Config5
=
0xD8
,
/* Config5 */
TxPoll
=
0xD9
,
/* Tell chip to check Tx descriptors for work */
TxPoll
=
0xD9
,
/* Tell chip to check Tx descriptors for work */
RxMaxSize
=
0xDA
,
/* Max size of an Rx packet (8169 only) */
CpCmd
=
0xE0
,
/* C+ Command register (C+ mode only) */
CpCmd
=
0xE0
,
/* C+ Command register (C+ mode only) */
IntrMitigate
=
0xE2
,
/* rx/tx interrupt mitigation control */
RxRingAddr
=
0xE4
,
/* 64-bit start addr of Rx ring */
RxRingAddr
=
0xE4
,
/* 64-bit start addr of Rx ring */
TxThresh
=
0xEC
,
/* Early Tx threshold */
TxThresh
=
0xEC
,
/* Early Tx threshold */
OldRxBufAddr
=
0x30
,
/* DMA address of Rx ring buffer (C mode) */
OldRxBufAddr
=
0x30
,
/* DMA address of Rx ring buffer (C mode) */
...
@@ -313,6 +318,7 @@ struct cp_private {
...
@@ -313,6 +318,7 @@ struct cp_private {
struct
sk_buff
*
frag_skb
;
struct
sk_buff
*
frag_skb
;
unsigned
dropping_frag
:
1
;
unsigned
dropping_frag
:
1
;
unsigned
int
board_type
;
struct
mii_if_info
mii_if
;
struct
mii_if_info
mii_if
;
};
};
...
@@ -341,10 +347,28 @@ static void __cp_set_rx_mode (struct net_device *dev);
...
@@ -341,10 +347,28 @@ static void __cp_set_rx_mode (struct net_device *dev);
static
void
cp_tx
(
struct
cp_private
*
cp
);
static
void
cp_tx
(
struct
cp_private
*
cp
);
static
void
cp_clean_rings
(
struct
cp_private
*
cp
);
static
void
cp_clean_rings
(
struct
cp_private
*
cp
);
enum
board_type
{
RTL8139Cp
,
RTL8169
,
};
static
struct
cp_board_info
{
const
char
*
name
;
}
cp_board_tbl
[]
__devinitdata
=
{
/* RTL8139Cp */
{
"RTL-8139C+"
},
/* RTL8169 */
{
"RTL-8169"
},
};
static
struct
pci_device_id
cp_pci_tbl
[]
__devinitdata
=
{
static
struct
pci_device_id
cp_pci_tbl
[]
__devinitdata
=
{
{
PCI_VENDOR_ID_REALTEK
,
PCI_DEVICE_ID_REALTEK_8139
,
{
PCI_VENDOR_ID_REALTEK
,
PCI_DEVICE_ID_REALTEK_8139
,
PCI_ANY_ID
,
PCI_ANY_ID
,
0
,
0
,
0
},
PCI_ANY_ID
,
PCI_ANY_ID
,
0
,
0
,
RTL8139Cp
},
#if 0
{ PCI_VENDOR_ID_REALTEK, PCI_DEVICE_ID_REALTEK_8169,
PCI_ANY_ID, PCI_ANY_ID, 0, 0, RTL8169 },
#endif
{
},
{
},
};
};
MODULE_DEVICE_TABLE
(
pci
,
cp_pci_tbl
);
MODULE_DEVICE_TABLE
(
pci
,
cp_pci_tbl
);
...
@@ -890,6 +914,9 @@ static void cp_reset_hw (struct cp_private *cp)
...
@@ -890,6 +914,9 @@ static void cp_reset_hw (struct cp_private *cp)
static
inline
void
cp_start_hw
(
struct
cp_private
*
cp
)
static
inline
void
cp_start_hw
(
struct
cp_private
*
cp
)
{
{
cpw8
(
Cmd
,
RxOn
|
TxOn
);
cpw8
(
Cmd
,
RxOn
|
TxOn
);
if
(
cp
->
board_type
==
RTL8169
)
cpw16
(
CpCmd
,
PCIMulRW
|
RxChkSum
);
else
cpw16
(
CpCmd
,
PCIMulRW
|
RxChkSum
|
CpRxOn
|
CpTxOn
);
cpw16
(
CpCmd
,
PCIMulRW
|
RxChkSum
|
CpRxOn
|
CpTxOn
);
}
}
...
@@ -912,16 +939,14 @@ static void cp_init_hw (struct cp_private *cp)
...
@@ -912,16 +939,14 @@ static void cp_init_hw (struct cp_private *cp)
cpw32_f
(
TxConfig
,
IFG
|
(
TX_DMA_BURST
<<
TxDMAShift
));
cpw32_f
(
TxConfig
,
IFG
|
(
TX_DMA_BURST
<<
TxDMAShift
));
cpw8
(
Config1
,
cpr8
(
Config1
)
|
DriverLoaded
|
PMEnable
);
cpw8
(
Config1
,
cpr8
(
Config1
)
|
DriverLoaded
|
PMEnable
);
if
(
cp
->
board_type
==
RTL8139Cp
)
cpw8
(
Config3
,
PARMEnable
);
/* disables magic packet and WOL */
cpw8
(
Config3
,
PARMEnable
);
/* disables magic packet and WOL */
cpw8
(
Config5
,
cpr8
(
Config5
)
&
PMEStatus
);
/* disables more WOL stuff */
cpw8
(
Config5
,
cpr8
(
Config5
)
&
PMEStatus
);
/* disables more WOL stuff */
if
(
cp
->
board_type
==
RTL8169
)
cpw16
(
RxMaxSize
,
cp
->
rx_buf_sz
);
cpw32_f
(
HiTxRingAddr
,
0
);
cpw32_f
(
HiTxRingAddr
,
0
);
cpw32_f
(
HiTxRingAddr
+
4
,
0
);
cpw32_f
(
HiTxRingAddr
+
4
,
0
);
cpw32_f
(
OldRxBufAddr
,
0
);
cpw32_f
(
OldTSD0
,
0
);
cpw32_f
(
OldTSD0
+
4
,
0
);
cpw32_f
(
OldTSD0
+
8
,
0
);
cpw32_f
(
OldTSD0
+
12
,
0
);
cpw32_f
(
RxRingAddr
,
cp
->
ring_dma
);
cpw32_f
(
RxRingAddr
,
cp
->
ring_dma
);
cpw32_f
(
RxRingAddr
+
4
,
0
);
cpw32_f
(
RxRingAddr
+
4
,
0
);
...
@@ -930,9 +955,9 @@ static void cp_init_hw (struct cp_private *cp)
...
@@ -930,9 +955,9 @@ static void cp_init_hw (struct cp_private *cp)
cpw16
(
MultiIntr
,
0
);
cpw16
(
MultiIntr
,
0
);
cpw16
(
IntrMask
,
cp_intr_mask
);
cpw16
_f
(
IntrMask
,
cp_intr_mask
);
cpw8_f
(
Cfg9346
,
Cfg9346_Lock
);
cpw8_f
(
Cfg9346
,
Cfg9346_Lock
);
}
}
static
int
cp_refill_rx
(
struct
cp_private
*
cp
)
static
int
cp_refill_rx
(
struct
cp_private
*
cp
)
...
@@ -1094,6 +1119,8 @@ static int cp_change_mtu(struct net_device *dev, int new_mtu)
...
@@ -1094,6 +1119,8 @@ static int cp_change_mtu(struct net_device *dev, int new_mtu)
dev
->
mtu
=
new_mtu
;
dev
->
mtu
=
new_mtu
;
cp_set_rxbufsize
(
cp
);
/* set new rx buf size */
cp_set_rxbufsize
(
cp
);
/* set new rx buf size */
if
(
cp
->
board_type
==
RTL8169
)
cpw16
(
RxMaxSize
,
cp
->
rx_buf_sz
);
rc
=
cp_init_rings
(
cp
);
/* realloc and restart h/w */
rc
=
cp_init_rings
(
cp
);
/* realloc and restart h/w */
cp_start_hw
(
cp
);
cp_start_hw
(
cp
);
...
@@ -1153,6 +1180,7 @@ static int cp_ethtool_ioctl (struct cp_private *cp, void *useraddr)
...
@@ -1153,6 +1180,7 @@ static int cp_ethtool_ioctl (struct cp_private *cp, void *useraddr)
strcpy
(
info
.
driver
,
DRV_NAME
);
strcpy
(
info
.
driver
,
DRV_NAME
);
strcpy
(
info
.
version
,
DRV_VERSION
);
strcpy
(
info
.
version
,
DRV_VERSION
);
strcpy
(
info
.
bus_info
,
cp
->
pdev
->
slot_name
);
strcpy
(
info
.
bus_info
,
cp
->
pdev
->
slot_name
);
info
.
regdump_len
=
CP_REGS_SIZE
;
if
(
copy_to_user
(
useraddr
,
&
info
,
sizeof
(
info
)))
if
(
copy_to_user
(
useraddr
,
&
info
,
sizeof
(
info
)))
return
-
EFAULT
;
return
-
EFAULT
;
return
0
;
return
0
;
...
@@ -1209,6 +1237,128 @@ static int cp_ethtool_ioctl (struct cp_private *cp, void *useraddr)
...
@@ -1209,6 +1237,128 @@ static int cp_ethtool_ioctl (struct cp_private *cp, void *useraddr)
return
0
;
return
0
;
}
}
/* NIC register dump */
case
ETHTOOL_GREGS
:
{
struct
ethtool_regs
regs
;
u8
*
regbuf
=
kmalloc
(
CP_REGS_SIZE
,
GFP_KERNEL
);
int
rc
;
if
(
!
regbuf
)
return
-
ENOMEM
;
memset
(
regbuf
,
0
,
CP_REGS_SIZE
);
rc
=
copy_from_user
(
&
regs
,
useraddr
,
sizeof
(
regs
));
if
(
rc
)
{
rc
=
-
EFAULT
;
goto
err_out_gregs
;
}
if
(
regs
.
len
>
CP_REGS_SIZE
)
regs
.
len
=
CP_REGS_SIZE
;
if
(
regs
.
len
<
CP_REGS_SIZE
)
{
rc
=
-
EINVAL
;
goto
err_out_gregs
;
}
regs
.
version
=
CP_REGS_VER
;
rc
=
copy_to_user
(
useraddr
,
&
regs
,
sizeof
(
regs
));
if
(
rc
)
{
rc
=
-
EFAULT
;
goto
err_out_gregs
;
}
useraddr
+=
offsetof
(
struct
ethtool_regs
,
data
);
spin_lock_irq
(
&
cp
->
lock
);
memcpy_fromio
(
regbuf
,
cp
->
regs
,
CP_REGS_SIZE
);
spin_unlock_irq
(
&
cp
->
lock
);
if
(
copy_to_user
(
useraddr
,
regbuf
,
regs
.
len
))
rc
=
-
EFAULT
;
err_out_gregs:
kfree
(
regbuf
);
return
rc
;
}
/* get/set RX checksumming */
case
ETHTOOL_GRXCSUM
:
{
struct
ethtool_value
edata
=
{
ETHTOOL_GRXCSUM
};
u16
cmd
=
cpr16
(
CpCmd
)
&
RxChkSum
;
edata
.
data
=
cmd
?
1
:
0
;
if
(
copy_to_user
(
useraddr
,
&
edata
,
sizeof
(
edata
)))
return
-
EFAULT
;
return
0
;
}
case
ETHTOOL_SRXCSUM
:
{
struct
ethtool_value
edata
;
u16
cmd
=
cpr16
(
CpCmd
),
newcmd
;
newcmd
=
cmd
;
if
(
copy_from_user
(
&
edata
,
useraddr
,
sizeof
(
edata
)))
return
-
EFAULT
;
if
(
edata
.
data
)
newcmd
|=
RxChkSum
;
else
newcmd
&=
~
RxChkSum
;
if
(
newcmd
==
cmd
)
return
0
;
spin_lock_irq
(
&
cp
->
lock
);
cpw16_f
(
CpCmd
,
newcmd
);
spin_unlock_irq
(
&
cp
->
lock
);
}
/* get/set TX checksumming */
case
ETHTOOL_GTXCSUM
:
{
struct
ethtool_value
edata
=
{
ETHTOOL_GTXCSUM
};
edata
.
data
=
(
cp
->
dev
->
features
&
NETIF_F_IP_CSUM
)
!=
0
;
if
(
copy_to_user
(
useraddr
,
&
edata
,
sizeof
(
edata
)))
return
-
EFAULT
;
return
0
;
}
case
ETHTOOL_STXCSUM
:
{
struct
ethtool_value
edata
;
if
(
copy_from_user
(
&
edata
,
useraddr
,
sizeof
(
edata
)))
return
-
EFAULT
;
if
(
edata
.
data
)
cp
->
dev
->
features
|=
NETIF_F_IP_CSUM
;
else
cp
->
dev
->
features
&=
~
NETIF_F_IP_CSUM
;
return
0
;
}
/* get/set scatter-gather */
case
ETHTOOL_GSG
:
{
struct
ethtool_value
edata
=
{
ETHTOOL_GSG
};
edata
.
data
=
(
cp
->
dev
->
features
&
NETIF_F_SG
)
!=
0
;
if
(
copy_to_user
(
useraddr
,
&
edata
,
sizeof
(
edata
)))
return
-
EFAULT
;
return
0
;
}
case
ETHTOOL_SSG
:
{
struct
ethtool_value
edata
;
if
(
copy_from_user
(
&
edata
,
useraddr
,
sizeof
(
edata
)))
return
-
EFAULT
;
if
(
edata
.
data
)
cp
->
dev
->
features
|=
NETIF_F_SG
;
else
cp
->
dev
->
features
&=
~
NETIF_F_SG
;
return
0
;
}
default:
default:
break
;
break
;
}
}
...
@@ -1332,6 +1482,7 @@ static int __devinit cp_init_one (struct pci_dev *pdev,
...
@@ -1332,6 +1482,7 @@ static int __devinit cp_init_one (struct pci_dev *pdev,
unsigned
addr_len
,
i
;
unsigned
addr_len
,
i
;
u8
pci_rev
,
cache_size
;
u8
pci_rev
,
cache_size
;
u16
pci_command
;
u16
pci_command
;
unsigned
int
board_type
=
(
unsigned
int
)
ent
->
driver_data
;
#ifndef MODULE
#ifndef MODULE
static
int
version_printed
;
static
int
version_printed
;
...
@@ -1355,6 +1506,7 @@ static int __devinit cp_init_one (struct pci_dev *pdev,
...
@@ -1355,6 +1506,7 @@ static int __devinit cp_init_one (struct pci_dev *pdev,
SET_MODULE_OWNER
(
dev
);
SET_MODULE_OWNER
(
dev
);
cp
=
dev
->
priv
;
cp
=
dev
->
priv
;
cp
->
pdev
=
pdev
;
cp
->
pdev
=
pdev
;
cp
->
board_type
=
board_type
;
cp
->
dev
=
dev
;
cp
->
dev
=
dev
;
cp
->
msg_enable
=
(
debug
<
0
?
CP_DEF_MSG_ENABLE
:
debug
);
cp
->
msg_enable
=
(
debug
<
0
?
CP_DEF_MSG_ENABLE
:
debug
);
spin_lock_init
(
&
cp
->
lock
);
spin_lock_init
(
&
cp
->
lock
);
...
@@ -1440,7 +1592,7 @@ static int __devinit cp_init_one (struct pci_dev *pdev,
...
@@ -1440,7 +1592,7 @@ static int __devinit cp_init_one (struct pci_dev *pdev,
"%02x:%02x:%02x:%02x:%02x:%02x, "
"%02x:%02x:%02x:%02x:%02x:%02x, "
"IRQ %d
\n
"
,
"IRQ %d
\n
"
,
dev
->
name
,
dev
->
name
,
"RTL-8139C+"
,
cp_board_tbl
[
board_type
].
name
,
dev
->
base_addr
,
dev
->
base_addr
,
dev
->
dev_addr
[
0
],
dev
->
dev_addr
[
1
],
dev
->
dev_addr
[
0
],
dev
->
dev_addr
[
1
],
dev
->
dev_addr
[
2
],
dev
->
dev_addr
[
3
],
dev
->
dev_addr
[
2
],
dev
->
dev_addr
[
3
],
...
...
drivers/net/atarilance.c
View file @
56970f58
...
@@ -546,8 +546,11 @@ static unsigned long __init lance_probe1( struct net_device *dev,
...
@@ -546,8 +546,11 @@ static unsigned long __init lance_probe1( struct net_device *dev,
if
(
lp
->
cardtype
==
PAM_CARD
||
if
(
lp
->
cardtype
==
PAM_CARD
||
memaddr
==
(
unsigned
short
*
)
0xffe00000
)
{
memaddr
==
(
unsigned
short
*
)
0xffe00000
)
{
/* PAMs card and Riebl on ST use level 5 autovector */
/* PAMs card and Riebl on ST use level 5 autovector */
request_irq
(
IRQ_AUTO_5
,
lance_interrupt
,
IRQ_TYPE_PRIO
,
if
(
request_irq
(
IRQ_AUTO_5
,
lance_interrupt
,
IRQ_TYPE_PRIO
,
"PAM/Riebl-ST Ethernet"
,
dev
);
"PAM/Riebl-ST Ethernet"
,
dev
))
{
printk
(
"Lance: request for irq %d failed
\n
"
,
IRQ_AUTO_5
);
return
(
0
);
}
dev
->
irq
=
(
unsigned
short
)
IRQ_AUTO_5
;
dev
->
irq
=
(
unsigned
short
)
IRQ_AUTO_5
;
}
}
else
{
else
{
...
@@ -560,8 +563,11 @@ static unsigned long __init lance_probe1( struct net_device *dev,
...
@@ -560,8 +563,11 @@ static unsigned long __init lance_probe1( struct net_device *dev,
printk
(
"Lance: request for VME interrupt failed
\n
"
);
printk
(
"Lance: request for VME interrupt failed
\n
"
);
return
(
0
);
return
(
0
);
}
}
request_irq
(
irq
,
lance_interrupt
,
IRQ_TYPE_PRIO
,
if
(
request_irq
(
irq
,
lance_interrupt
,
IRQ_TYPE_PRIO
,
"Riebl-VME Ethernet"
,
dev
);
"Riebl-VME Ethernet"
,
dev
))
{
printk
(
"Lance: request for irq %d failed
\n
"
,
irq
);
return
(
0
);
}
dev
->
irq
=
irq
;
dev
->
irq
=
irq
;
}
}
...
...
drivers/net/e100/e100_proc.c
View file @
56970f58
...
@@ -257,7 +257,8 @@ write_blink_led_timer(struct file *file, const char *buffer,
...
@@ -257,7 +257,8 @@ write_blink_led_timer(struct file *file, const char *buffer,
if
(
count
>
WRITE_BUF_MAX_LEN
)
{
if
(
count
>
WRITE_BUF_MAX_LEN
)
{
count
=
WRITE_BUF_MAX_LEN
;
count
=
WRITE_BUF_MAX_LEN
;
}
}
copy_from_user
(
s_blink_op
,
buffer
,
count
);
if
(
copy_from_user
(
s_blink_op
,
buffer
,
count
))
return
-
EFAULT
;
s_blink_op
[
count
]
=
'\0'
;
s_blink_op
[
count
]
=
'\0'
;
i_blink_op
=
simple_strtoul
(
s_blink_op
,
&
res
,
0
);
i_blink_op
=
simple_strtoul
(
s_blink_op
,
&
res
,
0
);
if
(
res
==
s_blink_op
)
{
if
(
res
==
s_blink_op
)
{
...
...
drivers/net/eepro.c
View file @
56970f58
...
@@ -828,8 +828,10 @@ static int __init eepro_probe1(struct net_device *dev, short ioaddr)
...
@@ -828,8 +828,10 @@ static int __init eepro_probe1(struct net_device *dev, short ioaddr)
}
}
/* Grab the region so we can find another board if autoIRQ fails. */
/* Grab the region so we can find another board if autoIRQ fails. */
request_region
(
ioaddr
,
EEPRO_IO_EXTENT
,
dev
->
name
);
if
(
!
request_region
(
ioaddr
,
EEPRO_IO_EXTENT
,
dev
->
name
))
{
printk
(
KERN_WARNING
"EEPRO: io-port 0x%04x in use
\n
"
,
ioaddr
);
goto
freeall
;
}
((
struct
eepro_local
*
)
dev
->
priv
)
->
lock
=
SPIN_LOCK_UNLOCKED
;
((
struct
eepro_local
*
)
dev
->
priv
)
->
lock
=
SPIN_LOCK_UNLOCKED
;
dev
->
open
=
eepro_open
;
dev
->
open
=
eepro_open
;
...
...
drivers/net/eexpress.c
View file @
56970f58
...
@@ -436,10 +436,26 @@ static int eexp_open(struct net_device *dev)
...
@@ -436,10 +436,26 @@ static int eexp_open(struct net_device *dev)
ret
=
request_irq
(
dev
->
irq
,
&
eexp_irq
,
0
,
dev
->
name
,
dev
);
ret
=
request_irq
(
dev
->
irq
,
&
eexp_irq
,
0
,
dev
->
name
,
dev
);
if
(
ret
)
return
ret
;
if
(
ret
)
return
ret
;
request_region
(
ioaddr
,
EEXP_IO_EXTENT
,
"EtherExpress"
);
if
(
!
request_region
(
ioaddr
,
EEXP_IO_EXTENT
,
"EtherExpress"
))
{
request_region
(
ioaddr
+
0x4000
,
16
,
"EtherExpress shadow"
);
printk
(
KERN_WARNING
"EtherExpress io port %x, is busy.
\n
"
request_region
(
ioaddr
+
0x8000
,
16
,
"EtherExpress shadow"
);
,
ioaddr
);
request_region
(
ioaddr
+
0xc000
,
16
,
"EtherExpress shadow"
);
goto
err_out1
;
}
if
(
!
request_region
(
ioaddr
+
0x4000
,
EEXP_IO_EXTENT
,
"EtherExpress shadow"
))
{
printk
(
KERN_WARNING
"EtherExpress io port %x, is busy.
\n
"
,
ioaddr
+
0x4000
);
goto
err_out2
;
}
if
(
!
request_region
(
ioaddr
+
0x8000
,
EEXP_IO_EXTENT
,
"EtherExpress shadow"
))
{
printk
(
KERN_WARNING
"EtherExpress io port %x, is busy.
\n
"
,
ioaddr
+
0x8000
);
goto
err_out3
;
}
if
(
!
request_region
(
ioaddr
+
0xc000
,
EEXP_IO_EXTENT
,
"EtherExpress shadow"
))
{
printk
(
KERN_WARNING
"EtherExpress io port %x, is busy.
\n
"
,
ioaddr
+
0xc000
);
goto
err_out4
;
}
if
(
lp
->
width
)
{
if
(
lp
->
width
)
{
printk
(
"%s: forcing ASIC to 8-bit mode
\n
"
,
dev
->
name
);
printk
(
"%s: forcing ASIC to 8-bit mode
\n
"
,
dev
->
name
);
...
@@ -452,6 +468,16 @@ static int eexp_open(struct net_device *dev)
...
@@ -452,6 +468,16 @@ static int eexp_open(struct net_device *dev)
printk
(
KERN_DEBUG
"%s: leaving eexp_open()
\n
"
,
dev
->
name
);
printk
(
KERN_DEBUG
"%s: leaving eexp_open()
\n
"
,
dev
->
name
);
#endif
#endif
return
0
;
return
0
;
err_out4:
release_region
(
ioaddr
+
0x8000
,
EEXP_IO_EXTENT
);
err_out3:
release_region
(
ioaddr
+
0x4000
,
EEXP_IO_EXTENT
);
err_out2:
release_region
(
ioaddr
,
EEXP_IO_EXTENT
);
err_out1:
free_irq
(
dev
->
irq
,
dev
);
return
-
EBUSY
;
}
}
/*
/*
...
...
drivers/net/hamradio/yam.c
View file @
56970f58
...
@@ -841,6 +841,7 @@ static int yam_open(struct net_device *dev)
...
@@ -841,6 +841,7 @@ static int yam_open(struct net_device *dev)
struct
yam_port
*
yp
=
(
struct
yam_port
*
)
dev
->
priv
;
struct
yam_port
*
yp
=
(
struct
yam_port
*
)
dev
->
priv
;
enum
uart
u
;
enum
uart
u
;
int
i
;
int
i
;
int
ret
=
0
;
printk
(
KERN_INFO
"Trying %s at iobase 0x%lx irq %u
\n
"
,
dev
->
name
,
dev
->
base_addr
,
dev
->
irq
);
printk
(
KERN_INFO
"Trying %s at iobase 0x%lx irq %u
\n
"
,
dev
->
name
,
dev
->
base_addr
,
dev
->
irq
);
...
@@ -850,24 +851,27 @@ static int yam_open(struct net_device *dev)
...
@@ -850,24 +851,27 @@ static int yam_open(struct net_device *dev)
dev
->
irq
<
2
||
dev
->
irq
>
15
)
{
dev
->
irq
<
2
||
dev
->
irq
>
15
)
{
return
-
ENXIO
;
return
-
ENXIO
;
}
}
if
(
check_region
(
dev
->
base_addr
,
YAM_EXTENT
))
{
if
(
!
request_region
(
dev
->
base_addr
,
YAM_EXTENT
,
dev
->
name
))
{
printk
(
KERN_ERR
"%s: cannot 0x%lx busy
\n
"
,
dev
->
name
,
dev
->
base_addr
);
printk
(
KERN_ERR
"%s: cannot 0x%lx busy
\n
"
,
dev
->
name
,
dev
->
base_addr
);
return
-
EACCES
;
return
-
EACCES
;
}
}
if
((
u
=
yam_check_uart
(
dev
->
base_addr
))
==
c_uart_unknown
)
{
if
((
u
=
yam_check_uart
(
dev
->
base_addr
))
==
c_uart_unknown
)
{
printk
(
KERN_ERR
"%s: cannot find uart type
\n
"
,
dev
->
name
);
printk
(
KERN_ERR
"%s: cannot find uart type
\n
"
,
dev
->
name
);
return
-
EIO
;
ret
=
-
EIO
;
goto
out_release_base
;
}
}
if
(
fpga_download
(
dev
->
base_addr
,
yp
->
bitrate
))
{
if
(
fpga_download
(
dev
->
base_addr
,
yp
->
bitrate
))
{
printk
(
KERN_ERR
"%s: cannot init FPGA
\n
"
,
dev
->
name
);
printk
(
KERN_ERR
"%s: cannot init FPGA
\n
"
,
dev
->
name
);
return
-
EIO
;
ret
=
-
EIO
;
goto
out_release_base
;
}
}
outb
(
0
,
IER
(
dev
->
base_addr
));
outb
(
0
,
IER
(
dev
->
base_addr
));
if
(
request_irq
(
dev
->
irq
,
yam_interrupt
,
SA_INTERRUPT
|
SA_SHIRQ
,
dev
->
name
,
dev
))
{
if
(
request_irq
(
dev
->
irq
,
yam_interrupt
,
SA_INTERRUPT
|
SA_SHIRQ
,
dev
->
name
,
dev
))
{
printk
(
KERN_ERR
"%s: irq %d busy
\n
"
,
dev
->
name
,
dev
->
irq
);
printk
(
KERN_ERR
"%s: irq %d busy
\n
"
,
dev
->
name
,
dev
->
irq
);
return
-
EBUSY
;
ret
=
-
EBUSY
;
goto
out_release_base
;
}
}
request_region
(
dev
->
base_addr
,
YAM_EXTENT
,
dev
->
name
);
yam_set_uart
(
dev
);
yam_set_uart
(
dev
);
...
@@ -884,6 +888,10 @@ static int yam_open(struct net_device *dev)
...
@@ -884,6 +888,10 @@ static int yam_open(struct net_device *dev)
printk
(
KERN_INFO
"%s at iobase 0x%lx irq %u uart %s
\n
"
,
dev
->
name
,
dev
->
base_addr
,
dev
->
irq
,
printk
(
KERN_INFO
"%s at iobase 0x%lx irq %u uart %s
\n
"
,
dev
->
name
,
dev
->
base_addr
,
dev
->
irq
,
uart_str
[
u
]);
uart_str
[
u
]);
return
0
;
return
0
;
out_release_base:
release_region
(
dev
->
base_addr
,
YAM_EXTENT
);
return
ret
;
}
}
/* --------------------------------------------------------------------- */
/* --------------------------------------------------------------------- */
...
...
drivers/net/ni65.c
View file @
56970f58
...
@@ -353,19 +353,22 @@ static int __init ni65_probe1(struct net_device *dev,int ioaddr)
...
@@ -353,19 +353,22 @@ static int __init ni65_probe1(struct net_device *dev,int ioaddr)
unsigned
long
flags
;
unsigned
long
flags
;
for
(
i
=
0
;
i
<
NUM_CARDS
;
i
++
)
{
for
(
i
=
0
;
i
<
NUM_CARDS
;
i
++
)
{
if
(
check_region
(
ioaddr
,
cards
[
i
].
total_siz
e
))
if
(
!
request_region
(
ioaddr
,
cards
[
i
].
total_size
,
cards
[
i
].
cardnam
e
))
continue
;
continue
;
if
(
cards
[
i
].
id_offset
>=
0
)
{
if
(
cards
[
i
].
id_offset
>=
0
)
{
if
(
inb
(
ioaddr
+
cards
[
i
].
id_offset
+
0
)
!=
cards
[
i
].
id0
||
if
(
inb
(
ioaddr
+
cards
[
i
].
id_offset
+
0
)
!=
cards
[
i
].
id0
||
inb
(
ioaddr
+
cards
[
i
].
id_offset
+
1
)
!=
cards
[
i
].
id1
)
{
inb
(
ioaddr
+
cards
[
i
].
id_offset
+
1
)
!=
cards
[
i
].
id1
)
{
release_region
(
ioaddr
,
cards
[
i
].
total_size
);
continue
;
continue
;
}
}
}
}
if
(
cards
[
i
].
vendor_id
)
{
if
(
cards
[
i
].
vendor_id
)
{
for
(
j
=
0
;
j
<
3
;
j
++
)
for
(
j
=
0
;
j
<
3
;
j
++
)
if
(
inb
(
ioaddr
+
cards
[
i
].
addr_offset
+
j
)
!=
cards
[
i
].
vendor_id
[
j
])
if
(
inb
(
ioaddr
+
cards
[
i
].
addr_offset
+
j
)
!=
cards
[
i
].
vendor_id
[
j
])
{
release_region
(
ioaddr
,
cards
[
i
].
total_size
);
continue
;
continue
;
}
}
}
break
;
break
;
}
}
if
(
i
==
NUM_CARDS
)
if
(
i
==
NUM_CARDS
)
...
@@ -374,8 +377,10 @@ static int __init ni65_probe1(struct net_device *dev,int ioaddr)
...
@@ -374,8 +377,10 @@ static int __init ni65_probe1(struct net_device *dev,int ioaddr)
for
(
j
=
0
;
j
<
6
;
j
++
)
for
(
j
=
0
;
j
<
6
;
j
++
)
dev
->
dev_addr
[
j
]
=
inb
(
ioaddr
+
cards
[
i
].
addr_offset
+
j
);
dev
->
dev_addr
[
j
]
=
inb
(
ioaddr
+
cards
[
i
].
addr_offset
+
j
);
if
(
(
j
=
ni65_alloc_buffer
(
dev
))
<
0
)
if
(
(
j
=
ni65_alloc_buffer
(
dev
))
<
0
)
{
release_region
(
ioaddr
,
cards
[
i
].
total_size
);
return
j
;
return
j
;
}
p
=
(
struct
priv
*
)
dev
->
priv
;
p
=
(
struct
priv
*
)
dev
->
priv
;
p
->
cmdr_addr
=
ioaddr
+
cards
[
i
].
cmd_offset
;
p
->
cmdr_addr
=
ioaddr
+
cards
[
i
].
cmd_offset
;
p
->
cardno
=
i
;
p
->
cardno
=
i
;
...
@@ -386,6 +391,7 @@ static int __init ni65_probe1(struct net_device *dev,int ioaddr)
...
@@ -386,6 +391,7 @@ static int __init ni65_probe1(struct net_device *dev,int ioaddr)
if
(
(
j
=
readreg
(
CSR0
))
!=
0x4
)
{
if
(
(
j
=
readreg
(
CSR0
))
!=
0x4
)
{
printk
(
KERN_ERR
"can't RESET card: %04x
\n
"
,
j
);
printk
(
KERN_ERR
"can't RESET card: %04x
\n
"
,
j
);
ni65_free_buffer
(
p
);
ni65_free_buffer
(
p
);
release_region
(
ioaddr
,
cards
[
p
->
cardno
].
total_size
);
return
-
EAGAIN
;
return
-
EAGAIN
;
}
}
...
@@ -437,6 +443,7 @@ static int __init ni65_probe1(struct net_device *dev,int ioaddr)
...
@@ -437,6 +443,7 @@ static int __init ni65_probe1(struct net_device *dev,int ioaddr)
if
(
i
==
5
)
{
if
(
i
==
5
)
{
printk
(
"Can't detect DMA channel!
\n
"
);
printk
(
"Can't detect DMA channel!
\n
"
);
ni65_free_buffer
(
p
);
ni65_free_buffer
(
p
);
release_region
(
ioaddr
,
cards
[
p
->
cardno
].
total_size
);
return
-
EAGAIN
;
return
-
EAGAIN
;
}
}
dev
->
dma
=
dmatab
[
i
];
dev
->
dma
=
dmatab
[
i
];
...
@@ -459,6 +466,7 @@ static int __init ni65_probe1(struct net_device *dev,int ioaddr)
...
@@ -459,6 +466,7 @@ static int __init ni65_probe1(struct net_device *dev,int ioaddr)
{
{
printk
(
"Failed to detect IRQ line!
\n
"
);
printk
(
"Failed to detect IRQ line!
\n
"
);
ni65_free_buffer
(
p
);
ni65_free_buffer
(
p
);
release_region
(
ioaddr
,
cards
[
p
->
cardno
].
total_size
);
return
-
EAGAIN
;
return
-
EAGAIN
;
}
}
printk
(
"IRQ %d (autodetected).
\n
"
,
dev
->
irq
);
printk
(
"IRQ %d (autodetected).
\n
"
,
dev
->
irq
);
...
@@ -471,14 +479,10 @@ static int __init ni65_probe1(struct net_device *dev,int ioaddr)
...
@@ -471,14 +479,10 @@ static int __init ni65_probe1(struct net_device *dev,int ioaddr)
{
{
printk
(
"%s: Can't request dma-channel %d
\n
"
,
dev
->
name
,(
int
)
dev
->
dma
);
printk
(
"%s: Can't request dma-channel %d
\n
"
,
dev
->
name
,(
int
)
dev
->
dma
);
ni65_free_buffer
(
p
);
ni65_free_buffer
(
p
);
release_region
(
ioaddr
,
cards
[
p
->
cardno
].
total_size
);
return
-
EAGAIN
;
return
-
EAGAIN
;
}
}
/*
* Grab the region so we can find another board.
*/
request_region
(
ioaddr
,
cards
[
p
->
cardno
].
total_size
,
cards
[
p
->
cardno
].
cardname
);
dev
->
base_addr
=
ioaddr
;
dev
->
base_addr
=
ioaddr
;
dev
->
open
=
ni65_open
;
dev
->
open
=
ni65_open
;
...
...
drivers/net/pcmcia/ray_cs.c
View file @
56970f58
...
@@ -1316,9 +1316,12 @@ static int ray_dev_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
...
@@ -1316,9 +1316,12 @@ static int ray_dev_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
err
=
-
E2BIG
;
err
=
-
E2BIG
;
break
;
break
;
}
}
copy_from_user
(
card_essid
,
if
(
copy_from_user
(
card_essid
,
wrq
->
u
.
data
.
pointer
,
wrq
->
u
.
data
.
pointer
,
wrq
->
u
.
data
.
length
);
wrq
->
u
.
data
.
length
))
{
err
=
-
EFAULT
;
break
;
}
card_essid
[
IW_ESSID_MAX_SIZE
]
=
'\0'
;
card_essid
[
IW_ESSID_MAX_SIZE
]
=
'\0'
;
/* Set the ESSID in the card */
/* Set the ESSID in the card */
...
...
drivers/net/wan/comx-hw-comx.c
View file @
56970f58
...
@@ -466,16 +466,16 @@ static int COMX_open(struct net_device *dev)
...
@@ -466,16 +466,16 @@ static int COMX_open(struct net_device *dev)
}
}
if
(
!
twin_open
)
{
if
(
!
twin_open
)
{
if
(
check_region
(
dev
->
base_addr
,
hw
->
io_extent
))
{
if
(
!
request_region
(
dev
->
base_addr
,
hw
->
io_extent
,
dev
->
name
))
{
return
-
EAGAIN
;
return
-
EAGAIN
;
}
}
if
(
request_irq
(
dev
->
irq
,
COMX_interrupt
,
0
,
dev
->
name
,
if
(
request_irq
(
dev
->
irq
,
COMX_interrupt
,
0
,
dev
->
name
,
(
void
*
)
dev
))
{
(
void
*
)
dev
))
{
printk
(
KERN_ERR
"comx-hw-comx: unable to obtain irq %d
\n
"
,
dev
->
irq
);
printk
(
KERN_ERR
"comx-hw-comx: unable to obtain irq %d
\n
"
,
dev
->
irq
);
release_region
(
dev
->
base_addr
,
hw
->
io_extent
);
return
-
EAGAIN
;
return
-
EAGAIN
;
}
}
ch
->
init_status
|=
IRQ_ALLOCATED
;
ch
->
init_status
|=
IRQ_ALLOCATED
;
request_region
(
dev
->
base_addr
,
hw
->
io_extent
,
dev
->
name
);
if
(
!
ch
->
HW_load_board
||
ch
->
HW_load_board
(
dev
))
{
if
(
!
ch
->
HW_load_board
||
ch
->
HW_load_board
(
dev
))
{
ch
->
init_status
&=
~
IRQ_ALLOCATED
;
ch
->
init_status
&=
~
IRQ_ALLOCATED
;
retval
=-
ENODEV
;
retval
=-
ENODEV
;
...
...
drivers/net/wan/sdlamain.c
View file @
56970f58
...
@@ -604,7 +604,13 @@ static int setup (wan_device_t* wandev, wandev_conf_t* conf)
...
@@ -604,7 +604,13 @@ static int setup (wan_device_t* wandev, wandev_conf_t* conf)
/* Reserve I/O region and schedule background task */
/* Reserve I/O region and schedule background task */
if
(
card
->
hw
.
type
!=
SDLA_S514
&&
!
card
->
wandev
.
piggyback
)
if
(
card
->
hw
.
type
!=
SDLA_S514
&&
!
card
->
wandev
.
piggyback
)
request_region
(
card
->
hw
.
port
,
card
->
hw
.
io_range
,
wandev
->
name
);
if
(
!
request_region
(
card
->
hw
.
port
,
card
->
hw
.
io_range
,
wandev
->
name
))
{
printk
(
KERN_WARNING
"port 0x%04x busy
\n
"
,
card
->
hw
.
port
);
release_hw
(
card
);
wandev
->
state
=
WAN_UNCONFIGURED
;
return
-
EBUSY
;
}
/* Only use the polling routine for the X25 protocol */
/* Only use the polling routine for the X25 protocol */
...
...
drivers/pci/pci.ids
View file @
56970f58
...
@@ -2039,6 +2039,7 @@
...
@@ -2039,6 +2039,7 @@
8e2e 7000 KF-230TX
8e2e 7000 KF-230TX
8e2e 7100 KF-230TX/2
8e2e 7100 KF-230TX/2
a0a0 0007 ALN-325C
a0a0 0007 ALN-325C
8169 RTL-8169
10ed Ascii Corporation
10ed Ascii Corporation
7310 V7310
7310 V7310
10ee Xilinx, Inc.
10ee Xilinx, Inc.
...
...
include/linux/pci_ids.h
View file @
56970f58
...
@@ -912,6 +912,7 @@
...
@@ -912,6 +912,7 @@
#define PCI_DEVICE_ID_REALTEK_8029 0x8029
#define PCI_DEVICE_ID_REALTEK_8029 0x8029
#define PCI_DEVICE_ID_REALTEK_8129 0x8129
#define PCI_DEVICE_ID_REALTEK_8129 0x8129
#define PCI_DEVICE_ID_REALTEK_8139 0x8139
#define PCI_DEVICE_ID_REALTEK_8139 0x8139
#define PCI_DEVICE_ID_REALTEK_8169 0x8169
#define PCI_VENDOR_ID_XILINX 0x10ee
#define PCI_VENDOR_ID_XILINX 0x10ee
#define PCI_DEVICE_ID_TURBOPAM 0x4020
#define PCI_DEVICE_ID_TURBOPAM 0x4020
...
...
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