Mercurial > ecos
changeset 3187:635199c996bc
Add functions and macros for clock gating control to Kinetis.
| author | vae |
|---|---|
| date | Mon, 06 Aug 2012 06:56:59 +0000 |
| parents | 4b141bb8701f |
| children | cb5a35f3fda4 |
| files | packages/hal/cortexm/kinetis/var/current/ChangeLog packages/hal/cortexm/kinetis/var/current/include/var_io.h packages/hal/cortexm/kinetis/var/current/src/kinetis_misc.c |
| diffstat | 3 files changed, 44 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/packages/hal/cortexm/kinetis/var/current/ChangeLog +++ b/packages/hal/cortexm/kinetis/var/current/ChangeLog @@ -1,3 +1,8 @@ +2012-08-01 Ilija Kocho <ilijak@siva.com.mk> + + * include/var_io.h, src/kinetis_misc.c: Add functions and macros + for clock gating control to Kinetis. [Bugzilla 1001642] + 2012-05-18 Ilija Kocho <ilijak@siva.com.mk> * include/hal_cache.h, src/kinetis_misc.c: Provide for cache
--- a/packages/hal/cortexm/kinetis/var/current/include/var_io.h +++ b/packages/hal/cortexm/kinetis/var/current/include/var_io.h @@ -952,6 +952,23 @@ typedef volatile struct cyghwr_hal_kinet #define CYGHWR_HAL_KINETIS_SIM_MCR_DDRSREN_S 0 +// The following encodes the control register and clock bit number +// into 16 bit descriptor. +#define CYGHWR_HAL_CLOCK( __reg, __bit ) (((__reg-1)&0xF) + ((__bit<<8)&0x1F00)) + +// Macros to extract encoded values. +#define CYGHWR_HAL_CLOCK_REG( __desc ) ((__desc)&0xF) +#define CYGHWR_HAL_CLOCK_BIT( __desc ) (((__desc)>>8)&0x1F) + +// Functions and macros to enable/disable clocks. +#define CYGHWR_HAL_KINETIS_CLOCK_NONE (0xFFFF) +__externC void hal_clock_enable( cyg_uint32 desc ); +__externC void hal_clock_disable( cyg_uint32 desc ); + +#define CYGHWR_HAL_CLOCK_ENABLE( __desc ) hal_clock_enable( __desc ) +#define CYGHWR_HAL_CLOCK_DISABLE( __desc ) hal_clock_disable( __desc ) + + //--------------------------------------------------------------------------- // PORT - Peripheral register structure
--- a/packages/hal/cortexm/kinetis/var/current/src/kinetis_misc.c +++ b/packages/hal/cortexm/kinetis/var/current/src/kinetis_misc.c @@ -255,5 +255,27 @@ hal_dump_pin_setting(cyg_uint32 pin) } } +void CYGOPT_HAL_KINETIS_MISC_FLASH_SECTION_ATTR +hal_clock_enable(cyg_uint32 desc) +{ + volatile cyg_uint32 *scgc_p; + + if(desc != CYGHWR_HAL_KINETIS_CLOCK_NONE) { + scgc_p = &CYGHWR_HAL_KINETIS_SIM_P->scgc1 + CYGHWR_HAL_CLOCK_REG(desc); + *scgc_p |= 1 << CYGHWR_HAL_CLOCK_BIT(desc); + } +} + +void CYGOPT_HAL_KINETIS_MISC_FLASH_SECTION_ATTR +hal_clock_disable(cyg_uint32 desc) +{ + volatile cyg_uint32 *scgc_p; + + if(desc != CYGHWR_HAL_KINETIS_CLOCK_NONE) { + scgc_p = &CYGHWR_HAL_KINETIS_SIM_P->scgc1 + CYGHWR_HAL_CLOCK_REG(desc); + *scgc_p &= ~(1 << CYGHWR_HAL_CLOCK_BIT(desc)); + } +} + //========================================================================== // EOF kinetis_misc.c
