boards: teensy41: Enable DAT3 pull detection for USDHC
teensy41 has no chip detect signal for SD slot. Use DAT3 pull card detection. Remove software defined chip detect IOMUXC selection that was used as a dummy pin. Fixes #42227 Signed-off-by: Daniel DeGrasse <daniel.degrasse@nxp.com>
This commit is contained in:
parent
fc348614e6
commit
2355fe86da
3 changed files with 32 additions and 4 deletions
|
@ -21,4 +21,14 @@ endchoice
|
|||
config DISK_DRIVER_SDMMC
|
||||
default y if DISK_DRIVERS
|
||||
|
||||
if DISK_DRIVER_SDMMC
|
||||
|
||||
config SDMMC_USDHC_DAT3_PWR_TOGGLE
|
||||
default y
|
||||
|
||||
config SDMMC_USDHC_DAT3_PWR_DELAY
|
||||
default 10
|
||||
|
||||
endif # DISK_DRIVER_SDMMC
|
||||
|
||||
endif # BOARD_TEENSY40 || BOARD_TEENSY41
|
||||
|
|
|
@ -55,7 +55,6 @@ static void teensy4_usdhc_pinmux(uint16_t nusdhc, bool init, uint32_t speed,
|
|||
}
|
||||
|
||||
if (init) {
|
||||
IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_35_GPIO3_IO21, 0U);
|
||||
IOMUXC_SetPinMux(IOMUXC_GPIO_EMC_41_USDHC1_VSELECT, 0U);
|
||||
IOMUXC_SetPinMux(IOMUXC_GPIO_SD_B0_00_USDHC1_CMD, 0U);
|
||||
IOMUXC_SetPinMux(IOMUXC_GPIO_SD_B0_01_USDHC1_CLK, 0U);
|
||||
|
@ -64,9 +63,6 @@ static void teensy4_usdhc_pinmux(uint16_t nusdhc, bool init, uint32_t speed,
|
|||
IOMUXC_SetPinMux(IOMUXC_GPIO_SD_B0_04_USDHC1_DATA2, 0U);
|
||||
IOMUXC_SetPinMux(IOMUXC_GPIO_SD_B0_05_USDHC1_DATA3, 0U);
|
||||
|
||||
/* SD0_CD_SW */
|
||||
IOMUXC_SetPinConfig(IOMUXC_GPIO_EMC_35_GPIO3_IO21, 0x017089u);
|
||||
|
||||
/* SD0_VSELECT */
|
||||
IOMUXC_SetPinConfig(IOMUXC_GPIO_EMC_41_USDHC1_VSELECT,
|
||||
0x0170A1u);
|
||||
|
@ -79,6 +75,25 @@ static void teensy4_usdhc_pinmux(uint16_t nusdhc, bool init, uint32_t speed,
|
|||
IOMUXC_SetPinConfig(IOMUXC_GPIO_SD_B0_04_USDHC1_DATA2, cmd_data);
|
||||
IOMUXC_SetPinConfig(IOMUXC_GPIO_SD_B0_05_USDHC1_DATA3, cmd_data);
|
||||
}
|
||||
|
||||
static void teensy4_usdhc_dat3_pull(bool pullup)
|
||||
{
|
||||
if (pullup) {
|
||||
/* Set pin config to pull up (47k Ohm) */
|
||||
IOMUXC_SetPinConfig(IOMUXC_GPIO_SD_B0_05_USDHC1_DATA3,
|
||||
IOMUXC_SW_PAD_CTL_PAD_SPEED(1) | IOMUXC_SW_PAD_CTL_PAD_SRE_MASK |
|
||||
IOMUXC_SW_PAD_CTL_PAD_PKE_MASK | IOMUXC_SW_PAD_CTL_PAD_PUE_MASK |
|
||||
IOMUXC_SW_PAD_CTL_PAD_HYS_MASK | IOMUXC_SW_PAD_CTL_PAD_PUS(1) |
|
||||
IOMUXC_SW_PAD_CTL_PAD_DSE(1));
|
||||
} else {
|
||||
/* pull down (100k Ohm) */
|
||||
IOMUXC_SetPinConfig(IOMUXC_GPIO_SD_B0_05_USDHC1_DATA3,
|
||||
IOMUXC_SW_PAD_CTL_PAD_SPEED(1) | IOMUXC_SW_PAD_CTL_PAD_SRE_MASK |
|
||||
IOMUXC_SW_PAD_CTL_PAD_PKE_MASK | IOMUXC_SW_PAD_CTL_PAD_PUE_MASK |
|
||||
IOMUXC_SW_PAD_CTL_PAD_HYS_MASK | IOMUXC_SW_PAD_CTL_PAD_PUS(0) |
|
||||
IOMUXC_SW_PAD_CTL_PAD_DSE(1));
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
static int teensy4_init(const struct device *dev)
|
||||
|
@ -393,6 +408,7 @@ static int teensy4_init(const struct device *dev)
|
|||
#if DT_NODE_HAS_STATUS(DT_NODELABEL(usdhc1), okay) && CONFIG_DISK_DRIVER_SDMMC
|
||||
teensy4_usdhc_pinmux(0, true, 2, 1);
|
||||
imxrt_usdhc_pinmux_cb_register(teensy4_usdhc_pinmux);
|
||||
imxrt_usdhc_dat3_cb_register(teensy4_usdhc_dat3_pull);
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -27,4 +27,6 @@
|
|||
|
||||
&usdhc1 {
|
||||
status = "okay";
|
||||
no-1-8-v;
|
||||
detect-dat3;
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue