diff options
| author | Dario Nieuwenhuis <[email protected]> | 2025-06-30 04:02:09 +0200 |
|---|---|---|
| committer | Dario Nieuwenhuis <[email protected]> | 2025-07-04 00:23:22 +0200 |
| commit | 3127e1c50b2ea2efddba199ae780cb5ebb571c00 (patch) | |
| tree | fe60336322ce0cdf94a6fde12ad419f247111218 | |
| parent | 84cc949df649c9b3625a65c2cc14e09155deeede (diff) | |
sdmmc: use div_ceil.
| -rw-r--r-- | embassy-stm32/src/sdmmc/mod.rs | 8 |
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)] |
| 246 | fn clk_div(ker_ck: Hertz, sdmmc_ck: u32) -> Result<(bool, u16, Hertz), Error> { | 245 | fn 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)) |
