On Mon, Mar 22, 2021 at 07:00:06PM -0500, Jordon wrote:
> 6.6 was the last release that works.  6.7 and 6.8 throw an input/output error 
> when it tries to create the partitions (right after you choose ‘(W)hole 
> disk’).
> 
> Am I the only person to try installing it to onboard storage in the last 
> year?  Or am I doing something wrong?

The workaround to limit emmc bus width is not done after the device tree
changes which removed the "ti,hwmods" property.  While reads work
without this writes give an error.

After adding calls to enable clocks emmc writes work without limiting
bus width.

Index: ommmc.c
===================================================================
RCS file: /cvs/src/sys/arch/armv7/omap/ommmc.c,v
retrieving revision 1.38
diff -u -p -r1.38 ommmc.c
--- ommmc.c     19 Jan 2021 18:04:43 -0000      1.38
+++ ommmc.c     24 Mar 2021 12:04:17 -0000
@@ -35,6 +35,7 @@
 #include <armv7/omap/prcmvar.h>
 
 #include <dev/ofw/openfirm.h>
+#include <dev/ofw/ofw_clock.h>
 #include <dev/ofw/ofw_gpio.h>
 #include <dev/ofw/ofw_pinctrl.h>
 #include <dev/ofw/fdt.h>
@@ -304,8 +305,6 @@ ommmc_attach(struct device *parent, stru
        struct sdmmcbus_attach_args      saa;
        uint32_t                         caps, width;
        uint32_t                         addr, size;
-       int                              len, unit;
-       char                             hwmods[128];
 
        if (faa->fa_nreg < 1)
                return;
@@ -322,14 +321,6 @@ ommmc_attach(struct device *parent, stru
                size = faa->fa_reg[0].size;
        }
 
-       unit = -1;
-       if ((len = OF_getprop(faa->fa_node, "ti,hwmods", hwmods,
-           sizeof(hwmods))) == 5) {
-               if (!strncmp(hwmods, "mmc", 3) &&
-                   (hwmods[3] > '0') && (hwmods[3] <= '9'))
-                       unit = hwmods[3] - '1';
-       }
-
        sc->sc_iot = faa->fa_iot;
        if (bus_space_map(sc->sc_iot, addr, size, 0, &sc->sc_ioh))
                panic("%s: bus_space_map failed!", __func__);
@@ -339,9 +330,8 @@ ommmc_attach(struct device *parent, stru
 
        pinctrl_byname(faa->fa_node, "default");
 
-       /* Enable ICLKEN, FCLKEN? */
-       if (unit != -1)
-               prcm_enablemodule(PRCM_MMC0 + unit);
+       clock_enable_all(faa->fa_node);
+       reset_deassert_all(faa->fa_node);
 
        sc->sc_ih = arm_intr_establish_fdt(faa->fa_node, IPL_SDMMC,
            ommmc_intr, sc, DEVNAME(sc));
@@ -450,9 +440,6 @@ ommmc_attach(struct device *parent, stru
                saa.caps |= SMC_CAPS_MMC_HIGHSPEED | SMC_CAPS_SD_HIGHSPEED;
        }
        width = OF_getpropint(faa->fa_node, "bus-width", 1);
-       /* with bbb emmc width > 1 ommmc_wait_intr MMCHS_STAT_CC times out */
-       if (unit > 0)
-               width = 1;
        if (width >= 8)
                saa.caps |= SMC_CAPS_8BIT_MODE;
        if (width >= 4)

Reply via email to