diff options
author | Rafaël Carré <rafael.carre@gmail.com> | 2009-07-01 10:07:22 +0000 |
---|---|---|
committer | Rafaël Carré <rafael.carre@gmail.com> | 2009-07-01 10:07:22 +0000 |
commit | e0e24cbf0a3b11cb161e0ae057e4c383c6134801 (patch) | |
tree | fcfdb14a4b2984f4bc2c1bbc9657f11dcb03dcd7 /firmware/drivers | |
parent | c929310e55bf337e4a31675a30031a7818f5deda (diff) | |
download | rockbox-e0e24cbf0a3b11cb161e0ae057e4c383c6134801.tar.gz rockbox-e0e24cbf0a3b11cb161e0ae057e4c383c6134801.zip |
Merge tCardInfo struct (MMC) and tSDCardInfo struct (SD)
Put specific members under #ifdef (CONFIG_STORAGE & STORAGE_xx) (2 members for SD and 1 for MMC)
Fix a typo: tsac doesn't exist and must be read taac
Move card_get_info functions declaration inside hotswap.h to remove mutual inclusion of ata_mmc.h and hotswap.h
Move static const data structures from SD drivers into sd.h (sd_exponent and sd_mantissa)
Fix sd_command prototypes in SD drivers (card registers are unsigned long)
Fix speed calculation in Sansa AMS driver (PP SD driver needs to be checked)
Move ata-sd-target.h to sd-pp-target.h to reflect the PP specifity. Now it only contains declaration of microsd_int()
Remove unused ata-sd-target.h for injenic
TODO:
- check if CSD register bits are extracted correctly in PP driver
- correctly define read_timeout and write_timeout unit for MMC & SD, and use timeouts in Sansa AMS driver
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21586 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/drivers')
-rw-r--r-- | firmware/drivers/ata_mmc.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/firmware/drivers/ata_mmc.c b/firmware/drivers/ata_mmc.c index 3396149602..1dc330c538 100644 --- a/firmware/drivers/ata_mmc.c +++ b/firmware/drivers/ata_mmc.c | |||
@@ -21,6 +21,7 @@ | |||
21 | #include <stdbool.h> | 21 | #include <stdbool.h> |
22 | #include "mmc.h" | 22 | #include "mmc.h" |
23 | #include "ata_mmc.h" | 23 | #include "ata_mmc.h" |
24 | #include "hotswap.h" | ||
24 | #include "ata_idle_notify.h" | 25 | #include "ata_idle_notify.h" |
25 | #include "kernel.h" | 26 | #include "kernel.h" |
26 | #include "thread.h" | 27 | #include "thread.h" |
@@ -439,15 +440,15 @@ static int initialize_card(int card_no) | |||
439 | * exponent[ts_exp + 4]; | 440 | * exponent[ts_exp + 4]; |
440 | card->bitrate_register = (FREQ/4-1) / card->speed; | 441 | card->bitrate_register = (FREQ/4-1) / card->speed; |
441 | 442 | ||
442 | /* NSAC, TSAC, read timeout */ | 443 | /* NSAC, TAAC, read timeout */ |
443 | card->nsac = 100 * card_extract_bits(card->csd, 16, 8); | 444 | card->nsac = 100 * card_extract_bits(card->csd, 16, 8); |
444 | card->tsac = mantissa[card_extract_bits(card->csd, 9, 4)]; | 445 | card->taac = mantissa[card_extract_bits(card->csd, 9, 4)]; |
445 | taac_exp = card_extract_bits(card->csd, 13, 3); | 446 | taac_exp = card_extract_bits(card->csd, 13, 3); |
446 | card->read_timeout = ((FREQ/4) / (card->bitrate_register + 1) | 447 | card->read_timeout = ((FREQ/4) / (card->bitrate_register + 1) |
447 | * card->tsac / exponent[9 - taac_exp] | 448 | * card->taac / exponent[9 - taac_exp] |
448 | + (10 * card->nsac)); | 449 | + (10 * card->nsac)); |
449 | card->read_timeout /= 8; /* clocks -> bytes */ | 450 | card->read_timeout /= 8; /* clocks -> bytes */ |
450 | card->tsac = card->tsac * exponent[taac_exp] / 10; | 451 | card->taac = card->taac * exponent[taac_exp] / 10; |
451 | 452 | ||
452 | /* r2w_factor, write timeout */ | 453 | /* r2w_factor, write timeout */ |
453 | card->r2w_factor = BIT_N(card_extract_bits(card->csd, 99, 3)); | 454 | card->r2w_factor = BIT_N(card_extract_bits(card->csd, 99, 3)); |