mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-09-21 07:01:57 +00:00
Patch by Robert Schwebel, April 02, 2003:
fix for SMSC91111 driver
This commit is contained in:
parent
8b601449e8
commit
487778b781
3 changed files with 18 additions and 1 deletions
|
@ -2,6 +2,9 @@
|
||||||
Changes since U-Boot 0.3.1:
|
Changes since U-Boot 0.3.1:
|
||||||
======================================================================
|
======================================================================
|
||||||
|
|
||||||
|
* Patch by Robert Schwebel, April 02, 2003:
|
||||||
|
fix for SMSC91111 driver
|
||||||
|
|
||||||
* Patch by Vladimir Gurevich, 04 Jun 2003:
|
* Patch by Vladimir Gurevich, 04 Jun 2003:
|
||||||
make ppc405 ethernet driver compatible with CONFIG_NET_MULTI option
|
make ppc405 ethernet driver compatible with CONFIG_NET_MULTI option
|
||||||
|
|
||||||
|
|
|
@ -317,6 +317,17 @@ static int poll4int( byte mask, int timeout ) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Only one release command at a time, please */
|
||||||
|
static inline void smc_wait_mmu_release_complete(void)
|
||||||
|
{
|
||||||
|
int count = 0;
|
||||||
|
/* assume bank 2 selected */
|
||||||
|
while ( SMC_inw(MMU_CMD_REG) & MC_BUSY ) {
|
||||||
|
udelay(1); // Wait until not busy
|
||||||
|
if( ++count > 200) break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
. Function: smc_reset( void )
|
. Function: smc_reset( void )
|
||||||
. Purpose:
|
. Purpose:
|
||||||
|
@ -374,6 +385,7 @@ static void smc_reset( void )
|
||||||
|
|
||||||
/* Reset the MMU */
|
/* Reset the MMU */
|
||||||
SMC_SELECT_BANK( 2 );
|
SMC_SELECT_BANK( 2 );
|
||||||
|
smc_wait_mmu_release_complete();
|
||||||
SMC_outw( MC_RESET, MMU_CMD_REG );
|
SMC_outw( MC_RESET, MMU_CMD_REG );
|
||||||
while ( SMC_inw( MMU_CMD_REG ) & MC_BUSY )
|
while ( SMC_inw( MMU_CMD_REG ) & MC_BUSY )
|
||||||
udelay(1); /* Wait until not busy */
|
udelay(1); /* Wait until not busy */
|
||||||
|
@ -674,6 +686,8 @@ static int smc_open()
|
||||||
/* SMC_SELECT_BANK(0); */
|
/* SMC_SELECT_BANK(0); */
|
||||||
/* SMC_outw(0, RPC_REG); */
|
/* SMC_outw(0, RPC_REG); */
|
||||||
|
|
||||||
|
SMC_SELECT_BANK(1);
|
||||||
|
|
||||||
#ifdef USE_32_BIT
|
#ifdef USE_32_BIT
|
||||||
for ( i = 0; i < 6; i += 2 ) {
|
for ( i = 0; i < 6; i += 2 ) {
|
||||||
word address;
|
word address;
|
||||||
|
|
|
@ -80,7 +80,7 @@ typedef unsigned long int dword;
|
||||||
#define SMC_inw(r) (*((volatile word *)(SMC_BASE_ADDRESS+(r))))
|
#define SMC_inw(r) (*((volatile word *)(SMC_BASE_ADDRESS+(r))))
|
||||||
#define SMC_inb(p) ({ \
|
#define SMC_inb(p) ({ \
|
||||||
unsigned int __p = (unsigned int)(SMC_BASE_ADDRESS + (p)); \
|
unsigned int __p = (unsigned int)(SMC_BASE_ADDRESS + (p)); \
|
||||||
unsigned int __v = *(volatile unsigned short *)((SMC_BASE_ADDRESS + __p) & ~1); \
|
unsigned int __v = *(volatile unsigned short *)((__p) & ~1); \
|
||||||
if (__p & 1) __v >>= 8; \
|
if (__p & 1) __v >>= 8; \
|
||||||
else __v &= 0xff; \
|
else __v &= 0xff; \
|
||||||
__v; })
|
__v; })
|
||||||
|
|
Loading…
Reference in a new issue