diff options
author | Amaury Pouly <amaury.pouly@gmail.com> | 2012-10-10 17:54:33 +0200 |
---|---|---|
committer | Amaury Pouly <amaury.pouly@gmail.com> | 2012-10-10 17:54:33 +0200 |
commit | e3e53c965a39b5b3108ffa46369d233d6a2f1ff6 (patch) | |
tree | 45813ea4b31821be345c368b14b1a32e6b290b67 /firmware/target/arm/imx233 | |
parent | 097352a3ecf608f0934e1628c6b3cb783cf65b6c (diff) | |
download | rockbox-e3e53c965a39b5b3108ffa46369d233d6a2f1ff6.tar.gz rockbox-e3e53c965a39b5b3108ffa46369d233d6a2f1ff6.zip |
imx233/fuze+: add status led(icon) support to sd/mmc storage layer
Change-Id: I9c0e1ecd04d1935825606e906e6a434a3afb2175
Diffstat (limited to 'firmware/target/arm/imx233')
-rw-r--r-- | firmware/target/arm/imx233/sdmmc-imx233.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/firmware/target/arm/imx233/sdmmc-imx233.c b/firmware/target/arm/imx233/sdmmc-imx233.c index e0966f784b..32d0013574 100644 --- a/firmware/target/arm/imx233/sdmmc-imx233.c +++ b/firmware/target/arm/imx233/sdmmc-imx233.c | |||
@@ -33,6 +33,7 @@ | |||
33 | #include "debug.h" | 33 | #include "debug.h" |
34 | #include "string.h" | 34 | #include "string.h" |
35 | #include "ata_idle_notify.h" | 35 | #include "ata_idle_notify.h" |
36 | #include "led.h" | ||
36 | 37 | ||
37 | /** NOTE For convenience, this drivers relies on the many similar commands | 38 | /** NOTE For convenience, this drivers relies on the many similar commands |
38 | * between SD and MMC. The following assumptions are made: | 39 | * between SD and MMC. The following assumptions are made: |
@@ -501,6 +502,13 @@ static int __xfer_sectors(int drive, unsigned long start, int count, void *buf, | |||
501 | return ret; | 502 | return ret; |
502 | } | 503 | } |
503 | 504 | ||
505 | static void do_led(int delta) | ||
506 | { | ||
507 | static int level = 0; | ||
508 | level += delta; | ||
509 | led(level > 0); | ||
510 | } | ||
511 | |||
504 | static int transfer_sectors(int drive, unsigned long start, int count, void *buf, bool read) | 512 | static int transfer_sectors(int drive, unsigned long start, int count, void *buf, bool read) |
505 | { | 513 | { |
506 | int ret = 0; | 514 | int ret = 0; |
@@ -511,6 +519,9 @@ static int transfer_sectors(int drive, unsigned long start, int count, void *buf | |||
511 | /* lock per-drive mutex */ | 519 | /* lock per-drive mutex */ |
512 | mutex_lock(&mutex[drive]); | 520 | mutex_lock(&mutex[drive]); |
513 | 521 | ||
522 | /* update led status */ | ||
523 | do_led(1); | ||
524 | |||
514 | /* for SD cards, init if necessary */ | 525 | /* for SD cards, init if necessary */ |
515 | #if CONFIG_STORAGE & STORAGE_SD | 526 | #if CONFIG_STORAGE & STORAGE_SD |
516 | if(SDMMC_MODE(drive) == SD_MODE && SDMMC_INFO(drive).initialized <= 0) | 527 | if(SDMMC_MODE(drive) == SD_MODE && SDMMC_INFO(drive).initialized <= 0) |
@@ -604,6 +615,8 @@ static int transfer_sectors(int drive, unsigned long start, int count, void *buf | |||
604 | if(!send_cmd(drive, SD_DESELECT_CARD, 0, MCI_NO_RESP, NULL)) | 615 | if(!send_cmd(drive, SD_DESELECT_CARD, 0, MCI_NO_RESP, NULL)) |
605 | ret = -23; | 616 | ret = -23; |
606 | Lend: | 617 | Lend: |
618 | /* update led status */ | ||
619 | do_led(-1); | ||
607 | /* release per-drive mutex */ | 620 | /* release per-drive mutex */ |
608 | mutex_unlock(&mutex[drive]); | 621 | mutex_unlock(&mutex[drive]); |
609 | return ret; | 622 | return ret; |