<br><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Nov 27, 2012 at 8:30 PM, Stephen Warren <span dir="ltr"><<a href="mailto:swarren@wwwdotorg.org" target="_blank">swarren@wwwdotorg.org</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">This adds a simple driver for the BCM2835's SD controller.<br>

<br>
Workarounds are implemented for:<br>
* Register writes can't be too close to each-other in time, or they will<br>
  be lost.<br>
* Register accesses must all be 32-bit, so implement custom accessors.<br>
<br>
This code was extracted from:<br>
git://<a href="http://github.com/gonzoua/u-boot-pi.git" target="_blank">github.com/gonzoua/u-boot-pi.git</a> master<br>
which was created by Oleksandr Tymoshenko.<br>
<br>
Portions of the code there were obviously based on the Linux kernel at:<br>
git://<a href="http://github.com/raspberrypi/linux.git" target="_blank">github.com/raspberrypi/linux.git</a> rpi-3.6.y<br>
commit f5b930b "Main bcm2708 linux port" signed-off-by Dom Cobley.<br>
<br>
swarren changed the following for upstream:<br>
* Removed hack udelay()s in bcm2835_sdhci_raw_writel(); setting<br>
  SDHCI_QUIRK_WAIT_SEND_CMD appears to solve the issues.<br>
* Remove register logging from read*/write* functions.<br>
* Sort out confusion with min/max_freq values passed to add_sdhci().<br>
* Use more descriptive variable names and calculations in IO accessors.<br>
* Simplified and commented twoticks_delay calculation.<br>
* checkpatch fixes.<br>
<br>
Cc: Andy Fleming <<a href="mailto:afleming@gmail.com">afleming@gmail.com</a>><br>
Signed-off-by: Oleksandr Tymoshenko <<a href="mailto:gonzo@bluezbox.com">gonzo@bluezbox.com</a>><br>
Signed-off-by: Stephen Warren <<a href="mailto:swarren@wwwdotorg.org">swarren@wwwdotorg.org</a>><br><br></blockquote><div><br></div><div>Acked-by: Andy Fleming <<a href="mailto:afleming@freescale.com">afleming@freescale.com</a>> </div>
</div><br></div>