Hello , I am using LPC54016JBD100 , and I want to communicate with a Marvell 10G PHY, for that according to the Marvell datasheet (88X3310_88X3340_88X3310P_88X3340P_Datasheet_Proprietary_Doc_Rev_H-v8a) it uses Clause 45 to write to the Marvell registers.
Is the LPC54016 SDK 2.15 ENET driver supports clause 45? , because in the read/write function note it says it supports but the fields and opcodes does not seems fit to clause 45.
If it does not support , what can I update to support clause 45 in my project?
**Notes**
/*!
* brief Starts a SMI write command.
* support both MDIO IEEE802.3 Clause 22 and clause 45.
*
* param base ENET peripheral base address.
* param phyAddr The PHY address.
* param regAddr The PHY register.
* param data The data written to PHY.
*/
void ENET_StartSMIWrite(ENET_Type *base, uint8_t phyAddr, uint8_t regAddr, uint16_t data)
/*! @brief Define the MII opcode for normal MDIO_CLAUSES_22 Frame. */
typedef enum _enet_mii_normal_opcode
{
kENET_MiiWriteFrame = 1U, /*!< Write frame operation for a valid MII management frame. */
kENET_MiiReadFrame = 3U /*!< Read frame operation for a valid MII management frame. */
} enet_mii_normal_opcode_t;
Thank for any help.
Dan Iton
Hello, sorry for the late response I was out of the office, I did a report where I was in contact with the internal team to get more details about this support, however they have some re-org and the team, responsible for the LPC54 series, still stays have issue for open now.
We have already know is the support for this feature does exist on the hardware, I do feel sorry about keeping you waiting for such a long time, however it would take much more time for the design team to respond with any useable information.
Best regards,
Pavel
Hello,
I would like to revive this toipc.
in the user manual for LPC540xx (Rev 1.5) it says Cluase 45 is supported:
in the MDIO section of the ENET module however, there is no mention on how to make the MCU to operate in Clause 22 or 45. There are simply 2 registers, MDIO Address and MDIO Data.
the interesting thing is that MDIO Address register has field called MOC, which controls the type of operation. In Clause 45 case, it should have value 0x00 for address. in this user manual, 0x00 appears as reserved, making me think that the MCU either does not really support Clause 45 or the user manual needs an updated:
In addition, when i capture the MDC and MDIO signals using a scope, the ST bits of the frame are 01 (clause 22) whereas i need them to be 00 (clause 45). in the user manual there seems to be no way the change these bits.
Your response is much appreciated.
Best Regards,
Andrey Tarakin
Hello, I apologize for the long time is being taken, we still working on your case, and the designers are helping us with this support.
Best regards,
Pavel
Hello, I have not much experience with Ethernet and MDIO. I am handling it with my team, I´m asking to get more details about your application.
Certain Marvell PHYs are known for only supporting C45 frames instead of C22 frames, could you please let us know if you are facing this? We are reviewing the information with the design team too.
Best regards,
Pavel
Hello, I have some other questions about your case I will discuss this with my team would you give us more details?
Can you clarify the content of Clause 45? or which standard includes this clause? IEEE 802.3? or other, I will download the standard to see it.
Best regards,
Pavel
Hi Pavel, didn't understand why you need me to answer this question, but I think it is 802.3, please double check me.
I really need some code to support this protocol ASAP.'
Furthermore , I saw some code examples for clause 45 on other NXP MCU SDKs (i.e. IMXRT1170RM) on the fsl_enet , but in my MCU(LPC54016), I do not have this example although it says on the UM it supports it.
Thanks, and Best Regards.
Dan Iton
Hi Pavel , Thanks for your answer.
I want to refer to the document you sent me I have couple of questions:
"Please note that the LPC54628 SDK can be used to evaluate the LPC54606"
"
static inline status_t MDIO_Write(mdio_handle_t *handle, uint32_t phyAddr, uint32_t devAddr, uint32_t data)
{
return handle->ops->mdioWrite(handle, phyAddr, devAddr, data);
}"
Thanks for your help , Best Regards.
Dan Iton
Hello, I reviewed the example of the LPC54018 has the same driver, and I think you can make that modification.
Best regards,
Pavel
Hello, sorry for the late response, I waiting to get more information from the other partner on my team, I apologize for this inconvenience.
Best regards,
Pavel