Re: [PATCH 2/2] ARM: DT: tegra: pinctrl suspend resume hook
From: Thierry Reding <hidden>
Date: 2013-04-26 19:49:17
On Tue, Apr 23, 2013 at 11:39:02PM +0530, Bibek Basu wrote:
Make pinmux as the first node of tegra DT so as to achieve pinctrl as last device to suspend and first device to resume.
I don't think this is a good idea. For one it encodes Linux specific implementation details within the device tree. Furthermore I seem to remember that the device tree makes no guarantees that the order of nodes in the blob is the same as the order in the DTS. That said I don't have a good alternative. Perhaps one solution would be to use suspend_late() and resume_early() for the pinmux driver since they will be called after and before the suspend() and resume() callbacks of all other devices, respectively. Other than that I wasn't able to find anything about forcing a particular order during suspend and resume. Cc'ing Rafael and the linux-pm mailing list, maybe somebody among them knows a proper solution. Thierry
quoted hunk
Signed-off-by: Bibek Basu <redacted> --- arch/arm/boot/dts/tegra114.dtsi | 12 ++++++------ arch/arm/boot/dts/tegra20.dtsi | 16 ++++++++-------- arch/arm/boot/dts/tegra30.dtsi | 13 +++++++------ 3 files changed, 21 insertions(+), 20 deletions(-)diff --git a/arch/arm/boot/dts/tegra114.dtsi b/arch/arm/boot/dts/tegra114.dtsi index a58a761..36596ae 100644 --- a/arch/arm/boot/dts/tegra114.dtsi +++ b/arch/arm/boot/dts/tegra114.dtsi@@ -11,6 +11,12 @@ serial3 = &uartd; }; + pinmux: pinmux { + compatible = "nvidia,tegra114-pinmux"; + reg = <0x70000868 0x148 /* Pad control registers */ + 0x70003000 0x40c>; /* Mux registers */ + }; + host1x { compatible = "nvidia,tegra114-host1x", "simple-bus"; reg = <0x50000000 0x00028000>;@@ -165,12 +171,6 @@ interrupt-controller; }; - pinmux: pinmux { - compatible = "nvidia,tegra114-pinmux"; - reg = <0x70000868 0x148 /* Pad control registers */ - 0x70003000 0x40c>; /* Mux registers */ - }; - /* * There are two serial driver i.e. 8250 based simple serial * driver and APB DMA based serial driver for higher baudratediff --git a/arch/arm/boot/dts/tegra20.dtsi b/arch/arm/boot/dts/tegra20.dtsi index a5a9615..6d8a663 100644 --- a/arch/arm/boot/dts/tegra20.dtsi +++ b/arch/arm/boot/dts/tegra20.dtsi@@ -12,6 +12,14 @@ serial4 = &uarte; }; + pinmux: pinmux { + compatible = "nvidia,tegra20-pinmux"; + reg = <0x70000014 0x10 /* Tri-state registers */ + 0x70000080 0x20 /* Mux registers */ + 0x700000a0 0x14 /* Pull-up/down registers */ + 0x70000868 0xa8>; /* Pad control registers */ + }; + host1x { compatible = "nvidia,tegra20-host1x", "simple-bus"; reg = <0x50000000 0x00024000>;@@ -196,14 +204,6 @@ interrupt-controller; }; - pinmux: pinmux { - compatible = "nvidia,tegra20-pinmux"; - reg = <0x70000014 0x10 /* Tri-state registers */ - 0x70000080 0x20 /* Mux registers */ - 0x700000a0 0x14 /* Pull-up/down registers */ - 0x70000868 0xa8>; /* Pad control registers */ - }; - das { compatible = "nvidia,tegra20-das"; reg = <0x70000c00 0x80>;diff --git a/arch/arm/boot/dts/tegra30.dtsi b/arch/arm/boot/dts/tegra30.dtsi index 9f33086..b4b79f0 100644 --- a/arch/arm/boot/dts/tegra30.dtsi +++ b/arch/arm/boot/dts/tegra30.dtsi@@ -12,6 +12,13 @@ serial4 = &uarte; }; + pinmux: pinmux { + compatible = "nvidia,tegra30-pinmux"; + reg = <0x70000868 0xd4 /* Pad control registers */ + 0x70003000 0x3e4>; /* Mux registers */ + }; + + host1x { compatible = "nvidia,tegra30-host1x", "simple-bus"; reg = <0x50000000 0x00024000>;@@ -216,12 +223,6 @@ interrupt-controller; }; - pinmux: pinmux { - compatible = "nvidia,tegra30-pinmux"; - reg = <0x70000868 0xd4 /* Pad control registers */ - 0x70003000 0x3e4>; /* Mux registers */ - }; - /* * There are two serial driver i.e. 8250 based simple serial * driver and APB DMA based serial driver for higher baudrate-- 1.8.1.5 -- To unsubscribe from this list: send the line "unsubscribe linux-tegra" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html