summaryrefslogtreecommitdiff
path: root/firmware/hotswap.c
diff options
context:
space:
mode:
authorRafaël Carré <rafael.carre@gmail.com>2009-07-01 19:13:01 +0000
committerRafaël Carré <rafael.carre@gmail.com>2009-07-01 19:13:01 +0000
commit93f6e3df246ff50c24524c9d329f27a06e1845db (patch)
tree9a625a9dd00b34fc8cd317840c41f27e0f33ea00 /firmware/hotswap.c
parent7ab33f165ca92c5cbaa76c57cf861fd4c72b1930 (diff)
downloadrockbox-93f6e3df246ff50c24524c9d329f27a06e1845db.tar.gz
rockbox-93f6e3df246ff50c24524c9d329f27a06e1845db.zip
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
Diffstat (limited to 'firmware/hotswap.c')
-rw-r--r--firmware/hotswap.c9
1 files changed, 7 insertions, 2 deletions
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(
33 unsigned int start, /* bit no. to start reading */ 33 unsigned int start, /* bit no. to start reading */
34 unsigned int size) /* how many bits to read */ 34 unsigned int size) /* how many bits to read */
35{ 35{
36 unsigned int long_index = start / 32; 36 unsigned int long_index, bit_index;
37 unsigned int bit_index = start % 32;
38 unsigned long result; 37 unsigned long result;
38
39 /* we assume words of CSD/CID are stored least significant word first */
40 start = 127 - start;
41
42 long_index = start / 32;
43 bit_index = start % 32;
39 44
40 result = p[long_index] << bit_index; 45 result = p[long_index] << bit_index;
41 46