Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- RAM_ARM9:0208C16C @ =============== S U B R O U T I N E =======================================
- RAM_ARM9:0208C16C
- RAM_ARM9:0208C16C
- RAM_ARM9:0208C16C @ void __fastcall PM_GoSleepMode__(struct PMWakeUpTrigger *trigger, struct PMLogic *logic, unsigned __int16 keyPattern)
- RAM_ARM9:0208C16C PM_GoSleepMode__: @ CODE XREF: sub_2035474+48p
- RAM_ARM9:0208C16C
- RAM_ARM9:0208C16C var_40 = -0x40
- RAM_ARM9:0208C16C var_3C = -0x3C
- RAM_ARM9:0208C16C var_38 = -0x38
- RAM_ARM9:0208C16C var_34 = -0x34
- RAM_ARM9:0208C16C var_30 = -0x30
- RAM_ARM9:0208C16C var_2C = -0x2C
- RAM_ARM9:0208C16C var_28 = -0x28
- RAM_ARM9:0208C16C
- RAM_ARM9:0208C16C F0 4F 2D E9 STMFD SP!, {R4-R11,LR}
- RAM_ARM9:0208C170 1C D0 4D E2 SUB SP, SP, #0x1C
- RAM_ARM9:0208C174 D8 32 9F E5 LDR R3, =0x2153020
- RAM_ARM9:0208C178 00 70 A0 E1 MOV R7, R0
- RAM_ARM9:0208C17C 1C 00 93 E5 LDR R0, [R3,#0x1C] @ listp
- RAM_ARM9:0208C180 00 10 8D E5 STR R1, [SP]
- RAM_ARM9:0208C184 04 20 8D E5 STR R2, [SP,#4]
- RAM_ARM9:0208C188 01 50 A0 E3 MOV R5, #1
- RAM_ARM9:0208C18C 00 40 A0 E3 MOV R4, #0
- RAM_ARM9:0208C190 98 01 00 EB BL PMi_ExecuteList__
- RAM_ARM9:0208C194 BC 02 9F E5 LDR R0, =0x4000208
- RAM_ARM9:0208C198 B0 60 D0 E1 LDRH R6, [R0]
- RAM_ARM9:0208C19C B0 40 C0 E1 STRH R4, [R0]
- RAM_ARM9:0208C1A0 FE ED FF EB BL OS_DisableInterrupts__
- RAM_ARM9:0208C1A4 10 00 8D E5 STR R0, [SP,#0x10]
- RAM_ARM9:0208C1A8 01 00 44 E2 SUB R0, R4, #1 @ intr
- RAM_ARM9:0208C1AC FF E1 FF EB BL OS_DisableIrqMask__
- RAM_ARM9:0208C1B0 0C 00 8D E5 STR R0, [SP,#0xC]
- RAM_ARM9:0208C1B4 AD EB FF EB BL OS_IsTickAvailable__
- RAM_ARM9:0208C1B8 00 00 50 E3 CMP R0, #0
- RAM_ARM9:0208C1BC 08 00 A0 13 MOVNE R0, #8
- RAM_ARM9:0208C1C0 04 00 A0 01 MOVEQ R0, R4
- RAM_ARM9:0208C1C4 01 07 80 E3 ORR R0, R0, #0x40000 @ intr
- RAM_ARM9:0208C1C8 E1 E1 FF EB BL OS_SetIrqMask__
- RAM_ARM9:0208C1CC 10 00 9D E5 LDR R0, [SP,#0x10]
- RAM_ARM9:0208C1D0 F7 ED FF EB BL OS_RestoreInterrupts__
- RAM_ARM9:0208C1D4 7C 12 9F E5 LDR R1, =0x4000208
- RAM_ARM9:0208C1D8 08 00 17 E3 TST R7, #8
- RAM_ARM9:0208C1DC B0 00 D1 E1 LDRH R0, [R1]
- RAM_ARM9:0208C1E0 B0 50 C1 E1 STRH R5, [R1]
- RAM_ARM9:0208C1E4 06 00 00 0A BEQ loc_208C204
- RAM_ARM9:0208C1E8 4B EE FF EB BL MB_IsMultiBootChild__
- RAM_ARM9:0208C1EC FE 00 80 E2 ADD R0, R0, #0xFE
- RAM_ARM9:0208C1F0 FF 0C 80 E2 ADD R0, R0, #0xFF00
- RAM_ARM9:0208C1F4 00 08 A0 E1 MOV R0, R0,LSL#16
- RAM_ARM9:0208C1F8 20 08 A0 E1 MOV R0, R0,LSR#16
- RAM_ARM9:0208C1FC 01 00 50 E3 CMP R0, #1
- RAM_ARM9:0208C200 08 70 C7 93 BICLS R7, R7, #8
- RAM_ARM9:0208C204
- RAM_ARM9:0208C204 loc_208C204: @ CODE XREF: PM_GoSleepMode__+78j
- RAM_ARM9:0208C204 10 00 17 E3 TST R7, #0x10
- RAM_ARM9:0208C208 06 00 00 0A BEQ loc_208C228
- RAM_ARM9:0208C20C D0 E6 FF EB BL DSi.Check__
- RAM_ARM9:0208C210 00 00 50 E3 CMP R0, #0
- RAM_ARM9:0208C214 02 00 00 1A BNE loc_208C224
- RAM_ARM9:0208C218 52 13 00 EB BL CTRDG_IsExisting__
- RAM_ARM9:0208C21C 00 00 50 E3 CMP R0, #0
- RAM_ARM9:0208C220 00 00 00 1A BNE loc_208C228
- RAM_ARM9:0208C224
- RAM_ARM9:0208C224 loc_208C224: @ CODE XREF: PM_GoSleepMode__+A8j
- RAM_ARM9:0208C224 10 70 C7 E3 BIC R7, R7, #0x10
- RAM_ARM9:0208C228
- RAM_ARM9:0208C228 loc_208C228: @ CODE XREF: PM_GoSleepMode__+9Cj
- RAM_ARM9:0208C228 @ PM_GoSleepMode__+B4j
- RAM_ARM9:0208C228 01 13 A0 E3 MOV R1, #0x4000000
- RAM_ARM9:0208C22C 01 0A 81 E2 ADD R0, R1, #0x1000
- RAM_ARM9:0208C230 00 B0 91 E5 LDR R11, [R1]
- RAM_ARM9:0208C234 00 50 90 E5 LDR R5, [R0]
- RAM_ARM9:0208C238 18 01 00 EB BL PM_GetLCDPower__
- RAM_ARM9:0208C23C 14 90 8D E2 ADD R9, SP, #0x14
- RAM_ARM9:0208C240 18 A0 8D E2 ADD R10, SP, #0x18
- RAM_ARM9:0208C244 08 00 8D E5 STR R0, [SP,#8]
- RAM_ARM9:0208C248 0A 00 A0 E1 MOV R0, R10 @ top
- RAM_ARM9:0208C24C 09 10 A0 E1 MOV R1, R9 @ bottom
- RAM_ARM9:0208C250 64 FF FF EB BL PM_GetBackLight__
- RAM_ARM9:0208C254 00 00 50 E3 CMP R0, #0
- RAM_ARM9:0208C258 07 00 00 0A BEQ loc_208C27C
- RAM_ARM9:0208C25C F8 81 9F E5 LDR R8, =0x51D23
- RAM_ARM9:0208C260
- RAM_ARM9:0208C260 loc_208C260: @ CODE XREF: PM_GoSleepMode__+10Cj
- RAM_ARM9:0208C260 08 00 A0 E1 MOV R0, R8
- RAM_ARM9:0208C264 EC ED FF EB BL DSi_regUnk__
- RAM_ARM9:0208C268 0A 00 A0 E1 MOV R0, R10 @ top
- RAM_ARM9:0208C26C 09 10 A0 E1 MOV R1, R9 @ bottom
- RAM_ARM9:0208C270 5C FF FF EB BL PM_GetBackLight__
- RAM_ARM9:0208C274 00 00 50 E3 CMP R0, #0
- RAM_ARM9:0208C278 F8 FF FF 1A BNE loc_208C260
- RAM_ARM9:0208C27C
- RAM_ARM9:0208C27C loc_208C27C: @ CODE XREF: PM_GoSleepMode__+ECj
- RAM_ARM9:0208C27C 02 00 A0 E3 MOV R0, #2 @ target
- RAM_ARM9:0208C280 00 10 A0 E3 MOV R1, #0 @ sw
- RAM_ARM9:0208C284 D9 FE FF EB BL PM_SetBackLight__
- RAM_ARM9:0208C288 00 00 50 E3 CMP R0, #0
- RAM_ARM9:0208C28C 09 00 00 0A BEQ loc_208C2B8
- RAM_ARM9:0208C290 C4 A1 9F E5 LDR R10, =0x51D23
- RAM_ARM9:0208C294 02 90 A0 E3 MOV R9, #2
- RAM_ARM9:0208C298 00 80 A0 E3 MOV R8, #0
- RAM_ARM9:0208C29C
- RAM_ARM9:0208C29C loc_208C29C: @ CODE XREF: PM_GoSleepMode__+148j
- RAM_ARM9:0208C29C 0A 00 A0 E1 MOV R0, R10
- RAM_ARM9:0208C2A0 DD ED FF EB BL DSi_regUnk__
- RAM_ARM9:0208C2A4 09 00 A0 E1 MOV R0, R9 @ target
- RAM_ARM9:0208C2A8 08 10 A0 E1 MOV R1, R8 @ sw
- RAM_ARM9:0208C2AC CF FE FF EB BL PM_SetBackLight__
- RAM_ARM9:0208C2B0 00 00 50 E3 CMP R0, #0
- RAM_ARM9:0208C2B4 F8 FF FF 1A BNE loc_208C29C
- RAM_ARM9:0208C2B8
- RAM_ARM9:0208C2B8 loc_208C2B8: @ CODE XREF: PM_GoSleepMode__+120j
- RAM_ARM9:0208C2B8 75 FD FF EB BL waitForNextVFrame__ @ //---- wait a few frames after backlight off for avoiding appearance of afterimage
- RAM_ARM9:0208C2BC 01 23 A0 E3 MOV R2, #0x4000000
- RAM_ARM9:0208C2C0 00 00 92 E5 LDR R0, [R2]
- RAM_ARM9:0208C2C4 01 1A 82 E2 ADD R1, R2, #0x1000
- RAM_ARM9:0208C2C8 03 08 C0 E3 BIC R0, R0, #0x30000
- RAM_ARM9:0208C2CC 00 00 82 E5 STR R0, [R2]
- RAM_ARM9:0208C2D0 00 00 91 E5 LDR R0, [R1]
- RAM_ARM9:0208C2D4 01 08 C0 E3 BIC R0, R0, #0x10000
- RAM_ARM9:0208C2D8 00 00 81 E5 STR R0, [R1]
- RAM_ARM9:0208C2DC 6C FD FF EB BL waitForNextVFrame__
- RAM_ARM9:0208C2E0 6B FD FF EB BL waitForNextVFrame__
- RAM_ARM9:0208C2E4 76 FF FF EB BL readFSToDMA__
- RAM_ARM9:0208C2E8 14 10 9D E5 LDR R1, [SP,#0x14]
- RAM_ARM9:0208C2EC 60 01 9F E5 LDR R0, =0x2153020
- RAM_ARM9:0208C2F0 00 80 A0 E3 MOV R8, #0
- RAM_ARM9:0208C2F4 08 80 80 E5 STR R8, [R0,#8]
- RAM_ARM9:0208C2F8 00 00 51 E3 CMP R1, #0
- RAM_ARM9:0208C2FC 18 00 9D E5 LDR R0, [SP,#0x18]
- RAM_ARM9:0208C300 80 80 A0 13 MOVNE R8, #0x80 @ 'Ç'
- RAM_ARM9:0208C304 00 00 50 E3 CMP R0, #0
- RAM_ARM9:0208C308 40 90 A0 E3 MOV R9, #0x40 @ '@'
- RAM_ARM9:0208C30C 01 07 A0 E3 MOV R0, #0x40000 @ intr
- RAM_ARM9:0208C310 00 90 A0 03 MOVEQ R9, #0
- RAM_ARM9:0208C314 8E E1 FF EB BL OS_SetIrqMask__
- RAM_ARM9:0208C318 00 10 9D E5 LDR R1, [SP]
- RAM_ARM9:0208C31C 04 00 9D E5 LDR R0, [SP,#4]
- RAM_ARM9:0208C320 00 10 81 E1 ORR R1, R1, R0
- RAM_ARM9:0208C324 09 00 87 E1 ORR R0, R7, R9
- RAM_ARM9:0208C328 08 00 80 E1 ORR R0, R0, R8
- RAM_ARM9:0208C32C 00 08 A0 E1 MOV R0, R0,LSL#16
- RAM_ARM9:0208C330 01 18 A0 E1 MOV R1, R1,LSL#16
- RAM_ARM9:0208C334 20 08 A0 E1 MOV R0, R0,LSR#16 @ trigger
- RAM_ARM9:0208C338 21 18 A0 E1 MOV R1, R1,LSR#16 @ keyIntrData
- RAM_ARM9:0208C33C 23 FE FF EB BL PMi_SendSleepStart__
- RAM_ARM9:0208C340 0C 81 9F E5 LDR R8, =0x2153020
- RAM_ARM9:0208C344 08 00 98 E5 LDR R0, [R8,#8]
- RAM_ARM9:0208C348 00 00 50 E3 CMP R0, #0
- RAM_ARM9:0208C34C 03 00 00 1A BNE loc_208C360
- RAM_ARM9:0208C350
- RAM_ARM9:0208C350 loc_208C350: @ CODE XREF: PM_GoSleepMode__+1F0j
- RAM_ARM9:0208C350 E4 EF FF EB BL OS_Halt__
- RAM_ARM9:0208C354 08 00 98 E5 LDR R0, [R8,#8]
- RAM_ARM9:0208C358 00 00 50 E3 CMP R0, #0
- RAM_ARM9:0208C35C FB FF FF 0A BEQ loc_208C350
- RAM_ARM9:0208C360
- RAM_ARM9:0208C360 loc_208C360: @ CODE XREF: PM_GoSleepMode__+1E0j
- RAM_ARM9:0208C360 00 80 A0 E3 MOV R8, #0
- RAM_ARM9:0208C364 41 EB FF EB BL OS_IsTickAvailable__
- RAM_ARM9:0208C368 00 00 50 E3 CMP R0, #0
- RAM_ARM9:0208C36C 08 00 A0 13 MOVNE R0, #8
- RAM_ARM9:0208C370 08 00 A0 01 MOVEQ R0, R8
- RAM_ARM9:0208C374 01 07 80 E3 ORR R0, R0, #0x40000 @ intr
- RAM_ARM9:0208C378 75 E1 FF EB BL OS_SetIrqMask__
- RAM_ARM9:0208C37C 08 00 17 E3 TST R7, #8
- RAM_ARM9:0208C380 03 00 00 0A BEQ loc_208C394
- RAM_ARM9:0208C384 D4 00 9F E5 LDR R0, =0x4000214
- RAM_ARM9:0208C388 00 00 90 E5 LDR R0, [R0]
- RAM_ARM9:0208C38C 01 06 10 E3 TST R0, #0x100000
- RAM_ARM9:0208C390 01 40 A0 13 MOVNE R4, #1
- RAM_ARM9:0208C394
- RAM_ARM9:0208C394 loc_208C394: @ CODE XREF: PM_GoSleepMode__+214j
- RAM_ARM9:0208C394 00 00 54 E3 CMP R4, #0
- RAM_ARM9:0208C398 01 70 A0 E3 MOV R7, #1
- RAM_ARM9:0208C39C 19 00 00 1A BNE loc_208C408
- RAM_ARM9:0208C3A0 08 00 9D E5 LDR R0, [SP,#8]
- RAM_ARM9:0208C3A4 01 00 50 E3 CMP R0, #1
- RAM_ARM9:0208C3A8 07 00 00 1A BNE loc_208C3CC
- RAM_ARM9:0208C3AC
- RAM_ARM9:0208C3AC loc_208C3AC: @ CODE XREF: PM_GoSleepMode__+258j
- RAM_ARM9:0208C3AC 07 00 A0 E1 MOV R0, R7 @ sw
- RAM_ARM9:0208C3B0 07 10 A0 E1 MOV R1, R7 @ led
- RAM_ARM9:0208C3B4 07 20 A0 E1 MOV R2, R7 @ skip
- RAM_ARM9:0208C3B8 07 30 A0 E1 MOV R3, R7 @ isSync
- RAM_ARM9:0208C3BC 28 00 00 EB BL PMi_SetLCDPower__
- RAM_ARM9:0208C3C0 01 00 50 E3 CMP R0, #1
- RAM_ARM9:0208C3C4 F8 FF FF 1A BNE loc_208C3AC
- RAM_ARM9:0208C3C8 0A 00 00 EA B loc_208C3F8
- RAM_ARM9:0208C3CC @ ---------------------------------------------------------------------------
- RAM_ARM9:0208C3CC
- RAM_ARM9:0208C3CC loc_208C3CC: @ CODE XREF: PM_GoSleepMode__+23Cj
- RAM_ARM9:0208C3CC 07 00 A0 E1 MOV R0, R7 @ status
- RAM_ARM9:0208C3D0 5A FE FF EB BL PMi_SetLED__
- RAM_ARM9:0208C3D4 00 00 50 E3 CMP R0, #0
- RAM_ARM9:0208C3D8 06 00 00 0A BEQ loc_208C3F8
- RAM_ARM9:0208C3DC 78 90 9F E5 LDR R9, =0x51D23
- RAM_ARM9:0208C3E0
- RAM_ARM9:0208C3E0 loc_208C3E0: @ CODE XREF: PM_GoSleepMode__+288j
- RAM_ARM9:0208C3E0 09 00 A0 E1 MOV R0, R9
- RAM_ARM9:0208C3E4 8C ED FF EB BL DSi_regUnk__
- RAM_ARM9:0208C3E8 07 00 A0 E1 MOV R0, R7 @ status
- RAM_ARM9:0208C3EC 53 FE FF EB BL PMi_SetLED__
- RAM_ARM9:0208C3F0 00 00 50 E3 CMP R0, #0
- RAM_ARM9:0208C3F4 F9 FF FF 1A BNE loc_208C3E0
- RAM_ARM9:0208C3F8
- RAM_ARM9:0208C3F8 loc_208C3F8: @ CODE XREF: PM_GoSleepMode__+25Cj
- RAM_ARM9:0208C3F8 @ PM_GoSleepMode__+26Cj
- RAM_ARM9:0208C3F8 01 03 A0 E3 MOV R0, #0x4000000
- RAM_ARM9:0208C3FC 00 B0 80 E5 STR R11, [R0]
- RAM_ARM9:0208C400 01 0A 80 E2 ADD R0, R0, #0x1000
- RAM_ARM9:0208C404 00 50 80 E5 STR R5, [R0]
- RAM_ARM9:0208C408
- RAM_ARM9:0208C408 loc_208C408: @ CODE XREF: PM_GoSleepMode__+230j
- RAM_ARM9:0208C408 36 08 A0 E3 MOV R0, #0x360000
- RAM_ARM9:0208C40C 82 ED FF EB BL DSi_regUnk__
- RAM_ARM9:0208C410 40 50 9F E5 LDR R5, =0x4000208
- RAM_ARM9:0208C414 B0 00 D5 E1 LDRH R0, [R5]
- RAM_ARM9:0208C418 0C 00 9D E5 LDR R0, [SP,#0xC] @ intr
- RAM_ARM9:0208C41C B0 80 C5 E1 STRH R8, [R5]
- RAM_ARM9:0208C420 4B E1 FF EB BL OS_SetIrqMask__
- RAM_ARM9:0208C424 10 00 9D E5 LDR R0, [SP,#0x10]
- RAM_ARM9:0208C428 61 ED FF EB BL OS_RestoreInterrupts__
- RAM_ARM9:0208C42C B0 00 D5 E1 LDRH R0, [R5]
- RAM_ARM9:0208C430 00 00 54 E3 CMP R4, #0
- RAM_ARM9:0208C434 B0 60 C5 E1 STRH R6, [R5]
- RAM_ARM9:0208C438 00 00 00 0A BEQ loc_208C440
- RAM_ARM9:0208C43C 9E FE FF EB BL sub_208BEBC
- RAM_ARM9:0208C440 @ ---------------------------------------------------------------------------
- RAM_ARM9:0208C440
- RAM_ARM9:0208C440 loc_208C440: @ CODE XREF: PM_GoSleepMode__+2CCj
- RAM_ARM9:0208C440 0C 00 9F E5 LDR R0, =0x2153020
- RAM_ARM9:0208C444 04 00 90 E5 LDR R0, [R0,#4] @ listp
- RAM_ARM9:0208C448 EA 00 00 EB BL PMi_ExecuteList__
- RAM_ARM9:0208C44C 1C D0 8D E2 ADD SP, SP, #0x1C
- RAM_ARM9:0208C450 F0 8F BD E8 LDMFD SP!, {R4-R11,PC}
- RAM_ARM9:0208C450 @ End of function PM_GoSleepMode__
- RAM_ARM9:0208C450
- RAM_ARM9:0208C450 @ ---------------------------------------------------------------------------
- RAM_ARM9:0208C454 20 30 15 02 dword_208C454: .long 0x2153020 @ DATA XREF: PM_GoSleepMode__+8r
- RAM_ARM9:0208C454 @ PM_GoSleepMode__+180r ...
- RAM_ARM9:0208C458 08 02 00 04 dword_208C458: .long 0x4000208 @ DATA XREF: PM_GoSleepMode__+28r
- RAM_ARM9:0208C458 @ PM_GoSleepMode__+68r ...
- RAM_ARM9:0208C45C 23 1D 05 00 dword_208C45C: .long 0x51D23 @ DATA XREF: PM_GoSleepMode__+F0r
- RAM_ARM9:0208C45C @ PM_GoSleepMode__+124r ...
- RAM_ARM9:0208C460 14 02 00 04 dword_208C460: .long 0x4000214 @ DATA XREF: PM_GoSleepMode__+218r
- -----------------------------------------------------------------------------------------------------------------------
- void PM_GoSleepMode(PMWakeUpTrigger trigger, PMLogic logic, u16 keyPattern)
- {
- BOOL prepIrq; // IME
- OSIntrMode prepIntrMode; // CPSR-IRQ
- OSIrqMask prepIntrMask; // IE
- BOOL powerOffFlag = FALSE;
- PMBackLightSwitch preTop;
- PMBackLightSwitch preBottom;
- u32 preGX;
- u32 preGXS;
- PMLCDPower preLCDPower;
- //---- call pre-callbacks
- PMi_ExecuteList(PMi_PreSleepCallbackList);
- //---- disable all interrupt
- prepIrq = OS_DisableIrq(); // IME D
- prepIntrMode = OS_DisableInterrupts(); // CPSR-IRQ D
- prepIntrMask = OS_DisableIrqMask((1 << OS_IRQ_TABLE_MAX) - 1); // IE D
- //---- interrupt setting
- (void)OS_SetIrqMask(OS_IE_FIFO_RECV); // enable PXI from ARM7
- (void)OS_RestoreInterrupts(prepIntrMode); // CPSR-IRQ E
- (void)OS_EnableIrq(); // IME E
- //---- check card trigger
- if (trigger & PM_TRIGGER_CARD)
- {
- //---- if multi boot child, ignore card check flag
- if (MB_IsMultiBootChild())
- {
- trigger &= ~PM_TRIGGER_CARD;
- }
- }
- //---- check cartridge trigger
- if (trigger & PM_TRIGGER_CARTRIDGE)
- {
- //---- if cartridge not exist, ignore cartridge check flag
- if (!CTRDG_IsExisting())
- {
- trigger &= ~PM_TRIGGER_CARTRIDGE;
- }
- }
- //---- remember gx state
- preGX = reg_GX_DISPCNT;
- preGXS = reg_GXS_DB_DISPCNT;
- preLCDPower = PM_GetLCDPower();
- //---- set backlight off
- (void)PM_GetBackLight(&preTop, &preBottom);
- (void)PM_SetBackLight(PM_LCD_ALL, PM_BACKLIGHT_OFF);
- //---- wait a few frames after backlight off for avoiding appearance of afterimage
- {
- vu32 vcount = OS_GetVBlankCount();
- while (vcount == OS_GetVBlankCount())
- {
- }
- vcount = OS_GetVBlankCount();
- reg_GX_DISPCNT = reg_GX_DISPCNT & ~REG_GX_DISPCNT_MODE_MASK; // main screen off
- GXS_DispOff();
- while (vcount == OS_GetVBlankCount())
- {
- }
- vcount = OS_GetVBlankCount();
- while (vcount == OS_GetVBlankCount())
- {
- }
- }
- //---- send SLEEP_START command to ARM7
- {
- u16 param;
- param = (u16)(trigger
- | preTop << PM_BACKLIGHT_RECOVER_TOP_SHIFT
- | preBottom << PM_BACKLIGHT_RECOVER_BOTTOM_SHIFT);
- while (PMi_SendSleepStart(param, (u16)(logic | keyPattern)) != PM_SUCCESS)
- {
- }
- }
- //==== Halt ================
- OS_Halt();
- //==========================
- //---- wait 100ms
- OS_SpinWait(PMi_LCD_POWER_WAIT_TICK);
- //---- check card remove
- if ((trigger & PM_TRIGGER_CARD) && (OS_GetRequestIrqMask() & OS_IE_CARD_IREQ))
- {
- powerOffFlag = TRUE;
- }
- //---- turn LCD on, and restore gx state
- if (!powerOffFlag)
- {
- if (preLCDPower == PM_LCD_POWER_ON)
- {
- (void)PMi_SetLCDPower(PM_LCD_POWER_ON, PM_LED_ON, TRUE, FALSE);
- }
- else
- {
- (void)PMi_SetLED(PM_LED_ON);
- }
- reg_GX_DISPCNT = preGX;
- reg_GXS_DB_DISPCNT = preGXS;
- }
- //---- restore all interrupt
- (void)OS_DisableInterrupts(); // CPSR-IRQ D (IME D in it)
- (void)OS_SetIrqMask(prepIntrMask); // IE R
- (void)OS_RestoreInterrupts(prepIntrMode); // CPSR-IRQ R
- (void)OS_RestoreIrq(prepIrq); // IME R
- //---- power off if need
- if (powerOffFlag)
- {
- (void)PM_ForceToPowerOff();
- }
- //---- call post-callbacks
- PMi_ExecuteList(PMi_PostSleepCallbackList);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement