diff options
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/export/config/creativezenxfi2.h | 2 | ||||
-rw-r--r-- | firmware/target/arm/imx233/sdmmc-imx233.c | 26 |
2 files changed, 26 insertions, 2 deletions
diff --git a/firmware/export/config/creativezenxfi2.h b/firmware/export/config/creativezenxfi2.h index 020d7433cf..d60f9a4277 100644 --- a/firmware/export/config/creativezenxfi2.h +++ b/firmware/export/config/creativezenxfi2.h | |||
@@ -132,7 +132,7 @@ | |||
132 | 132 | ||
133 | /* define this if the flash memory uses the SecureDigital Memory Card protocol */ | 133 | /* define this if the flash memory uses the SecureDigital Memory Card protocol */ |
134 | #define CONFIG_STORAGE (/*STORAGE_NAND |*/ STORAGE_SD) | 134 | #define CONFIG_STORAGE (/*STORAGE_NAND |*/ STORAGE_SD) |
135 | #define NUM_DRIVES 1 | 135 | #define NUM_DRIVES 2 |
136 | #define HAVE_MULTIDRIVE | 136 | #define HAVE_MULTIDRIVE |
137 | #define HAVE_MULTIVOLUME | 137 | #define HAVE_MULTIVOLUME |
138 | #define HAVE_HOTSWAP_STORAGE_AS_MAIN | 138 | #define HAVE_HOTSWAP_STORAGE_AS_MAIN |
diff --git a/firmware/target/arm/imx233/sdmmc-imx233.c b/firmware/target/arm/imx233/sdmmc-imx233.c index 8103e980d1..7df0e412e5 100644 --- a/firmware/target/arm/imx233/sdmmc-imx233.c +++ b/firmware/target/arm/imx233/sdmmc-imx233.c | |||
@@ -73,6 +73,7 @@ struct sdmmc_config_t | |||
73 | #define WINDOW (1 << 5) | 73 | #define WINDOW (1 << 5) |
74 | #define WP_PIN (1 << 6) | 74 | #define WP_PIN (1 << 6) |
75 | #define WP_INVERTED (1 << 7) | 75 | #define WP_INVERTED (1 << 7) |
76 | #define PROBE (1 << 8) | ||
76 | 77 | ||
77 | /* modes */ | 78 | /* modes */ |
78 | #define SD_MODE 0 | 79 | #define SD_MODE 0 |
@@ -103,6 +104,12 @@ struct sdmmc_config_t sdmmc_config[] = | |||
103 | .mode = MMC_MODE, | 104 | .mode = MMC_MODE, |
104 | }, | 105 | }, |
105 | #elif defined(CREATIVE_ZENXFI2) | 106 | #elif defined(CREATIVE_ZENXFI2) |
107 | { | ||
108 | .name = "internal/SD", | ||
109 | .flags = WINDOW | PROBE, | ||
110 | .ssp = 2, | ||
111 | .mode = SD_MODE, | ||
112 | }, | ||
106 | /* The Zen X-Fi2 uses pin B1P29 for power */ | 113 | /* The Zen X-Fi2 uses pin B1P29 for power */ |
107 | { | 114 | { |
108 | .name = "microSD", | 115 | .name = "microSD", |
@@ -866,7 +873,16 @@ int sd_init(void) | |||
866 | _sd_num_drives = 0; | 873 | _sd_num_drives = 0; |
867 | for(unsigned drive = 0; drive < SDMMC_NUM_DRIVES; drive++) | 874 | for(unsigned drive = 0; drive < SDMMC_NUM_DRIVES; drive++) |
868 | if(SDMMC_MODE(drive) == SD_MODE) | 875 | if(SDMMC_MODE(drive) == SD_MODE) |
876 | { | ||
877 | /* if asked to probe, try to init it and ignore it if it fails */ | ||
878 | if(SDMMC_FLAGS(drive) & PROBE) | ||
879 | { | ||
880 | int ret = init_drive(drive); | ||
881 | if(ret < 0) | ||
882 | continue; | ||
883 | } | ||
869 | sd_map[_sd_num_drives++] = drive; | 884 | sd_map[_sd_num_drives++] = drive; |
885 | } | ||
870 | return 0; | 886 | return 0; |
871 | } | 887 | } |
872 | 888 | ||
@@ -931,8 +947,16 @@ int mmc_init(void) | |||
931 | for(unsigned drive = 0; drive < SDMMC_NUM_DRIVES; drive++) | 947 | for(unsigned drive = 0; drive < SDMMC_NUM_DRIVES; drive++) |
932 | if(SDMMC_MODE(drive) == MMC_MODE) | 948 | if(SDMMC_MODE(drive) == MMC_MODE) |
933 | { | 949 | { |
950 | /* try to init drive, panic on failure or skip if probing */ | ||
951 | int ret = init_drive(drive); | ||
952 | if(ret < 0) | ||
953 | { | ||
954 | if(SDMMC_FLAGS(drive) & PROBE) | ||
955 | continue; | ||
956 | else | ||
957 | panicf("init_drive(%d) failed: %d (mmc)", ret); | ||
958 | } | ||
934 | mmc_map[_mmc_num_drives++] = drive; | 959 | mmc_map[_mmc_num_drives++] = drive; |
935 | init_drive(drive); | ||
936 | } | 960 | } |
937 | return 0; | 961 | return 0; |
938 | } | 962 | } |