#ifndef LIP_PHY_CFG_DEFS_H
#define LIP_PHY_CFG_DEFS_H

#include "lip_config.h"

#if defined LIP_CFG_PHY_SUPPORT_ALL && LIP_CFG_PHY_SUPPORT_ALL
    #define LIP_PHY_SUPPORT_DP83848J    1
#elif defined LIP_CFG_PHY_SUPPORT_DP83848J
    #define LIP_PHY_SUPPORT_DP83848J    LIP_CFG_PHY_SUPPORT_DP83848J
#else
    #define LIP_PHY_SUPPORT_DP83848J    0
#endif

#if defined LIP_CFG_PHY_SUPPORT_ALL && LIP_CFG_PHY_SUPPORT_ALL
    #define LIP_PHY_SUPPORT_DP83848C    1
#elif defined LIP_CFG_PHY_SUPPORT_DP83848C
    #define LIP_PHY_SUPPORT_DP83848C    LIP_CFG_PHY_SUPPORT_DP83848C
#else
    #define LIP_PHY_SUPPORT_DP83848C    0
#endif

#if defined LIP_CFG_PHY_SUPPORT_ALL && LIP_CFG_PHY_SUPPORT_ALL
    #define LIP_PHY_SUPPORT_LAN8720    1
#elif defined LIP_CFG_PHY_SUPPORT_LAN8720
    #define LIP_PHY_SUPPORT_LAN8720     LIP_CFG_PHY_SUPPORT_LAN8720
#else
    #define LIP_PHY_SUPPORT_LAN8720     0
#endif

#if defined LIP_CFG_PHY_SUPPORT_ALL && LIP_CFG_PHY_SUPPORT_ALL
    #define LIP_PHY_SUPPORT_LAN8742    0 /** @todo */
#elif defined LIP_CFG_PHY_SUPPORT_LAN8742
    #define LIP_PHY_SUPPORT_LAN8742     LIP_CFG_PHY_SUPPORT_LAN8742
#else
    #define LIP_PHY_SUPPORT_LAN8742     0
#endif

#if defined LIP_CFG_PHY_SUPPORT_ALL && LIP_CFG_PHY_SUPPORT_ALL
    #define LIP_PHY_SUPPORT_KSZ8567     1
#elif defined LIP_CFG_PHY_SUPPORT_KSZ8567
    #define LIP_PHY_SUPPORT_KSZ8567     LIP_CFG_PHY_SUPPORT_KSZ8567
#else
    #define LIP_PHY_SUPPORT_KSZ8567     0
#endif

#if defined LIP_CFG_PHY_SUPPORT_ALL && LIP_CFG_PHY_SUPPORT_ALL
    #define LIP_PHY_SUPPORT_KSZ9131     1
#elif defined LIP_CFG_PHY_SUPPORT_KSZ9131
    #define LIP_PHY_SUPPORT_KSZ9131     LIP_CFG_PHY_SUPPORT_KSZ9131
#else
    #define LIP_PHY_SUPPORT_KSZ9131     0
#endif

#if defined LIP_CFG_PHY_SUPPORT_ALL && LIP_CFG_PHY_SUPPORT_ALL
    #define LIP_PHY_SUPPORT_YT8521S     1
#elif defined LIP_CFG_PHY_SUPPORT_YT8521S
    #define LIP_PHY_SUPPORT_YT8521S     LIP_CFG_PHY_SUPPORT_YT8521S
#else
    #define LIP_PHY_SUPPORT_YT8521S     0
#endif


#if defined LIP_CFG_PHY_SUPPORT_ALL && LIP_CFG_PHY_SUPPORT_ALL
    #define LIP_PHY_SUPPORT_RTL8211F    1
#elif defined LIP_CFG_PHY_SUPPORT_RTL8211FS
    #define LIP_PHY_SUPPORT_RTL8211F    LIP_CFG_PHY_SUPPORT_RTL8211FS
#else
    #define LIP_PHY_SUPPORT_RTL8211F    0
#endif


#if defined LIP_CFG_PHY_ENABLE
    #define LIP_PHY_ENABLE              LIP_CFG_PHY_ENABLE
#else
    #define LIP_PHY_ENABLE              (LIP_PHY_SUPPORT_DP83848J || \
                                         LIP_PHY_SUPPORT_DP83848C || \
                                         LIP_PHY_SUPPORT_LAN8720 || \
                                         LIP_PHY_SUPPORT_LAN8742 || \
                                         LIP_PHY_SUPPORT_KSZ8567 || \
                                         LIP_PHY_SUPPORT_KSZ9131 || \
                                         LIP_PHY_SUPPORT_YT8521S || \
                                         LIP_PHY_SUPPORT_RTL8211F)
#endif


/* ------------- external switch -------------------------------*/
#ifdef LIP_CFG_SW_SUPPORT_KSZ8567
    #define LIP_SW_SUPPORT_KSZ8567      LIP_CFG_SW_SUPPORT_KSZ8567
#else
    #define LIP_SW_SUPPORT_KSZ8567      0
#endif


#ifdef LIP_CFG_PHY_DEFAULT_ADDR_MASK
    #define LIP_PHY_DEFAULT_ADDR_MASK       LIP_CFG_PHY_DEFAULT_ADDR_MASK
#elif defined LIP_CFG_PHY_CHECK_ZERO_ADDR
    #if LIP_CFG_PHY_CHECK_ZERO_ADDR
        #define LIP_PHY_DEFAULT_ADDR_MASK   LIP_PHY_ADDR_MSK_ALL
    #else
        #define LIP_PHY_DEFAULT_ADDR_MASK   LIP_PHY_ADDR_MSK_NOT_ZERO
    #endif
#else
    #define LIP_PHY_DEFAULT_ADDR_MASK       LIP_PHY_ADDR_MSK_ALL
#endif






#ifdef LIP_CFG_PHY_LINK_CHECK_INTERVAL
    #define LIP_PHY_LINK_CHECK_INTERVAL LIP_CFG_PHY_LINK_CHECK_INTERVAL
#else
    #define LIP_PHY_LINK_CHECK_INTERVAL 50
#endif





#ifdef LIP_CFG_PHY_USE_STATS
    #define LIP_PHY_USE_STATS                   LIP_CFG_PHY_USE_STATS
#else
    #define LIP_PHY_USE_STATS                   0
#endif

#ifdef LIP_CFG_PHY_STATS_CHECK_INTERVAL_MS
    #define LIP_PHY_STATS_CHECK_INTERVAL_MS     LIP_CFG_PHY_STATS_CHECK_INTERVAL_MS
#else
    #define LIP_PHY_STATS_CHECK_INTERVAL_MS     25
#endif

#ifdef LIP_CFG_PHY_STATS_AVG_SIZE_POW2
    #define LIP_PHY_STATS_AVG_SIZE_POW2         LIP_CFG_PHY_STATS_AVG_SIZE_POW2
#else
    #define LIP_PHY_STATS_AVG_SIZE_POW2         5
#endif

#ifdef LIP_CFG_PHY_STATS_WC_INTERVAL_MS
    #define LIP_PHY_STATS_WC_INTERVAL_MS        LIP_CFG_PHY_STATS_WC_INTERVAL_MS
#else
    #define LIP_PHY_STATS_WC_INTERVAL_MS        0
#endif

#ifdef LIP_CFG_PHY_USE_CABLE_TEST
    #define LIP_PHY_USE_CABLE_TEST              LIP_CFG_PHY_USE_CABLE_TEST
#else
    #define LIP_PHY_USE_CABLE_TEST              0
#endif


#endif // LIP_PHY_CFG_DEFS_H
