]> rtime.felk.cvut.cz Git - arc.git/commitdiff
Fls fix and general cleaning for GPT
authorjcar <devnull@localhost>
Fri, 2 Mar 2012 06:57:32 +0000 (07:57 +0100)
committerjcar <devnull@localhost>
Fri, 2 Mar 2012 06:57:32 +0000 (07:57 +0100)
arch/ppc/mpc55xx/drivers/Gpt.c
arch/ppc/mpc55xx/drivers/flash_h7f_c90.c

index 8fae322a7b710644e2cab9323a60051c8ddff5d6..1b56e83d27f892de7cc45e3898bbf3a525321707 100644 (file)
@@ -101,7 +101,9 @@ typedef struct {
        // Our config\r
        const Gpt_ConfigType *config;\r
 \r
+#if ( GPT_WAKEUP_FUNCTIONALITY_API == STD_ON )\r
        uint8 wakeupEnabled;\r
+#endif\r
 \r
        // One bit for each channel that is configured.\r
        // Used to determine if validity of a channel\r
@@ -121,6 +123,8 @@ typedef struct {
        Gpt_StateType state;\r
 } Gpt_UnitType;\r
 \r
+\r
+/* GPT_CHANNEL_CNT represents the number of physical channels */\r
 Gpt_UnitType Gpt_Unit[GPT_CHANNEL_CNT];\r
 \r
 // Global config\r
@@ -206,6 +210,14 @@ GPT_ISR( 8 )
        #elif defined(CFG_MPC5604B)\r
                #define GPT_CHANNEL_PIT_LAST GPT_CHANNEL_PIT_5\r
        #endif\r
+#else\r
+       #define GPT_CHANNEL_PIT_LAST GPT_CHANNEL_PIT_8\r
+       #define PIT_INT0 PIT_PITFLG_RTIF\r
+       #define PIT_INT1 PIT_PITFLG_PIT1\r
+       #define PIT_INT2 PIT_PITFLG_PIT2\r
+       #define PIT_INT3 PIT_PITFLG_PIT3\r
+       #define PIT_INT4 PIT_PITFLG_PIT4\r
+       #define PIT_INT5 PIT_PITFLG_PIT5\r
 #endif\r
 \r
 //-------------------------------------------------------------------\r
@@ -234,6 +246,7 @@ void Gpt_Init(const Gpt_ConfigType *config) {
 \r
        for (i = 0; i < GPT_CHANNEL_CNT; i++) {\r
                Gpt_Global.channelMap[i] = GPT_CHANNEL_ILL;\r
+           Gpt_Unit[i].state = GPT_STATE_STOPPED;\r
        }\r
 \r
        i = 0;\r
@@ -245,7 +258,6 @@ void Gpt_Init(const Gpt_ConfigType *config) {
                Gpt_Global.channelMap[cfg->GptChannelId] = i;\r
                Gpt_Global.configured |= (1 << ch);\r
 \r
-#if defined(CFG_MPC560X)\r
                if (ch <= GPT_CHANNEL_PIT_LAST)\r
                {\r
                        if (cfg->GptNotification != NULL)\r
@@ -259,6 +271,11 @@ void Gpt_Init(const Gpt_ConfigType *config) {
 #if !defined(CFG_MPC5606S)\r
                                        case 4: ISR_INSTALL_ISR2( "Gpt_4", Gpt_Isr_Channel4, PIT_INT4, 2, 0 ); break;\r
                                        case 5: ISR_INSTALL_ISR2( "Gpt_5", Gpt_Isr_Channel5, PIT_INT5, 2, 0 ); break;\r
+#if !defined(CFG_MPC5604B)\r
+                                       case 6: ISR_INSTALL_ISR2( "Gpt_6", Gpt_Isr_Channel6, PIT_PITFLG_PIT6, 2, 0 ); break;\r
+                                       case 7: ISR_INSTALL_ISR2( "Gpt_7", Gpt_Isr_Channel7, PIT_PITFLG_PIT7, 2, 0 ); break;\r
+                                       case 8: ISR_INSTALL_ISR2( "Gpt_8", Gpt_Isr_Channel8, PIT_PITFLG_PIT8, 2, 0 );break;\r
+#endif\r
 #endif\r
                                        default:\r
                                        {\r
@@ -269,61 +286,6 @@ void Gpt_Init(const Gpt_ConfigType *config) {
                                }\r
                        }\r
                }\r
-#else\r
-               if (ch <= GPT_CHANNEL_PIT_8) {\r
-                       if (cfg->GptNotification != NULL) {\r
-                               switch (ch) {\r
-                               // TODO: What to do with cfg->GptNotificationPriority ?\r
-                               case 0:\r
-                                       ISR_INSTALL_ISR2( "Gpt_0", Gpt_Isr_Channel0, PIT_PITFLG_RTIF, 2, 0 )\r
-                                       ;\r
-                                       break;\r
-                               case 1:\r
-                                       ISR_INSTALL_ISR2( "Gpt_1", Gpt_Isr_Channel1, PIT_PITFLG_PIT1, 2, 0 )\r
-                                       ;\r
-                                       break;\r
-                               case 2:\r
-                                       ISR_INSTALL_ISR2( "Gpt_2", Gpt_Isr_Channel2, PIT_PITFLG_PIT2, 2, 0 )\r
-                                       ;\r
-                                       break;\r
-                               case 3:\r
-                                       ISR_INSTALL_ISR2( "Gpt_3", Gpt_Isr_Channel3, PIT_PITFLG_PIT3, 2, 0 )\r
-                                       ;\r
-                                       break;\r
-                               case 4:\r
-                                       ISR_INSTALL_ISR2( "Gpt_4", Gpt_Isr_Channel4, PIT_PITFLG_PIT4, 2, 0 )\r
-                                       ;\r
-                                       break;\r
-                               case 5:\r
-                                       ISR_INSTALL_ISR2( "Gpt_5", Gpt_Isr_Channel5, PIT_PITFLG_PIT5, 2, 0 )\r
-                                       ;\r
-                                       break;\r
-                               case 6:\r
-                                       ISR_INSTALL_ISR2( "Gpt_6", Gpt_Isr_Channel6, PIT_PITFLG_PIT6, 2, 0 )\r
-                                       ;\r
-                                       break;\r
-                               case 7:\r
-                                       ISR_INSTALL_ISR2( "Gpt_7", Gpt_Isr_Channel7, PIT_PITFLG_PIT7, 2, 0 )\r
-                                       ;\r
-                                       break;\r
-                               case 8:\r
-                                       ISR_INSTALL_ISR2( "Gpt_8", Gpt_Isr_Channel8, PIT_PITFLG_PIT8, 2, 0 )\r
-                                       ;\r
-                                       break;\r
-                               default: {\r
-                                       // Unknown PIT channel.\r
-                                       assert( 0 );\r
-                                       break;\r
-                               }\r
-                               }\r
-                       }\r
-               }\r
-#endif\r
-\r
-#if defined(CFG_MPC560X)\r
-               //nothing needed to do\r
-#else\r
-#endif\r
                cfg++;\r
                i++;\r
        }\r
@@ -369,11 +331,9 @@ void Gpt_DeInit(void)
        for (channel=0; channel<GPT_CHANNEL_CNT; channel++) // Validate that all channels have been stopped\r
        {\r
                VALIDATE( (Gpt_Unit[channel].state == GPT_STATE_STOPPED), GPT_DEINIT_SERVICE_ID, GPT_E_BUSY );\r
-               Gpt_StopTimer(channel); // Should this be done here?\r
        }\r
        Gpt_Global.initRun = STD_OFF;\r
        Gpt_Global.configured = 0;\r
-       //_config.config = NULL;\r
 }\r
 #endif\r
 \r
@@ -385,7 +345,9 @@ void Gpt_StartTimer(Gpt_ChannelType channel, Gpt_ValueType period_ticks) {
 #endif\r
        int confCh;\r
 \r
-       VALIDATE( (Gpt_Global.initRun == STD_ON), GPT_STARTTIMER_SERVICE_ID, GPT_E_UNINIT ); VALIDATE( VALID_CHANNEL(channel), GPT_STARTTIMER_SERVICE_ID, GPT_E_PARAM_CHANNEL ); VALIDATE( (Gpt_Unit[channel].state == GPT_STATE_STOPPED), GPT_STARTTIMER_SERVICE_ID, GPT_E_BUSY );\r
+       VALIDATE( (Gpt_Global.initRun == STD_ON), GPT_STARTTIMER_SERVICE_ID, GPT_E_UNINIT );\r
+       VALIDATE( VALID_CHANNEL(channel), GPT_STARTTIMER_SERVICE_ID, GPT_E_PARAM_CHANNEL );\r
+       VALIDATE( (Gpt_Unit[channel].state == GPT_STATE_STOPPED), GPT_STARTTIMER_SERVICE_ID, GPT_E_BUSY );\r
        // GPT_E_PARAM_VALUE, all have 32-bit so no need to check\r
 \r
        DEBUG(DEBUG_HIGH, "Gpt_StartTimer ch=%d, period=%d [ticks]\n", channel, period_ticks);\r
@@ -402,7 +364,7 @@ void Gpt_StartTimer(Gpt_ChannelType channel, Gpt_ValueType period_ticks) {
                PIT.CH[channel].TCTRL.B.TEN = 1;\r
        }\r
 #else\r
-       if (channel <= GPT_CHANNEL_PIT_8) {\r
+       if (channel <= GPT_CHANNEL_PIT_LAST) {\r
                uint32 *tlval = (uint32 *) &PIT.TLVAL0;\r
                uint32 *tval = (uint32 *) &PIT.TVAL0;\r
 \r
@@ -456,7 +418,7 @@ void Gpt_StopTimer(Gpt_ChannelType channel) {
                PIT.CH[channel].TCTRL.B.TEN = 0;\r
        }\r
 #else\r
-       if (channel <= GPT_CHANNEL_PIT_8) {\r
+       if (channel <= GPT_CHANNEL_PIT_LAST) {\r
                // Disable timer\r
                PIT.EN.R &= ~(1 << channel);\r
        } else if (channel == GPT_CHANNEL_DEC) {\r
@@ -486,7 +448,7 @@ Gpt_ValueType Gpt_GetTimeRemaining(Gpt_ChannelType channel)
                remaining = PIT.CH[channel].CVAL.R;\r
        }\r
 #else\r
-       if (channel <= GPT_CHANNEL_PIT_8)\r
+       if (channel <= GPT_CHANNEL_PIT_LAST)\r
        {\r
                uint32 *tval = (uint32 *)&PIT.TVAL0;\r
                // Time remaining is the time until it hits 0, so just return the current timer value\r
@@ -531,7 +493,7 @@ Gpt_ValueType Gpt_GetTimeElapsed(Gpt_ChannelType channel)
                timer = 0;\r
        }\r
 #else\r
-       if (channel <= GPT_CHANNEL_PIT_8)\r
+       if (channel <= GPT_CHANNEL_PIT_LAST)\r
        {\r
                uint32 *tval = (uint32 *)&PIT.TVAL0;\r
                uint32 *tlval = (uint32 *)&PIT.TLVAL0;\r
@@ -565,7 +527,7 @@ void Gpt_EnableNotification(Gpt_ChannelType channel)
                PIT.CH[channel].TCTRL.B.TIE = 1;\r
        }\r
 #else\r
-       if (channel <= GPT_CHANNEL_PIT_8)\r
+       if (channel <= GPT_CHANNEL_PIT_LAST)\r
        {\r
                // enable interrupts\r
                PIT.INTEN.R |= ( 1 << channel );\r
@@ -592,7 +554,7 @@ void Gpt_DisableNotification(Gpt_ChannelType channel)
                PIT.CH[channel].TCTRL.B.TIE = 0;\r
        }\r
 #else\r
-       if (channel <= GPT_CHANNEL_PIT_8)\r
+       if (channel <= GPT_CHANNEL_PIT_LAST)\r
        {\r
                PIT.INTEN.R &= ~( 1 << channel );\r
        }\r
@@ -611,26 +573,27 @@ void Gpt_DisableNotification(Gpt_ChannelType channel)
 \r
 #if ( GPT_WAKEUP_FUNCTIONALITY_API == STD_ON )\r
 \r
-void Gpt_SetMode(Gpt_ModeType mode)\r
-{\r
-       int i;\r
+       void Gpt_SetMode(Gpt_ModeType mode)\r
+       {\r
+               int i;\r
 \r
-       VALIDATE( (Gpt_Global.initRun == STD_ON), GPT_SETMODE_SERVIVCE_ID, GPT_E_UNINIT );\r
-       VALIDATE( ( mode <= GPT_MODE_SLEEP ), GPT_SETMODE_SERVIVCE_ID, GPT_E_PARAM_MODE );\r
+               VALIDATE( (Gpt_Global.initRun == STD_ON), GPT_SETMODE_SERVIVCE_ID, GPT_E_UNINIT );\r
+               VALIDATE( ( mode <= GPT_MODE_SLEEP ), GPT_SETMODE_SERVIVCE_ID, GPT_E_PARAM_MODE );\r
 \r
 #if defined(CFG_MPC560X)\r
-       if (mode == GPT_MODE_NORMAL)\r
-       {\r
-               PIT.PITMCR.B.MDIS = 0;\r
-               // Do NOT restart channels\r
-       }\r
-       else if (mode == GPT_MODE_SLEEP)\r
-       {\r
-               PIT.PITMCR.B.MDIS = 0;\r
-               // Disable all but RTI\r
-               for (i= 0; i <= GPT_CHANNEL_PIT_3; i++)\r
+               if (mode == GPT_MODE_NORMAL)\r
+               {\r
+                       PIT.PITMCR.B.MDIS = 0;\r
+                       // Do NOT restart channels\r
+               }\r
+               else if (mode == GPT_MODE_SLEEP)\r
                {\r
-                       Gpt_StopTimer(i);\r
+                       PIT.PITMCR.B.MDIS = 0;\r
+                       // Disable all but RTI\r
+                       for (i= 0; i <= GPT_CHANNEL_PIT_LAST; i++)\r
+                       {\r
+                               Gpt_StopTimer(i);\r
+                       }\r
                }\r
 #else\r
                if (mode == GPT_MODE_NORMAL)\r
@@ -643,7 +606,7 @@ void Gpt_SetMode(Gpt_ModeType mode)
 \r
                        PIT.CTRL.B.MDIS = 1;\r
                        // Disable all but RTI\r
-                       for (i= 0; i <= GPT_CHANNEL_PIT_8; i++)\r
+                       for (i= 0; i <= GPT_CHANNEL_PIT_LAST; i++)\r
                        {\r
                                Gpt_StopTimer(i);\r
                        }\r
@@ -689,24 +652,5 @@ void Gpt_SetMode(Gpt_ModeType mode)
 \r
 #endif\r
 \r
-void Gpt_Notification_0(void) {\r
-#if defined(CFG_MPC560X)\r
-       SIU.GPDO[66].B.PDO = ~SIU.GPDO[66].B.PDO;\r
-#endif\r
-}\r
-void Gpt_Notification_1(void) {\r
-#if defined(CFG_MPC560X)\r
-       SIU.GPDO[67].B.PDO = ~SIU.GPDO[67].B.PDO;\r
-#endif\r
-}\r
-void Gpt_Notification_2(void) {\r
-#if defined(CFG_MPC560X)\r
-       SIU.GPDO[68].B.PDO = ~SIU.GPDO[68].B.PDO;\r
-#endif\r
-}\r
-void Gpt_Notification_3(void) {\r
-#if defined(CFG_MPC560X)\r
-       SIU.GPDO[69].B.PDO = ~SIU.GPDO[69].B.PDO;\r
-#endif\r
-}\r
+\r
 \r
index 050ed22668fbd18e18608b2a9cd5817bef47fc13..545a94683ce36c132ce0952fa0664f1429d7f0cd 100644 (file)
@@ -218,8 +218,8 @@ uint32_t Flash_ProgramPageStart( const FlashType *fPtr, uint32_t *to, uint32_t *
     for (int bank = 0; bank < FLASH_BANK_CNT; bank++) {
         bPtr = &fPtr[bank];
 
-        affected = OVERLAP( (uintptr_t)to,
-                       (uintptr_t)to + *size - 1,
+        affected = OVERLAP( *to,
+                       *to + *size - 1,
                        bPtr->sectAddr[0],
                        bPtr->sectAddr[0] + bPtr->bankSize-1);
         if( affected == false ) {