Beispiel #1
0
u32 mdio_read(u32 PhyRegAddr, u32 PhyAddr)
{
    u32 val =0;

    /* 32 Consecutive ones on MDO to establish sync */
    output_MDIO(0xFFFFFFFF, 32);

    /* start code 01, read command (10) */
    output_MDIO(0x06, 4);

    /* write PHY address */
    output_MDIO(PhyAddr, 5);

    output_MDIO(PhyRegAddr, 5);

    /* turnaround MDO is tristated */
    turnaround_MDIO();

    /* Read the data value */
    val = input_MDIO();

    /* turnaround MDO is tristated */
    idle_MDIO();

    return val;
}
Beispiel #2
0
uint32_t mdio_read(GPIO_TypeDef* GPIOx, uint32_t PhyRegAddr)
{
    uint32_t val =0;

    /* 32 Consecutive ones on MDO to establish sync */
    //printf("mdio read - sync \r\n");
    output_MDIO(GPIOx, 0xFFFFFFFF, 32);

    /* start code 01, read command (10) */
    //printf("mdio read - start \r\n");
    output_MDIO(GPIOx, 0x06, 4);

    /* write PHY address */
    //printf("mdio read - PHY address \r\n");
    output_MDIO(GPIOx, PHY_ADDR, 5);

    //printf("mdio read - PHY REG address \r\n");
    output_MDIO(GPIOx, PhyRegAddr, 5);

    /* turnaround MDO is tristated */
    //printf("mdio read - turnaround \r\n");
    turnaround_MDIO(GPIOx);

    /* Read the data value */
    //printf("mdio read - read the data value \r\n");
    val = input_MDIO(GPIOx );
    //printf("mdio read - val : %X\r\n", val );

    /* turnaround MDO is tristated */
    //printf("mdio read - idle \r\n");
    idle_MDIO(GPIOx);

    return val;
}
Beispiel #3
0
void mdio_write(GPIO_TypeDef* GPIOx, uint32_t PhyRegAddr, uint32_t val)
{

    /* 32 Consecutive ones on MDO to establish sync */
    //printf("mdio write- sync \r\n");
    output_MDIO(GPIOx, 0xFFFFFFFF, 32);

    /* start code 01, write command (01) */
    //printf("mdio write- start \r\n");
    output_MDIO(GPIOx, 0x05, 4);

    /* write PHY address */
    //printf("mdio write- PHY address \r\n");
    output_MDIO(GPIOx, PHY_ADDR, 5);

    //printf("mdio read - PHY REG address \r\n");
    output_MDIO(GPIOx, PhyRegAddr, 5);

    /* turnaround MDO */
    //printf("mdio write- turnaround (1,0)\r\n");
    output_MDIO(GPIOx, 0x02, 2);

    /* Write the data value */
    //printf("mdio writeread - read the data value \r\n");
    output_MDIO(GPIOx, val, 16);

    /* turnaround MDO is tristated */
    //printf("mdio write- idle \r\n");
    idle_MDIO(GPIOx);

}
Beispiel #4
0
void mdio_write(u32 PhyRegAddr, u32 val)
{

    /* 32 Consecutive ones on MDO to establish sync */
    output_MDIO(0xFFFFFFFF, 32);

    /* start code 01, write command (01) */
    output_MDIO(0x05, 4);

    /* write PHY address */
    output_MDIO(PHY_ADDR, 5);

    output_MDIO(PhyRegAddr, 5);

    /* turnaround MDO */
    output_MDIO(0x02, 2);

    /* Write the data value */
    output_MDIO(val, 16);

    /* turnaround MDO is tristated */
    idle_MDIO();
}