Skip to content

Commit 1a67509

Browse files
committed
[clock, tests, docs] Remove GetRate from clock device type
1 parent 5b18269 commit 1a67509

15 files changed

Lines changed: 0 additions & 361 deletions

docs/writing_a_driver.md

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -332,12 +332,6 @@ driver should handle all of these.
332332
Disable a peripheral clock gate. The inverse of Enable — clear the enable bit(s)
333333
for the given clock descriptor.
334334
335-
### GetRate
336-
337-
Report the current system clock frequency in Hz. The driver should compute this
338-
from the configured source, PLL coefficients, and divider settings. Store the
339-
result in the output pointer.
340-
341335
---
342336
343337
## GPIO

src/clock/clock.c

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,3 @@ inline whal_Error whal_Clock_Disable(whal_Clock *clkDev, const void *clk)
3737
return clkDev->driver->Disable(clkDev, clk);
3838
}
3939

40-
inline whal_Error whal_Clock_GetRate(whal_Clock *clkDev, size_t *rateOut)
41-
{
42-
if (!clkDev || !clkDev->driver || !clkDev->driver->GetRate ||
43-
!rateOut)
44-
{
45-
return WHAL_EINVAL;
46-
}
47-
48-
return clkDev->driver->GetRate(clkDev, rateOut);
49-
}
50-

src/clock/pic32cz_clock.c

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -238,21 +238,9 @@ whal_Error whal_Pic32czClock_Disable(whal_Clock *clkDev, const void *clk)
238238
return WHAL_SUCCESS;
239239
}
240240

241-
whal_Error whal_Pic32czClock_GetRate(whal_Clock *clkDev, size_t *rateOut)
242-
{
243-
if (!clkDev || !rateOut) {
244-
return WHAL_EINVAL;
245-
}
246-
247-
/* TODO: Calculate actual clock rate from PLL and divider settings */
248-
*rateOut = 0;
249-
return WHAL_SUCCESS;
250-
}
251-
252241
const whal_ClockDriver whal_Pic32czClockPll_Driver = {
253242
.Init = whal_Pic32czClockPll_Init,
254243
.Deinit = whal_Pic32czClockPll_Deinit,
255244
.Enable = whal_Pic32czClock_Enable,
256245
.Disable = whal_Pic32czClock_Disable,
257-
.GetRate = whal_Pic32czClock_GetRate,
258246
};

src/clock/stm32c0_rcc.c

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -114,26 +114,9 @@ whal_Error whal_Stm32c0Rcc_Disable(whal_Clock *clkDev, const void *clk)
114114
return WHAL_SUCCESS;
115115
}
116116

117-
whal_Error whal_Stm32c0Rcc_GetRate(whal_Clock *clkDev, size_t *rateOut)
118-
{
119-
whal_Stm32c0Rcc_Cfg *cfg;
120-
121-
if (!clkDev || !clkDev->cfg || !rateOut) {
122-
return WHAL_EINVAL;
123-
}
124-
125-
cfg = (whal_Stm32c0Rcc_Cfg *)clkDev->cfg;
126-
127-
/* HSI48 base frequency divided by HSIDIV (1 << hsidiv) */
128-
*rateOut = 48000000 / (1 << cfg->hsidiv);
129-
130-
return WHAL_SUCCESS;
131-
}
132-
133117
const whal_ClockDriver whal_Stm32c0Rcc_Driver = {
134118
.Init = whal_Stm32c0Rcc_Init,
135119
.Deinit = whal_Stm32c0Rcc_Deinit,
136120
.Enable = whal_Stm32c0Rcc_Enable,
137121
.Disable = whal_Stm32c0Rcc_Disable,
138-
.GetRate = whal_Stm32c0Rcc_GetRate,
139122
};

src/clock/stm32f4_rcc.c

Lines changed: 0 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,6 @@
7272
#define RCC_CFGR_PPRE2_Pos 13
7373
#define RCC_CFGR_PPRE2_Msk (WHAL_BITMASK(3) << RCC_CFGR_PPRE2_Pos)
7474

