diff --git a/XilinxProcessorIPLib/drivers/scutimer/src/xscutimer.c b/XilinxProcessorIPLib/drivers/scutimer/src/xscutimer.c index 3a746143..33628297 100644 --- a/XilinxProcessorIPLib/drivers/scutimer/src/xscutimer.c +++ b/XilinxProcessorIPLib/drivers/scutimer/src/xscutimer.c @@ -80,9 +80,10 @@ * @note None. * ******************************************************************************/ -int XScuTimer_CfgInitialize(XScuTimer *InstancePtr, +s32 XScuTimer_CfgInitialize(XScuTimer *InstancePtr, XScuTimer_Config *ConfigPtr, u32 EffectiveAddress) { + s32 Status; Xil_AssertNonvoid(InstancePtr != NULL); Xil_AssertNonvoid(ConfigPtr != NULL); @@ -92,29 +93,31 @@ int XScuTimer_CfgInitialize(XScuTimer *InstancePtr, * device and reinitialize, but prevents a user from inadvertently * initializing. */ - if (InstancePtr->IsStarted == XIL_COMPONENT_IS_STARTED) { - return XST_DEVICE_IS_STARTED; + if (InstancePtr->IsStarted != XIL_COMPONENT_IS_STARTED) { + /* + * Copy configuration into the instance structure. + */ + InstancePtr->Config.DeviceId = ConfigPtr->DeviceId; + + /* + * Save the base address pointer such that the registers of the block + * can be accessed and indicate it has not been started yet. + */ + InstancePtr->Config.BaseAddr = EffectiveAddress; + + InstancePtr->IsStarted = (u32)0; + + /* + * Indicate the instance is ready to use, successfully initialized. + */ + InstancePtr->IsReady = XIL_COMPONENT_IS_READY; + + Status =(s32)XST_SUCCESS; } - - /* - * Copy configuration into the instance structure. - */ - InstancePtr->Config.DeviceId = ConfigPtr->DeviceId; - - /* - * Save the base address pointer such that the registers of the block - * can be accessed and indicate it has not been started yet. - */ - InstancePtr->Config.BaseAddr = EffectiveAddress; - - InstancePtr->IsStarted = 0; - - /* - * Indicate the instance is ready to use, successfully initialized. - */ - InstancePtr->IsReady = XIL_COMPONENT_IS_READY; - - return XST_SUCCESS; + else { + Status = (s32)XST_DEVICE_IS_STARTED; + } + return Status; } /****************************************************************************/ @@ -187,7 +190,7 @@ void XScuTimer_Stop(XScuTimer *InstancePtr) /* * Clear the 'timer enable' bit in the register. */ - Register &= ~XSCUTIMER_CONTROL_ENABLE_MASK; + Register &= (u32)(~XSCUTIMER_CONTROL_ENABLE_MASK); /* * Update the Control register with the new value. @@ -198,7 +201,7 @@ void XScuTimer_Stop(XScuTimer *InstancePtr) /* * Indicate that the device is stopped. */ - InstancePtr->IsStarted = 0; + InstancePtr->IsStarted = (u32)0; } /*****************************************************************************/ @@ -232,12 +235,12 @@ void XScuTimer_SetPrescaler(XScuTimer *InstancePtr, u8 PrescalerValue) /* * Clear all of the prescaler control bits in the register. */ - ControlReg &= ~XSCUTIMER_CONTROL_PRESCALER_MASK; + ControlReg &= (u32)(~XSCUTIMER_CONTROL_PRESCALER_MASK); /* * Set the prescaler value. */ - ControlReg |= (PrescalerValue << XSCUTIMER_CONTROL_PRESCALER_SHIFT); + ControlReg |= (((u32)PrescalerValue) << XSCUTIMER_CONTROL_PRESCALER_SHIFT); /* * Write the register with the new values. @@ -275,5 +278,5 @@ u8 XScuTimer_GetPrescaler(XScuTimer *InstancePtr) XSCUTIMER_CONTROL_OFFSET); ControlReg &= XSCUTIMER_CONTROL_PRESCALER_MASK; - return (ControlReg >> XSCUTIMER_CONTROL_PRESCALER_SHIFT); + return (u8)(ControlReg >> XSCUTIMER_CONTROL_PRESCALER_SHIFT); } diff --git a/XilinxProcessorIPLib/drivers/scutimer/src/xscutimer.h b/XilinxProcessorIPLib/drivers/scutimer/src/xscutimer.h index 2357ff85..af0b415b 100644 --- a/XilinxProcessorIPLib/drivers/scutimer/src/xscutimer.h +++ b/XilinxProcessorIPLib/drivers/scutimer/src/xscutimer.h @@ -176,7 +176,7 @@ typedef struct { * ******************************************************************************/ #define XScuTimer_RestartTimer(InstancePtr) \ - XScuTimer_LoadTimer(InstancePtr, \ + XScuTimer_LoadTimer((InstancePtr), \ XScuTimer_ReadReg((InstancePtr)->Config.BaseAddr, \ XSCUTIMER_LOAD_OFFSET)) @@ -198,7 +198,7 @@ typedef struct { ******************************************************************************/ #define XScuTimer_LoadTimer(InstancePtr, Value) \ XScuTimer_WriteReg((InstancePtr)->Config.BaseAddr, \ - XSCUTIMER_LOAD_OFFSET, Value) + XSCUTIMER_LOAD_OFFSET, (Value)) /****************************************************************************/ /** @@ -342,12 +342,12 @@ XScuTimer_Config *XScuTimer_LookupConfig(u16 DeviceId); /* * Selftest function in xscutimer_selftest.c */ -int XScuTimer_SelfTest(XScuTimer *InstancePtr); +s32 XScuTimer_SelfTest(XScuTimer *InstancePtr); /* * Interface functions in xscutimer.c */ -int XScuTimer_CfgInitialize(XScuTimer *InstancePtr, +s32 XScuTimer_CfgInitialize(XScuTimer *InstancePtr, XScuTimer_Config *ConfigPtr, u32 EffectiveAddress); void XScuTimer_Start(XScuTimer *InstancePtr); void XScuTimer_Stop(XScuTimer *InstancePtr); diff --git a/XilinxProcessorIPLib/drivers/scutimer/src/xscutimer_g.c b/XilinxProcessorIPLib/drivers/scutimer/src/xscutimer_g.c index e691c8b1..9d926a6a 100644 --- a/XilinxProcessorIPLib/drivers/scutimer/src/xscutimer_g.c +++ b/XilinxProcessorIPLib/drivers/scutimer/src/xscutimer_g.c @@ -68,7 +68,7 @@ */ XScuTimer_Config XScuTimer_ConfigTable[XPAR_XSCUTIMER_NUM_INSTANCES] = { { - XPAR_XSCUTIMER_0_DEVICE_ID, - XPAR_XSCUTIMER_0_BASEADDR + (u16)XPAR_XSCUTIMER_0_DEVICE_ID, + (u32)XPAR_XSCUTIMER_0_BASEADDR } }; diff --git a/XilinxProcessorIPLib/drivers/scutimer/src/xscutimer_hw.h b/XilinxProcessorIPLib/drivers/scutimer/src/xscutimer_hw.h index ae7118cd..c759beac 100644 --- a/XilinxProcessorIPLib/drivers/scutimer/src/xscutimer_hw.h +++ b/XilinxProcessorIPLib/drivers/scutimer/src/xscutimer_hw.h @@ -69,10 +69,10 @@ extern "C" { * @{ */ -#define XSCUTIMER_LOAD_OFFSET 0x00 /**< Timer Load Register */ -#define XSCUTIMER_COUNTER_OFFSET 0x04 /**< Timer Counter Register */ -#define XSCUTIMER_CONTROL_OFFSET 0x08 /**< Timer Control Register */ -#define XSCUTIMER_ISR_OFFSET 0x0C /**< Timer Interrupt +#define XSCUTIMER_LOAD_OFFSET 0x00U /**< Timer Load Register */ +#define XSCUTIMER_COUNTER_OFFSET 0x04U /**< Timer Counter Register */ +#define XSCUTIMER_CONTROL_OFFSET 0x08U /**< Timer Control Register */ +#define XSCUTIMER_ISR_OFFSET 0x0CU /**< Timer Interrupt Status Register */ /* @} */ @@ -82,11 +82,11 @@ extern "C" { * @{ */ -#define XSCUTIMER_CONTROL_PRESCALER_MASK 0x0000FF00 /**< Prescaler */ -#define XSCUTIMER_CONTROL_PRESCALER_SHIFT 8 -#define XSCUTIMER_CONTROL_IRQ_ENABLE_MASK 0x00000004 /**< Intr enable */ -#define XSCUTIMER_CONTROL_AUTO_RELOAD_MASK 0x00000002 /**< Auto-reload */ -#define XSCUTIMER_CONTROL_ENABLE_MASK 0x00000001 /**< Timer enable */ +#define XSCUTIMER_CONTROL_PRESCALER_MASK 0x0000FF00U /**< Prescaler */ +#define XSCUTIMER_CONTROL_PRESCALER_SHIFT 8U +#define XSCUTIMER_CONTROL_IRQ_ENABLE_MASK 0x00000004U /**< Intr enable */ +#define XSCUTIMER_CONTROL_AUTO_RELOAD_MASK 0x00000002U /**< Auto-reload */ +#define XSCUTIMER_CONTROL_ENABLE_MASK 0x00000001U /**< Timer enable */ /* @} */ /** @name Interrupt Status register @@ -94,7 +94,7 @@ extern "C" { * @{ */ -#define XSCUTIMER_ISR_EVENT_FLAG_MASK 0x00000001 /**< Event flag */ +#define XSCUTIMER_ISR_EVENT_FLAG_MASK 0x00000001U /**< Event flag */ /*@}*/ /**************************** Type Definitions *******************************/ @@ -118,7 +118,7 @@ extern "C" { * ******************************************************************************/ #define XScuTimer_SetLoadReg(BaseAddr, Value) \ - XScuTimer_WriteReg(BaseAddr, XSCUTIMER_LOAD_OFFSET, Value) + XScuTimer_WriteReg(BaseAddr, XSCUTIMER_LOAD_OFFSET, (Value)) /****************************************************************************/ /** @@ -151,7 +151,7 @@ extern "C" { * ******************************************************************************/ #define XScuTimer_SetCounterReg(BaseAddr, Value) \ - XScuTimer_WriteReg(BaseAddr, XSCUTIMER_COUNTER_OFFSET, Value) + XScuTimer_WriteReg(BaseAddr, XSCUTIMER_COUNTER_OFFSET, (Value)) /****************************************************************************/ /** @@ -186,7 +186,7 @@ extern "C" { * ******************************************************************************/ #define XScuTimer_SetControlReg(BaseAddr, Value) \ - XScuTimer_WriteReg(BaseAddr, XSCUTIMER_CONTROL_OFFSET, Value) + XScuTimer_WriteReg(BaseAddr, XSCUTIMER_CONTROL_OFFSET, (Value)) /****************************************************************************/ /** @@ -219,7 +219,7 @@ extern "C" { * ******************************************************************************/ #define XScuTimer_SetIntrReg(BaseAddr, Value) \ - XScuTimer_WriteReg(BaseAddr, XSCUTIMER_ISR_OFFSET, Value) + XScuTimer_WriteReg(BaseAddr, XSCUTIMER_ISR_OFFSET, (Value)) /****************************************************************************/ /** diff --git a/XilinxProcessorIPLib/drivers/scutimer/src/xscutimer_selftest.c b/XilinxProcessorIPLib/drivers/scutimer/src/xscutimer_selftest.c index 0fe59adf..d1fed66e 100644 --- a/XilinxProcessorIPLib/drivers/scutimer/src/xscutimer_selftest.c +++ b/XilinxProcessorIPLib/drivers/scutimer/src/xscutimer_selftest.c @@ -52,7 +52,7 @@ /************************** Constant Definitions *****************************/ -#define XSCUTIMER_SELFTEST_VALUE 0xA55AF00F +#define XSCUTIMER_SELFTEST_VALUE 0xA55AF00FU /**************************** Type Definitions *******************************/ @@ -79,11 +79,12 @@ * @note None. * ******************************************************************************/ -int XScuTimer_SelfTest(XScuTimer *InstancePtr) +s32 XScuTimer_SelfTest(XScuTimer *InstancePtr) { u32 Register; u32 CtrlOrig; u32 LoadOrig; + s32 Status; /* * Assert to ensure the inputs are valid and the instance has been @@ -97,7 +98,7 @@ int XScuTimer_SelfTest(XScuTimer *InstancePtr) */ CtrlOrig = XScuTimer_ReadReg(InstancePtr->Config.BaseAddr, XSCUTIMER_CONTROL_OFFSET); - Register = CtrlOrig & ~XSCUTIMER_CONTROL_ENABLE_MASK; + Register = CtrlOrig & (u32)(~XSCUTIMER_CONTROL_ENABLE_MASK); XScuTimer_WriteReg(InstancePtr->Config.BaseAddr, XSCUTIMER_CONTROL_OFFSET, Register); @@ -124,8 +125,11 @@ int XScuTimer_SelfTest(XScuTimer *InstancePtr) * match with the value written to it. */ if (Register != XSCUTIMER_SELFTEST_VALUE) { - return XST_FAILURE; + Status = (s32)XST_FAILURE; + } + else { + Status = (s32)XST_SUCCESS; } - return XST_SUCCESS; + return Status; } diff --git a/XilinxProcessorIPLib/drivers/scutimer/src/xscutimer_sinit.c b/XilinxProcessorIPLib/drivers/scutimer/src/xscutimer_sinit.c index a89bf775..d1ffe432 100644 --- a/XilinxProcessorIPLib/drivers/scutimer/src/xscutimer_sinit.c +++ b/XilinxProcessorIPLib/drivers/scutimer/src/xscutimer_sinit.c @@ -58,6 +58,9 @@ /***************** Macros (Inline Functions) Definitions *********************/ +/************************** Variable Definitions ****************************/ +extern XScuTimer_Config XScuTimer_ConfigTable[XPAR_XSCUTIMER_NUM_INSTANCES]; + /************************** Function Prototypes ******************************/ /*****************************************************************************/ @@ -75,16 +78,15 @@ ******************************************************************************/ XScuTimer_Config *XScuTimer_LookupConfig(u16 DeviceId) { - extern XScuTimer_Config XScuTimer_ConfigTable[]; XScuTimer_Config *CfgPtr = NULL; - int Index; + u32 Index; - for (Index = 0; Index < XPAR_XSCUTIMER_NUM_INSTANCES; Index++) { + for (Index = 0U; Index < XPAR_XSCUTIMER_NUM_INSTANCES; Index++) { if (XScuTimer_ConfigTable[Index].DeviceId == DeviceId) { CfgPtr = &XScuTimer_ConfigTable[Index]; break; } } - return (CfgPtr); + return (XScuTimer_Config *)CfgPtr; }