Hardware implementation of Wake-On-Lan (WOL)

Hello,
I am designing a custom carrier board for Jetson AGX Orin 64GB.

I have a few questions regarding wake-on-lan function:

  1. How to implement this function in hardware? On You carrier board I can see that there is signal called “WOL_POWER_ON_N”. It is INT output from ethernet PHY and I guess this is the signal that should trigger the WOL.
    On P3737 board this signal goes into some extensive circuit only to be fed into microcontroller. It is not clear to me how this signal is then handled.
    I don’t need and I don’t want to use any additional microcontroller on my board (unless it is necessary). I just want my board to turn-on automatically on POWER and to have WOL function working.

  1. I found that there is some signal called “ETH_WOL_EN_STATUS” that goes into GPIO38 (A47) pin. What is the purpose of this signal. Does it only ENABLE the WOL function or is it the WOL itself (signal that causes wake-up)?

  1. If the GPIO38 input is a WAKE input - where can I find documentation about that pin? What do I need to feed the pin to cause the JETSON to wake-up? What do I need to put between this pin and WOL output from the PHY.

  2. Are there any problems with ethernet communication after JETSON is up after WOL?

Best regards,
Lukasz Zielinski

I don’t have visibility into what the MCU does with the input ultimately generated from WOL_POWER_ON_N but since you don’t want to use an MCU I will not dive into that further.

ETH_WOL_EN_STATUS is not the actual signal causing wake since GPIO38/pin A47 is not a wake-capable GPIO.

You can refer to the Jetson AGX Orin Series Pinmux for the signals in the AO (rows 24-35) and “AO_HV (3.3V Capable)” (rows 36-47) sections that are wake-capable (column AV). The INT pin from your PHY can go through any circuitry that qualifies it as you need and then route to an available wake-capable GPIO.

Can you please explain further what you mean with this question?

Thank You,

So all I should do to have WOL function is:

  1. Choose pin that can be enabled as “Wake Pin” in Pinmux. Then connect my PHY WOL output to that pin.
  2. Handle it in the software (driver & dts - as mentioned in this thread for example: Jetson AGX Orin Devkit GPIO as a Wake-Up Source - #10 by KevinFFF )

And what about logic state that triggers the WOL? Should it be rising edge or falling edge? Is it configurable in software (pmc.c driver / dts)?

I saw in some forum threads issue #4450559 but after I search a bit about that i found out it has been already fixed… So it is not relevant now.

You use the assertion level of the signal from the PHY side. In Kevin’s example from the thread you linked, the wake happens when the signal goes low:

+			gpios = <&gpio_aon TEGRA234_AON_GPIO(AA, 3) GPIO_ACTIVE_LOW>;