mirror of
https://github.com/torvalds/linux.git
synced 2024-11-27 06:31:52 +00:00
Fix RTL8019AS init for Toshiba RBTX49xx boards
Ensure that 8-bit mode is selected for the on-board Realtek RTL8019AS chip on Toshiba RBHMA4x00, get rid of the duplicate #ifdef's when setting ei_status.word16. The chip's datasheet says that the PSTOP register shouldn't exceed 0x60 in 8-bit mode -- ensure this too. Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com> Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
This commit is contained in:
parent
8cd35da094
commit
aedc0e520e
@ -139,8 +139,9 @@ bad_clone_list[] __initdata = {
|
||||
|
||||
#if defined(CONFIG_PLAT_MAPPI)
|
||||
# define DCR_VAL 0x4b
|
||||
#elif defined(CONFIG_PLAT_OAKS32R)
|
||||
# define DCR_VAL 0x48
|
||||
#elif defined(CONFIG_PLAT_OAKS32R) || \
|
||||
defined(CONFIG_TOSHIBA_RBTX4927) || defined(CONFIG_TOSHIBA_RBTX4938)
|
||||
# define DCR_VAL 0x48 /* 8-bit mode */
|
||||
#else
|
||||
# define DCR_VAL 0x49
|
||||
#endif
|
||||
@ -396,10 +397,22 @@ static int __init ne_probe1(struct net_device *dev, int ioaddr)
|
||||
/* We must set the 8390 for word mode. */
|
||||
outb_p(DCR_VAL, ioaddr + EN0_DCFG);
|
||||
start_page = NESM_START_PG;
|
||||
stop_page = NESM_STOP_PG;
|
||||
|
||||
/*
|
||||
* Realtek RTL8019AS datasheet says that the PSTOP register
|
||||
* shouldn't exceed 0x60 in 8-bit mode.
|
||||
* This chip can be identified by reading the signature from
|
||||
* the remote byte count registers (otherwise write-only)...
|
||||
*/
|
||||
if ((DCR_VAL & 0x01) == 0 && /* 8-bit mode */
|
||||
inb(ioaddr + EN0_RCNTLO) == 0x50 &&
|
||||
inb(ioaddr + EN0_RCNTHI) == 0x70)
|
||||
stop_page = 0x60;
|
||||
else
|
||||
stop_page = NESM_STOP_PG;
|
||||
} else {
|
||||
start_page = NE1SM_START_PG;
|
||||
stop_page = NE1SM_STOP_PG;
|
||||
stop_page = NE1SM_STOP_PG;
|
||||
}
|
||||
|
||||
#if defined(CONFIG_PLAT_MAPPI) || defined(CONFIG_PLAT_OAKS32R)
|
||||
@ -509,15 +522,9 @@ static int __init ne_probe1(struct net_device *dev, int ioaddr)
|
||||
ei_status.name = name;
|
||||
ei_status.tx_start_page = start_page;
|
||||
ei_status.stop_page = stop_page;
|
||||
#if defined(CONFIG_TOSHIBA_RBTX4927) || defined(CONFIG_TOSHIBA_RBTX4938)
|
||||
wordlength = 1;
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_PLAT_OAKS32R
|
||||
ei_status.word16 = 0;
|
||||
#else
|
||||
ei_status.word16 = (wordlength == 2);
|
||||
#endif
|
||||
/* Use 16-bit mode only if this wasn't overridden by DCR_VAL */
|
||||
ei_status.word16 = (wordlength == 2 && (DCR_VAL & 0x01));
|
||||
|
||||
ei_status.rx_start_page = start_page + TX_PAGES;
|
||||
#ifdef PACKETBUF_MEMSIZE
|
||||
|
Loading…
Reference in New Issue
Block a user