summaryrefslogtreecommitdiff
path: root/firmware/drivers/ata_mmc.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/drivers/ata_mmc.c')
-rw-r--r--firmware/drivers/ata_mmc.c9
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));