Skip to content

Commit 3ac9a72

Browse files
committed
Fix SDMMC endianness.
1 parent 7cd43ed commit 3ac9a72

File tree

1 file changed

+13
-14
lines changed

1 file changed

+13
-14
lines changed

src/sdmmc.rs

+13-14
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ pub enum ClockFreq {
149149
}
150150

151151
/// Error during SDMMC operations.
152-
#[derive(Debug)]
152+
#[derive(Debug, Clone, Copy)]
153153
pub enum Error {
154154
/// No card detected.
155155
NoCard,
@@ -344,7 +344,7 @@ impl Sdmmc {
344344

345345
let check_pattern = 0xaa;
346346
self.cmd(sd_cmd::send_if_cond(1, check_pattern))?;
347-
let cic = CIC::from(self.sdmmc.resp1.read().bits());
347+
let cic = CIC::from(self.sdmmc.resp1.read().bits().to_le());
348348

349349
let card_version = if cic.pattern() == 0xAA {
350350
SdCardVersion::V2
@@ -376,7 +376,7 @@ impl Sdmmc {
376376
Err(err) => return Err(err),
377377
}
378378

379-
let ocr = OCR::from(self.sdmmc.resp1.read().bits());
379+
let ocr = OCR::from(self.sdmmc.resp1.read().bits().to_le());
380380
if !ocr.is_busy() {
381381
// Power up done
382382
break ocr;
@@ -385,21 +385,21 @@ impl Sdmmc {
385385

386386
self.cmd(common_cmd::all_send_cid())?;
387387
card.cid = CID::from([
388-
self.sdmmc.resp1.read().bits(),
389-
self.sdmmc.resp2.read().bits(),
390-
self.sdmmc.resp3.read().bits(),
391-
self.sdmmc.resp4.read().bits(),
388+
self.sdmmc.resp4.read().bits().to_le(),
389+
self.sdmmc.resp3.read().bits().to_le(),
390+
self.sdmmc.resp2.read().bits().to_le(),
391+
self.sdmmc.resp1.read().bits().to_le(),
392392
]);
393393

394394
self.cmd(sd_cmd::send_relative_address())?;
395-
card.rca = RCA::from(self.sdmmc.resp1.read().bits());
395+
card.rca = RCA::from(self.sdmmc.resp1.read().bits().to_le());
396396

397397
self.cmd(common_cmd::send_csd(card.rca.address()))?;
398398
card.csd = CSD::from([
399-
self.sdmmc.resp1.read().bits(),
400-
self.sdmmc.resp2.read().bits(),
401-
self.sdmmc.resp3.read().bits(),
402-
self.sdmmc.resp4.read().bits(),
399+
self.sdmmc.resp4.read().bits().to_le(),
400+
self.sdmmc.resp3.read().bits().to_le(),
401+
self.sdmmc.resp2.read().bits().to_le(),
402+
self.sdmmc.resp1.read().bits().to_le(),
403403
]);
404404

405405
self.select_card(card.rca.address())?;
@@ -668,8 +668,7 @@ impl Sdmmc {
668668

669669
self.cmd(common_cmd::card_status(card.address(), false))?;
670670

671-
let r1 = self.sdmmc.resp1.read().bits();
672-
Ok(CardStatus::from(r1))
671+
Ok(CardStatus::from(self.sdmmc.resp1.read().bits().to_le()))
673672
}
674673

675674
/// Check if card is done writing/reading and back in transfer state.

0 commit comments

Comments
 (0)