diff options
author | Rafaël Carré <rafael.carre@gmail.com> | 2009-07-01 19:13:01 +0000 |
---|---|---|
committer | Rafaël Carré <rafael.carre@gmail.com> | 2009-07-01 19:13:01 +0000 |
commit | 93f6e3df246ff50c24524c9d329f27a06e1845db (patch) | |
tree | 9a625a9dd00b34fc8cd317840c41f27e0f33ea00 /firmware/hotswap.c | |
parent | 7ab33f165ca92c5cbaa76c57cf861fd4c72b1930 (diff) | |
download | rockbox-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.c | 9 |
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 | ||