Skip to content

Commit 7802f8e

Browse files
drivers: spi: siwx91x: Simplify gspi_siwx91x_pick_lower_freq()
Since actual_hz is no more needed, we can simplify gspi_siwx91x_pick_lower_freq(). Signed-off-by: Jérôme Pouiller <[email protected]>
1 parent 2b52ed2 commit 7802f8e

File tree

1 file changed

+7
-24
lines changed

1 file changed

+7
-24
lines changed

drivers/spi/spi_silabs_siwx91x_gspi.c

Lines changed: 7 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -77,27 +77,17 @@ static bool spi_siwx91x_is_dma_enabled_instance(const struct device *dev)
7777
#endif
7878
}
7979

80-
void gspi_siwx91x_pick_lower_freq(uint32_t clock_hz, uint32_t requested_hz, uint32_t *actual_hz_out,
81-
uint32_t *div_out)
80+
static uint32_t gspi_siwx91x_get_divider(uint32_t clock_hz, uint32_t requested_hz)
8281
{
83-
/* Calculate divider that ensures freq <= requested */
8482
uint32_t divider = DIV_ROUND_UP(clock_hz, 2 * requested_hz);
85-
uint32_t actual_hz;
83+
uint32_t actual_freq = clock_hz / (2U * divider);;
8684

87-
if (divider == 0U) {
88-
divider = 1U;
85+
if (requested_hz != actual_freq) {
86+
LOG_INF("Requested %u Hz, programmed %u Hz (divider=%u)",
87+
requested_hz, actual_freq, divider);
8988
}
9089

91-
/* Compute the actual achievable frequency */
92-
actual_hz = clock_hz / (2U * divider);
93-
94-
if (actual_hz_out) {
95-
*actual_hz_out = actual_hz;
96-
}
97-
98-
if (div_out) {
99-
*div_out = divider;
100-
}
90+
return divider;
10191
}
10292

10393
static int gspi_siwx91x_config(const struct device *dev, const struct spi_config *spi_cfg,
@@ -106,7 +96,6 @@ static int gspi_siwx91x_config(const struct device *dev, const struct spi_config
10696
__maybe_unused struct gspi_siwx91x_data *data = dev->data;
10797
const struct gspi_siwx91x_config *cfg = dev->config;
10898
uint32_t clk_div_factor;
109-
uint32_t actual_freq;
11099
uint32_t clock_rate;
111100
int ret;
112101
__maybe_unused int channel_filter;
@@ -143,13 +132,7 @@ static int gspi_siwx91x_config(const struct device *dev, const struct spi_config
143132
if (ret) {
144133
return ret;
145134
}
146-
147-
gspi_siwx91x_pick_lower_freq(clock_rate, spi_cfg->frequency, &actual_freq,
148-
&clk_div_factor);
149-
if (spi_cfg->frequency != actual_freq) {
150-
LOG_INF("Requested %u Hz, programmed %u Hz (divider=%u)",
151-
spi_cfg->frequency, actual_freq, clk_div_factor);
152-
}
135+
clk_div_factor = gspi_siwx91x_get_divider(clock_rate, spi_cfg->frequency);
153136
}
154137

155138
/* Set the clock divider factor */

0 commit comments

Comments
 (0)