Index: boot/fdt/dts/am335x.dtsi =================================================================== --- boot/fdt/dts/am335x.dtsi (revision 252908) +++ boot/fdt/dts/am335x.dtsi (working copy) @@ -120,7 +120,6 @@ interrupts = <28>; interrupt-parent = <&AINTC>; mmchs-device-id = <1>; - status = "disabled"; }; enet0: ethernet@4A100000 { Index: boot/fdt/dts/beaglebone-black.dts =================================================================== --- boot/fdt/dts/beaglebone-black.dts (revision 252908) +++ boot/fdt/dts/beaglebone-black.dts (working copy) @@ -76,17 +76,17 @@ "MMC0_DAT2", "mmc0_dat2", "input_pullup", "MMC0_DAT3", "mmc0_dat3", "input_pullup", /* MMC1 */ - "GPMC_CSn1", "mmc1_clk", "input_pulldown", - "GPMC_CSn2", "mmc1_cmd", "input_pulldown", - "GPMC_CSn3", "gpio2_0", "output", /* Reset */ - "GPMC_AD0", "mmc1_dat0", "input_pulldown", - "GPMC_AD1", "mmc1_dat1", "input_pulldown", - "GPMC_AD2", "mmc1_dat2", "input_pulldown", - "GPMC_AD3", "mmc1_dat3", "input_pulldown", - "GPMC_AD4", "mmc1_dat4", "input_pulldown", - "GPMC_AD5", "mmc1_dat5", "input_pulldown", - "GPMC_AD6", "mmc1_dat6", "input_pulldown", - "GPMC_AD7", "mmc1_dat7", "input_pulldown", + "GPMC_CSn1", "mmc1_clk", "input_pullup", + "GPMC_CSn2", "mmc1_cmd", "input_pullup", + "GPMC_CSn3", "gpio2_0", "output_pullup", /* Reset */ + "GPMC_AD0", "mmc1_dat0", "input_pullup", + "GPMC_AD1", "mmc1_dat1", "input_pullup", + "GPMC_AD2", "mmc1_dat2", "input_pullup", + "GPMC_AD3", "mmc1_dat3", "input_pullup", + "GPMC_AD4", "mmc1_dat4", "input_pullup", + "GPMC_AD5", "mmc1_dat5", "input_pullup", + "GPMC_AD6", "mmc1_dat6", "input_pullup", + "GPMC_AD7", "mmc1_dat7", "input_pullup", /* GPIO */ "ECAP0_IN_PWM0_OUT", "gpio0_7", "input_pulldown", "GPMC_AD10", "gpio0_26", "input_pulldown", Index: dev/mmc/mmc.c =================================================================== --- dev/mmc/mmc.c (revision 252908) +++ dev/mmc/mmc.c (working copy) @@ -1409,7 +1409,10 @@ else ivar->hs_tran_speed = ivar->tran_speed; /* Find max supported bus width. */ - ivar->bus_width = mmc_test_bus_width(sc); + if (0) + ivar->bus_width = mmc_test_bus_width(sc); + else + ivar->bus_width = bus_width_4; mmc_select_card(sc, 0); /* Handle HC erase sector size. */ if (ivar->raw_ext_csd[EXT_CSD_ERASE_GRP_SIZE] != 0) { Index: arm/ti/ti_mmchs.c =================================================================== --- arm/ti/ti_mmchs.c (revision 252908) +++ arm/ti/ti_mmchs.c (working copy) @@ -213,6 +213,12 @@ sysctl = ti_mmchs_read_4(sc, MMCHS_SYSCTL); ti_mmchs_write_4(sc, MMCHS_SYSCTL, sysctl | bit); + + /* Identify reset condition */ + attempts = 10000; + while (!(ti_mmchs_read_4(sc, MMCHS_SYSCTL) & bit) && (attempts-- > 0)) + continue; + if ((ti_chip() == CHIP_OMAP_4) && (ti_revision() > OMAP4430_REV_ES1_0)) { /* OMAP4 ES2 and greater has an updated reset logic. * Monitor a 0->1 transition first @@ -1749,7 +1755,7 @@ sc->host.host_ocr = MMC_OCR_290_300 | MMC_OCR_300_310; sc->host.caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA; - device_add_child(dev, "mmc", 0); + device_add_child(dev, "mmc", -1); device_set_ivars(dev, &sc->host); err = bus_generic_attach(dev);