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;