MCPcopy Create free account
hub / github.com/RT-Thread/rt-thread / Gmac_WritePHYRegister

Function Gmac_WritePHYRegister

bsp/ft2004/libraries/bsp/ft_gmac/ft_gmac_hw.c:30–56  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

28#define GMAC_HW_DEBUG_W(format, ...) FT_DEBUG_PRINT_W(GMAC_HW_DEBUG_TAG, format, ##__VA_ARGS__)
29
30s32 Gmac_WritePHYRegister(FGmac_Config_t *Config, u16 PHYReg, u32 RegValue)
31{
32 u32 TmpReg;
33 u32 Wait_Counter = 0;
34
35 TmpReg = Ft_in32(Config->BaseAddress + GMAC_MII_ADDR_OFFSET);
36
37 TmpReg |= GMAC_MII_ADDR_CR(Config->clkMDC);
38 TmpReg |= GMAC_MII_ADDR_PA(Config->PhyAddr); /* Set the PHY device address */
39 TmpReg |= GMAC_MII_ADDR_GR(PHYReg); /* Set the PHY register address */
40 TmpReg |= GMAC_MII_ADDR_GW; /* Set the write mode */
41 TmpReg |= GMAC_MII_ADDR_GB; /* Set the MII Busy bit */
42
43 Ft_out32(Config->BaseAddress + GMAC_MII_DATA_OFFSET, RegValue);
44 Ft_out32(Config->BaseAddress + GMAC_MII_ADDR_OFFSET, TmpReg);
45
46 /* Check for the Busy flag */
47 while ((Ft_in32(Config->BaseAddress + GMAC_MII_ADDR_OFFSET) & GMAC_MII_ADDR_GB) == GMAC_MII_ADDR_GB)
48 {
49 if (10000000 <= ++Wait_Counter)
50 {
51 GMAC_HW_DEBUG_E("Gmac_WritePHYRegister FST_ERROR_COUNT_MAX \r\n");
52 return FST_ERROR_COUNT_MAX;
53 }
54 }
55 return FST_SUCCESS;
56}
57
58s32 FGmac_ReadPHYRegister(FGmac_Config_t *Config, u16 PHYReg, u32 *RegValue)
59{

Callers 1

FGmac_InitializeHwFunction · 0.85

Calls 2

Ft_in32Function · 0.85
Ft_out32Function · 0.85

Tested by

no test coverage detected