@ -238,6 +238,26 @@ static void ft_fixup_port(void *blob, struct fm_eth_info *info, char *prop)
return ;
}
# ifdef CONFIG_SYS_FMAN_V3
/*
* Physically FM1_DTSEC9 and FM1_10GEC1 use the same dual - role MAC , when
* FM1_10GEC1 is enabled and FM1_DTSEC9 is disabled , ensure that the
* dual - role MAC is not disabled , ditto for other dual - role MACs .
*/
if ( ( ( info - > port = = FM1_DTSEC9 ) & & ( PORT_IS_ENABLED ( FM1_10GEC1 ) ) ) | |
( ( info - > port = = FM1_DTSEC10 ) & & ( PORT_IS_ENABLED ( FM1_10GEC2 ) ) ) | |
( ( info - > port = = FM1_10GEC1 ) & & ( PORT_IS_ENABLED ( FM1_DTSEC9 ) ) ) | |
( ( info - > port = = FM1_10GEC2 ) & & ( PORT_IS_ENABLED ( FM1_DTSEC10 ) ) )
# if (CONFIG_SYS_NUM_FMAN == 2)
| |
( ( info - > port = = FM2_DTSEC9 ) & & ( PORT_IS_ENABLED ( FM2_10GEC1 ) ) ) | |
( ( info - > port = = FM2_DTSEC10 ) & & ( PORT_IS_ENABLED ( FM2_10GEC2 ) ) ) | |
( ( info - > port = = FM2_10GEC1 ) & & ( PORT_IS_ENABLED ( FM2_DTSEC9 ) ) ) | |
( ( info - > port = = FM2_10GEC2 ) & & ( PORT_IS_ENABLED ( FM2_DTSEC10 ) ) )
# endif
)
return ;
# endif
/* board code might have caused offset to change */
off = fdt_node_offset_by_compat_reg ( blob , prop , paddr ) ;
@ -255,10 +275,15 @@ void fdt_fixup_fman_ethernet(void *blob)
{
int i ;
# ifdef CONFIG_SYS_FMAN_V3
for ( i = 0 ; i < ARRAY_SIZE ( fm_info ) ; i + + )
ft_fixup_port ( blob , & fm_info [ i ] , " fsl,fman-memac " ) ;
# else
for ( i = 0 ; i < ARRAY_SIZE ( fm_info ) ; i + + ) {
if ( fm_info [ i ] . type = = FM_ETH_1G_E )
ft_fixup_port ( blob , & fm_info [ i ] , " fsl,fman-1g-mac " ) ;
else
ft_fixup_port ( blob , & fm_info [ i ] , " fsl,fman-10g-mac " ) ;
}
# endif
}