-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

        Hi,

        Im trying to find a way to remove some code which i think would not be
accepted by arm-linux, and is important for suspend/resume on ezx.
        Here is the relevant code:

+++ arch/arm/mm/init.c
@@ -240,6 +240,10 @@
         */
        reserve_bootmem_node(pgdat, boot_pfn << PAGE_SHIFT,
                             boot_pages << PAGE_SHIFT);
+#ifdef CONFIG_PXA_EZX
+       /* reserve the first page memory for exiting sleep and user off */
+       reserve_bootmem_node(pgdat, PHYS_OFFSET, PAGE_SIZE);
+#endif

 #ifdef CONFIG_BLK_DEV_INITRD
        /*

+++ linux-2.6.24/arch/arm/mach-pxa/pxa27x.c
@@ -231,7 +235,12 @@
 void pxa27x_cpu_pm_restore(unsigned long *sleep_save)
 {
        /* ensure not to come back here if it wasn't intended */
+#ifdef CONFIG_PXA_EZX
+       *(unsigned long *)(phys_to_virt(RESUME_ADDR)) = 0;
+       *(unsigned long *)(phys_to_virt(FLAG_ADDR)) = OFF_FLAG;
+#else
        PSPR = 0;
+#endif

        /* restore registers */
        RESTORE_GPLEVEL(0); RESTORE_GPLEVEL(1);
@@ -281,7 +290,13 @@
                break;
        case PM_SUSPEND_MEM:
                /* set resume return address */
+#ifdef CONFIG_PXA_EZX
+               /* set EZX flags for blob - WM */
+               *(unsigned long *)(phys_to_virt(RESUME_ADDR)) =
virt_to_phys(pxa_cpu_resume);
+               *(unsigned long *)(phys_to_virt(FLAG_ADDR)) = SLEEP_FLAG;
+#else
                PSPR = virt_to_phys(pxa_cpu_resume);
+#endif
                pxa27x_cpu_suspend(PWRMODE_SLEEP);
                break;
        }


        The problem lies on the bootloader which doesnt honor PSPR and resumes
to the address written at RESUME_ADDR on RAM.
        There is no way to workaround this on blob2.


- --
Daniel Ribeiro
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)

iD8DBQFIUJULw3OYl0G0liQRApk5AJ93sbs21q/LOo/k7kwmEtdBx+1tBwCgnhpl
+Ure+PZSvfSS0X4J3GfKJJE=
=7T2u
-----END PGP SIGNATURE-----

Reply via email to