static void wdt_enable(u32 value)
{
	spin_lock(&io_lock);
	HW_RTC_WATCHDOG_WR(value);
	HW_RTC_CTRL_SET(BM_RTC_CTRL_WATCHDOGEN);
	HW_RTC_PERSISTENT1_SET(BV_RTC_PERSISTENT1_GENERAL__RTC_FORCE_UPDATER);
	spin_unlock(&io_lock);
}
////////////////////////////////////////////////////////////////////////////////
//! \brief
//!
//! \return
////////////////////////////////////////////////////////////////////////////////
int PowerPrep_ConfigurePowerSource( void )
{
	int iReturnValue = SUCCESS;

	/* initialize DCDC operating parameters */
	hw_power_Init();

#ifdef  NO_DCDC_BATT_SOURCE

	/* device configured for no source to DCDC_BATT input (5V only power
	 * source).  This boot option doesn't waste time looking for a good
	 *  battery.  Battery powered operation and automatic voltage
	 *  measurements are disabled.
	*/
    // set bit 11 of PERSISTENT1
    HW_RTC_PERSISTENT1_SET(0x800);

    // clear bit 12 PERSISTENT1
    HW_RTC_PERSISTENT1_CLR(0x1000);

	bBatteryReady = false;
	bBatteryGood = false;

	printf("\r\nConfigured for 5v only power source.\
		Battery powered operation disabled.\r\n");


	/* Disable automatic battery voltage measurements which seem unnecessary
	 * for this configuration.
	 */
    BF_SET(POWER_BATTMONITOR,EN_BATADJ);
	BF_CLR(LRADC_CONVERSION, AUTOMATIC);
	BF_WR(POWER_BATTMONITOR, BATT_VAL,525);  //4200/8

	HW_POWER_BATTMONITOR.B.BRWNOUT_LVL = BATTERY_BRWNOUT_BITFIELD_VALUE;

	iReturnValue = PowerPrep_5vBoot();

#ifndef MXS_VBUS_CURRENT_DRAW
	PowerPrep_CPUClock2PLL();
#endif


#elif defined(NO_VDD5V_SOURCE)
	printf("\r\nConfigured for DCDC_BATT only power source.\r\n");

#ifdef mx28
	/* We only care about the DCDC_BATT source in this configuration */
	BF_SET(POWER_BATTMONITOR,PWDN_BATTBRNOUT_5VDETECT_ENABLE);
#endif

    // clear bit 11 PERSISTENT1
    HW_RTC_PERSISTENT1_CLR(0x800);

    // set bit 12 PERSISTENT1
    HW_RTC_PERSISTENT1_SET(0x1000);
	/* since the DCDC_BATT input is our only source, we'll assume
	 * it is good and attempt to boot.  If your device has uses
	 * this configuration but has a external DCDC_BATT source
	 * that takes time to ramp, you could add a voltage check
	 * and wait here until voltage reaches near the final level to
	 * avoid trigger a battery brownout when the voltage is too
	 * low.
	 */
	bBatteryReady = true;

	/* bBatteryGood is not used for this configuration */
	/* bBatteryGood = don't care */

	/*Boot from DCDC_BATT source*/
	iReturnValue = PowerPrep_BattBoot();
	PowerPrep_CPUClock2PLL();

	/* raise battery brownout level to programmed value. */
	PowerPrep_InitBattBo();

	/* Configured to not use a VDD5V source */
	HW_POWER_5VCTRL_SET(BM_POWER_5VCTRL_ILIMIT_EQ_ZERO);




#else

    //clear bit 11 and 12 of PERSISTENT1
    HW_RTC_PERSISTENT1_CLR(0x1800);

	/* check if Battery Voltage is high enough for full
	* power operation.
	*/
	bBatteryReady = PowerPrep_IsBatteryReady();

	if(!IsVdd5vGtVddio())
	{
		/* this option allows for fast booting without
		* the unecessary delay required for proper
		* battery detection when booting from 5v.
		*/

		/* battery voltage is present and 5v is not connected,
		* assume valid battery voltage source is present.  Battery
		* brownout protection will take care of supply protection
		* if battery becomes invalid in the future
		*/
 		bBatteryGood = true;
		printf("\r\nboot from battery. 5v input not detected\r\n");
		/*Boot from battery*/
		iReturnValue = PowerPrep_BattBoot();
		PowerPrep_CPUClock2PLL();
	}
	else
	{
		/* 5v input detected, boot from 5V.
		*/
		bBatteryGood = PowerPrep_IsBatteryGood();
		if(!bBatteryGood) {
				BF_CLR(LRADC_CONVERSION, AUTOMATIC);
				BF_WR(POWER_BATTMONITOR, BATT_VAL,0);
				printf("\r\nNo battery or bad battery\
					detected!!!.Disabling battery\
					voltage measurements./r/n");
		}
		iReturnValue = PowerPrep_5vBoot();


#ifndef MXS_VBUS_CURRENT_DRAW
		PowerPrep_CPUClock2PLL();
#endif /* MXS_VBUS_CURRENT_DRAW */
	}