Dear Raul,
I had set "phyConfig.autoNeg = false" to try to read/write PowerDown bit, but it is still not working.
PHY_BCTL_AUTONEG_MASK-R : 3100
PHY_BCTL_PowerDown_MASK-R : 3100
PHY_BCTL_PowerDown_MASK-W: 1
PHY_BCTL_PowerDown_MASK-R: 0

======================================================
#ifdef EXAMPLE_PHY_INTERFACE_RGMII
config.miiMode = kENET_RgmiiMode;
#else
config.miiMode = kENET_RmiiMode;
#endif
phyConfig.phyAddr = EXAMPLE_PHY_ADDRESS;
phyConfig.autoNeg = false; //true
mdioHandle.resource.base = EXAMPLE_ENET;
mdioHandle.resource.csrClock_Hz = EXAMPLE_CLOCK_FREQ;
/* Initialize PHY and wait auto-negotiation over. */
PRINTF("Wait for PHY init...\r\n");
do
{
status = PHY_Init(&phyHandle, &phyConfig);
if (status == kStatus_Success)
{
PRINTF("Wait for PHY link up...\r\n");
/* Wait for auto-negotiation success and link up */
count = PHY_AUTONEGO_TIMEOUT_COUNT;
do
{
PHY_GetAutoNegotiationStatus(&phyHandle, &autonego);
PHY_GetLinkStatus(&phyHandle, &link);
if (autonego && link)
{
break;
}
} while (--count);
if (!autonego)
{
PRINTF("PHY Auto-negotiation failed. Please check the cable connection and link partner setting.\r\n");
}
}
} while (!(link && autonego));
PHY_Read(&phyHandle, PHY_BCTL_AUTONEG_MASK, &data);
PRINTF("PHY_BCTL_AUTONEG_MASK-R : %x\r\n" ,data);
result = PHY_Read(&phyHandle, PHY_BCTL_PowerDown_MASK, &data);
PRINTF("PHY_BCTL_PowerDown_MASK-R : %x\r\n" ,data);
PHY_Write(&phyHandle, PHY_BCTL_PowerDown_MASK, data1);
PRINTF("PHY_BCTL_PowerDown_MASK-W: %x\r\n" ,data1);
PHY_Read(&phyHandle, PHY_BCTL_PowerDown_MASK, &data);
PRINTF("PHY_BCTL_PowerDown_MASK-R: %x\r\n" ,data);
#if PHY_STABILITY_DELAY_US
/* Wait a moment for PHY status to be stable. */
SDK_DelayAtLeastUs(PHY_STABILITY_DELAY_US, SDK_DEVICE_MAXIMUM_CPU_CLOCK_FREQUENCY);
#endif
==========================================================
Thanks.