7#ifndef CHIP_008A1453_A242_4775_9606_2ED0FF5092CA
8#define CHIP_008A1453_A242_4775_9606_2ED0FF5092CA
18#include "./../Status.h"
19#include "./../mrcc/MRCC.h"
20#include "./../syscon/SYSCON.h"
21#include "./AttachID.h"
23#include "./FircTrimConfig.h"
24#include "./GateName.h"
25#include "./MonitorMode.h"
27#include "./SelectName.h"
28#include "./SircTrimConfig.h"
29#include "./SircTrimMode.h"
30#include "./SircTrimSource.h"
95 static inline constexpr uint32 ATTACH_REG_OFFSET(
AttachID attachID) {
96 return (+attachID >> 16U);
99 static inline bool getClockStatus(
GateName clk) {
100 uint32 reg_offset = chip::clock::getGateNameOffset(clk);
101 uint32 bit_shift = chip::clock::getGateNameShift(clk);
102 volatile uint32 *pClkCtrl =
reinterpret_cast<volatile uint32 *
>(
103 reinterpret_cast<uint32
>(&(chip::mrcc::MRCC0.
mrcc_glb_cc0_set)) + reg_offset);
108 if (reg_offset == REG_PWM0SUBCTL)
112 return (*pClkCtrl & (1UL << bit_shift));
121 uint32 reg_offset = chip::clock::getGateNameOffset(clk);
122 uint32 bit_shift = chip::clock::getGateNameShift(clk);
123 volatile uint32 *pClkCtrl =
reinterpret_cast<volatile uint32 *
>(
124 reinterpret_cast<uint32
>(&(chip::mrcc::MRCC0.
mrcc_glb_cc0_set)) + reg_offset);
133 if (reg_offset == REG_PWM0SUBCTL) {
134 chip::syscon::SYSCON0.
pwm0subctl |= (1UL << bit_shift);
137 *pClkCtrl = (1UL << bit_shift);
150 uint32 reg_offset = getGateNameOffset(clk);
151 uint32 bit_shift = getGateNameShift(clk);
152 volatile uint32 *pClkCtrl =
reinterpret_cast<volatile uint32 *
>(
153 reinterpret_cast<uint32
>(&(chip::mrcc::MRCC0.
mrcc_glb_cc0_clr)) + reg_offset);
162 if (reg_offset == REG_PWM0SUBCTL) {
163 chip::syscon::SYSCON0.
pwm0subctl &= ~(1UL << bit_shift);
165 if (0U == (chip::syscon::SYSCON0.pwm0subctl & 0xFU)) {
169 *pClkCtrl = (1UL << bit_shift);
static void setClockDiv(Div div_name, uint32 value)
Setup peripheral clock dividers.
static uint32 getCoreSysClkFreq(void)
Return Frequency of core.
static void disableClock(GateName clk)
Disable the clock for specific IP.
Definition Clock.h:149
static chip::Status setupFRO16KClocking(uint8 clk_16k_enable_mask)
Initialize the FRO16K.
static uint32 getLptmrClkFreq(void)
Return Frequency of LPTMR functional Clock.
static uint32 getClockSelect(SelectName sel_name)
Get the clock select value. This fuction get the peripheral clock select value.
static chip::Status setupFRO12MClocking(void)
Initialize the FRO12M.
static bool enableUsbfsClock(void)
Enable USB FS clock.
static uint32 getWwdtClkFreq(void)
Return Frequency of Systick Clock.
static uint32 getSystickClkFreq(void)
Return Frequency of Systick Clock.
static uint32 getI3CFClkFreq(void)
Return Frequency of I3C FCLK.
static void setClockSelect(SelectName sel_name, uint32 value)
Set the clock select value. This fuction set the peripheral clock select value.
static void enableClock(GateName clk)
Enable the clock for specific IP.
Definition Clock.h:120
virtual ~Clock(void) override
Destroy the object.
static uint32 getTraceClkFreq(void)
Return Frequency of Trace Clock.
static uint32 getLpi2cClkFreq(void)
Return Frequency of LPI2C0 functional Clock.
static chip::Status setupExtClocking(uint32 iFreq)
Initialize the external osc clock to given frequency.
static void setSysOscMonitorMode(MonitorMode mode)
Sets the system OSC monitor mode.
static uint32 getCmpRRClkFreq(uint32 id)
Return Frequency of CMP Round Robin Clock.
static chip::Status setupExtRefClocking(uint32 iFreq)
Initialize the external reference clock to given frequency.
static uint32 getLpuartClkFreq(uint32 id)
Return Frequency of LPUART functional Clock.
static uint32 getCmpFClkFreq(uint32 id)
Return Frequency of CMP Function Clock.
static void attachClock(AttachID connection)
Configure the clock selection muxes.
static chip::Status frohfTrimConfig(FircTrimConfig config)
Setup FROHF trim.
static chip::Status setupFROHFClocking(unsigned int iFreq)
Initialize the FROHF to given frequency (48,64,96,192).
static uint32 getClockDiv(Div div_name)
Get peripheral clock dividers.
static uint32 getClkoutClkFreq(void)
Return Frequency of CLKOUT Clock.
static chip::Status fro12MTrimConfig(SircTrimConfig config)
Setup FRO 12M trim.
static void haltClockDiv(Div div_name)
Halt peripheral clock dividers.
static uint32 getFreq(Name clockName)
Return Frequency of selected clock.
static uint32 getOstimerClkFreq(void)
Return Frequency of OSTIMER.
static AttachID getClockAttachId(AttachID connection)
Get the actual clock attach id. This fuction uses the offset in input attach id, then it reads the ac...
static uint32 getLpspiClkFreq(uint32 id)
Return Frequency of LPSPI functional Clock.
static uint32 getAdcClkFreq(void)
Return Frequency of Adc Clock.
static uint32 getCTimerClkFreq(uint32 id)
Return Frequency of CTimer functional Clock.
SelectName
Definition SelectName.h:33
MonitorMode
Definition MonitorMode.h:34
AttachID
Definition AttachID.h:46
GateName
Definition GateName.h:39
@ GLB_CC0_FLEXPWM0
MRCC_GLB_CC0 - FLEXPWM0.
@ CLKUNLOCK_UNLOCK
CLKUNLOCK - UNLOCK.
Status
Definition Status.h:34
Definition FircTrimConfig.h:31
Definition SircTrimConfig.h:31
__O uint32 mrcc_glb_cc0_set
Definition mrcc/Register.h:39
__O uint32 mrcc_glb_cc0_clr
Definition mrcc/Register.h:40
__IO uint32 clkunlock
CLKUNLOCK[0x3FC] <RW>
Definition syscon/Register.h:119
__IO uint32 pwm0subctl
Definition syscon/Register.h:269