-----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-----