aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mmc/host
AgeCommit message (Collapse)AuthorFilesLines
2009-01-06dmaengine: kill struct dma_client and supporting infrastructureDan Williams1-1/+0
All users have been converted to either the general-purpose allocator, dma_find_channel, or dma_request_channel. Reviewed-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Dan Williams <dan.j.williams@intel.com>
2009-01-06atmel-mci: convert to dma_request_channel and down-level dma_slaveDan Williams1-71/+27
dma_request_channel provides an exclusive channel, so we no longer need to pass slave data through dmaengine. Cc: Haavard Skinnemoen <haavard.skinnemoen@atmel.com> Reviewed-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Dan Williams <dan.j.williams@intel.com>
2009-01-06dmaengine: up-level reference counting to the module levelDan Williams1-3/+1
Simply, if a client wants any dmaengine channel then prevent all dmaengine modules from being removed. Once the clients are done re-enable module removal. Why?, beyond reducing complication: 1/ Tracking reference counts per-transaction in an efficient manner, as is currently done, requires a complicated scheme to avoid cache-line bouncing effects. 2/ Per-transaction ref-counting gives the false impression that a dma-driver can be gracefully removed ahead of its user (net, md, or dma-slave) 3/ None of the in-tree dma-drivers talk to hot pluggable hardware, but if such an engine were built one day we still would not need to notify clients of remove events. The driver can simply return NULL to a ->prep() request, something that is much easier for a client to handle. Reviewed-by: Andrew Morton <akpm@linux-foundation.org> Acked-by: Maciej Sosnowski <maciej.sosnowski@intel.com> Signed-off-by: Dan Williams <dan.j.williams@intel.com>
2009-01-05atmel-mci: move atmel-mci.h file to include/linuxNicolas Ferre1-1/+1
Needed to use the atmel-mci driver in an architecture independant maner. Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com> Signed-off-by: Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
2008-12-31Merge branch 'master' of ../mmcPierre Ossman15-263/+450
2008-12-31mmc_spi: Add support for OpenFirmware bindingsAnton Vorontsov3-1/+155
The support is implemented via platform data accessors, new module (of_mmc_spi) will be created automatically when the driver compiles on OpenFirmware platforms. Link-time dependency will load the module automatically. Signed-off-by: Anton Vorontsov <avorontsov@ru.mvista.com> Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
2008-12-31pxamci: fix dma_unmap_sg lengthVernon Sauder1-1/+1
dma_unmap_sg should be given the same length as dma_map_sg, not the value returned from dma_map_sg Signed-off-by: Vernon Sauder <vsauder@inhand.com> Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
2008-12-31drivers/mmc: Move a dereference below a NULL testJulia Lawall1-1/+2
In each case, if the NULL test is necessary, then the dereference should be moved below the NULL test. The semantic patch that makes this change is as follows: (http://www.emn.fr/x-info/coccinelle/) // <smpl> @@ type T; expression E; identifier i,fld; statement S; @@ - T i = E->fld; + T i; ... when != E when != i if (E == NULL) S + i = E->fld; // </smpl> Signed-off-by: Julia Lawall <julia@diku.dk> Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
2008-12-31sdhci: handle built-in sdhci with modular leds classPierre Ossman1-6/+11
As reported by Randy Dunlap, having sdhci built-in and LEDs class as a module resulted in undefined symbols. Change the code to handle that case properly (by not having LEDs class support in sdhci). Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
2008-12-31mmc: balanc pci_iomap with pci_iounmapRoel Kluin1-1/+1
balance pci_iomap with pci_iounmap, not iounmap Signed-off-by: Roel Kluin <roel.kluin@gmail.com> Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
2008-12-31ricoh_mmc: Handle newer models of Ricoh controllersphilipl@overt.org1-6/+11
The latest generation of laptops are shipping with a newer model of Ricoh chip where the firewire controller is the primary PCI function but a cardbus controller is also present. The existing code assumes that if a cardbus controller is, present, then it must be the one to manipulate - but the real rule is that you manipulate PCI function 0. This patch adds an additional constraint that the target must be function 0. Signed-off-by: Philip Langdale <philipl@overt.org> Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
2008-12-31sdhci: activate led support also when moduleÉric Piel2-7/+7
CONFIG_LEDS_CLASS is defined only if led-class is built-in, otherwise when it is a module the option is called CONFIG_LEDS_CLASS_MODULE. Led support should also be activated in this case. Signed-off-by: Eric Piel <eric.piel@tremplin-utc.net> Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
2008-12-31pci: use pci_ioremap_bar() in drivers/mmcArjan van de Ven1-1/+1
Use the new pci_ioremap_bar() function in drivers/mmc. pci_ioremap_bar() just takes a pci device and a bar number, with the goal of making it really hard to get wrong, while also having a central place to stick sanity checks. Signed-off-by: Arjan van de Ven <arjan@linux.intel.com> Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
2008-12-17Merge branch 'rmk-devel-mxc-pu-v2' of git://pasiphae.extern.pengutronix.de/git/imx/linux-2.6 into develRussell King2-237/+257
2008-12-17Merge branch 'hsmmc-init' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6 into develRussell King1-3/+4
2008-12-16imxmmc: use readl/writelMarc Kleine-Budde2-92/+133
Use readl/writel instead of direct pointer deref. Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2008-12-16imxmmc: Remove unused variablesMarc Kleine-Budde1-2/+0
This removes clkrt and cmdat from struct imxmci_host, they are unused. Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2008-12-16imxmmc: Checkpatch cleanupMarc Kleine-Budde1-160/+141
This cleans up the warnings issued by the checkpatch script and remove the file history from the header Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2008-12-10omap mmc: Add low-level initialization for hsmmc controllerTony Lindgren1-1/+1
Add low-level initialization for hsmmc controller. Merged into this patch patch are various improvments and board support by Grazvydas Ignotas and David Brownell. Also change wire4 to be wires, as some newer controllers support 8 data lines. Cc: Pierre Ossman <drzeus-mmc@drzeus.cx> Signed-off-by: Grazvydas Ignotas <notasas@gmail.com> Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Tony Lindgren <tony@atomide.com>
2008-12-10omap mmc: Add better MMC low-level initTony Lindgren1-3/+4
This will simplify the MMC low-level init, and make it more flexible to add support for a newer MMC controller in the following patches. The patch rearranges platform data and gets rid of slot vs controller confusion in the old data structures. Also fix device id numbering in the clock code. Some code snippets are based on an earlier patch by Russell King <linux@arm.linux.org.uk>. Cc: Pierre Ossman <drzeus-mmc@drzeus.cx> Signed-off-by: Tony Lindgren <tony@atomide.com>
2008-11-30sdricoh_cs: Add support for Bay Controller devicesSascha Sommer1-0/+2
Some Ricoh SD card readers seems to advertise themselves slightly differently. This patches the driver to will recognise an additional product id, and it appears to work perfectly. % pccardctl info PRODID_1="RICOH" PRODID_2="Bay Controller" PRODID_3="" PRODID_4="" MANFID=0000,0000 Signed-off-by: Charles Lowe <aquasync@gmail.com> Acked-by: Sascha Sommer <saschasommer@freenet.de> Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
2008-11-30mmc: at91_mci: reorder timer setup and mmc_add_host() callNicolas Ferre1-2/+2
As said in function comment mmc_add_host() requires that: "The host must be prepared to start servicing requests before this function completes." During this function, at91_mci_request() can be invoqued without timer beeing setup leading to a kernel Oops. This has been reported inserting this driver as a module. Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com> Reported-by: Wu Xuan <wux@landicorp.com> Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
2008-11-30Merge branch 'clks' into develRussell King1-1/+1
2008-11-30[ARM] amba drivers: don't pass a consumer clock name for devices with unique clocksRussell King1-1/+1
Where devices only have one consumer, passing a consumer clock ID has no real benefit, and it only encourages wrong implementations of the clk API. Remove it. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2008-11-29Merge branch 's3c-moves2' of git://aeryn.fluff.org.uk/bjdooks/linux into develRussell King1-1/+1
2008-11-29[ARM] Hide ISA DMA API when ISA_DMA_API is unsetRussell King1-1/+1
When ISA_DMA_API is unset, we're not implementing the ISA DMA API, so there's no point in publishing the prototypes via asm/dma.h, nor including the machine dependent parts of that API. This allows us to remove a lot of mach/dma.h files which don't contain any useful code. Unfortunately though, some platforms put their own private non-ISA definitions into mach/dma.h, so we leave these behind and fix the appropriate #include statments. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2008-11-28[ARM] pxa: avoid polluting the kernel's namespaceRussell King1-1/+2
Avoid unnecessarily pollution of the kernel's namespace by avoiding mach/hardware.h. Include this header file where necessary. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2008-11-27[ARM] pxa: don't pass a consumer clock name for devices with unique clocksRussell King1-1/+1
Where devices only have one consumer, passing a consumer clock ID has no real benefit. Remove it. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2008-11-08mmc: struct device - replace bus_id with dev_name(), dev_set_name()Kay Sievers3-10/+10
Acked-by: Greg Kroah-Hartman <gregkh@suse.de> Signed-Off-By: Kay Sievers <kay.sievers@vrfy.org> Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
2008-11-03Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 into s3c-moves2Ben Dooks1-2/+3
2008-10-30[ARM] S3C24XX: Move mci.h to arch/arm/plat-s3c24xx/include/platBen Dooks1-1/+1
Move mci.h to new position in arch/arm/plat-s3c24xx/include/plat ready to clean out old include directories. Signed-off-by: Ben Dooks <ben-linux@fluff.org>
2008-10-28[ARM] 5322/1: Fix fastpath issue in mmci.cLinus Walleij1-2/+3
Fix fastpath issues Since mmci_request() can be called from a non-interrupt context, and does, during kernel init, causing a host of debug messages during boot if you enable spinlock debugging, we need to use the spinlock calls that save IRQ flags and restore them. Signed-off-by: Linus Walleij <triad@df.lth.se> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2008-10-20Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/drzeus/mmcLinus Torvalds2-52/+164
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/drzeus/mmc: s3cmci: Add Ben Dooks/Simtec Electronics to header & copyright s3cmci: fix continual accesses to host->pio_ptr s3cmci: Support transfers which are not multiple of 32 bits. s3cmci: cpufreq support s3cmci: Make general protocol errors less noisy mmc_block: tell block layer there is no seek penalty
2008-10-15Merge branch 'fixes' into for-linusRussell King7-411/+1058
Conflicts: arch/arm/mach-versatile/core.c
2008-10-15s3cmci: Add Ben Dooks/Simtec Electronics to header & copyrightben@fluff.org.uk1-1/+4
Since the original authour (Thomas Kleffel) has been too busy to merge the s3cmci driver and keep it up to date, I (mostly as part of my role with Simtec Electronics) got the driver to a mergable state and have been maintaining it since I think that I should be added to the header. Also add a copyright statement for the new work. Signed-off-by: Ben Dooks <ben-linux@fluff.org> Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
2008-10-15s3cmci: fix continual accesses to host->pio_ptrben@fluff.org.uk1-2/+8
The s3cmci driver uses the host->pio_ptr field to point to the current position into the buffer for data transfer. During the transfers it does the following: while (fifo_words--) *(host->pio_ptr++) = readl(from_ptr); This is inefficent, as host->pio_ptr is not used in any other part of the transfer but the compiler emits code which does the following: while (fifo_words--) { u32 *ptr = host->pio_ptr; *ptr = readl(from_ptr); ptr++; host->pio_ptr = ptr; } This is obviously a waste of a load and store each time around the loop, which could be up to 16 times depending on how much needs to be transfered. Move the ptr accesses to outside the while loop so that we do not end up reloading/re-writing the pointer. Note, this seems to make the code 16 bytes larger. Signed-off-by: Ben Dooks <ben-linux@fluff.org> Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
2008-10-15s3cmci: Support transfers which are not multiple of 32 bits.Christer Weinigel2-28/+54
To be able to do SDIO the s3cmci driver has to support non-word-sized transfers. Change pio_words into pio_bytes and fix up all the places where it is used. This variant of the patch will not overrun the buffer when reading an odd number of bytes. When writing, this variant will still read past the end of the buffer, but since the driver can't support non-word- aligned transfers anyway, this should not be a problem, since a word-aligned transfer will never cross a page boundary. This has been tested with a CSR SDIO Bluetooth Type A device on a Samsung S3C24A0 processor. Signed-off-by: Christer Weinigel <christer@weinigel.se> Signed-off-by: Ben Dooks <ben-linux@fluff.org> Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
2008-10-15s3cmci: cpufreq supportben@fluff.org.uk2-19/+96
Support for cpu frequency changing. Signed-off-by: Ben Dooks <ben-linux@fluff.org> Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
2008-10-15s3cmci: Make general protocol errors less noisyben@fluff.org.uk1-2/+2
General errors, such as timeouts during probe do not need to be sent to the console, so move them down to be included if the debug is enabled. Such errors include: s3c2440-sdi s3c2440-sdi: s3cmci_request: no medium present Signed-off-by: Ben Dooks <ben-linux@fluff.org> Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
2008-10-14Merge branch 's3c-move' into develRussell King2-8/+14
Conflicts: arch/arm/mach-versatile/core.c
2008-10-14Merge branch 'omap-all' into develRussell King1-3/+8
Conflicts: arch/arm/mach-omap2/gpmc.c arch/arm/mach-omap2/irq.c
2008-10-13Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6David Woodhouse10-421/+1086
Conflicts: include/asm-x86/statfs.h
2008-10-12Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/drzeus/mmcLinus Torvalds7-410/+1057
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/drzeus/mmc: (24 commits) MMC: Use timeout values from CSR MMC: CSD and CID timeout values sdhci: 'scratch' may be used uninitialized mmc: explicitly mention SDIO support in Kconfig mmc: remove redundant "depends on" Fix comment in include/linux/mmc/host.h sdio: high-speed support mmc_block: hard code 512 byte block size sdhci: force high speed capability on some controllers mmc_block: filter out PC requests mmc_block: indicate strict ordering mmc_block: inform block layer about sector count restriction sdio: give sdio irq thread a host specific name sdio: make sleep on error interruptable sdhci: reduce card detection delay sdhci: let the controller wait for busy state to end atmel-mci: Add missing flush_dcache_page() in PIO transfer code atmel-mci: Don't overwrite error bits when NOTBUSY is set atmel-mci: Add experimental DMA support atmel-mci: support multiple mmc slots ...
2008-10-12Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/hskinnemoen/atmel-mci-2.6.28Pierre Ossman3-380/+985
Conflicts: drivers/mmc/host/atmel-mci.c
2008-10-12MMC: Use timeout values from CSRMatthew Fleming1-11/+21
Hard-coded timeout values of 250ms for writes and 100ms for reads are currently used for MMC transactions over SPI. The spec states that the timeout values from the card should be used. Signed-off-by: Matthew Fleming <matthew.fleming@imgtec.com> Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
2008-10-12sdhci: 'scratch' may be used uninitializedSteven Noonan1-1/+1
The variable 'scratch' is always initialized before it's used. The conditional which is responsible for initialization of 'scratch' will always evaluate 'true' when the first loop iteration occurs, and thus, it's properly initialized. GCC doesn't see this, of course, so using the uninitialized_var() macro seems to work for silencing this case. Signed-off-by: Steven Noonan <steven@uplinklabs.net> Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
2008-10-12mmc: explicitly mention SDIO support in KconfigPierre Ossman1-6/+7
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
2008-10-12mmc: remove redundant "depends on"Pierre Ossman1-3/+3
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
2008-10-12sdhci: force high speed capability on some controllersPierre Ossman3-2/+6
Some high speed capable controllers forget to set the high speed capability bit. Make sure we enable the functionality anyway. Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
2008-10-12sdhci: reduce card detection delayPierre Ossman1-1/+1
The card detection delay was added early when the behaviour of the card interrupt was still very much unknown (i.e. before there was a public specification). As it is now known that it is a debounced signal, reduce the delay to something more sensible. Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>