75-
/* PLLP register value to actual divider: 0->2, 1->4, 2->6, 3->8 */
76-
static const uint8_t pllp_div[] = { 2, 4, 6, 8 };
77-
7875
whal_Error whal_Stm32f4RccPll_Init(whal_Clock *clkDev)
7976
{
8077
whal_Stm32f4Rcc_Cfg *cfg;
@@ -211,39 +208,9 @@ whal_Error whal_Stm32f4Rcc_Disable(whal_Clock *clkDev, const void *clk)
211208
return WHAL_SUCCESS;
212209
}
213210

214-
whal_Error whal_Stm32f4RccPll_GetRate(whal_Clock *clkDev, size_t *rateOut)
215-
{
216-
whal_Stm32f4Rcc_Cfg *cfg;
217-
whal_Stm32f4Rcc_PllClkCfg *pllCfg;
218-
size_t srcFreq;
219-
size_t pllm;
220-
size_t plln;
221-
size_t pllp;
222-
223-
if (!clkDev || !clkDev->cfg || !rateOut)
224-
return WHAL_EINVAL;
225-
226-
cfg = (whal_Stm32f4Rcc_Cfg *)clkDev->cfg;
227-
pllCfg = (whal_Stm32f4Rcc_PllClkCfg *)cfg->sysClkCfg;
228-
229-
/* Determine source frequency */
230-
if (pllCfg->clkSrc == WHAL_STM32F4_RCC_PLLCLK_SRC_HSI)
231-
srcFreq = 16000000;
232-
else
233-
srcFreq = 25000000;
234-
235-
pllm = pllCfg->m;
236-
plln = pllCfg->n;
237-
pllp = pllp_div[pllCfg->p & 0x3];
238-
239-
*rateOut = ((srcFreq / pllm) * plln) / pllp;
240-
return WHAL_SUCCESS;
241-
}
242-
243211
const whal_ClockDriver whal_Stm32f4RccPll_Driver = {
244212
.Init = whal_Stm32f4RccPll_Init,
245213
.Deinit = whal_Stm32f4RccPll_Deinit,
246214
.Enable = whal_Stm32f4Rcc_Enable,
247215
.Disable = whal_Stm32f4Rcc_Disable,
248-
.GetRate = whal_Stm32f4RccPll_GetRate,
249216
};

src/clock/stm32h5_rcc.c

Lines changed: 0 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -102,29 +102,6 @@
102102
/* HSI base frequency */
103103
#define HSI_FREQ 64000000UL
104104

105-
/*
106-
* Compute the input reference frequency for PLL source selection.
107-
* Returns the HSI frequency accounting for the divider if HSI is selected.
108-
*/
109-
static size_t Stm32h5Rcc_GetPllInputFreq(size_t rccBase,
110-
whal_Stm32h5Rcc_PllClockSrc src)
111-
{
112-
size_t hsidiv;
113-
114-
switch (src) {
115-
case WHAL_STM32H5_RCC_PLLCLK_SRC_HSI:
116-
whal_Reg_Get(rccBase, RCC_CR_REG, RCC_CR_HSIDIV_Msk,
117-
RCC_CR_HSIDIV_Pos, &hsidiv);
118-
return HSI_FREQ >> hsidiv;
119-
case WHAL_STM32H5_RCC_PLLCLK_SRC_CSI:
120-
return 4000000;
121-
case WHAL_STM32H5_RCC_PLLCLK_SRC_HSE:
122-
return 8000000; /* TODO: Make configurable per board */
123-
default:
124-
return 0;
125-
}
126-
}
127-
128105
whal_Error whal_Stm32h5RccPll_Init(whal_Clock *clkDev)
129106
{
130107
whal_Stm32h5Rcc_Cfg *cfg;
@@ -333,71 +310,18 @@ whal_Error whal_Stm32h5Rcc_Disable(whal_Clock *clkDev, const void *clk)
333310
return WHAL_SUCCESS;
334311
}
335312

