Date: Tue, 20 Jan 2009 12:32:30 -0700 (MST) From: "M. Warner Losh" <imp@bsdimp.com> To: mav@freebsd.org Cc: freebsd-arm@freebsd.org Subject: Re: Mount root from SD card? Message-ID: <20090120.123230.-272218744.imp@bsdimp.com> In-Reply-To: <20090120.122312.1543793985.imp@bsdimp.com> References: <20090120.114051.-854291995.imp@bsdimp.com> <4976215B.40302@FreeBSD.org> <20090120.122312.1543793985.imp@bsdimp.com>
index | next in thread | previous in thread | raw e-mail
In message: <20090120.122312.1543793985.imp@bsdimp.com>
"M. Warner Losh" <imp@bsdimp.com> writes:
: : IMHO it is incorrect to disable 4bit mode on that stage, it is too late
: : there. It should be done at controller capabilities announcement stage.
: : If you are not objecting, I would remove that wire4 variable.
:
: I am objecting. The code is there so that the rest of the driver does
: the right thing when doing 4-bit. It needs to be a capability too.
:
: However, before we go monkeying with this, we need to find the
: underlying bug.
I've got the following patch, untested, that I think does what I think
needs to be done. Not sure about the return value from update_ios...
Index: at91_mci.c
===================================================================
--- at91_mci.c (revision 187479)
+++ at91_mci.c (working copy)
@@ -201,7 +201,10 @@
sc->host.f_min = 375000;
sc->host.f_max = 30000000;
sc->host.host_ocr = MMC_OCR_320_330 | MMC_OCR_330_340;
- sc->host.caps = MMC_CAP_4_BIT_DATA;
+ if (sc->wire4)
+ sc->host.caps = MMC_CAP_4_BIT_DATA;
+ else
+ sc->host.caps = 0;
child = device_add_child(dev, "mmc", 0);
device_set_ivars(dev, &sc->host);
err = bus_generic_attach(dev);
@@ -295,6 +298,8 @@
clkdiv = (at91_master_clock / ios->clock) / 2;
}
if (ios->bus_width == bus_width_4 && sc->wire4)
+ return EINVAL;
+ if (ios->bus_width == bus_width_4)
WR4(sc, MCI_SDCR, RD4(sc, MCI_SDCR) | MCI_SDCR_SDCBUS);
else
WR4(sc, MCI_SDCR, RD4(sc, MCI_SDCR) & ~MCI_SDCR_SDCBUS);
Warner
help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20090120.123230.-272218744.imp>
