Change Details
| target/linux/xburst/files-2.6.31/arch/mips/jz4740/pm.c |
| 29 | 29 | |
| 30 | 30 | extern void jz4740_intc_suspend(void); |
| 31 | 31 | extern void jz4740_intc_resume(void); |
| 32 | | extern void jz_gpiolib_suspend(void); |
| 33 | | extern void jz_gpiolib_resume(void); |
| 34 | 32 | |
| 35 | 33 | static int jz_pm_enter(suspend_state_t state) |
| 36 | 34 | { |
| 37 | | unsigned long delta; |
| 38 | 35 | unsigned long nfcsr = REG_EMC_NFCSR; |
| 39 | 36 | uint32_t scr = REG_CPM_SCR; |
| 40 | 37 | |
| 41 | | /* Preserve current time */ |
| 42 | | delta = xtime.tv_sec - REG_RTC_RSR; |
| 43 | | |
| 44 | | /* Disable nand flash */ |
| 38 | /* Disable nand flash */ |
| 45 | 39 | REG_EMC_NFCSR = ~0xff; |
| 46 | 40 | |
| 47 | 41 | udelay(100); |
| 48 | 42 | |
| 49 | | /*stop udc and usb*/ |
| 43 | /*stop udc and usb*/ |
| 50 | 44 | REG_CPM_SCR &= ~( 1<<6 | 1<<7); |
| 51 | 45 | REG_CPM_SCR |= 0<<6 | 1<<7; |
| 52 | 46 | |
| 53 | | jz_gpiolib_suspend(); |
| 54 | | jz4740_intc_suspend(); |
| 47 | jz4740_intc_suspend(); |
| 55 | 48 | |
| 56 | 49 | /* Enter SLEEP mode */ |
| 57 | 50 | REG_CPM_LCR &= ~CPM_LCR_LPM_MASK; |
| ... | ... | |
| 64 | 57 | REG_CPM_LCR &= ~CPM_LCR_LPM_MASK; |
| 65 | 58 | REG_CPM_LCR |= CPM_LCR_LPM_IDLE; |
| 66 | 59 | |
| 67 | | /* Restore nand flash control register */ |
| 60 | /* Restore nand flash control register */ |
| 68 | 61 | REG_EMC_NFCSR = nfcsr; |
| 69 | 62 | |
| 70 | | jz4740_intc_resume(); |
| 71 | | jz_gpiolib_resume(); |
| 63 | jz4740_intc_resume(); |
| 72 | 64 | |
| 73 | 65 | /* Restore sleep control register */ |
| 74 | 66 | REG_CPM_SCR = scr; |
| 75 | 67 | |
| 76 | | /* Restore current time */ |
| 77 | | xtime.tv_sec = REG_RTC_RSR + delta; |
| 78 | | |
| 79 | 68 | return 0; |
| 80 | 69 | } |
| 81 | 70 | |
Download the corresponding diff file