336-
whal_Error whal_Stm32h5RccPll_GetRate(whal_Clock *clkDev, size_t *rateOut)
337-
{
338-
whal_Stm32h5Rcc_Cfg *cfg;
339-
whal_Stm32h5Rcc_PllClkCfg *pllCfg;
340-
size_t srcFreq;
341-
size_t pllm;
342-
size_t plln;
343-
size_t pllp;
344-
345-
if (!clkDev || !clkDev->cfg || !rateOut)
346-
return WHAL_EINVAL;
347-
348-
cfg = (whal_Stm32h5Rcc_Cfg *)clkDev->cfg;
349-
pllCfg = (whal_Stm32h5Rcc_PllClkCfg *)cfg->sysClkCfg;
350-
351-
srcFreq = Stm32h5Rcc_GetPllInputFreq(clkDev->regmap.base, pllCfg->clkSrc);
352-
if (srcFreq == 0)
353-
return WHAL_EINVAL;
354-
355-
/*
356-
* PLL1 output (pll1_p_ck):
357-
* f_vco = (f_src / m) * (n + 1)
358-
* f_pllp = f_vco / (p + 1)
359-
*
360-
* PLL1M: register value is the divisor directly (1-63, 0=disabled)
361-
* PLL1N: register value + 1 is the multiplier (3=4x, 4=5x, ...)
362-
* PLL1P: register value + 1 is the divisor (1=/2, 2=/3, ...)
363-
*/
364-
pllm = pllCfg->m;
365-
plln = pllCfg->n + 1;
366-
pllp = pllCfg->p + 1;
367-
368-
*rateOut = ((srcFreq / pllm) * plln) / pllp;
369-
return WHAL_SUCCESS;
370-
}
371-
372-
whal_Error whal_Stm32h5RccHsi_GetRate(whal_Clock *clkDev, size_t *rateOut)
373-
{
374-
size_t hsidiv;
375-
376-
if (!clkDev || !rateOut)
377-
return WHAL_EINVAL;
378-
379-
whal_Reg_Get(clkDev->regmap.base, RCC_CR_REG, RCC_CR_HSIDIV_Msk,
380-
RCC_CR_HSIDIV_Pos, &hsidiv);
381-
382-
/* HSI divider: 0=div1(64MHz), 1=div2(32MHz), 2=div4(16MHz), 3=div8(8MHz) */
383-
*rateOut = HSI_FREQ >> hsidiv;
384-
return WHAL_SUCCESS;
385-
}
386-
387313
const whal_ClockDriver whal_Stm32h5RccPll_Driver = {
388314
.Init = whal_Stm32h5RccPll_Init,
389315
.Deinit = whal_Stm32h5RccPll_Deinit,
390316
.Enable = whal_Stm32h5Rcc_Enable,
391317
.Disable = whal_Stm32h5Rcc_Disable,
392-
.GetRate = whal_Stm32h5RccPll_GetRate,
393318
};
394319

395320
const whal_ClockDriver whal_Stm32h5RccHsi_Driver = {
396321
.Init = whal_Stm32h5RccHsi_Init,
397322
.Deinit = whal_Stm32h5RccHsi_Deinit,
398323
.Enable = whal_Stm32h5Rcc_Enable,
399324
.Disable = whal_Stm32h5Rcc_Disable,
400-
.GetRate = whal_Stm32h5RccHsi_GetRate,
401325
};
402326

403327
whal_Error whal_Stm32h5Rcc_Ext_EnableHsi48(whal_Clock *clkDev, uint8_t enable)

src/clock/stm32wb_rcc.c

Lines changed: 0 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -262,93 +262,6 @@ whal_Error whal_Stm32wbRcc_Disable(whal_Clock *clkDev, const void *clk)
262262
return WHAL_SUCCESS;
263263
}
264264

