Skip to content

Commit 3ed4cbd

Browse files
committed
allow arbitrary SDIO pinout
1 parent af7b15f commit 3ed4cbd

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed

ports/esp32/machine_sdcard.c

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,12 @@ static mp_obj_t machine_sdcard_make_new(const mp_obj_type_t *type, size_t n_args
177177
ARG_mosi,
178178
ARG_sck,
179179
ARG_cs,
180+
ARG_clk,
181+
ARG_cmd,
182+
ARG_d0,
183+
ARG_d1,
184+
ARG_d2,
185+
ARG_d3,
180186
ARG_freq,
181187
};
182188
static const mp_arg_t allowed_args[] = {
@@ -189,6 +195,13 @@ static mp_obj_t machine_sdcard_make_new(const mp_obj_type_t *type, size_t n_args
189195
{ MP_QSTR_mosi, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_obj = mp_const_none} },
190196
{ MP_QSTR_sck, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_obj = mp_const_none} },
191197
{ MP_QSTR_cs, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_obj = mp_const_none} },
198+
// These are only needed if using SDMMC mode
199+
{ MP_QSTR_clk, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_obj = mp_const_none} },
200+
{ MP_QSTR_cmd, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_obj = mp_const_none} },
201+
{ MP_QSTR_d0, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_obj = mp_const_none} },
202+
{ MP_QSTR_d1, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_obj = mp_const_none} },
203+
{ MP_QSTR_d2, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_obj = mp_const_none} },
204+
{ MP_QSTR_d3, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_obj = mp_const_none} },
192205
// freq is valid for both SPI and SDMMC interfaces
193206
{ MP_QSTR_freq, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = 20000000} },
194207
};
@@ -300,6 +313,15 @@ static mp_obj_t machine_sdcard_make_new(const mp_obj_type_t *type, size_t n_args
300313
SET_CONFIG_PIN(slot_config, gpio_cd, ARG_cd);
301314
SET_CONFIG_PIN(slot_config, gpio_wp, ARG_wp);
302315

316+
#if SOC_SDMMC_USE_GPIO_MATRIX
317+
SET_CONFIG_PIN(slot_config, clk, ARG_clk);
318+
SET_CONFIG_PIN(slot_config, cmd, ARG_cmd);
319+
SET_CONFIG_PIN(slot_config, d0, ARG_d0);
320+
SET_CONFIG_PIN(slot_config, d1, ARG_d1);
321+
SET_CONFIG_PIN(slot_config, d2, ARG_d2);
322+
SET_CONFIG_PIN(slot_config, d3, ARG_d3);
323+
#endif
324+
303325
int width = arg_vals[ARG_width].u_int;
304326
if (width == 1 || width == 4 || (width == 8 && slot_num == 0)) {
305327
slot_config.width = width;

0 commit comments

Comments
 (0)