The Linux kernel is assumed to find the two physical transceivers already reset. So, the hardware reset is not implemented at driver nor userspace levels.
For issuing a reset pulse to the PHYs, a dedicated kernel hacking is to be realized; this taking into account:* the status of software protocols stack==== ethernet ====* the component driver** the The ethernet PHY is a Micrel KSZ9031 and so its related kernel driver, i.e. <code>drivers/net/phyethernet/micrelcadence/macb.c</code> kernel driver** the USB PHY is supports a * device tree entrry for generating the PHY re-initialization (see for example [[https://microchipsupporthardware reset pulse.force.com/s/article/KSZ9031-initialization-procedure this]] article
iIt is enough to add the following entries in order to let the kernel to reset the PHY too: &gem0 { status = "okay"; phy-mode = "rgmii-id"; phy-handle = <&phy0>; <b>phy-reset-gpio = <&gpio0 51 1>; phy-reset-duration = <100>;</b> .e. . ... ==== USB ====For issuing a reset pulse to the USB PHY, a dedicated kernel hacking is to be realized; the USB PHY driver is the ULPI <code>drivers/net/phy/micrel.c</code> kernel driver and then the proper BSP modifications have to be evaluated.
== Software reset ==