]> rtime.felk.cvut.cz Git - arc.git/commitdiff
EcuM: Small cleanup and sleep fixes Ticket1609-EcuM
authormahi <devnull@localhost>
Wed, 26 Sep 2012 11:38:07 +0000 (13:38 +0200)
committermahi <devnull@localhost>
Wed, 26 Sep 2012 11:38:07 +0000 (13:38 +0200)
arch/ppc/mpc55xx/drivers/Mcu.c
arch/ppc/mpc55xx/drivers/Mcu_Sleep.sx
arch/ppc/mpc55xx/kernel/irq.c
system/EcuM/EcuM_Main.c
system/kernel/isr.c

index 67f1e774ae3f1a37e41804b69b02c368a0dd5460..2b7d66d65267b9a59292bb2a2721d0ed01c428cc 100644 (file)
@@ -790,9 +790,6 @@ static void enterLowPower (Mcu_ModeType mcuMode )
        SIU.HLT.R = 0x3FFFFFFF;\r
        while((SIU.HLTACK.R != 0x3FFFFFFF) && (timeout++<3000)) {}\r
 \r
-       /* put Z0 in reset if not used for wakeup */\r
-       CRP.Z0VEC.B.Z0RST = 1;\r
-\r
 #elif defined(CFG_MPC5668)\r
 \r
        WRITE32(CRP_Z6VEC, ((uint32)&McuE_LowPowerRecoverFlash) | VLE_VAL );\r
index d23d7b82fa2306157669eb4d3b43ba11f7e14433..35411880176536fd559c1bac2043ef07b03a3628 100644 (file)
@@ -176,7 +176,7 @@ McuE_LowPowerRecoverFlash:
     mtspr SPR_MAS0,r5     \r
     LOAD_ADDR_32(5, (0xC0000000 + MAS1_TSIZE_256K) )\r
     mtspr SPR_MAS1,r5     \r
-    LOAD_ADDR_32(5, (SRAM_START + VLE_VAL))\r
+    LOAD_ADDR_32(5, (SRAM_START + VLE_VAL + MAS2_I))\r
     mtspr SPR_MAS2,r5     \r
     LOAD_ADDR_32(5, (SRAM_START + MAS3_FULL_ACCESS))\r
     mtspr SPR_MAS3,r5\r
index dfe12baf1228a8fcd029bb6f5ab50aaabaeedd08..558d0e1df98c559136fbe11117f5759066e9543f 100644 (file)
@@ -63,10 +63,6 @@ void Irq_Init( void ) {
          assert(((uint32)exception_tbl & 0xfff)==0);\r
          set_spr(SPR_IVPR,(uint32)exception_tbl);\r
 \r
-         ramlog_str("Test\n");\r
-         ramlog_hex(0x10);\r
-         ramlog_dec(20);\r
-\r
          // TODO: The 5516 simulator still thinks it's a 5554 so setup the rest\r
 #if (defined(CFG_SIMULATOR) && defined(CFG_MPC5516)) || defined(CFG_MPC5567) || defined(CFG_MPC5554)  || defined(CFG_MPC5668)\r
            set_spr(SPR_IVOR0,((uint32_t)&exception_tbl+0x0) );\r
index b8b230f0c6a58158f606f443a80765df2bd6eff7..38a443416c7824f378d5c7754df2c60d3a3fdb19 100644 (file)
@@ -502,11 +502,11 @@ void EcuM_MainFunction(void) {
 \r
        case ECUM_STATE_GO_SLEEP:\r
                in_state_goSleep();\r
-               break;\r
+               /* Flow Through, Scheduler is Locked */\r
 \r
        case ECUM_STATE_SLEEP:\r
                in_state_sleep();\r
-               /* Flow Through */\r
+               /* Flow Through, Scheduler is Locked */\r
 \r
        case ECUM_STATE_WAKEUP_ONE: {\r
                DEBUG_ECUM_STATE(internal_data.current_state);\r
@@ -545,6 +545,8 @@ void EcuM_MainFunction(void) {
                                //internal_data.validationTimer = validationMaxTime;\r
                        } else {\r
                                LDEBUG_PRINTF("No Validation for event:0x%lx\n",(uint32)wkupCfgPtr->EcuMWakeupSourceId);\r
+\r
+                               /* Validate right away */\r
                                EcuM_ValidateWakeupEvent(wkupCfgPtr->EcuMWakeupSourceId);\r
                        }\r
                }\r
@@ -557,11 +559,14 @@ void EcuM_MainFunction(void) {
                uint32 pendingWkupMask;\r
 \r
                if( validationMask == 0 ) {\r
+                       pendingWkupMask = EcuM_GetPendingWakeupEvents();\r
                        // TODO: We can skip callout's here?\r
 \r
                        // TODO:\r
                        // ComM_EcuM_WakeupIndication( network handle )\r
 \r
+                       DEBUG_ECUM_CALLOUT_W_ARG("EcuM_StartWakeupSources","0x%lx",(uint32)pendingWkupMask);\r
+                       EcuM_StartWakeupSources(pendingWkupMask);\r
                        set_current_state(ECUM_STATE_WAKEUP_REACTION);\r
 \r
                } else {\r
@@ -577,9 +582,9 @@ void EcuM_MainFunction(void) {
 \r
                        if( pendingWkupMask == validationMask ) {\r
                                /* Match beetween the events that need validation -> done validating */\r
-                               set_current_state(ECUM_STATE_WAKEUP_REACTION);\r
                                DEBUG_ECUM_CALLOUT_W_ARG("EcuM_StartWakeupSources","0x%lx",(uint32)wMask);\r
                                EcuM_StartWakeupSources(wMask);\r
+                               set_current_state(ECUM_STATE_WAKEUP_REACTION);\r
                        } else {\r
                                if (internal_data.validationTimer == 0) {\r
                                        // EcuM_StopWakeupSources(0);    // TODO\r
index ced237cbcdea3cfd80516a8185e09ef9355fe732..7006f08ded746cb73e6988920bb90ac6cf76e460 100644 (file)
@@ -76,6 +76,7 @@ void Os_IsrInit( void ) {
 \r
        Irq_Init();\r
 \r
+       Os_Sys.isrCnt = 0;\r
        /* Probably something smarter, but I cant figure out what */\r
        memset(&Os_VectorToIsr[OS_ISR_CNT],ILL_VECTOR,NUMBER_OF_INTERRUPTS_AND_EXCEPTIONS-OS_ISR_CNT);\r
 \r