From 93f6e3df246ff50c24524c9d329f27a06e1845db Mon Sep 17 00:00:00 2001 From: Rafaël Carré Date: Wed, 1 Jul 2009 19:13:01 +0000 Subject: card_extract_bits() take the start bit argument as defined in public SanDisk specifications for SD and MMC, i.e. bit 0 is the lsb git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21600 a1c6a512-1295-4272-9138-f99709370657 --- firmware/hotswap.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'firmware/hotswap.c') diff --git a/firmware/hotswap.c b/firmware/hotswap.c index 97c162ce39..ec298f7243 100644 --- a/firmware/hotswap.c +++ b/firmware/hotswap.c @@ -33,9 +33,14 @@ unsigned long card_extract_bits( unsigned int start, /* bit no. to start reading */ unsigned int size) /* how many bits to read */ { - unsigned int long_index = start / 32; - unsigned int bit_index = start % 32; + unsigned int long_index, bit_index; unsigned long result; + + /* we assume words of CSD/CID are stored least significant word first */ + start = 127 - start; + + long_index = start / 32; + bit_index = start % 32; result = p[long_index] << bit_index; -- cgit v1.2.3