@ -10,6 +10,7 @@
# include <asm/io.h>
# include <asm/immap_85xx.h>
# include <asm/fsl_serdes.h>
# include <hwconfig.h>
u32 port_to_devdisr [ ] = {
[ FM1_DTSEC1 ] = FSL_CORENET_DEVDISR2_DTSEC1_1 ,
@ -46,17 +47,76 @@ void fman_enable_port(enum fm_port port)
phy_interface_t fman_port_enet_if ( enum fm_port port )
{
# if defined(CONFIG_B4860QDS)
u32 serdes2_prtcl ;
char buffer [ HWCONFIG_BUFFER_SIZE ] ;
char * buf = NULL ;
ccsr_gur_t * gur = ( void * ) ( CONFIG_SYS_MPC85xx_GUTS_ADDR ) ;
# endif
if ( is_device_disabled ( port ) )
return PHY_INTERFACE_MODE_NONE ;
/*B4860 has two 10Gig Mac*/
if ( ( port = = FM1_10GEC1 | | port = = FM1_10GEC2 ) & &
( ( is_serdes_configured ( XAUI_FM1_MAC9 ) ) | |
( is_serdes_configured ( XAUI_FM1_MAC10 ) ) | |
# if !defined(CONFIG_B4860QDS)
( is_serdes_configured ( XFI_FM1_MAC9 ) ) | |
( is_serdes_configured ( XFI_FM1_MAC10 ) ) ) )
( is_serdes_configured ( XFI_FM1_MAC10 ) ) | |
# endif
( is_serdes_configured ( XAUI_FM1_MAC10 ) )
) )
return PHY_INTERFACE_MODE_XGMII ;
# if defined(CONFIG_B4860QDS)
serdes2_prtcl = in_be32 ( & gur - > rcwsr [ 4 ] ) &
FSL_CORENET2_RCWSR4_SRDS2_PRTCL ;
if ( serdes2_prtcl ) {
serdes2_prtcl > > = FSL_CORENET2_RCWSR4_SRDS2_PRTCL_SHIFT ;
switch ( serdes2_prtcl ) {
case 0x80 :
case 0x81 :
case 0x82 :
case 0x83 :
case 0x84 :
case 0x85 :
case 0x86 :
case 0x87 :
case 0x88 :
case 0x89 :
case 0x8a :
case 0x8b :
case 0x8c :
case 0x8d :
case 0x8e :
case 0xb1 :
case 0xb2 :
/*
* Extract hwconfig from environment since environment
* is not setup yet
*/
getenv_f ( " hwconfig " , buffer , sizeof ( buffer ) ) ;
buf = buffer ;
/* check if XFI interface enable in hwconfig for 10g */
if ( hwconfig_subarg_cmp_f ( " fsl_b4860_serdes2 " ,
" sfp_amc " , " sfp " , buf ) ) {
if ( ( port = = FM1_10GEC1 | |
port = = FM1_10GEC2 ) & &
( ( is_serdes_configured ( XFI_FM1_MAC9 ) ) | |
( is_serdes_configured ( XFI_FM1_MAC10 ) ) ) )
return PHY_INTERFACE_MODE_XGMII ;
else if ( ( port = = FM1_DTSEC1 ) | |
( port = = FM1_DTSEC2 ) | |
( port = = FM1_DTSEC3 ) | |
( port = = FM1_DTSEC4 ) )
return PHY_INTERFACE_MODE_NONE ;
}
}
}
# endif
/* Fix me need to handle RGMII here first */
switch ( port ) {