265-
whal_Error whal_Stm32wbRccPll_GetRate(whal_Clock *clkDev, size_t *rateOut)
266-
{
267-
whal_Stm32wbRcc_Cfg *cfg;
268-
269-
if (!clkDev || !clkDev->cfg) {
270-
return WHAL_EINVAL;
271-
}
272-
273-
cfg = (whal_Stm32wbRcc_Cfg *)clkDev->cfg;
274-
whal_Stm32wbRcc_PllClkCfg *pllClkCfg = cfg->sysClkCfg;
275-
276-
/*
277-
* Calculate PLL output frequency:
278-
* f_pllr = ((f_src / (m + 1)) * n) / (r + 1)
279-
*/
280-
size_t srcFreq;
281-
size_t pllm = pllClkCfg->m + 1;
282-
size_t plln = pllClkCfg->n;
283-
size_t pllr = pllClkCfg->r + 1;
284-
285-
/* Determine source frequency based on PLL input selection */
286-
if (pllClkCfg->clkSrc == WHAL_STM32WB_RCC_PLLCLK_SRC_MSI) {
287-
srcFreq = 4000000;
288-
}
289-
else {
290-
return WHAL_EINVAL;
291-
}
292-
293-
*rateOut = ((srcFreq / pllm) * plln) / pllr;
294-
return WHAL_SUCCESS;
295-
}
296-
297-
whal_Error whal_Stm32wbRccMsi_GetRate(whal_Clock *clkDev, size_t *rateOut)
298-
{
299-
size_t msiRange;
300-
301-
if (!clkDev || !rateOut) {
302-
return WHAL_EINVAL;
303-
}
304-
305-
/* Read current MSI range from hardware */
306-
whal_Reg_Get(clkDev->regmap.base, RCC_CR_REG, RCC_CR_MSIRANGE_Msk,
307-
RCC_CR_MSIRANGE_Pos, &msiRange);
308-
309-
/* Map range setting to frequency in Hz */
310-
switch (msiRange) {
311-
case WHAL_STM32WB_RCC_MSIRANGE_100kHz:
312-
*rateOut = 100000;
313-
break;
314-
case WHAL_STM32WB_RCC_MSIRANGE_200kHz:
315-
*rateOut = 200000;
316-
break;
317-
case WHAL_STM32WB_RCC_MSIRANGE_400kHz:
318-
*rateOut = 400000;
319-
break;
320-
case WHAL_STM32WB_RCC_MSIRANGE_800kHz:
321-
*rateOut = 800000;
322-
break;
323-
case WHAL_STM32WB_RCC_MSIRANGE_1MHz:
324-
*rateOut = 1000000;
325-
break;
326-
case WHAL_STM32WB_RCC_MSIRANGE_2MHz:
327-
*rateOut = 2000000;
328-
break;
329-
case WHAL_STM32WB_RCC_MSIRANGE_4MHz:
330-
*rateOut = 4000000;
331-
break;
332-
case WHAL_STM32WB_RCC_MSIRANGE_8MHz:
333-
*rateOut = 8000000;
334-
break;
335-
case WHAL_STM32WB_RCC_MSIRANGE_16MHz:
336-
*rateOut = 16000000;
337-
break;
338-
case WHAL_STM32WB_RCC_MSIRANGE_24MHz:
339-
*rateOut = 24000000;
340-
break;
341-
case WHAL_STM32WB_RCC_MSIRANGE_32MHz:
342-
*rateOut = 32000000;
343-
break;
344-
case WHAL_STM32WB_RCC_MSIRANGE_48MHz:
345-
*rateOut = 48000000;
346-
break;
347-
}
348-
349-
return WHAL_SUCCESS;
350-
}
351-
352265
whal_Error whal_Stm32wbRcc_Ext_EnableHsi48(whal_Clock *clkDev, uint8_t enable)
353266
{
354267
if (!clkDev) {
@@ -394,13 +307,11 @@ const whal_ClockDriver whal_Stm32wbRccPll_Driver = {
394307
.Deinit = whal_Stm32wbRccPll_Deinit,
395308
.Enable = whal_Stm32wbRcc_Enable,
396309
.Disable = whal_Stm32wbRcc_Disable,
397-
.GetRate = whal_Stm32wbRccPll_GetRate,
398310
};
399311

400312
const whal_ClockDriver whal_Stm32wbRccMsi_Driver = {
401313
.Init = whal_Stm32wbRccMsi_Init,
402314
.Deinit = whal_Stm32wbRccMsi_Deinit,
403315
.Enable = whal_Stm32wbRcc_Enable,
404316
.Disable = whal_Stm32wbRcc_Disable,
405-
.GetRate = whal_Stm32wbRccMsi_GetRate,
406317
};

tests/clock/test_clock.c

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,27 +4,15 @@
44

55
static void Test_Clock_Api(void)
66
{
7-
size_t rate;
8-
97
WHAL_ASSERT_EQ(whal_Clock_Init(NULL), WHAL_EINVAL);
108
WHAL_ASSERT_EQ(whal_Clock_Deinit(NULL), WHAL_EINVAL);
119
WHAL_ASSERT_EQ(whal_Clock_Enable(NULL, NULL), WHAL_EINVAL);
1210
WHAL_ASSERT_EQ(whal_Clock_Disable(NULL, NULL), WHAL_EINVAL);
13-
WHAL_ASSERT_EQ(whal_Clock_GetRate(NULL, &rate), WHAL_EINVAL);
14-
WHAL_ASSERT_EQ(whal_Clock_GetRate(&g_whalClock, NULL), WHAL_EINVAL);
15-
}
16-
17-
static void Test_Clock_GetRate(void)
18-
{
19-
size_t rate = 0;
20-
WHAL_ASSERT_EQ(whal_Clock_GetRate(&g_whalClock, &rate), WHAL_SUCCESS);
21-
WHAL_ASSERT_NEQ(rate, 0);
2211
}
2312

2413
void whal_Test_Clock(void)
2514
{
2615
WHAL_TEST_SUITE_START("clock");
2716
WHAL_TEST(Test_Clock_Api);
28-
WHAL_TEST(Test_Clock_GetRate);
2917
WHAL_TEST_SUITE_END();
3018
}

tests/core/test_dispatch.c

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,11 @@ static whal_Error MockClockInit(whal_Clock *d) { (void)d; return WHAL_SUCCESS; }
1313
static whal_Error MockClockDeinit(whal_Clock *d) { (void)d; return WHAL_SUCCESS; }
1414
static whal_Error MockClockEnable(whal_Clock *d, const void *c) { (void)d; (void)c; return WHAL_SUCCESS; }
1515
static whal_Error MockClockDisable(whal_Clock *d, const void *c) { (void)d; (void)c; return WHAL_SUCCESS; }
16-
static whal_Error MockClockGetRate(whal_Clock *d, size_t *r) { (void)d; *r = 64000000; return WHAL_SUCCESS; }
17-
1816
static const whal_ClockDriver mockClockDriver = {
1917
.Init = MockClockInit,
2018
.Deinit = MockClockDeinit,
2119
.Enable = MockClockEnable,
2220
.Disable = MockClockDisable,
23-
.GetRate = MockClockGetRate,
2421
};
2522

2623
static whal_Error MockGpioInit(whal_Gpio *d) { (void)d; return WHAL_SUCCESS; }
@@ -109,8 +106,6 @@ static void Test_Clock_NullDev(void)
109106
WHAL_ASSERT_EQ(whal_Clock_Deinit(NULL), WHAL_EINVAL);
110107
WHAL_ASSERT_EQ(whal_Clock_Enable(NULL, NULL), WHAL_EINVAL);
111108
WHAL_ASSERT_EQ(whal_Clock_Disable(NULL, NULL), WHAL_EINVAL);
112-
size_t rate;
113-
WHAL_ASSERT_EQ(whal_Clock_GetRate(NULL, &rate), WHAL_EINVAL);
114109
}
115110

116111
static void Test_Clock_NullDriver(void)
@@ -133,9 +128,6 @@ static void Test_Clock_ValidDispatch(void)
133128
WHAL_ASSERT_EQ(whal_Clock_Deinit(&dev), WHAL_SUCCESS);
134129
WHAL_ASSERT_EQ(whal_Clock_Enable(&dev, NULL), WHAL_SUCCESS);
135130
WHAL_ASSERT_EQ(whal_Clock_Disable(&dev, NULL), WHAL_SUCCESS);
136-
size_t rate;
137-
WHAL_ASSERT_EQ(whal_Clock_GetRate(&dev, &rate), WHAL_SUCCESS);
138-
WHAL_ASSERT_EQ(rate, 64000000);
139131
}
140132

141133
/* --- GPIO dispatch tests --- */

0 commit comments

Comments
 (0)