57
57
#define SD_CLK_PWR_SAVE SDMMC_CLOCK_POWER_SAVE_DISABLE
58
58
#define SD_BUS_WIDE_1B SDMMC_BUS_WIDE_1B
59
59
#define SD_BUS_WIDE_4B SDMMC_BUS_WIDE_4B
60
- #define SD_BUS_WIDE_8B SDMMC_BUS_WIDE_8B
61
60
#define SD_HW_FLOW_CTRL_ENABLE SDMMC_HARDWARE_FLOW_CONTROL_ENABLE
62
61
#define SD_HW_FLOW_CTRL_DISABLE SDMMC_HARDWARE_FLOW_CONTROL_DISABLE
63
62
88
87
#define SD_CLK_PWR_SAVE SDIO_CLOCK_POWER_SAVE_DISABLE
89
88
#define SD_BUS_WIDE_1B SDIO_BUS_WIDE_1B
90
89
#define SD_BUS_WIDE_4B SDIO_BUS_WIDE_4B
91
- #define SD_BUS_WIDE_8B SDIO_BUS_WIDE_8B
92
90
#define SD_HW_FLOW_CTRL_ENABLE SDIO_HARDWARE_FLOW_CONTROL_ENABLE
93
91
#define SD_HW_FLOW_CTRL_DISABLE SDIO_HARDWARE_FLOW_CONTROL_DISABLE
94
92
#ifndef SD_CLK_DIV
@@ -150,9 +148,11 @@ uint8_t BSP_SD_GetInstance(void)
150
148
if (SD_PinNames .pin_d0 == NC ) {
151
149
/* No pin defined assume to use first pin available in each PinMap_SD_* arrays */
152
150
SD_PinNames .pin_d0 = PinMap_SD_DATA0 [0 ].pin ;
151
+ #if SD_BUS_WIDE == SD_BUS_WIDE_4B
153
152
SD_PinNames .pin_d1 = PinMap_SD_DATA1 [0 ].pin ;
154
153
SD_PinNames .pin_d2 = PinMap_SD_DATA2 [0 ].pin ;
155
154
SD_PinNames .pin_d3 = PinMap_SD_DATA3 [0 ].pin ;
155
+ #endif
156
156
SD_PinNames .pin_cmd = PinMap_SD_CMD [0 ].pin ;
157
157
SD_PinNames .pin_ck = PinMap_SD_CK [0 ].pin ;
158
158
#if defined(SDMMC1 ) || defined(SDMMC2 )
@@ -172,15 +172,20 @@ uint8_t BSP_SD_GetInstance(void)
172
172
}
173
173
/* Get SD instance from pins */
174
174
sd_d0 = pinmap_peripheral (SD_PinNames .pin_d0 , PinMap_SD_DATA0 );
175
+ #if SD_BUS_WIDE == SD_BUS_WIDE_4B
175
176
sd_d1 = pinmap_peripheral (SD_PinNames .pin_d1 , PinMap_SD_DATA1 );
176
177
sd_d2 = pinmap_peripheral (SD_PinNames .pin_d2 , PinMap_SD_DATA2 );
177
178
sd_d3 = pinmap_peripheral (SD_PinNames .pin_d3 , PinMap_SD_DATA3 );
178
-
179
+ #endif
179
180
sd_cmd = pinmap_peripheral (SD_PinNames .pin_cmd , PinMap_SD_CMD );
180
181
sd_ck = pinmap_peripheral (SD_PinNames .pin_ck , PinMap_SD_CK );
181
182
182
183
/* Pins Dx/cmd/CK must not be NP. */
183
- if (sd_d0 == NP || sd_d1 == NP || sd_d2 == NP || sd_d3 == NP || sd_cmd == NP || sd_ck == NP ) {
184
+ if (sd_d0 == NP ||
185
+ #if SD_BUS_WIDE == SD_BUS_WIDE_4B
186
+ sd_d1 == NP || sd_d2 == NP || sd_d3 == NP ||
187
+ #endif
188
+ sd_cmd == NP || sd_ck == NP ) {
184
189
core_debug ("ERROR: at least one SD pin has no peripheral\n" );
185
190
return MSD_ERROR ;
186
191
}
@@ -190,7 +195,11 @@ uint8_t BSP_SD_GetInstance(void)
190
195
SD_TypeDef * sd_cx = pinmap_merge_peripheral (sd_cmd , sd_ck );
191
196
SD_TypeDef * sd_dx = pinmap_merge_peripheral (sd_d01 , sd_d23 );
192
197
SD_TypeDef * sd_base = pinmap_merge_peripheral (sd_dx , sd_cx );
193
- if (sd_d01 == NP || sd_d23 == NP || sd_cx == NP || sd_dx == NP || sd_base == NP ) {
198
+ if (sd_d01 == NP ||
199
+ #if SD_BUS_WIDE == SD_BUS_WIDE_4B
200
+ sd_d23 == NP ||
201
+ #endif
202
+ sd_cx == NP || sd_dx == NP || sd_base == NP ) {
194
203
core_debug ("ERROR: SD pins mismatch\n" );
195
204
return MSD_ERROR ;
196
205
}
@@ -522,9 +531,11 @@ __weak void BSP_SD_MspInit(SD_HandleTypeDef *hsd, void *Params)
522
531
#else
523
532
/* Configure SD GPIO pins */
524
533
pinmap_pinout (SD_PinNames .pin_d0 , PinMap_SD_DATA0 );
534
+ #if SD_BUS_WIDE == SD_BUS_WIDE_4B
525
535
pinmap_pinout (SD_PinNames .pin_d1 , PinMap_SD_DATA1 );
526
536
pinmap_pinout (SD_PinNames .pin_d2 , PinMap_SD_DATA2 );
527
537
pinmap_pinout (SD_PinNames .pin_d3 , PinMap_SD_DATA3 );
538
+ #endif
528
539
pinmap_pinout (SD_PinNames .pin_cmd , PinMap_SD_CMD );
529
540
pinmap_pinout (SD_PinNames .pin_ck , PinMap_SD_CK );
530
541
#if defined(SDMMC1 ) || defined(SDMMC2 )
0 commit comments