@ -44,7 +44,7 @@
* RX descriptor address up to the next cache line boundary .
* RX descriptor address up to the next cache line boundary .
* 16 - Jan - 00 Added support for booting with IP of 0x0 MKW
* 16 - Jan - 00 Added support for booting with IP of 0x0 MKW
* 15 - Mar - 00 Updated enetInit ( ) to enable broadcast addresses in the
* 15 - Mar - 00 Updated enetInit ( ) to enable broadcast addresses in the
* EMAC_RXM register . JWB
* EMAC0 _RXM register . JWB
* 12 - Mar - 01 anne - sophie . harnois @ nextream . fr
* 12 - Mar - 01 anne - sophie . harnois @ nextream . fr
* - Variables are compatible with those already defined in
* - Variables are compatible with those already defined in
* include / net . h
* include / net . h
@ -58,7 +58,7 @@
* 08 - May - 01 stefan . roese @ esd - electronics . com
* 08 - May - 01 stefan . roese @ esd - electronics . com
* - MAL error handling added ( eth_init called again )
* - MAL error handling added ( eth_init called again )
* 13 - Nov - 01 stefan . roese @ esd - electronics . com
* 13 - Nov - 01 stefan . roese @ esd - electronics . com
* - Set IST bit in EMAC_M1 reg upon 100 MBit or full duplex
* - Set IST bit in EMAC0 _MR 1 reg upon 100 MBit or full duplex
* 04 - Jan - 02 stefan . roese @ esd - electronics . com
* 04 - Jan - 02 stefan . roese @ esd - electronics . com
* - Wait for PHY auto negotiation to complete added
* - Wait for PHY auto negotiation to complete added
* 06 - Feb - 02 stefan . roese @ esd - electronics . com
* 06 - Feb - 02 stefan . roese @ esd - electronics . com
@ -359,7 +359,7 @@ static void ppc_4xx_eth_halt (struct eth_device *dev)
EMAC_4XX_HW_PST hw_p = dev - > priv ;
EMAC_4XX_HW_PST hw_p = dev - > priv ;
u32 val = 10000 ;
u32 val = 10000 ;
out_be32 ( ( void * ) EMAC_IER + hw_p - > hw_addr , 0x00000000 ) ; /* disable emac interrupts */
out_be32 ( ( void * ) EMAC0 _IER + hw_p - > hw_addr , 0x00000000 ) ; /* disable emac interrupts */
/* 1st reset MAL channel */
/* 1st reset MAL channel */
/* Note: writing a 0 to a channel has no effect */
/* Note: writing a 0 to a channel has no effect */
@ -382,7 +382,7 @@ static void ppc_4xx_eth_halt (struct eth_device *dev)
emac_loopback_enable ( hw_p ) ;
emac_loopback_enable ( hw_p ) ;
/* EMAC RESET */
/* EMAC RESET */
out_be32 ( ( void * ) EMAC_M0 + hw_p - > hw_addr , EMAC_M0_SRST ) ;
out_be32 ( ( void * ) EMAC0 _MR 0 + hw_p - > hw_addr , EMAC_MR 0_SRST ) ;
/* remove clocks for EMAC internal loopback */
/* remove clocks for EMAC internal loopback */
emac_loopback_disable ( hw_p ) ;
emac_loopback_disable ( hw_p ) ;
@ -485,7 +485,7 @@ int ppc_4xx_eth_setup_bridge(int devnum, bd_t * bis)
/* Ensure we setup mdio for this devnum and ONLY this devnum */
/* Ensure we setup mdio for this devnum and ONLY this devnum */
zmiifer | = ( ZMII_FER_MDI ) < < ZMII_FER_V ( devnum ) ;
zmiifer | = ( ZMII_FER_MDI ) < < ZMII_FER_V ( devnum ) ;
out_be32 ( ( void * ) ZMII_FER , zmiifer ) ;
out_be32 ( ( void * ) ZMII0 _FER , zmiifer ) ;
out_be32 ( ( void * ) RGMII_FER , rmiifer ) ;
out_be32 ( ( void * ) RGMII_FER , rmiifer ) ;
return ( ( int ) pfc1 ) ;
return ( ( int ) pfc1 ) ;
@ -504,21 +504,21 @@ int ppc_4xx_eth_setup_bridge(int devnum, bd_t * bis)
switch ( pfc1 ) {
switch ( pfc1 ) {
case SDR0_PFC1_SELECT_CONFIG_2 :
case SDR0_PFC1_SELECT_CONFIG_2 :
/* 1 x GMII port */
/* 1 x GMII port */
out_be32 ( ( void * ) ZMII_FER , 0x00 ) ;
out_be32 ( ( void * ) ZMII0 _FER , 0x00 ) ;
out_be32 ( ( void * ) RGMII_FER , 0x00000037 ) ;
out_be32 ( ( void * ) RGMII_FER , 0x00000037 ) ;
bis - > bi_phymode [ 0 ] = BI_PHYMODE_GMII ;
bis - > bi_phymode [ 0 ] = BI_PHYMODE_GMII ;
bis - > bi_phymode [ 1 ] = BI_PHYMODE_NONE ;
bis - > bi_phymode [ 1 ] = BI_PHYMODE_NONE ;
break ;
break ;
case SDR0_PFC1_SELECT_CONFIG_4 :
case SDR0_PFC1_SELECT_CONFIG_4 :
/* 2 x RGMII ports */
/* 2 x RGMII ports */
out_be32 ( ( void * ) ZMII_FER , 0x00 ) ;
out_be32 ( ( void * ) ZMII0 _FER , 0x00 ) ;
out_be32 ( ( void * ) RGMII_FER , 0x00000055 ) ;
out_be32 ( ( void * ) RGMII_FER , 0x00000055 ) ;
bis - > bi_phymode [ 0 ] = BI_PHYMODE_RGMII ;
bis - > bi_phymode [ 0 ] = BI_PHYMODE_RGMII ;
bis - > bi_phymode [ 1 ] = BI_PHYMODE_RGMII ;
bis - > bi_phymode [ 1 ] = BI_PHYMODE_RGMII ;
break ;
break ;
case SDR0_PFC1_SELECT_CONFIG_6 :
case SDR0_PFC1_SELECT_CONFIG_6 :
/* 2 x SMII ports */
/* 2 x SMII ports */
out_be32 ( ( void * ) ZMII_FER ,
out_be32 ( ( void * ) ZMII0 _FER ,
( ( ZMII_FER_SMII ) < < ZMII_FER_V ( 0 ) ) |
( ( ZMII_FER_SMII ) < < ZMII_FER_V ( 0 ) ) |
( ( ZMII_FER_SMII ) < < ZMII_FER_V ( 1 ) ) ) ;
( ( ZMII_FER_SMII ) < < ZMII_FER_V ( 1 ) ) ) ;
out_be32 ( ( void * ) RGMII_FER , 0x00000000 ) ;
out_be32 ( ( void * ) RGMII_FER , 0x00000000 ) ;
@ -527,7 +527,7 @@ int ppc_4xx_eth_setup_bridge(int devnum, bd_t * bis)
break ;
break ;
case SDR0_PFC1_SELECT_CONFIG_1_2 :
case SDR0_PFC1_SELECT_CONFIG_1_2 :
/* only 1 x MII supported */
/* only 1 x MII supported */
out_be32 ( ( void * ) ZMII_FER , ( ZMII_FER_MII ) < < ZMII_FER_V ( 0 ) ) ;
out_be32 ( ( void * ) ZMII0 _FER , ( ZMII_FER_MII ) < < ZMII_FER_V ( 0 ) ) ;
out_be32 ( ( void * ) RGMII_FER , 0x00000000 ) ;
out_be32 ( ( void * ) RGMII_FER , 0x00000000 ) ;
bis - > bi_phymode [ 0 ] = BI_PHYMODE_MII ;
bis - > bi_phymode [ 0 ] = BI_PHYMODE_MII ;
bis - > bi_phymode [ 1 ] = BI_PHYMODE_NONE ;
bis - > bi_phymode [ 1 ] = BI_PHYMODE_NONE ;
@ -537,9 +537,9 @@ int ppc_4xx_eth_setup_bridge(int devnum, bd_t * bis)
}
}
/* Ensure we setup mdio for this devnum and ONLY this devnum */
/* Ensure we setup mdio for this devnum and ONLY this devnum */
zmiifer = in_be32 ( ( void * ) ZMII_FER ) ;
zmiifer = in_be32 ( ( void * ) ZMII0 _FER ) ;
zmiifer | = ( ZMII_FER_MDI ) < < ZMII_FER_V ( devnum ) ;
zmiifer | = ( ZMII_FER_MDI ) < < ZMII_FER_V ( devnum ) ;
out_be32 ( ( void * ) ZMII_FER , zmiifer ) ;
out_be32 ( ( void * ) ZMII0 _FER , zmiifer ) ;
return ( ( int ) 0x0 ) ;
return ( ( int ) 0x0 ) ;
}
}
@ -953,18 +953,18 @@ static int ppc_4xx_eth_init (struct eth_device *dev, bd_t * bis)
/* NOTE: Therefore, disable all other EMACS, since we handle */
/* NOTE: Therefore, disable all other EMACS, since we handle */
/* NOTE: only one emac at a time */
/* NOTE: only one emac at a time */
reg = 0 ;
reg = 0 ;
out_be32 ( ( void * ) ZMII_FER , 0 ) ;
out_be32 ( ( void * ) ZMII0 _FER , 0 ) ;
udelay ( 100 ) ;
udelay ( 100 ) ;
# if defined(CONFIG_440GP) || defined(CONFIG_440EP) || defined(CONFIG_440GR)
# if defined(CONFIG_440GP) || defined(CONFIG_440EP) || defined(CONFIG_440GR)
out_be32 ( ( void * ) ZMII_FER , ( ZMII_FER_RMII | ZMII_FER_MDI ) < < ZMII_FER_V ( devnum ) ) ;
out_be32 ( ( void * ) ZMII0 _FER , ( ZMII_FER_RMII | ZMII_FER_MDI ) < < ZMII_FER_V ( devnum ) ) ;
# elif defined(CONFIG_440GX) || \
# elif defined(CONFIG_440GX) || \
defined ( CONFIG_440EPX ) | | defined ( CONFIG_440GRX ) | | \
defined ( CONFIG_440EPX ) | | defined ( CONFIG_440GRX ) | | \
defined ( CONFIG_460EX ) | | defined ( CONFIG_460GT )
defined ( CONFIG_460EX ) | | defined ( CONFIG_460GT )
ethgroup = ppc_4xx_eth_setup_bridge ( devnum , bis ) ;
ethgroup = ppc_4xx_eth_setup_bridge ( devnum , bis ) ;
# endif
# endif
out_be32 ( ( void * ) ZMII_SSR , ZMII_SSR_SP < < ZMII_SSR_V ( devnum ) ) ;
out_be32 ( ( void * ) ZMII0 _SSR , ZMII0 _SSR_SP < < ZMII0 _SSR_V ( devnum ) ) ;
# endif /* defined(CONFIG_440) && !defined(CONFIG_440SP) */
# endif /* defined(CONFIG_440) && !defined(CONFIG_440SP) */
# if defined(CONFIG_405EX)
# if defined(CONFIG_405EX)
ethgroup = ppc_4xx_eth_setup_bridge ( devnum , bis ) ;
ethgroup = ppc_4xx_eth_setup_bridge ( devnum , bis ) ;
@ -976,13 +976,13 @@ static int ppc_4xx_eth_init (struct eth_device *dev, bd_t * bis)
emac_loopback_enable ( hw_p ) ;
emac_loopback_enable ( hw_p ) ;
/* EMAC RESET */
/* EMAC RESET */
out_be32 ( ( void * ) EMAC_M0 + hw_p - > hw_addr , EMAC_M0_SRST ) ;
out_be32 ( ( void * ) EMAC0 _MR 0 + hw_p - > hw_addr , EMAC_MR 0_SRST ) ;
/* remove clocks for EMAC internal loopback */
/* remove clocks for EMAC internal loopback */
emac_loopback_disable ( hw_p ) ;
emac_loopback_disable ( hw_p ) ;
failsafe = 1000 ;
failsafe = 1000 ;
while ( ( in_be32 ( ( void * ) EMAC_M0 + hw_p - > hw_addr ) & ( EMAC_M0_SRST ) ) & & failsafe ) {
while ( ( in_be32 ( ( void * ) EMAC0 _MR 0 + hw_p - > hw_addr ) & ( EMAC_MR 0_SRST ) ) & & failsafe ) {
udelay ( 1000 ) ;
udelay ( 1000 ) ;
failsafe - - ;
failsafe - - ;
}
}
@ -1000,15 +1000,15 @@ static int ppc_4xx_eth_init (struct eth_device *dev, bd_t * bis)
opbfreq = sysinfo . freqOPB / 1000000 ;
opbfreq = sysinfo . freqOPB / 1000000 ;
if ( opbfreq < = 50 ) ;
if ( opbfreq < = 50 ) ;
else if ( opbfreq < = 66 )
else if ( opbfreq < = 66 )
mode_reg | = EMAC_M1_OBCI_66 ;
mode_reg | = EMAC_MR 1_OBCI_66 ;
else if ( opbfreq < = 83 )
else if ( opbfreq < = 83 )
mode_reg | = EMAC_M1_OBCI_83 ;
mode_reg | = EMAC_MR 1_OBCI_83 ;
else if ( opbfreq < = 100 )
else if ( opbfreq < = 100 )
mode_reg | = EMAC_M1_OBCI_100 ;
mode_reg | = EMAC_MR 1_OBCI_100 ;
else
else
mode_reg | = EMAC_M1_OBCI_GT100 ;
mode_reg | = EMAC_MR 1_OBCI_GT100 ;
out_be32 ( ( void * ) EMAC_M1 + hw_p - > hw_addr , mode_reg ) ;
out_be32 ( ( void * ) EMAC0 _MR 1 + hw_p - > hw_addr , mode_reg ) ;
# endif /* defined(CONFIG_440GX) || defined(CONFIG_440SP) */
# endif /* defined(CONFIG_440GX) || defined(CONFIG_440SP) */
# if defined(CONFIG_GPCS_PHY_ADDR) || defined(CONFIG_GPCS_PHY1_ADDR) || \
# if defined(CONFIG_GPCS_PHY_ADDR) || defined(CONFIG_GPCS_PHY1_ADDR) || \
@ -1041,9 +1041,9 @@ static int ppc_4xx_eth_init (struct eth_device *dev, bd_t * bis)
# endif
# endif
}
}
mode_reg = in_be32 ( ( void * ) EMAC_M1 + hw_p - > hw_addr ) ;
mode_reg = in_be32 ( ( void * ) EMAC0 _MR 1 + hw_p - > hw_addr ) ;
mode_reg | = EMAC_M1_MF_1000GPCS | EMAC_M1_IPPA_SET ( reg ) ;
mode_reg | = EMAC_MR 1_MF_1000GPCS | EMAC_MR 1_IPPA_SET ( reg ) ;
out_be32 ( ( void * ) EMAC_M1 + hw_p - > hw_addr , mode_reg ) ;
out_be32 ( ( void * ) EMAC0 _MR 1 + hw_p - > hw_addr , mode_reg ) ;
/* Configure GPCS interface to recommended setting for SGMII */
/* Configure GPCS interface to recommended setting for SGMII */
miiphy_reset ( dev - > name , reg ) ;
miiphy_reset ( dev - > name , reg ) ;
@ -1250,11 +1250,11 @@ get_speed:
# endif
# endif
/* Set ZMII/RGMII speed according to the phy link speed */
/* Set ZMII/RGMII speed according to the phy link speed */
reg = in_be32 ( ( void * ) ZMII_SSR ) ;
reg = in_be32 ( ( void * ) ZMII0 _SSR ) ;
if ( ( speed = = 100 ) | | ( speed = = 1000 ) )
if ( ( speed = = 100 ) | | ( speed = = 1000 ) )
out_be32 ( ( void * ) ZMII_SSR , reg | ( ZMII_SSR_SP < < ZMII_SSR_V ( devnum ) ) ) ;
out_be32 ( ( void * ) ZMII0 _SSR , reg | ( ZMII0 _SSR_SP < < ZMII0 _SSR_V ( devnum ) ) ) ;
else
else
out_be32 ( ( void * ) ZMII_SSR , reg & ( ~ ( ZMII_SSR_SP < < ZMII_SSR_V ( devnum ) ) ) ) ;
out_be32 ( ( void * ) ZMII0 _SSR , reg & ( ~ ( ZMII0 _SSR_SP < < ZMII0 _SSR_V ( devnum ) ) ) ) ;
if ( ( devnum = = 2 ) | | ( devnum = = 3 ) ) {
if ( ( devnum = = 2 ) | | ( devnum = = 3 ) ) {
if ( speed = = 1000 )
if ( speed = = 1000 )
@ -1381,7 +1381,7 @@ get_speed:
reg = reg < < 8 ;
reg = reg < < 8 ;
reg | = dev - > enetaddr [ 1 ] ;
reg | = dev - > enetaddr [ 1 ] ;
out_be32 ( ( void * ) EMAC_IAH + hw_p - > hw_addr , reg ) ;
out_be32 ( ( void * ) EMAC0 _IAH + hw_p - > hw_addr , reg ) ;
reg = 0x00000000 ;
reg = 0x00000000 ;
reg | = dev - > enetaddr [ 2 ] ; /* set low address */
reg | = dev - > enetaddr [ 2 ] ; /* set low address */
@ -1392,7 +1392,7 @@ get_speed:
reg = reg < < 8 ;
reg = reg < < 8 ;
reg | = dev - > enetaddr [ 5 ] ;
reg | = dev - > enetaddr [ 5 ] ;
out_be32 ( ( void * ) EMAC_IAL + hw_p - > hw_addr , reg ) ;
out_be32 ( ( void * ) EMAC0 _IAL + hw_p - > hw_addr , reg ) ;
switch ( devnum ) {
switch ( devnum ) {
case 1 :
case 1 :
@ -1480,9 +1480,9 @@ get_speed:
mtdcr ( MAL0_RXCASR , ( MAL_TXRX_CASR > > hw_p - > devnum ) ) ;
mtdcr ( MAL0_RXCASR , ( MAL_TXRX_CASR > > hw_p - > devnum ) ) ;
/* set transmit enable & receive enable */
/* set transmit enable & receive enable */
out_be32 ( ( void * ) EMAC_M0 + hw_p - > hw_addr , EMAC_M0_TXE | EMAC_M0_RXE ) ;
out_be32 ( ( void * ) EMAC0 _MR 0 + hw_p - > hw_addr , EMAC_MR 0_TXE | EMAC_MR 0_RXE ) ;
mode_reg = in_be32 ( ( void * ) EMAC_M1 + hw_p - > hw_addr ) ;
mode_reg = in_be32 ( ( void * ) EMAC0 _MR 1 + hw_p - > hw_addr ) ;
/* set rx-/tx-fifo size */
/* set rx-/tx-fifo size */
mode_reg = ( mode_reg & ~ EMAC_MR1_FIFO_MASK ) | EMAC_MR1_FIFO_SIZE ;
mode_reg = ( mode_reg & ~ EMAC_MR1_FIFO_MASK ) | EMAC_MR1_FIFO_SIZE ;
@ -1497,47 +1497,47 @@ get_speed:
pfc1 | = SDR0_PFC1_EM_1000 ;
pfc1 | = SDR0_PFC1_EM_1000 ;
mtsdr ( SDR0_PFC1 , pfc1 ) ;
mtsdr ( SDR0_PFC1 , pfc1 ) ;
# endif
# endif
mode_reg = mode_reg | EMAC_M1_MF_1000MBPS | EMAC_M1_IST ;
mode_reg = mode_reg | EMAC_MR 1_MF_1000MBPS | EMAC_MR 1_IST ;
} else if ( speed = = _100BASET )
} else if ( speed = = _100BASET )
mode_reg = mode_reg | EMAC_M1_MF_100MBPS | EMAC_M1_IST ;
mode_reg = mode_reg | EMAC_MR 1_MF_100MBPS | EMAC_MR 1_IST ;
else
else
mode_reg = mode_reg & ~ 0x00C00000 ; /* 10 MBPS */
mode_reg = mode_reg & ~ 0x00C00000 ; /* 10 MBPS */
if ( duplex = = FULL )
if ( duplex = = FULL )
mode_reg = mode_reg | 0x80000000 | EMAC_M1_IST ;
mode_reg = mode_reg | 0x80000000 | EMAC_MR 1_IST ;
out_be32 ( ( void * ) EMAC_M1 + hw_p - > hw_addr , mode_reg ) ;
out_be32 ( ( void * ) EMAC0 _MR 1 + hw_p - > hw_addr , mode_reg ) ;
/* Enable broadcast and indvidual address */
/* Enable broadcast and indvidual address */
/* TBS: enabling runts as some misbehaved nics will send runts */
/* TBS: enabling runts as some misbehaved nics will send runts */
out_be32 ( ( void * ) EMAC_RXM + hw_p - > hw_addr , EMAC_RMR_BAE | EMAC_RMR_IAE ) ;
out_be32 ( ( void * ) EMAC0 _RXM + hw_p - > hw_addr , EMAC_RMR_BAE | EMAC_RMR_IAE ) ;
/* we probably need to set the tx mode1 reg? maybe at tx time */
/* we probably need to set the tx mode1 reg? maybe at tx time */
/* set transmit request threshold register */
/* set transmit request threshold register */
out_be32 ( ( void * ) EMAC_TRTR + hw_p - > hw_addr , 0x18000000 ) ; /* 256 byte threshold */
out_be32 ( ( void * ) EMAC0 _TRTR + hw_p - > hw_addr , 0x18000000 ) ; /* 256 byte threshold */
/* set receive low/high water mark register */
/* set receive low/high water mark register */
# if defined(CONFIG_440)
# if defined(CONFIG_440)
/* 440s has a 64 byte burst length */
/* 440s has a 64 byte burst length */
out_be32 ( ( void * ) EMAC_RX_HI_LO_WMARK + hw_p - > hw_addr , 0x80009000 ) ;
out_be32 ( ( void * ) EMAC0 _RX_HI_LO_WMARK + hw_p - > hw_addr , 0x80009000 ) ;
# else
# else
/* 405s have a 16 byte burst length */
/* 405s have a 16 byte burst length */
out_be32 ( ( void * ) EMAC_RX_HI_LO_WMARK + hw_p - > hw_addr , 0x0f002000 ) ;
out_be32 ( ( void * ) EMAC0 _RX_HI_LO_WMARK + hw_p - > hw_addr , 0x0f002000 ) ;
# endif /* defined(CONFIG_440) */
# endif /* defined(CONFIG_440) */
out_be32 ( ( void * ) EMAC_TX M1 + hw_p - > hw_addr , 0xf8640000 ) ;
out_be32 ( ( void * ) EMAC0 _TMR 1 + hw_p - > hw_addr , 0xf8640000 ) ;
/* Set fifo limit entry in tx mode 0 */
/* Set fifo limit entry in tx mode 0 */
out_be32 ( ( void * ) EMAC_TX M0 + hw_p - > hw_addr , 0x00000003 ) ;
out_be32 ( ( void * ) EMAC0 _TMR 0 + hw_p - > hw_addr , 0x00000003 ) ;
/* Frame gap set */
/* Frame gap set */
out_be32 ( ( void * ) EMAC_I_FRAME_GAP_REG + hw_p - > hw_addr , 0x00000008 ) ;
out_be32 ( ( void * ) EMAC0 _I_FRAME_GAP_REG + hw_p - > hw_addr , 0x00000008 ) ;
/* Set EMAC IER */
/* Set EMAC IER */
hw_p - > emac_ier = EMAC_ISR_PTLE | EMAC_ISR_BFCS | EMAC_ISR_ORE | EMAC_ISR_IRE ;
hw_p - > emac_ier = EMAC_ISR_PTLE | EMAC_ISR_BFCS | EMAC_ISR_ORE | EMAC_ISR_IRE ;
if ( speed = = _100BASET )
if ( speed = = _100BASET )
hw_p - > emac_ier = hw_p - > emac_ier | EMAC_ISR_SYE ;
hw_p - > emac_ier = hw_p - > emac_ier | EMAC_ISR_SYE ;
out_be32 ( ( void * ) EMAC_ISR + hw_p - > hw_addr , 0xffffffff ) ; /* clear pending interrupts */
out_be32 ( ( void * ) EMAC0 _ISR + hw_p - > hw_addr , 0xffffffff ) ; /* clear pending interrupts */
out_be32 ( ( void * ) EMAC_IER + hw_p - > hw_addr , hw_p - > emac_ier ) ;
out_be32 ( ( void * ) EMAC0 _IER + hw_p - > hw_addr , hw_p - > emac_ier ) ;
if ( hw_p - > first_init = = 0 ) {
if ( hw_p - > first_init = = 0 ) {
/*
/*
@ -1596,8 +1596,8 @@ static int ppc_4xx_eth_send (struct eth_device *dev, volatile void *ptr,
sync ( ) ;
sync ( ) ;
out_be32 ( ( void * ) EMAC_TX M0 + hw_p - > hw_addr ,
out_be32 ( ( void * ) EMAC0 _TMR 0 + hw_p - > hw_addr ,
in_be32 ( ( void * ) EMAC_TX M0 + hw_p - > hw_addr ) | EMAC_TX M0_GNP0 ) ;
in_be32 ( ( void * ) EMAC0 _TMR 0 + hw_p - > hw_addr ) | EMAC_TMR 0_GNP0 ) ;
# ifdef INFO_4XX_ENET
# ifdef INFO_4XX_ENET
hw_p - > stats . pkts_tx + + ;
hw_p - > stats . pkts_tx + + ;
# endif
# endif
@ -1607,9 +1607,9 @@ static int ppc_4xx_eth_send (struct eth_device *dev, volatile void *ptr,
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
time_start = get_timer ( 0 ) ;
time_start = get_timer ( 0 ) ;
while ( 1 ) {
while ( 1 ) {
temp_txm0 = in_be32 ( ( void * ) EMAC_TX M0 + hw_p - > hw_addr ) ;
temp_txm0 = in_be32 ( ( void * ) EMAC0 _TMR 0 + hw_p - > hw_addr ) ;
/* loop until either TINT turns on or 3 seconds elapse */
/* loop until either TINT turns on or 3 seconds elapse */
if ( ( temp_txm0 & EMAC_TX M0_GNP0 ) ! = 0 ) {
if ( ( temp_txm0 & EMAC_TMR 0_GNP0 ) ! = 0 ) {
/* transmit is done, so now check for errors
/* transmit is done, so now check for errors
* If there is an error , an interrupt should
* If there is an error , an interrupt should
* happen when we return
* happen when we return
@ -1678,7 +1678,7 @@ int enetInt (struct eth_device *dev)
/* look for EMAC errors */
/* look for EMAC errors */
if ( ( uic_emac & UIC_ETHx ) | | ( uic_emac_b & UIC_ETHxB ) ) {
if ( ( uic_emac & UIC_ETHx ) | | ( uic_emac_b & UIC_ETHxB ) ) {
emac_isr = in_be32 ( ( void * ) EMAC_ISR + hw_p - > hw_addr ) ;
emac_isr = in_be32 ( ( void * ) EMAC0 _ISR + hw_p - > hw_addr ) ;
emac_err ( dev , emac_isr ) ;
emac_err ( dev , emac_isr ) ;
/* clear EMAC error interrupt status bits */
/* clear EMAC error interrupt status bits */
@ -1761,7 +1761,7 @@ static void emac_err (struct eth_device *dev, unsigned long isr)
EMAC_4XX_HW_PST hw_p = dev - > priv ;
EMAC_4XX_HW_PST hw_p = dev - > priv ;
printf ( " EMAC%d error occured.... ISR = %lx \n " , hw_p - > devnum , isr ) ;
printf ( " EMAC%d error occured.... ISR = %lx \n " , hw_p - > devnum , isr ) ;
out_be32 ( ( void * ) EMAC_ISR + hw_p - > hw_addr , isr ) ;
out_be32 ( ( void * ) EMAC0 _ISR + hw_p - > hw_addr , isr ) ;
}
}
/*-----------------------------------------------------------------------------+
/*-----------------------------------------------------------------------------+