Skip to content

Commit f46e4f3

Browse files
committed
simplelink_lpf3: ti: devices: cc23x0r5: Add CLKCTL driver
API is needed to make zephyr driver consistent. Signed-off-by: Julien Panis <[email protected]>
1 parent bdca9dd commit f46e4f3

File tree

1 file changed

+197
-0
lines changed

1 file changed

+197
-0
lines changed
Lines changed: 197 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,197 @@
1+
/******************************************************************************
2+
* Filename: clkctl.h
3+
*
4+
* Description: Defines and prototypes for the Clock Control (CLKCTL).
5+
*
6+
* Copyright (c) 2024 Texas Instruments Incorporated
7+
*
8+
* Redistribution and use in source and binary forms, with or without
9+
* modification, are permitted provided that the following conditions are met:
10+
*
11+
* 1) Redistributions of source code must retain the above copyright notice,
12+
* this list of conditions and the following disclaimer.
13+
*
14+
* 2) Redistributions in binary form must reproduce the above copyright notice,
15+
* this list of conditions and the following disclaimer in the documentation
16+
* and/or other materials provided with the distribution.
17+
*
18+
* 3) Neither the name of the copyright holder nor the names of its
19+
* contributors may be used to endorse or promote products derived from this
20+
* software without specific prior written permission.
21+
*
22+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
23+
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24+
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25+
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
26+
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
27+
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
28+
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
29+
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
30+
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
31+
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
32+
* POSSIBILITY OF SUCH DAMAGE.
33+
*
34+
******************************************************************************/
35+
36+
#ifndef __CLKCTL_H__
37+
#define __CLKCTL_H__
38+
39+
//*****************************************************************************
40+
//
41+
//! \addtogroup peripheral_group
42+
//! @{
43+
//! \addtogroup clkctl_api
44+
//! @{
45+
//
46+
//*****************************************************************************
47+
48+
//*****************************************************************************
49+
//
50+
// If building with a C++ compiler, make all of the definitions in this header
51+
// have a C binding.
52+
//
53+
//*****************************************************************************
54+
#ifdef __cplusplus
55+
extern "C" {
56+
#endif
57+
58+
#include <stdbool.h>
59+
#include <stdint.h>
60+
#include "../inc/hw_ints.h"
61+
#include "../inc/hw_memmap.h"
62+
#include "../inc/hw_types.h"
63+
#include "../inc/hw_clkctl.h"
64+
#include "debug.h"
65+
#include "interrupt.h"
66+
67+
//*****************************************************************************
68+
//
69+
// Values that can be passed to CLKCTLEnable() and CLKCTLDisable().
70+
//
71+
//*****************************************************************************
72+
#define CLKCTL_LGPT3 CLKCTL_CLKENSET0_LGPT3 //!< Configure LGPT3 clock enable
73+
#define CLKCTL_LGPT2 CLKCTL_CLKENSET0_LGPT2 //!< Configure LGPT2 clock enable
74+
#define CLKCTL_LGPT1 CLKCTL_CLKENSET0_LGPT1 //!< Configure LGPT1 clock enable
75+
#define CLKCTL_LGPT0 CLKCTL_CLKENSET0_LGPT0 //!< Configure LGPT0 clock enable
76+
#define CLKCTL_DMA CLKCTL_CLKENSET0_DMA //!< Configure DMA clock enable
77+
#define CLKCTL_LAES CLKCTL_CLKENSET0_LAES //!< Configure LAES clock enable
78+
#define CLKCTL_ADC0 CLKCTL_CLKENSET0_ADC0 //!< Configure ADC0 clock enable
79+
#define CLKCTL_SPI0 CLKCTL_CLKENSET0_SPI0 //!< Configure SPI0 clock enable
80+
#define CLKCTL_I2C0 CLKCTL_CLKENSET0_I2C0 //!< Configure I2C0 clock enable
81+
#define CLKCTL_UART0 CLKCTL_CLKENSET0_UART0 //!< Configure UART0 clock enable
82+
#define CLKCTL_LRFD CLKCTL_CLKENSET0_LRFD //!< Configure LRFD clock enable
83+
#define CLKCTL_GPIO CLKCTL_CLKENSET0_GPIO //!< Configure GPIO clock enable
84+
85+
//*****************************************************************************
86+
//
87+
// API Functions and prototypes.
88+
//
89+
//*****************************************************************************
90+
91+
#ifdef DRIVERLIB_DEBUG
92+
//*****************************************************************************
93+
//
94+
//! \internal
95+
//!
96+
//! \brief Checks clock control base address.
97+
//!
98+
//! This function determines if a clock controle base address is valid.
99+
//!
100+
//! \param base specifies the clock control base address.
101+
//!
102+
//! \return Returns \c true if the base address is valid and \c false
103+
//! otherwise.
104+
//
105+
//*****************************************************************************
106+
static bool CLKCTLBaseValid(uint32_t base)
107+
{
108+
return (base == CLKCTL_BASE);
109+
}
110+
#endif
111+
112+
//*****************************************************************************
113+
//
114+
//! \brief Enables the clock for a peripheral.
115+
//!
116+
//! This function enables the clock for a peripheral.
117+
//!
118+
//! \param base specifies the clock control base address.
119+
//! \param peripheral specifies the peripheral.
120+
//! The parameter can be one of the following values:
121+
//! - \ref CLKCTL_LGPT3
122+
//! - \ref CLKCTL_LGPT2
123+
//! - \ref CLKCTL_LGPT1
124+
//! - \ref CLKCTL_LGPT0
125+
//! - \ref CLKCTL_DMA
126+
//! - \ref CLKCTL_LAES
127+
//! - \ref CLKCTL_ADC0
128+
//! - \ref CLKCTL_SPI0
129+
//! - \ref CLKCTL_I2C0
130+
//! - \ref CLKCTL_UART0
131+
//! - \ref CLKCTL_LRFD
132+
//! - \ref CLKCTL_GPIO
133+
//!
134+
//! \return None
135+
//
136+
//*****************************************************************************
137+
__STATIC_INLINE void CLKCTLEnable(uint32_t base, uint32_t peripheral)
138+
{
139+
// Check the arguments
140+
ASSERT(CLKCTLBaseValid(base));
141+
142+
// Read-modify-write the set bit
143+
HWREG(base + CLKCTL_O_CLKENSET0) |= peripheral;
144+
}
145+
146+
//*****************************************************************************
147+
//
148+
//! \brief Disables the clock for a peripheral.
149+
//!
150+
//! This function disables the clock for a peripheral.
151+
//!
152+
//! \param base specifies the clock control base address.
153+
//! \param peripheral specifies the peripheral.
154+
//! The parameter can be one of the following values:
155+
//! - \ref CLKCTL_LGPT3
156+
//! - \ref CLKCTL_LGPT2
157+
//! - \ref CLKCTL_LGPT1
158+
//! - \ref CLKCTL_LGPT0
159+
//! - \ref CLKCTL_DMA
160+
//! - \ref CLKCTL_LAES
161+
//! - \ref CLKCTL_ADC0
162+
//! - \ref CLKCTL_SPI0
163+
//! - \ref CLKCTL_I2C0
164+
//! - \ref CLKCTL_UART0
165+
//! - \ref CLKCTL_LRFD
166+
//! - \ref CLKCTL_GPIO
167+
//!
168+
//! \return None
169+
//
170+
//*****************************************************************************
171+
__STATIC_INLINE void CLKCTLDisable(uint32_t base, uint32_t peripheral)
172+
{
173+
// Check the arguments
174+
ASSERT(CLKCTLBaseValid(base));
175+
176+
// Read-modify-write the clear bit
177+
HWREG(base + CLKCTL_O_CLKENCLR0) |= peripheral;
178+
}
179+
180+
//*****************************************************************************
181+
//
182+
// Mark the end of the C bindings section for C++ compilers.
183+
//
184+
//*****************************************************************************
185+
#ifdef __cplusplus
186+
}
187+
#endif
188+
189+
//*****************************************************************************
190+
//
191+
//! Close the Doxygen group.
192+
//! @}
193+
//! @}
194+
//
195+
//*****************************************************************************
196+
197+
#endif // __CLKCTL_H__

0 commit comments

Comments
 (0)