|
@@ -106,6 +106,69 @@ int funcmux_select(enum periph_id id, int config)
|
|
|
}
|
|
|
break;
|
|
|
|
|
|
+ case PERIPH_ID_SDMMC2:
|
|
|
+ if (config == FUNCMUX_SDMMC2_DTA_DTD_8BIT) {
|
|
|
+ pinmux_set_func(PINGRP_DTA, PMUX_FUNC_SDIO2);
|
|
|
+ pinmux_set_func(PINGRP_DTD, PMUX_FUNC_SDIO2);
|
|
|
+
|
|
|
+ pinmux_tristate_disable(PINGRP_DTA);
|
|
|
+ pinmux_tristate_disable(PINGRP_DTD);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case PERIPH_ID_SDMMC3:
|
|
|
+ switch (config) {
|
|
|
+ case FUNCMUX_SDMMC3_SDB_SLXA_8BIT:
|
|
|
+ pinmux_set_func(PINGRP_SLXA, PMUX_FUNC_SDIO3);
|
|
|
+ pinmux_set_func(PINGRP_SLXC, PMUX_FUNC_SDIO3);
|
|
|
+ pinmux_set_func(PINGRP_SLXD, PMUX_FUNC_SDIO3);
|
|
|
+ pinmux_set_func(PINGRP_SLXK, PMUX_FUNC_SDIO3);
|
|
|
+
|
|
|
+ pinmux_tristate_disable(PINGRP_SLXA);
|
|
|
+ pinmux_tristate_disable(PINGRP_SLXC);
|
|
|
+ pinmux_tristate_disable(PINGRP_SLXD);
|
|
|
+ pinmux_tristate_disable(PINGRP_SLXK);
|
|
|
+ /* fall through */
|
|
|
+
|
|
|
+ case FUNCMUX_SDMMC3_SDB_4BIT:
|
|
|
+ pinmux_set_func(PINGRP_SDB, PMUX_FUNC_SDIO3);
|
|
|
+ pinmux_set_func(PINGRP_SDC, PMUX_FUNC_SDIO3);
|
|
|
+ pinmux_set_func(PINGRP_SDD, PMUX_FUNC_SDIO3);
|
|
|
+
|
|
|
+ pinmux_tristate_disable(PINGRP_SDB);
|
|
|
+ pinmux_tristate_disable(PINGRP_SDC);
|
|
|
+ pinmux_tristate_disable(PINGRP_SDD);
|
|
|
+ bad_config = 0;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case PERIPH_ID_SDMMC4:
|
|
|
+ switch (config) {
|
|
|
+ case FUNCMUX_SDMMC4_ATC_ATD_8BIT:
|
|
|
+ pinmux_set_func(PINGRP_ATC, PMUX_FUNC_SDIO4);
|
|
|
+ pinmux_set_func(PINGRP_ATD, PMUX_FUNC_SDIO4);
|
|
|
+
|
|
|
+ pinmux_tristate_disable(PINGRP_ATC);
|
|
|
+ pinmux_tristate_disable(PINGRP_ATD);
|
|
|
+ break;
|
|
|
+
|
|
|
+ case FUNCMUX_SDMMC4_ATB_GMA_GME_8_BIT:
|
|
|
+ pinmux_set_func(PINGRP_GME, PMUX_FUNC_SDIO4);
|
|
|
+ pinmux_tristate_disable(PINGRP_GME);
|
|
|
+ /* fall through */
|
|
|
+
|
|
|
+ case FUNCMUX_SDMMC4_ATB_GMA_4_BIT:
|
|
|
+ pinmux_set_func(PINGRP_ATB, PMUX_FUNC_SDIO4);
|
|
|
+ pinmux_set_func(PINGRP_GMA, PMUX_FUNC_SDIO4);
|
|
|
+
|
|
|
+ pinmux_tristate_disable(PINGRP_ATB);
|
|
|
+ pinmux_tristate_disable(PINGRP_GMA);
|
|
|
+ bad_config = 0;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
default:
|
|
|
debug("%s: invalid periph_id %d", __func__, id);
|
|
|
return -1;
|