linux/drivers/mmc/core
David Brownell af51715079 MMC core learns about SPI
Teach the MMC/SD/SDIO core about using SPI mode.

 - Use mmc_host_is_spi() so enumeration works through SPI signaling
   and protocols, not just the native versions.

 - Provide the SPI response type flags with each request issued,
   including requests from the new lock/unlock code.

 - Understand that cmd->resp[0] and mmc_get_status() results for SPI
   return different values than for "native" MMC/SD protocol; this
   affects resetting, checking card lock status, and some others.

 - Understand that some commands act a bit differently ... notably:
     * OP_COND command doesn't return the OCR
     * APP_CMD status doesn't have an R1_APP_CMD analogue

Those changes required some new and updated primitives:

 - Provide utilities to access two SPI-only requests, and one
   request that wasn't previously needed:
     * mmc_spi_read_ocr() ... SPI only
     * mmc_spi_set_crc() ... SPI only (override by module parm)
     * mmc_send_cid() ... for use without broadcast mode

 - Updated internal routines:
     * Previous mmc_send_csd() modified into mmc_send_cxd_native();
       it uses native "R2" responses, which include 16 bytes of data.
     * Previous mmc_send_ext_csd() becomes new mmc_send_cxd_data()
       helper for command-and-data access
     * Bugfix to that mmc_send_cxd_data() code:  dma-to-stack is
       unsafe/nonportable, so kmalloc a bounce buffer instead.

 - Modified mmc_send_ext_csd() now uses mmc_send_cxd_data() helper

 - Modified mmc_send_csd(), and new mmc_spi_send_cid(), routines use
   those helper routines based on whether they're native or SPI

The newest categories of cards supported by the MMC stack aren't expected
to work yet with SPI:  MMC or SD cards with over 4GB data, and SDIO.
All those cards support SPI mode, so eventually they should work too.

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
2007-09-23 21:51:30 +02:00
..
bus.c MMC core learns about SPI 2007-09-23 21:51:30 +02:00
bus.h mmc: refactor bus operations 2007-07-09 21:27:56 +02:00
core.c MMC core learns about SPI 2007-09-23 21:51:30 +02:00
core.h MMC core learns about SPI 2007-09-23 21:51:30 +02:00
host.c sdio: add interface for host side SDIO interrupt reporting 2007-09-23 21:13:08 +02:00
host.h mmc: refactor host class handling 2007-07-09 21:28:01 +02:00
Kconfig mmc: Use menuconfig objects 2007-05-08 22:41:55 +02:00
Makefile sdio: core support for SDIO function interrupt 2007-09-23 21:01:33 +02:00
mmc_ops.c MMC core learns about SPI 2007-09-23 21:51:30 +02:00
mmc_ops.h MMC core learns about SPI 2007-09-23 21:51:30 +02:00
mmc.c MMC core learns about SPI 2007-09-23 21:51:30 +02:00
sd_ops.c MMC core learns about SPI 2007-09-23 21:51:30 +02:00
sd_ops.h drivers/mmc/core/: make 3 functions static 2007-07-26 02:05:57 +02:00
sd.c MMC core learns about SPI 2007-09-23 21:51:30 +02:00
sdio_bus.c sdio: store vendor strings 2007-09-23 21:28:01 +02:00
sdio_bus.h mmc: basic SDIO device model 2007-09-23 19:45:31 +02:00
sdio_cis.c sdio: store vendor strings 2007-09-23 21:28:01 +02:00
sdio_cis.h sdio: split up common and function CIS parsing 2007-09-23 20:44:22 +02:00
sdio_io.c sdio: add sdio_f0_readb() and sdio_f0_writeb() 2007-09-23 21:24:27 +02:00
sdio_irq.c mmc: replace BUG_ON with WARN_ON 2007-09-23 21:23:07 +02:00
sdio_ops.c MMC core learns about SPI 2007-09-23 21:51:30 +02:00
sdio_ops.h sdio: extend sdio_readsb() and friends to handle any length of buffer 2007-09-23 21:21:32 +02:00
sdio.c MMC core learns about SPI 2007-09-23 21:51:30 +02:00
sysfs.c mmc: move layer init and workqueue to core file 2007-07-09 21:28:06 +02:00
sysfs.h mmc: move layer init and workqueue to core file 2007-07-09 21:28:06 +02:00