aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDario Nieuwenhuis <[email protected]>2025-06-30 04:02:09 +0200
committerDario Nieuwenhuis <[email protected]>2025-07-04 00:23:22 +0200
commit3127e1c50b2ea2efddba199ae780cb5ebb571c00 (patch)
treefe60336322ce0cdf94a6fde12ad419f247111218
parent84cc949df649c9b3625a65c2cc14e09155deeede (diff)
sdmmc: use div_ceil.
-rw-r--r--embassy-stm32/src/sdmmc/mod.rs8
1 files changed, 3 insertions, 5 deletions
diff --git a/embassy-stm32/src/sdmmc/mod.rs b/embassy-stm32/src/sdmmc/mod.rs
index 675d1813b..c82407334 100644
--- a/embassy-stm32/src/sdmmc/mod.rs
+++ b/embassy-stm32/src/sdmmc/mod.rs
@@ -225,8 +225,7 @@ fn clk_div(ker_ck: Hertz, sdmmc_ck: u32) -> Result<(bool, u8, Hertz), Error> {
225 return Ok((true, 0, ker_ck)); 225 return Ok((true, 0, ker_ck));
226 } 226 }
227 227
228 // `ker_ck / sdmmc_ck` rounded up 228 let clk_div = match ker_ck.0.div_ceil(sdmmc_ck) {
229 let clk_div = match (ker_ck.0 + sdmmc_ck - 1) / sdmmc_ck {
230 0 | 1 => Ok(0), 229 0 | 1 => Ok(0),
231 x @ 2..=258 => Ok((x - 2) as u8), 230 x @ 2..=258 => Ok((x - 2) as u8),
232 _ => Err(Error::BadClock), 231 _ => Err(Error::BadClock),
@@ -244,12 +243,11 @@ fn clk_div(ker_ck: Hertz, sdmmc_ck: u32) -> Result<(bool, u8, Hertz), Error> {
244/// `clk_div` is the divisor register value and `clk_f` is the resulting new clock frequency. 243/// `clk_div` is the divisor register value and `clk_f` is the resulting new clock frequency.
245#[cfg(sdmmc_v2)] 244#[cfg(sdmmc_v2)]
246fn clk_div(ker_ck: Hertz, sdmmc_ck: u32) -> Result<(bool, u16, Hertz), Error> { 245fn clk_div(ker_ck: Hertz, sdmmc_ck: u32) -> Result<(bool, u16, Hertz), Error> {
247 // `ker_ck / sdmmc_ck` rounded up 246 match ker_ck.0.div_ceil(sdmmc_ck) {
248 match (ker_ck.0 + sdmmc_ck - 1) / sdmmc_ck {
249 0 | 1 => Ok((false, 0, ker_ck)), 247 0 | 1 => Ok((false, 0, ker_ck)),
250 x @ 2..=2046 => { 248 x @ 2..=2046 => {
251 // SDMMC_CK frequency = SDMMCCLK / [CLKDIV * 2] 249 // SDMMC_CK frequency = SDMMCCLK / [CLKDIV * 2]
252 let clk_div = ((x + 1) / 2) as u16; 250 let clk_div = x.div_ceil(2) as u16;
253 let clk = Hertz(ker_ck.0 / (clk_div as u32 * 2)); 251 let clk = Hertz(ker_ck.0 / (clk_div as u32 * 2));
254 252
255 Ok((false, clk_div, clk)) 253 Ok((false, clk_div, clk))