69 #define LAN8742_BCR      ((uint16_t)0x0000U)    70 #define LAN8742_BSR      ((uint16_t)0x0001U)    71 #define LAN8742_PHYI1R   ((uint16_t)0x0002U)    72 #define LAN8742_PHYI2R   ((uint16_t)0x0003U)    73 #define LAN8742_ANAR     ((uint16_t)0x0004U)    74 #define LAN8742_ANLPAR   ((uint16_t)0x0005U)    75 #define LAN8742_ANER     ((uint16_t)0x0006U)    76 #define LAN8742_ANNPTR   ((uint16_t)0x0007U)    77 #define LAN8742_ANNPRR   ((uint16_t)0x0008U)    78 #define LAN8742_MMDACR   ((uint16_t)0x000DU)    79 #define LAN8742_MMDAADR  ((uint16_t)0x000EU)    80 #define LAN8742_ENCTR    ((uint16_t)0x0010U)    81 #define LAN8742_MCSR     ((uint16_t)0x0011U)    82 #define LAN8742_SMR      ((uint16_t)0x0012U)    83 #define LAN8742_TPDCR    ((uint16_t)0x0018U)    84 #define LAN8742_TCSR     ((uint16_t)0x0019U)    85 #define LAN8742_SECR     ((uint16_t)0x001AU)    86 #define LAN8742_SCSIR    ((uint16_t)0x001BU)    87 #define LAN8742_CLR      ((uint16_t)0x001CU)    88 #define LAN8742_ISFR     ((uint16_t)0x001DU)    89 #define LAN8742_IMR      ((uint16_t)0x001EU)    90 #define LAN8742_PHYSCSR  ((uint16_t)0x001FU)    98 #define LAN8742_BCR_SOFT_RESET         ((uint16_t)0x8000U)    99 #define LAN8742_BCR_LOOPBACK           ((uint16_t)0x4000U)   100 #define LAN8742_BCR_SPEED_SELECT       ((uint16_t)0x2000U)   101 #define LAN8742_BCR_AUTONEGO_EN        ((uint16_t)0x1000U)   102 #define LAN8742_BCR_POWER_DOWN         ((uint16_t)0x0800U)   103 #define LAN8742_BCR_ISOLATE            ((uint16_t)0x0400U)   104 #define LAN8742_BCR_RESTART_AUTONEGO   ((uint16_t)0x0200U)   105 #define LAN8742_BCR_DUPLEX_MODE        ((uint16_t)0x0100U)   113 #define LAN8742_BSR_100BASE_T4       ((uint16_t)0x8000U)   114 #define LAN8742_BSR_100BASE_TX_FD    ((uint16_t)0x4000U)   115 #define LAN8742_BSR_100BASE_TX_HD    ((uint16_t)0x2000U)   116 #define LAN8742_BSR_10BASE_T_FD      ((uint16_t)0x1000U)   117 #define LAN8742_BSR_10BASE_T_HD      ((uint16_t)0x0800U)   118 #define LAN8742_BSR_100BASE_T2_FD    ((uint16_t)0x0400U)   119 #define LAN8742_BSR_100BASE_T2_HD    ((uint16_t)0x0200U)   120 #define LAN8742_BSR_EXTENDED_STATUS  ((uint16_t)0x0100U)   121 #define LAN8742_BSR_AUTONEGO_CPLT    ((uint16_t)0x0020U)   122 #define LAN8742_BSR_REMOTE_FAULT     ((uint16_t)0x0010U)   123 #define LAN8742_BSR_AUTONEGO_ABILITY ((uint16_t)0x0008U)   124 #define LAN8742_BSR_LINK_STATUS      ((uint16_t)0x0004U)   125 #define LAN8742_BSR_JABBER_DETECT    ((uint16_t)0x0002U)   126 #define LAN8742_BSR_EXTENDED_CAP     ((uint16_t)0x0001U)   134 #define LAN8742_PHYI1R_OUI_3_18           ((uint16_t)0xFFFFU)   142 #define LAN8742_PHYI2R_OUI_19_24          ((uint16_t)0xFC00U)   143 #define LAN8742_PHYI2R_MODEL_NBR          ((uint16_t)0x03F0U)   144 #define LAN8742_PHYI2R_REVISION_NBR       ((uint16_t)0x000FU)   152 #define LAN8742_ANAR_NEXT_PAGE               ((uint16_t)0x8000U)   153 #define LAN8742_ANAR_REMOTE_FAULT            ((uint16_t)0x2000U)   154 #define LAN8742_ANAR_PAUSE_OPERATION         ((uint16_t)0x0C00U)   155 #define LAN8742_ANAR_PO_NOPAUSE              ((uint16_t)0x0000U)   156 #define LAN8742_ANAR_PO_SYMMETRIC_PAUSE      ((uint16_t)0x0400U)   157 #define LAN8742_ANAR_PO_ASYMMETRIC_PAUSE     ((uint16_t)0x0800U)   158 #define LAN8742_ANAR_PO_ADVERTISE_SUPPORT    ((uint16_t)0x0C00U)   159 #define LAN8742_ANAR_100BASE_TX_FD           ((uint16_t)0x0100U)   160 #define LAN8742_ANAR_100BASE_TX              ((uint16_t)0x0080U)   161 #define LAN8742_ANAR_10BASE_T_FD             ((uint16_t)0x0040U)   162 #define LAN8742_ANAR_10BASE_T                ((uint16_t)0x0020U)   163 #define LAN8742_ANAR_SELECTOR_FIELD          ((uint16_t)0x000FU)   171 #define LAN8742_ANLPAR_NEXT_PAGE            ((uint16_t)0x8000U)   172 #define LAN8742_ANLPAR_REMOTE_FAULT         ((uint16_t)0x2000U)   173 #define LAN8742_ANLPAR_PAUSE_OPERATION      ((uint16_t)0x0C00U)   174 #define LAN8742_ANLPAR_PO_NOPAUSE           ((uint16_t)0x0000U)   175 #define LAN8742_ANLPAR_PO_SYMMETRIC_PAUSE   ((uint16_t)0x0400U)   176 #define LAN8742_ANLPAR_PO_ASYMMETRIC_PAUSE  ((uint16_t)0x0800U)   177 #define LAN8742_ANLPAR_PO_ADVERTISE_SUPPORT ((uint16_t)0x0C00U)   178 #define LAN8742_ANLPAR_100BASE_TX_FD        ((uint16_t)0x0100U)   179 #define LAN8742_ANLPAR_100BASE_TX           ((uint16_t)0x0080U)   180 #define LAN8742_ANLPAR_10BASE_T_FD          ((uint16_t)0x0040U)   181 #define LAN8742_ANLPAR_10BASE_T             ((uint16_t)0x0020U)   182 #define LAN8742_ANLPAR_SELECTOR_FIELD       ((uint16_t)0x000FU)   190 #define LAN8742_ANER_RX_NP_LOCATION_ABLE    ((uint16_t)0x0040U)   191 #define LAN8742_ANER_RX_NP_STORAGE_LOCATION ((uint16_t)0x0020U)   192 #define LAN8742_ANER_PARALLEL_DETECT_FAULT  ((uint16_t)0x0010U)   193 #define LAN8742_ANER_LP_NP_ABLE             ((uint16_t)0x0008U)   194 #define LAN8742_ANER_NP_ABLE                ((uint16_t)0x0004U)   195 #define LAN8742_ANER_PAGE_RECEIVED          ((uint16_t)0x0002U)   196 #define LAN8742_ANER_LP_AUTONEG_ABLE        ((uint16_t)0x0001U)   204 #define LAN8742_ANNPTR_NEXT_PAGE         ((uint16_t)0x8000U)   205 #define LAN8742_ANNPTR_MESSAGE_PAGE      ((uint16_t)0x2000U)   206 #define LAN8742_ANNPTR_ACK2              ((uint16_t)0x1000U)   207 #define LAN8742_ANNPTR_TOGGLE            ((uint16_t)0x0800U)   208 #define LAN8742_ANNPTR_MESSAGGE_CODE     ((uint16_t)0x07FFU)   216 #define LAN8742_ANNPTR_NEXT_PAGE         ((uint16_t)0x8000U)   217 #define LAN8742_ANNPRR_ACK               ((uint16_t)0x4000U)   218 #define LAN8742_ANNPRR_MESSAGE_PAGE      ((uint16_t)0x2000U)   219 #define LAN8742_ANNPRR_ACK2              ((uint16_t)0x1000U)   220 #define LAN8742_ANNPRR_TOGGLE            ((uint16_t)0x0800U)   221 #define LAN8742_ANNPRR_MESSAGGE_CODE     ((uint16_t)0x07FFU)   229 #define LAN8742_MMDACR_MMD_FUNCTION       ((uint16_t)0xC000U)   230 #define LAN8742_MMDACR_MMD_FUNCTION_ADDR  ((uint16_t)0x0000U)   231 #define LAN8742_MMDACR_MMD_FUNCTION_DATA  ((uint16_t)0x4000U)   232 #define LAN8742_MMDACR_MMD_DEV_ADDR       ((uint16_t)0x001FU)   240 #define LAN8742_ENCTR_TX_ENABLE             ((uint16_t)0x8000U)   241 #define LAN8742_ENCTR_TX_TIMER              ((uint16_t)0x6000U)   242 #define LAN8742_ENCTR_TX_TIMER_1S           ((uint16_t)0x0000U)   243 #define LAN8742_ENCTR_TX_TIMER_768MS        ((uint16_t)0x2000U)   244 #define LAN8742_ENCTR_TX_TIMER_512MS        ((uint16_t)0x4000U)   245 #define LAN8742_ENCTR_TX_TIMER_265MS        ((uint16_t)0x6000U)   246 #define LAN8742_ENCTR_RX_ENABLE             ((uint16_t)0x1000U)   247 #define LAN8742_ENCTR_RX_MAX_INTERVAL       ((uint16_t)0x0C00U)   248 #define LAN8742_ENCTR_RX_MAX_INTERVAL_64MS  ((uint16_t)0x0000U)   249 #define LAN8742_ENCTR_RX_MAX_INTERVAL_256MS ((uint16_t)0x0400U)   250 #define LAN8742_ENCTR_RX_MAX_INTERVAL_512MS ((uint16_t)0x0800U)   251 #define LAN8742_ENCTR_RX_MAX_INTERVAL_1S    ((uint16_t)0x0C00U)   252 #define LAN8742_ENCTR_EX_CROSS_OVER         ((uint16_t)0x0002U)   253 #define LAN8742_ENCTR_EX_MANUAL_CROSS_OVER  ((uint16_t)0x0001U)   261 #define LAN8742_MCSR_EDPWRDOWN        ((uint16_t)0x2000U)   262 #define LAN8742_MCSR_FARLOOPBACK      ((uint16_t)0x0200U)   263 #define LAN8742_MCSR_ALTINT           ((uint16_t)0x0040U)   264 #define LAN8742_MCSR_ENERGYON         ((uint16_t)0x0002U)   272 #define LAN8742_SMR_MODE       ((uint16_t)0x00E0U)   273 #define LAN8742_SMR_PHY_ADDR   ((uint16_t)0x001FU)   281 #define LAN8742_TPDCR_DELAY_IN                 ((uint16_t)0x8000U)   282 #define LAN8742_TPDCR_LINE_BREAK_COUNTER       ((uint16_t)0x7000U)   283 #define LAN8742_TPDCR_PATTERN_HIGH             ((uint16_t)0x0FC0U)   284 #define LAN8742_TPDCR_PATTERN_LOW              ((uint16_t)0x003FU)   292 #define LAN8742_TCSR_TDR_ENABLE           ((uint16_t)0x8000U)   293 #define LAN8742_TCSR_TDR_AD_FILTER_ENABLE ((uint16_t)0x4000U)   294 #define LAN8742_TCSR_TDR_CH_CABLE_TYPE    ((uint16_t)0x0600U)   295 #define LAN8742_TCSR_TDR_CH_CABLE_DEFAULT ((uint16_t)0x0000U)   296 #define LAN8742_TCSR_TDR_CH_CABLE_SHORTED ((uint16_t)0x0200U)   297 #define LAN8742_TCSR_TDR_CH_CABLE_OPEN    ((uint16_t)0x0400U)   298 #define LAN8742_TCSR_TDR_CH_CABLE_MATCH   ((uint16_t)0x0600U)   299 #define LAN8742_TCSR_TDR_CH_STATUS        ((uint16_t)0x0100U)   300 #define LAN8742_TCSR_TDR_CH_LENGTH        ((uint16_t)0x00FFU)   308 #define LAN8742_SCSIR_AUTO_MDIX_ENABLE    ((uint16_t)0x8000U)   309 #define LAN8742_SCSIR_CHANNEL_SELECT      ((uint16_t)0x2000U)   310 #define LAN8742_SCSIR_SQE_DISABLE         ((uint16_t)0x0800U)   311 #define LAN8742_SCSIR_XPOLALITY           ((uint16_t)0x0010U)   319 #define LAN8742_CLR_CABLE_LENGTH       ((uint16_t)0xF000U)   327 #define LAN8742_INT_8       ((uint16_t)0x0100U)   328 #define LAN8742_INT_7       ((uint16_t)0x0080U)   329 #define LAN8742_INT_6       ((uint16_t)0x0040U)   330 #define LAN8742_INT_5       ((uint16_t)0x0020U)   331 #define LAN8742_INT_4       ((uint16_t)0x0010U)   332 #define LAN8742_INT_3       ((uint16_t)0x0008U)   333 #define LAN8742_INT_2       ((uint16_t)0x0004U)   334 #define LAN8742_INT_1       ((uint16_t)0x0002U)   342 #define LAN8742_PHYSCSR_AUTONEGO_DONE   ((uint16_t)0x1000U)   343 #define LAN8742_PHYSCSR_HCDSPEEDMASK    ((uint16_t)0x001CU)   344 #define LAN8742_PHYSCSR_10BT_HD         ((uint16_t)0x0004U)   345 #define LAN8742_PHYSCSR_10BT_FD         ((uint16_t)0x0014U)   346 #define LAN8742_PHYSCSR_100BTX_HD       ((uint16_t)0x0008U)   347 #define LAN8742_PHYSCSR_100BTX_FD       ((uint16_t)0x0018U)   356 #define  LAN8742_STATUS_READ_ERROR            ((int32_t)-5)   357 #define  LAN8742_STATUS_WRITE_ERROR           ((int32_t)-4)   358 #define  LAN8742_STATUS_ADDRESS_ERROR         ((int32_t)-3)   359 #define  LAN8742_STATUS_RESET_TIMEOUT         ((int32_t)-2)   360 #define  LAN8742_STATUS_ERROR                 ((int32_t)-1)   361 #define  LAN8742_STATUS_OK                    ((int32_t) 0)   362 #define  LAN8742_STATUS_LINK_DOWN             ((int32_t) 1)   363 #define  LAN8742_STATUS_100MBITS_FULLDUPLEX   ((int32_t) 2)   364 #define  LAN8742_STATUS_100MBITS_HALFDUPLEX   ((int32_t) 3)   365 #define  LAN8742_STATUS_10MBITS_FULLDUPLEX    ((int32_t) 4)   366 #define  LAN8742_STATUS_10MBITS_HALFDUPLEX    ((int32_t) 5)   367 #define  LAN8742_STATUS_AUTONEGO_NOTDONE      ((int32_t) 6)   375 #define  LAN8742_WOL_IT                        LAN8742_INT_8   376 #define  LAN8742_ENERGYON_IT                   LAN8742_INT_7   377 #define  LAN8742_AUTONEGO_COMPLETE_IT          LAN8742_INT_6   378 #define  LAN8742_REMOTE_FAULT_IT               LAN8742_INT_5   379 #define  LAN8742_LINK_DOWN_IT                  LAN8742_INT_4   380 #define  LAN8742_AUTONEGO_LP_ACK_IT            LAN8742_INT_3   381 #define  LAN8742_PARALLEL_DETECTION_FAULT_IT   LAN8742_INT_2   382 #define  LAN8742_AUTONEGO_PAGE_RECEIVED_IT     LAN8742_INT_1   395 typedef int32_t (*lan8742_Init_Func)(void);
   396 typedef int32_t (*lan8742_DeInit_Func)(void);
   397 typedef int32_t (*lan8742_ReadReg_Func)(uint32_t, uint32_t, uint32_t *);
   398 typedef int32_t (*lan8742_WriteReg_Func)(uint32_t, uint32_t, uint32_t);
   399 typedef int32_t (*lan8742_GetTick_Func)(void);
   402     lan8742_Init_Func      Init;
   403     lan8742_DeInit_Func    DeInit;
   404     lan8742_WriteReg_Func  WriteReg;
   405     lan8742_ReadReg_Func   ReadReg;
   406     lan8742_GetTick_Func   GetTick;
   412     uint32_t            Is_Initialized;