diff options
author | adrian <adrian@FreeBSD.org> | 2015-10-15 04:22:56 +0000 |
---|---|---|
committer | adrian <adrian@FreeBSD.org> | 2015-10-15 04:22:56 +0000 |
commit | 4e7945e48ed65cb55ef9f9faea35fcf7c94e26b2 (patch) | |
tree | a6400e6f9bb5f9ee2c56a6bcc26c6a1b91be3571 /sys/dev/amdsbwd | |
parent | e2f6f0979cb1fbee05e8c79f686773565d2e0e85 (diff) | |
download | FreeBSD-src-4e7945e48ed65cb55ef9f9faea35fcf7c94e26b2.zip FreeBSD-src-4e7945e48ed65cb55ef9f9faea35fcf7c94e26b2.tar.gz |
Add support for the BCM57765 card reader.
This patch adds support for the BCM57765[2] card reader function included in
Broadcom's BCM57766 ethernet/sd3.0 controller. This controller is commonly
found in laptops and Apple hardware (MBP, iMac, etc).
The BCM57765 chipset is almost fully compatible with the SD3.0 spec, but
does not support deriving a frequency below 781KHz from its default base
clock via the standard SD3.0-configured 10-bit clock divisor.
If such a divisor is set, card identification (which requires a 400KHz
clock frequency) will time out[1].
As a work-around, I've made use of an undocumented device-specific clock
control register to switch the controller to a 63MHz clock source when
targeting clock speeds below 781KHz; the clock source is likewise switched
back to the 200MHz clock when targeting speeds greater than 781KHz.
Additionally, this patch fixes a small sdhci_pci bug; the
sdhci_pci_softc->quirks flag was not copied to the sdhci_slot, resulting in
`quirk` behavior not being applied by sdhci.c.
[1] A number of Linux/FreeBSD users have noted that bringing up the chipsets'
associated ethernet interface will allow SD cards to enumerate (slowly).
This is a controller implementation side-effect triggered by the ethernet
driver's reading of the hardware statistics registers.
[2] This may also fix card detection when using the BCM57785 chipset, but I
don't have access to the BCM57785 chipset and can't verify.
I actually snagged some BCM57785 hardware recently (2012 Retina MacBook Pro)
and can confirm that this also fixes card enumeration with the BCM57785
chipset; with the patch, I can boot off of the internal sdcard reader.
PR: kern/203385
Submitted by: Landon Fuller <landon@landonf.org>
Diffstat (limited to 'sys/dev/amdsbwd')
0 files changed, 0 insertions, 0 deletions