Voltage regulator polling added, reorganization in hal.h.
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@14377 27425a3e-05d8-49a3-a47f-9c15f0e5edd8
This commit is contained in:
parent
f0e860ed98
commit
bae760ccff
|
@ -29,6 +29,76 @@
|
|||
#include "board.h"
|
||||
#include "halconf.h"
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Driver constants. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief ChibiOS/HAL identification macro.
|
||||
*/
|
||||
#define __CHIBIOS_HAL__
|
||||
|
||||
/**
|
||||
* @brief Stable release flag.
|
||||
*/
|
||||
#define CH_HAL_STABLE 0
|
||||
|
||||
/**
|
||||
* @name ChibiOS/HAL version identification
|
||||
* @{
|
||||
*/
|
||||
/**
|
||||
* @brief HAL version string.
|
||||
*/
|
||||
#define HAL_VERSION "7.2.0"
|
||||
|
||||
/**
|
||||
* @brief HAL version major number.
|
||||
*/
|
||||
#define CH_HAL_MAJOR 7
|
||||
|
||||
/**
|
||||
* @brief HAL version minor number.
|
||||
*/
|
||||
#define CH_HAL_MINOR 2
|
||||
|
||||
/**
|
||||
* @brief HAL version patch number.
|
||||
*/
|
||||
#define CH_HAL_PATCH 0
|
||||
/** @} */
|
||||
|
||||
/**
|
||||
* @name Return codes
|
||||
* @{
|
||||
*/
|
||||
/**
|
||||
* @brief HAL operation success.
|
||||
*/
|
||||
#define HAL_SUCCESS false
|
||||
/**
|
||||
* @brief HAL operation failed.
|
||||
*/
|
||||
#define HAL_FAILED true
|
||||
/** @} */
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Driver pre-compile time settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Derived constants and error checks. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/* Configuration file checks.*/
|
||||
#if !defined(_CHIBIOS_HAL_CONF_)
|
||||
#error "invalid configuration file"
|
||||
#endif
|
||||
|
||||
#if !defined(_CHIBIOS_HAL_CONF_VER_7_1_)
|
||||
#error "obsolete or unknown configuration file"
|
||||
#endif
|
||||
|
||||
/* Error checks on the configuration header file.*/
|
||||
#if !defined(HAL_USE_PAL)
|
||||
#define HAL_USE_PAL FALSE
|
||||
|
@ -118,136 +188,6 @@
|
|||
#define HAL_USE_WSPI FALSE
|
||||
#endif
|
||||
|
||||
/* Low Level HAL support.*/
|
||||
#include "hal_lld.h"
|
||||
|
||||
/* Abstract interfaces.*/
|
||||
#include "hal_objects.h"
|
||||
#include "hal_streams.h"
|
||||
#include "hal_channels.h"
|
||||
#include "hal_files.h"
|
||||
#include "hal_ioblock.h"
|
||||
#include "hal_mmcsd.h"
|
||||
#include "hal_persistent.h"
|
||||
#include "hal_flash.h"
|
||||
|
||||
/* Shared headers.*/
|
||||
#include "hal_buffers.h"
|
||||
#include "hal_queues.h"
|
||||
|
||||
/* Normal drivers.*/
|
||||
#include "hal_pal.h"
|
||||
#include "hal_adc.h"
|
||||
#include "hal_can.h"
|
||||
#include "hal_crypto.h"
|
||||
#include "hal_dac.h"
|
||||
#include "hal_efl.h"
|
||||
#include "hal_gpt.h"
|
||||
#include "hal_i2c.h"
|
||||
#include "hal_i2s.h"
|
||||
#include "hal_icu.h"
|
||||
#include "hal_mac.h"
|
||||
#include "hal_pwm.h"
|
||||
#include "hal_rtc.h"
|
||||
#include "hal_serial.h"
|
||||
#include "hal_sdc.h"
|
||||
#include "hal_sio.h"
|
||||
#include "hal_spi.h"
|
||||
#include "hal_trng.h"
|
||||
#include "hal_uart.h"
|
||||
#include "hal_usb.h"
|
||||
#include "hal_wdg.h"
|
||||
#include "hal_wspi.h"
|
||||
|
||||
/*
|
||||
* The ST driver is a special case, it is only included if the OSAL is
|
||||
* configured to require it.
|
||||
*/
|
||||
#if OSAL_ST_MODE != OSAL_ST_MODE_NONE
|
||||
#include "hal_st.h"
|
||||
#endif
|
||||
|
||||
/* Complex drivers.*/
|
||||
#include "hal_mmc_spi.h"
|
||||
#include "hal_serial_usb.h"
|
||||
|
||||
/* Community drivers.*/
|
||||
#if defined(HAL_USE_COMMUNITY) || defined(__DOXYGEN__)
|
||||
#if (HAL_USE_COMMUNITY == TRUE) || defined(__DOXYGEN__)
|
||||
#include "hal_community.h"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Driver constants. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief ChibiOS/HAL identification macro.
|
||||
*/
|
||||
#define __CHIBIOS_HAL__
|
||||
|
||||
/**
|
||||
* @brief Stable release flag.
|
||||
*/
|
||||
#define CH_HAL_STABLE 0
|
||||
|
||||
/**
|
||||
* @name ChibiOS/HAL version identification
|
||||
* @{
|
||||
*/
|
||||
/**
|
||||
* @brief HAL version string.
|
||||
*/
|
||||
#define HAL_VERSION "7.1.0"
|
||||
|
||||
/**
|
||||
* @brief HAL version major number.
|
||||
*/
|
||||
#define CH_HAL_MAJOR 7
|
||||
|
||||
/**
|
||||
* @brief HAL version minor number.
|
||||
*/
|
||||
#define CH_HAL_MINOR 1
|
||||
|
||||
/**
|
||||
* @brief HAL version patch number.
|
||||
*/
|
||||
#define CH_HAL_PATCH 0
|
||||
/** @} */
|
||||
|
||||
/**
|
||||
* @name Return codes
|
||||
* @{
|
||||
*/
|
||||
/**
|
||||
* @brief HAL operation success.
|
||||
*/
|
||||
#define HAL_SUCCESS false
|
||||
/**
|
||||
* @brief HAL operation failed.
|
||||
*/
|
||||
#define HAL_FAILED true
|
||||
/** @} */
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Driver pre-compile time settings. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Derived constants and error checks. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/* Configuration file checks.*/
|
||||
#if !defined(_CHIBIOS_HAL_CONF_)
|
||||
#error "invalid configuration file"
|
||||
#endif
|
||||
|
||||
#if !defined(_CHIBIOS_HAL_CONF_VER_7_1_)
|
||||
#error "obsolete or unknown configuration file"
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Driver data structures and types. */
|
||||
/*===========================================================================*/
|
||||
|
@ -308,6 +248,70 @@ static inline halfreq_t halClockGetPointX(halclkpt_t clkpt) {
|
|||
}
|
||||
#endif /* defined(HAL_LLD_USE_CLOCK_MANAGEMENT) */
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Driver late inclusions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/* Low Level HAL support.*/
|
||||
#include "hal_lld.h"
|
||||
|
||||
/* Abstract interfaces.*/
|
||||
#include "hal_objects.h"
|
||||
#include "hal_streams.h"
|
||||
#include "hal_channels.h"
|
||||
#include "hal_files.h"
|
||||
#include "hal_ioblock.h"
|
||||
#include "hal_mmcsd.h"
|
||||
#include "hal_persistent.h"
|
||||
#include "hal_flash.h"
|
||||
|
||||
/* Shared headers.*/
|
||||
#include "hal_buffers.h"
|
||||
#include "hal_queues.h"
|
||||
|
||||
/* Normal drivers.*/
|
||||
#include "hal_pal.h"
|
||||
#include "hal_adc.h"
|
||||
#include "hal_can.h"
|
||||
#include "hal_crypto.h"
|
||||
#include "hal_dac.h"
|
||||
#include "hal_efl.h"
|
||||
#include "hal_gpt.h"
|
||||
#include "hal_i2c.h"
|
||||
#include "hal_i2s.h"
|
||||
#include "hal_icu.h"
|
||||
#include "hal_mac.h"
|
||||
#include "hal_pwm.h"
|
||||
#include "hal_rtc.h"
|
||||
#include "hal_serial.h"
|
||||
#include "hal_sdc.h"
|
||||
#include "hal_sio.h"
|
||||
#include "hal_spi.h"
|
||||
#include "hal_trng.h"
|
||||
#include "hal_uart.h"
|
||||
#include "hal_usb.h"
|
||||
#include "hal_wdg.h"
|
||||
#include "hal_wspi.h"
|
||||
|
||||
/*
|
||||
* The ST driver is a special case, it is only included if the OSAL is
|
||||
* configured to require it.
|
||||
*/
|
||||
#if OSAL_ST_MODE != OSAL_ST_MODE_NONE
|
||||
#include "hal_st.h"
|
||||
#endif
|
||||
|
||||
/* Complex drivers.*/
|
||||
#include "hal_mmc_spi.h"
|
||||
#include "hal_serial_usb.h"
|
||||
|
||||
/* Community drivers.*/
|
||||
#if defined(HAL_USE_COMMUNITY) || defined(__DOXYGEN__)
|
||||
#if (HAL_USE_COMMUNITY == TRUE) || defined(__DOXYGEN__)
|
||||
#include "hal_community.h"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#endif /* HAL_H */
|
||||
|
||||
/** @} */
|
||||
|
|
|
@ -436,9 +436,16 @@ bool hal_lld_clock_raw_switch(const halclkcfg_t *ccp) {
|
|||
PWR->CR3 = PWR_CR3_EIWF;
|
||||
PWR->CR4 = 0U;
|
||||
|
||||
/* Making sure HSI is activated.*/
|
||||
/* Waiting for all regulator status bits to be cleared, this means that
|
||||
power levels are stable.*/
|
||||
while ((PWR->SR2 & (PWR_SR2_VOSF | PWR_SR2_REGLPF)) != 0U) {
|
||||
/* Waiting for the regulator to be ready.*/
|
||||
}
|
||||
|
||||
/* Making sure HSI16 is activated.*/
|
||||
RCC->CR |= RCC_CR_HSION;
|
||||
while ((RCC->CR & RCC_CR_HSIRDY) == 0U) {
|
||||
/* Waiting for HSI16 activation.*/
|
||||
}
|
||||
|
||||
/* Disabling boost mode.*/
|
||||
|
@ -490,6 +497,13 @@ bool hal_lld_clock_raw_switch(const halclkcfg_t *ccp) {
|
|||
PWR->CR4 = ccp->pwr_cr4;
|
||||
PWR->CR5 = ccp->pwr_cr5;
|
||||
|
||||
/* Wait on LPR bit clear.*/
|
||||
if ((ccp->pwr_cr1 & PWR_CR1_LPR) == 0U) {
|
||||
while ((PWR->SR2 & PWR_SR2_REGLPF) != 0U) {
|
||||
/* Waiting for the regulator to be ready.*/
|
||||
}
|
||||
}
|
||||
|
||||
/* Switching to the final clock source.*/
|
||||
RCC->CFGR = (RCC->CFGR & ~RCC_CFGR_SW_Msk) | (ccp->rcc_cfgr & RCC_CFGR_SW_Msk);
|
||||
while ((RCC->CFGR & RCC_CFGR_SWS) != ((ccp->rcc_cfgr & RCC_CFGR_SW_Msk) << RCC_CFGR_SWS_Pos)) {
|
||||
|
|
Loading…
Reference in New Issue