]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
Enable at91 systems to boot from high capacity SD cards.
authorIan Lepore <ian@FreeBSD.org>
Sat, 26 Jul 2014 04:16:04 +0000 (04:16 +0000)
committerIan Lepore <ian@FreeBSD.org>
Sat, 26 Jul 2014 04:16:04 +0000 (04:16 +0000)
commit8926f21ce1185571fdee38cc85153b01c0062b3a
tree0671acb3d9215594cd45171255392307d4ef0428
parent3ed6efc4ac9934f0a4c2fbc24af100824cebd4fd
Enable at91 systems to boot from high capacity SD cards.

This also fixes a few minor violations of the SD protocol, such as running
the bus at high speed during the card identification sequence.

The sdcard_init() routine now probes for SDHC cards so that later read
requests can make needed adjustments between block and byte offsets based
on card type.

There is a new MCI_readblocks() function that takes block number and block
count parameters instead of byte-offset values.  Using this routine, boot
loader code can load a kernel from any location on an SDHC or standard SD.

The old MCI_read() interface remains unchanged so that existing customized
boot loader code will still keep working without changes.  Using this
routine, boot loaders can load a kernel from anywhere in the first 4GB of
an SDHC card (or of course any location on a standard SD card).

A new sdcard_use4wire() routine allows boot loaders to request 4-bit
transfers; it should be called after sdcard_init().  The sdcard_init()
routine no longer assumes the hardware is 4-wire capable and by default
sets things up for 1-bit transfers.  (4-wire mode is unreliable on
at91rm9200, works on later SoCs.)

PR: 155894
Submitted by: me.  years ago.
sys/boot/arm/at91/libat91/mci_device.h
sys/boot/arm/at91/libat91/sd-card.c
sys/boot/arm/at91/libat91/sd-card.h