// 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
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
#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
\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
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
#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
}\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
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
#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
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
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
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
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
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
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
\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
\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
\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