#
340740 |
|
21-Nov-2018 |
marius |
MFC: r340495
- Restore setting the clock for devices which support the default/legacy transfer mode only (lost with r321385). [1] - Similarly, don't try to set the power class on MMC devices that comply to version 4.0 of the system specification but are operated in default/ legacy transfer or 1-bit bus mode as no power class is specified for these cases. Trying to set a power class nevertheless resulted in an - albeit harmless - error message.
PR: 231713 [1]
|
#
338637 |
|
13-Sep-2018 |
marius |
MFC: r333647, r338275, r338280, r338513
- If present, take advantage of the R/W cache of eMMC revision 1.5 and later devices. These caches work akin to the ones found in HDDs/SSDs that ada(4)/da(4) also enable if existent, but likewise increase the likelihood of data loss in case of a sudden power outage etc. On the other hand, write performance is up to twice as high for e. g. 1 GiB files depending on the actual chip and transfer mode employed. For maximum data integrity, the usage of eMMC caches can be disabled via the hw.mmcsd.cache tunable. - Get rid of the NOP mmcsd_open(). - Obtain the bus mode (MMC or SD) from the directly superordinated bus rather than reaching up to the bridge and use the cached mode in mmcsd_delete(), too. - Use le32dec(9) for decoding EXT_CSD values where it makes sense. [1] - Locally cache some instance variable values in mmc_discover_cards() in order to improve the code readability a bit.
Obtained from: NetBSD [1]
|
#
331722 |
|
29-Mar-2018 |
eadler |
Revert r330897:
This was intended to be a non-functional change. It wasn't. The commit message was thus wrong. In addition it broke arm, and merged crypto related code.
Revert with prejudice.
This revert skips files touched in r316370 since that commit was since MFCed. This revert also skips files that require $FreeBSD$ property changes.
Thank you to those who helped me get out of this mess including but not limited to gonzo, kevans, rgrimes.
Requested by: gjb (re)
|
#
331038 |
|
15-Mar-2018 |
marius |
MFC: r327929
Use the correct revision specifier (EXT_CSD revision rather than system specification version) for deciding whether the EXT_CSD register includes the EXT_CSD_GEN_CMD6_TIME field.
Submitted by: Masanobu SAITOH
|
#
330897 |
|
14-Mar-2018 |
eadler |
Partial merge of the SPDX changes
These changes are incomplete but are making it difficult to determine what other changes can/should be merged.
No objections from: pfg
|
#
322388 |
|
11-Aug-2017 |
marius |
MFC: r322209
- If available, use TRIM instead of ERASE for implementing BIO_DELETE. This also involves adding a quirk table as TRIM is broken for some Kingston eMMC devices, though. Compared to ERASE (declared "legacy" in the eMMC specification v5.1), TRIM has the advantage of operating on write sectors rather than on erase sectors, which typically are of a much larger size. Thus, employing TRIM, we don't need to fiddle with coalescing BIO_DELETE requests that are also of (write) sector units into erase sectors, which might not even add up in all cases. - For some SanDisk iNAND devices, the CMD38 argument, e. g. ERASE, TRIM etc., has to be specified via EXT_CSD[113], which now is also handled via a quirk. - My initial understanding was that for eMMC partitions, the granularity should be used as erase sector size, e. g. 128 KB for boot partitions. However, rereading the relevant parts of the eMMC specification v5.1, this isn't actually correct. So drop the code which used partition granularities for delmaxsize and stripesize. For the most part, this change is a NOP, though, because a) for ERASE, mmcsd_delete() used the erase sector size unconditionally for all partitions anyway and b) g_disk_limit() doesn't actually take the stripesize into account. - Take some more advantage of mmcsd_errmsg() in mmcsd(4) for making error codes human readable.
|
#
322119 |
|
06-Aug-2017 |
marius |
MFC: r319350, r321385, r321490, r321588, r321948
o Use SDHCI_CAN_DRIVE_TYPE_{A,C,D} to check for driver type support in SDHCI_CAPABILITIES2 instead of SDHCI_CTRL2_DRIVER_TYPE_{A,C,D} which are meant for setting the driver type in SDHCI_HOST_CONTROL2.
o Add support for eMMC HS200 and HS400 bus speed modes at 200 MHz to sdhci(4), mmc(4) and mmcsd(4).
On the system where the addition of DDR52 support increased the read throughput to ~80 MB/s (from ~45 MB/s at high speed), HS200 yields ~154 MB/s and HS400 ~187 MB/s, i. e. performance now has more than quadrupled compared to pre-r315598 (pre-r318494 in stable/11).
However, in fact this isn't a feature-only change; there are boards based on Intel Bay Trail where DDR52 is problematic and the suggested workaround is to use HS200 mode instead. So far exact details are unknown, however, i. e. whether that's due to a defect in these SoCs or on the boards.
Moreover, due to the above changes requiring to be aware of possible MMC siblings in the fast path of mmc(4), corresponding information now is cached in mmc_softc. As a side-effect, mmc_calculate_clock(), now longer will trigger a panic in low memory situations and all of mmc(4) operate on the same set of child devices.
o Fix a bug in the failure reporting of mmcsd_delete() that could lead to a panic.
o Fix 2 bugs on resume, one in mmcsd(4) that could lead to a panic and another one in mmc(4) that could lead to devices no longer working.
o Fix a memory leak in mmcsd_ioctl() in case copyin(9) fails. [1]
o Fix missing variable initialization in mmc_switch_status(). [2]
o Fix R1_SWITCH_ERROR detection in mmc_switch_status(). [3]
o Handle the case of device_add_child(9) failing, for example due to a memory shortage, gracefully in mmc(4) and sdhci(4), including not leaking memory for the instance variables in case of mmc(4), also fixing [4].
o Correctly use the size of a pointer rather than that of a pointer to a pointer (this bug was present in head r321385 only, i. e. not in a stable branch). [5]
o Handle the case of an unknown SD CSD version in mmc_decode_csd_sd() gracefully instead of calling panic(9).
o Again, check and handle the return values of some additional function calls in mmc(4) instead of assuming that everything went right or mark non-fatal errors by casting the return value to void.
o Correct a typo in the Linux IOCTL compatibility; it should have been MMC_IOC_MULTI_CMD rather than MMC_IOC_CMD_MULTI.
o Now that we are reaching ever faster speeds (more improvement in this regard is to be expected when adding ADMA support to sdhci(4)), apply a few micro-optimizations to mmc(4), mmcsd(4) and sdhci(4).
o Correct confusing and error prone mix-ups between "br" or "bridge" in mmc(4) and mmcsd(4) where - according to the terminology outlined in comments of bridge.h and mmcbr_if.m around since their addition in r163516 - the bus is meant and used instead.
o Remove comment lines from bridge.h incorrectly suggesting that there would be a MMC bridge base class driver.
o Update comments in bridge.h regarding the star topology of SD and SDIO; since version 3.00 of the SDHCI specification, for eSD and eSDIO bus topologies are actually possible in form of so called "shared buses" (in some subcontext later on renamed to "embedded" buses).
Reported by: Coverity CID: 1372612 [1], 1372624 [2], 1372594 [3], 1007069 [4], 1378432 [5]
|
#
318494 |
|
18-May-2017 |
marius |
MFC: r315598
o Add support for eMMC DDR bus speed mode up to 52 MHz to sdhci(4) and mmc(4). Given that support for DDR52 is not denoted by SDHCI capability registers, availability of that timing is indicated by a new quirk SDHCI_QUIRK_MMC_DDR52 and only enabled for Intel SDHCI controllers so far.
Compared to 50 MHz at SDR high speed typically yielding ~45 MB/s read throughput with the eMMC chips tested, read performance goes up to ~80 MB/s at DDR52.
As a side-effect, this change also fixes communication with some eMMC devices at SDR high speed mode due to the signaling voltage and UHS bits in the SDHCI controller no longer being left in an inappropriate state.
o In sdhci(4), add two tunables hw.sdhci.quirk_clear as well as hw.sdhci.quirk_set, which (when hooked up in the front-end) allow to set/clear sdhci(4) quirks for debugging and testing purposes. However, especially for SDHCI controllers on the PCI bus which have no specific support code so far and, thus, are picked up as generic SDHCI controllers, hw.sdhci.quirk_set allows for setting the necessary quirks (if required).
o In mmc(4), check and handle the return values of some more function calls instead of assuming that everything went right. In case failures actually are not problematic, indicate that by casting the return value to void.
|
#
318197 |
|
11-May-2017 |
marius |
MFC: r312939, r313250, r314811 (partial), r314887 (partial), r315760, r315845, 315430, r317981, r315466
o Fix some overly long lines, whitespace and other bugs according to style(9) as well as spelling etc. in mmc(4), mmcsd(4) and sdhci(4).
o In the mmc(4) bridges and sdhci(4) (bus) front-ends: - Remove redundant assignments of the default bus_generic_print_child device method, - use DEVMETHOD_END, - use NULL instead of 0 for pointers.
o Trim/adjust includes.
o Add and use a MMC_DECLARE_BRIDGE macro for declaring mmc(4) bridges as kernel drivers and their dependency onto mmc(4).
o Add support for eMMC "partitions". Besides the user data area, i. e. the default partition, eMMC v4.41 and later devices can additionally provide up to: 1 enhanced user data area partition 2 boot partitions 1 RPMB (Replay Protected Memory Block) partition 4 general purpose partitions (optionally with a enhanced or extended attribute)
Besides simply subdividing eMMC devices, some Intel NUCs having UEFI code in the boot partitions etc., another use case for the partition support is the activation of pseudo-SLC mode, which manufacturers of eMMC chips typically associate with the enhanced user data area and/ or the enhanced attribute of general purpose partitions.
CAVEAT EMPTOR: Partitioning eMMC devices is a one-time operation.
o Now that properly issuing CMD6 is crucial (so data isn't written to the wrong partition for example), make a step into the direction of correctly handling the timeout for these commands in the MMC layer. Also, do a SEND_STATUS when CMD6 is invoked with an R1B response as recommended by relevant specifications.
o Add an IOCTL interface to mmcsd(4); this is sufficiently compatible with Linux so that the GNU mmc-utils can be ported to and used with FreeBSD (note that due to the remaining deficiencies outlined above SANITIZE operations issued by/with `mmc` currently most likely will fail). These latter have been added to ports as sysutils/mmc-utils. Among others, the `mmc` tool of mmc-utils allows for partitioning eMMC devices (tested working).
o For devices following the eMMC specification v4.41 or later, year 0 is 2013 rather than 1997; so correct this for assembling the device ID string properly.
o Let mmcsd.ko depend on mmc.ko. Additionally, bump MMC_VERSION as at least for some of the above a matching pair is required.
o In the ACPI front-end of sdhci(4) describe the Intel eMMC and SDXC controllers as such in order to match the PCI one. Additionally, in the entry for the 80860F14 SDXC controller remove the eMMC-only SDHCI_QUIRK_INTEL_POWER_UP_RESET.
|
#
312399 |
|
18-Jan-2017 |
marius |
MFC: r310309, r310340-310341, r311664, r311793-r311794
o sdhci/mmc: Minor whitespace cleanups
o Add Braswell PCI IDs for Intel Cherryview
o mmc: Accept even lower voltage for Cherryview
And HP x2 210, per DragonFlyBSD 240bd9cd58f8259c12c14a8006837e698.
o In mmcsd_task(), bio_resid was not being set to 0 on a successful read or write, resulting in random short-read and short-write returns for requests. Fixing this fixes nominal block I/O via mmcsd(4).
Obtained from: DragonFlyBSD (fd4b97583be1a1e57234713c25f6e81bc0411cb0)
o Add support for Intel Apollo Lake and Bay Trail eMMC PCI controllers.
o Flesh out the support for Intel Braswell eMMC controllers further.
o In sdhci_init_slot(), use the right capability field for determining the announced bus width based on MMC_CAP_*_BIT_DATA.
|
#
302408 |
|
07-Jul-2016 |
gjb |
Copy head@r302406 to stable/11 as part of the 11.0-RELEASE cycle. Prune svn:mergeinfo from the new branch, as nothing has been merged here.
Additional commits post-branch will follow.
Approved by: re (implicit) Sponsored by: The FreeBSD Foundation |
#
297127 |
|
20-Mar-2016 |
ian |
Fix fallout from r292180 (Dec 2015)... ensure that every driver which has a DRIVER_MODULE() referencing mmc_driver has a MODULE_DEPEND() on mmc. This is because the kernel linker only searches for symbols in dependent modules, so loading sdhci_pci (and other bus-flavors of sdhci) would fail when mmc was not compiled into the kernel (even if you hand-loaded mmc first).
(Thanks to jilles@ for providing the vital clue about the kernel linker.)
|
#
292420 |
|
17-Dec-2015 |
ian |
Flag sysctl hw.mmc.debug as a tunable, since often you want to debug the bus probing during system startup.
|
#
292180 |
|
13-Dec-2015 |
ian |
Move the DRIVER_MODULE() statements that declare mmc(4) to be a child of the various bridge drivers out of dev/mmc.c and into the bridge drivers.
Requested by: jhb (almost two years ago; better late than never)
|
#
287189 |
|
27-Aug-2015 |
jhibbits |
Fix freescale sdhc driver, and add it to the files list.
Also, add it to the mmc DRIVER_MODULE attachment list.
|
#
285678 |
|
18-Jul-2015 |
ian |
Deselect the sd card before re-selecting it when working around a problem with some cards that causes them to become deselected after probing for switch capabilities. The old workaround fixes the behavior with some cards, but causes problems with the cards the behave correctly and don't become deselected. Forcing a deselect then reselect appears to work correctly with all cards in initial testing.
|
#
283253 |
|
21-May-2015 |
loos |
Add the MMC/SD driver for Allwinner SoCs.
This is based on the patch sent by Alexander Fedorov with the following fixes/improvements:
- Better error handling; - Clock is derived from PLL6 (obtained from netbsd); - No more unnecessary busy loops on interrupt handler; - style(9) fixes and code cleanup.
I also want to thanks Martin Galvan who has sent an alternative implementation with some interesting fixes.
Tested on CubieBoard2, Banana-Pi (thanks to netgate!) and Cubieboard1 (Pratik Singhal).
This is intended to pave the way for the upcoming GSoC work (and make easier the build of images for the supported boards).
PR: 196081 Submitted by: Alexander Fedorov <alexander.fedorov@rtlservice.com>
|
#
283128 |
|
19-May-2015 |
imp |
Re-select the SD card before getting the SD status. On a couple Atmel boards, this prevents some error messages during enumeration and also gives us the correct erase block size. They appear to be harmless elsewhere.
# Note: we treat too many commands as 'can't fail' if they don't work # after a couple of retries. We need to fix that, but not today...
|
#
280905 |
|
31-Mar-2015 |
ganbold |
Add necessary changes to support various Amlogic SoC devices specially aml8726-m6 and aml8726-m8b SoC based devices. aml8726-m6 SoC exist in devices such as Visson ATV-102. Hardkernel ODROID-C1 board has aml8726-m8b SoC.
The following support is included: Basic machdep code SMP Interrupt controller Clock control driver (aka gate) Pinctrl Timer Real time clock UART GPIO I2C SD controller SDXC controller USB Watchdog Random number generator PLL / Clock frequency measurement Frame buffer
Submitted by: John Wehle Approved by: stas (mentor)
|
#
279359 |
|
27-Feb-2015 |
ian |
MMC: Signal HC capability to (e)MMC.
Summary: For new eMMC chips, we must signal controller HC capability in OP_COND command.
Reviewers: imp, ian
Reviewed By: ian
Differential Revision: https://reviews.freebsd.org/D1920
|
#
276106 |
|
23-Dec-2014 |
imp |
Always select the card before we do the 4.x specific stuff and deselect it after setting the block size. This is a similar bug that was fixed elsewhere, but not here. This makes sure that we leave the card deselected at the end of the loop, and we don't send any commands to the card without it selected.
Reviewed by: ian@
|
#
275951 |
|
20-Dec-2014 |
ian |
Log mmc and sd command failures. Reporting of routine expected errors, such as timeouts while probing a bus or testing for a feature, is squelched. Also, error reporting is limited to 5 events per second, because when an sdcard goes bad on a low-end embedded board, flooding the console at high speed isn't helpful.
Original logging code contributed by Michal Meloun, but then I fancied it up with squelching and ppsratecheck.
|
#
275905 |
|
18-Dec-2014 |
imp |
Don't deselect the card too soon. To set the block size or switch the function parameters, the card has to be in transfer state. If it is in the idle state, the commands are ignored. This caused us not to set the proper parameters that we later assume to be present, leading to downstream failures of the card / interface as our state machine mismatches the card's.
Submitted by: Svatopluk Kraus <onwahe at gmail.com>, Michal Meloun <meloun at miracle.cz>
|
#
272712 |
|
07-Oct-2014 |
br |
Add driver for Synopsys DesignWare Mobile Storage Host Controller.
Sponsored by: DARPA, AFRL
|
#
269341 |
|
31-Jul-2014 |
ian |
Export an mmc or sd card's serial number from the mmc layer as an ivar. In the mmcsd layer use this value to populate disk->d_ident. Also set disk->d_descr to the full set of card identification info (includes vendor, model, manufacturing date, etc).
|
#
261944 |
|
15-Feb-2014 |
ian |
If no compatible cards were found after probing the bus, say so.
|
#
261424 |
|
03-Feb-2014 |
ian |
Sort the list.
|
#
261423 |
|
03-Feb-2014 |
ian |
Add the imx sdhci controller.
|
#
254716 |
|
23-Aug-2013 |
ian |
Don't give up so easily on failure of CMD55 to put the card into app-cmd mode. We don't know why it failed, so we can't know that a retry will also fail (the low-level driver might have reset the controller state machine or something similar that would allow a retry to work).
|
#
254559 |
|
20-Aug-2013 |
ian |
Make the standard sdhci(4) driver work for the TI OMAP family SoCs. The MMCHS hardware is pretty much a standard SDHCI v2.0 controller with a couple quirks, which are now supported by sdhci(4) as of r254507.
This should work for all TI SoCs that use the MMCHS hardware, but it has only been tested on AM335x right now, so this enables it on those platforms but leaves the existing ti_mmchs driver in place for other OMAP variants until they can be tested.
This initial incarnation lacks DMA support (coming soon). Even without it this improves performance pretty noticibly over the ti_mmchs driver, primarily because it now does multiblock IO.
|
#
254432 |
|
16-Aug-2013 |
ian |
Consistently init all mmc request, command, and data structures to zero before using them.
|
#
254431 |
|
16-Aug-2013 |
ian |
Handle command retries for commands originating at the mmc layer, and ensure that all such commands have a non-zero retry count except for those that are expected to fail (for example, because they are used to probe for feature support).
While it is possible to pass a retry count down to the hardware driver in the command request structure, no hardware driver currently implements any retry logic. The hardware doesn't know much about the context of a single request, so it makes more sense to handle retries at a layer that does.
This adds retry loops to the mmc_wait_for_cmd() and mmc_wait_for_app_cmd() functions. These functions are the gateway from other code within mmc.c to the hardware. App commands are a sequence of two commands and a retry has to rerun both of them in order, so it needs its own retry loop.
Retry looping is specifically NOT implemented in mmc_wait_for_request() because it is the gateway for children on the bus, and they have to implement their own retry logic depending on what makes sense for them.
|
#
254427 |
|
16-Aug-2013 |
ian |
During card identification, run the bus at 400KHz, not the minimum speed the bus claims to be capable of. The 400KHz speed is dictated by the SD and MMC standards.
|
#
254425 |
|
16-Aug-2013 |
ian |
Print the card relative address in hex, because that's what all the other debugging output does (when it appears in command arguments, for example).
|
#
249999 |
|
27-Apr-2013 |
wkoszek |
Add Xilinx Zynq ARM/FPGA SoC support to FreeBSD/arm port.
Submitted by: Thomas Skibo <ThomasSkibo (at) sbcglobal.net> Tested by: wkoszek (ZedBoard) Reviewed by: wkoszek, freebsd-arm@ (no objections raised)
|
#
248689 |
|
24-Mar-2013 |
ian |
Set the backlink in mmc commands to the mmc request that contains them.
|
#
245755 |
|
21-Jan-2013 |
gonzo |
Fix highest voltage detection
Submitted by: Daisuke Aoyama <aoyama at peach.ne.jp> Approved by: imp@
|
#
243387 |
|
22-Nov-2012 |
emaste |
Use %u for unsigned serial number
|
#
242321 |
|
29-Oct-2012 |
gonzo |
Add BCM2835 SDHCI driver and enable it in Raspberry Pi config
|
#
241600 |
|
15-Oct-2012 |
gonzo |
Split sdhci driver in two parts: sdhci and sdhci_pci. sdchi encapsulates a generic SD Host Controller logic that relies on actual hardware driver for register access.
sdhci_pci implements driver for PCI SDHC controllers using new SDHCI interface
No kernel config modifications are required, but if you load sdhc as a module you must switch to sdhci_pci instead.
|
#
241067 |
|
30-Sep-2012 |
kevlo |
Remove an unneeded NULL check after M_WAITOK.
|
#
239281 |
|
15-Aug-2012 |
gonzo |
Merging of projects/armv6, part 10
- Support for Texas Instruments SoCs: - AM335x - OMAP4
- Kernel configs, DTS for Beaglebone and Pandaboard
Submitted by: Ben Gray, Damjan Marion
|
#
236491 |
|
02-Jun-2012 |
marius |
Add missing prototypes. While at it, sort them alphabetically.
MFC after: 3 days
|
#
236156 |
|
27-May-2012 |
marius |
- Fix some typos in mmc_acquire_bus() and mmc_send_csd(). - Fix some math errors in mmc_decode_csd_sd(). - Fix incorrect arguments to mmc_send_app_op_cond() in mmc_go_discovery(). - Add reporting of CSD for debug purposes. - Add detection (and skipping) of password-locked cards. - Add setting of block length on card if necessary.
Submitted by: Patrick Kelsey MFC after: 3 days
|
#
234524 |
|
20-Apr-2012 |
marius |
o Fixes: - When switching to 4-bit operation, send a SET_CLR_CARD_DETECT command to disconnect the card-detect pull-up resistor from the DAT3 line before sending the SET_BUS_WIDTH command. - Add the missing "reserved" zero entry to the mantissa table used to decode various CSD fields. This was causing SD cards to report that they could run at 30 MHz instead of the maximum 25 MHz mandated in the spec. o Enhancements: - At the MMC layer, format various info from the CID into a string that uniquely identifies the card instance (manufacturer number, serial number, product name and revision, etc). Export it as an instance variable. - At the MMCSD layer, display the formatted card ID string, and also report the clock speed of the hardware (not the card's max speed), and the number of bits and number of blocks per transfer. It comes out like this now: mmcsd0: 968MB <SD SD01G 8.0 SN 276886905 MFG 08/2008 by 3 SD> at mmc0 22.5MHz/4bit/128-block o Use DEVMETHOD_END. o Use NULL instead of 0 for pointers.
PR: 156496 Submitted by: Ian Lepore MFC after: 1 week
|
#
227309 |
|
07-Nov-2011 |
ed |
Mark all SYSCTL_NODEs static that have no corresponding SYSCTL_DECLs.
The SYSCTL_NODE macro defines a list that stores all child-elements of that node. If there's no SYSCTL_DECL macro anywhere else, there's no reason why it shouldn't be static.
|
#
222475 |
|
30-May-2011 |
jchandra |
Fix read_ivar implementation for MMC and SD.
1. Both mmc_read_ivar() and sdhci_read_ivar() use the expression '*(int *)result = val' to assign to result which is uintptr_t *. This does not work on big-endian 64 bit systems.
2. The media_size ivar is declared as 'off_t' which does not fit into uintptr_t in 32bit systems, change this to long.
Submitted by: kanthms at netlogicmicro com (initial version)
|
#
217509 |
|
17-Jan-2011 |
mav |
Fix 32bit bit fields handling. This fixes card serial number fetching. It was just a cosmetic issue, because that number is only reported in logs.
Reported by: Michael Butler on current@
|
#
216941 |
|
03-Jan-2011 |
pjd |
Wait for commands to complete 10 times longer. This makes my A-DATA 32GB SDHC card being detected.
Reviewed by: imp MFC after: 2 weeks
|
#
208441 |
|
23-May-2010 |
mav |
Report relative card address to NewBus as location string.
|
#
196403 |
|
20-Aug-2009 |
jhb |
Temporarily revert the new-bus locking for 8.0 release. It will be reintroduced after HEAD is reopened for commits by re@.
Approved by: re (kib), attilio
|
#
196037 |
|
02-Aug-2009 |
attilio |
Make the newbus subsystem Giant free by adding the new newbus sxlock. The newbus lock is responsible for protecting newbus internIal structures, device states and devclass flags. It is necessary to hold it when all such datas are accessed. For the other operations, softc locking should ensure enough protection to avoid races.
Newbus lock is automatically held when virtual operations on the device and bus are invoked when loading the driver or when the suspend/resume take place. For other 'spourious' operations trying to access/modify the newbus topology, newbus lock needs to be automatically acquired and dropped.
For the moment Giant is also acquired in some key point (modules subsystem) in order to avoid problems before the 8.0 release as module handlers could make assumptions about it. This Giant locking should go just after the release happens.
Please keep in mind that the public interface can be expanded in order to provide more support, if there are really necessities at some point and also some bugs could arise as long as the patch needs a bit of further testing.
Bump __FreeBSD_version in order to reflect the newbus lock introduction.
Reviewed by: ed, hps, jhb, imp, mav, scottl No answer by: ariff, thompsa, yongari Tested by: pho, G. Trematerra <giovanni dot trematerra at gmail dot com>, Brandon Gooch <jamesbrandongooch at gmail dot com> Sponsored by: Yahoo! Incorporated Approved by: re (ksmith)
|
#
189727 |
|
12-Mar-2009 |
imp |
read_ivar takes a uintptr_t * not a u_char *.
|
#
188044 |
|
03-Feb-2009 |
imp |
o Define some symbols for a few items that are bare constants in the code. o Use NULL in preference to 0 for a few pointers. o default to bus timing normal, like we default to bus_width_1.
|
#
187877 |
|
28-Jan-2009 |
mav |
Add one more debug level.
|
#
187875 |
|
28-Jan-2009 |
mav |
Improve mmc driver verbose logging. Make requests logging controllable by hw.mmc.debug sysctl.
|
#
187551 |
|
21-Jan-2009 |
imp |
Default to normal bus timing mode on SD cards. In practice, most cards people have today support high speed mode, so the timing field would be initialized to bus_timing_hs, but there are some slow cards...
|
#
187546 |
|
21-Jan-2009 |
imp |
Fix minor style nit for file consistency.
|
#
187543 |
|
21-Jan-2009 |
imp |
Make the command reporting be under boot verbose. Also, report a few other things under boot verbose. Small style nit to make new code look like old code in this file.
|
#
187525 |
|
21-Jan-2009 |
mav |
Fix copy/paste mistake in variable name. This could lead to using incorrect bus frequency.
|
#
185721 |
|
06-Dec-2008 |
mav |
Implement suspend/resume for mmc and mmcsd drivers. Now it is possible to suspend/resume with inserted and active card.
To reinitialize card on resume and to detect card change while suspended, implement bus rescan routines. It can also be used by controllers without card presence detection signals or with multiple cards per slot support.
While there, cleanup msleep() usage. We have no any rights to exit without "request done" signal from driver as it could lead to modify after free.
|
#
184452 |
|
29-Oct-2008 |
mav |
Allow card reader bridge driver to report maximum supported transfer size. sdhci supports up to 65535 blocks transfers, at91_mci - one block.
Enable multiblock operations disabled before to follow at91_mci driver limitations.
Reviewed by: imp@
|
#
184033 |
|
18-Oct-2008 |
mav |
Implement BIO_DELETE command with MMC and SD erase commands.
Erase operation gives card's logic information about unused areas to help it implement wear-leveling with lower overhead comparing to usual writing. Erase is much faster then write and does not depends on data bus speed. Also as result of hitting in-card write logic optimizations I have measured up to 50% performance boost on writing undersized blocks into preerased areas.
At the same time there are strict limitations on size and allignment of erase operations. We can erase only blocks aligned to the erase sector size and with size multiple of it. Different cards has different erase sector size which usually varies from 64KB to 4MB. SD cards actually allow to erase smaller blocks, but it is much more expensive as it is implemented via read-erase-write sequence and so not sutable for the BIO_DELETE purposes.
Reviewed by: imp@
|
#
183775 |
|
12-Oct-2008 |
imp |
style(9): spaces around operators.
|
#
183765 |
|
11-Oct-2008 |
mav |
SELECT_CARD command with zero RCA deselects all cards and so has no reply.
|
#
183763 |
|
11-Oct-2008 |
mav |
Give mmcsd driver a bit more information about card. It allows to reorganize log message in a way a bit more common for disk devices. Also it will allow mmcsd driver to use MMC/SD specific commands when needed.
|
#
183731 |
|
09-Oct-2008 |
mav |
Add high capacity MMC cards support.
|
#
183729 |
|
09-Oct-2008 |
imp |
o Use seprate routines to decode cid and csd for sd and mmc cards. All they have in common right now is a memset. This saves a parameter to these routines, as well as a level of indentation. o Make mmc_get_bits a little clearer... It really only works on 128-bit registers right now.
|
#
183709 |
|
08-Oct-2008 |
mav |
Only voltage bits should be zero in send_op_cond argument to ignore busy.
|
#
183708 |
|
08-Oct-2008 |
mav |
Generic SD Host Controller driver going to be named sdhci.
|
#
183705 |
|
08-Oct-2008 |
mav |
Fix bit offset in mmc_sd_switch().
|
#
183704 |
|
08-Oct-2008 |
mav |
Set of mmc layer improvements: - add MMC support. - add SDHC support. - add 4 and 8 bit bus width support. - add High Speed bus timing support.
|
#
183542 |
|
02-Oct-2008 |
imp |
Define and use MMC_SECTOR_SIZE. Make mmc_get_media_size now return an off_t and remove now useless cast.
|
#
183471 |
|
29-Sep-2008 |
imp |
Make the media size return the block rather than the bytes on the device.
|
#
183470 |
|
29-Sep-2008 |
imp |
Explicitly set data to NULL rather than relying mmc_wait_for_cmd() to do it for us. There may be commands we have to wait for that need to set data.
Submitted by: mav@
|
#
183468 |
|
29-Sep-2008 |
imp |
Minor style fixes from mav@ (with similar problems fixed where I noticed them): #define<tab> zero memory when we allocate it Put device name in error message.
Submitted by: mav@
|
#
183467 |
|
29-Sep-2008 |
imp |
Conform to style(9) for return (foo); The files were a mix before.
Submitted by: mav@
|
#
183453 |
|
28-Sep-2008 |
imp |
Convert all C++ comments to C style. There's lots of folks that don't like them and they don't add enough to be worth standing out.
|
#
183452 |
|
28-Sep-2008 |
imp |
The parameters to the MMCBR_ACQUIRE_HOST and MMCBR_RELEAES_HOST were the device in question, rather than the bus doing the requesting. Fix it so that it is the bus.
Submitted by: mav@
|
#
183449 |
|
28-Sep-2008 |
imp |
Implement power down, and power down the bus on detach.
Submitted by: mav@
|
#
183447 |
|
28-Sep-2008 |
imp |
Propigate read-only status of cards. Right now it is read only at device attach time. We may need to read this more often in the future, but for now simplicity of implementation wins.
Submitted by: mav@
|
#
183446 |
|
28-Sep-2008 |
imp |
The OCR register defines both acceptable voltage bits, as well as bits for other things. Mask out the voltage only bits when returning the Vdd mask for voltage computation.
Submitted by: mav@
|
#
183445 |
|
28-Sep-2008 |
imp |
Other busses on the system use the official capitalization for the technology. Make mmc conform to that.
Submitted by: mav@
|
#
183444 |
|
28-Sep-2008 |
imp |
Fix line continuation whitespace.
Submitted by: mav@
|
#
170337 |
|
05-Jun-2007 |
imp |
MFp4: When querying the operating condition of SD cards (using the application specific SEND_OP_COND (CMD55 + ACMD41), go ahead and allow 100 tries. This gives a timeout of a second rather than the ~100ms the old style produces.
I've had one old 16MB SD card which needs the extra time. I've now had reports from the field that other cards need this too.
Originally done at BSDcan 2007 while waiting to give my embedding madness minitalk.
|
#
170002 |
|
26-May-2007 |
imp |
A careful reading of the disclaimer that is required to download the SD Simplified specification, as well as other SD and SDIO implemenations I've examined, suggest this disclaimer may be required. It is unclear to me exactly what the license would be for, or why it might be required. Err on the side of caution and include this disclaimer so anybody deploying this code can judge for themselves. I have no further unformation about the details.
|
#
169567 |
|
15-May-2007 |
imp |
First cut at making detach work. also add sdh as a possible mmc bridge.
Submitted by: Andrea Bittau (Andrea may have updated patches, but I've tested these)
|
#
163516 |
|
20-Oct-2006 |
imp |
Preliminary MMC stack. This stack supports SD 1.0 cards only, but should be easily adapted to SD 2.0 (aka SDHC), SDIO, MMC and MMCplus cards. At the present time, there's only one bridge driver for the ARM9 based Atmel AT91RM9200.
|