ARM: tegra: Initialize r0 register for firmware wake-up
authorDmitry Osipenko <digetx@gmail.com>
Tue, 24 Mar 2020 22:43:33 +0000 (01:43 +0300)
committerThierry Reding <treding@nvidia.com>
Wed, 6 May 2020 16:29:04 +0000 (18:29 +0200)
Downstream kernel of ASUS TF300T sets r0 to #3. There is no explanation in
downstream code whether this is really needed and some of T30 downstream
kernels have and explicit comment telling that all arguments are ignored
by firmware. Let's take a safe side by replicating behavior of the TF300T
downstream kernel. This change works fine on Ouya and Nexus 7 devices.

Tested-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
Tested-by: Jasper Korten <jja2000@gmail.com>
Tested-by: David Heidelberg <david@ixit.cz>
Tested-by: Peter Geis <pgwipeout@gmail.com>
Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
arch/arm/mach-tegra/reset-handler.S

index 53123ae4ac3bbdf4c6868f0f3eef740c9259815e..06ca44b09381b303afeab5862fa7ad19415904dc 100644 (file)
@@ -98,7 +98,12 @@ ENTRY(tegra_resume_trusted_foundations)
        reteq   lr
 
  .arch_extension sec
-       /* First call after suspend wakes firmware. No arguments required. */
+       /*
+        * First call after suspend wakes firmware. No arguments required
+        * for some firmware versions. Downstream kernel of ASUS TF300T uses
+        * r0=3 for the wake-up notification.
+        */
+       mov     r0, #3
        smc     #0
 
        b       cpu_resume