GPIO registration for external Ethernet PHY oscillator enable/disable

From: Michael Welling
Date: Thu Sep 25 2014 - 15:17:35 EST

Looks like my original message got buried in the mailing list.

Lets try this again with a few key developers CC'd.

Original Message:
I have some questions that span multiple subsystems including
gpio/pinctrl, apm, and net subsystems.

On some of our system on module designs, we use a GPIO to toggle the
enable pin on external oscillators. In particular, we are using a 50Mhz
oscillator to drive a clock on a RMII Ethernet PHY.

Though I can configure the pin such that the Ethernet interface works we
are looking to disable the oscillator during APM sleep but after the PHY
is put into a low power mode.

How do I register a GPIO for use in the PHY suspend and resume code?
Can it be handled outside of the PHY driver?
If so how do ensure the appropriate suspend and resume sequencing?

For reference, we are using a Micrel KSZ8081 PHY connected to a
AT91SAMA5D35 processor.

I ran into another situation where a GPIO enabled oscillator was used.
The oscillator in this case drives the master clock for a audio codec.
In the old days (before device tree), I could initialize the GPIO in the
platform board file. Now with device tree I can setup the pin multipler
but the initial state of the GPIO I am not sure how to set.

Is there a way to directly change the state of a GPIO pin from a
devicetree entry?
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at
Please read the FAQ at