Commit graph android_kernel_sony_sdm845/include/linux/mmc
Message SHA1
mmc: add led trigger
Add a led trigger for each host controller that indicates if there
is a request active on the controller.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>

Pierre Ossman   commited 2007-09-24 07:15:48 +02:00
af8350c756
MMC headers learn about SPI
Teach the MMC/SD/SDIO system headers that some hosts use SPI mode

 - New host capabilities and status bits
    * MMC_CAP_SPI, with mmc_host_is_spi() test
    * mmc_host.use_spi_crc flag

 - SPI-specific declarations:
    * Response types, MMC_RSP_SPI_R*
    * Two SPI-only commands
    * Status bits used native to SPI:  R1_SPI_*, R2_SPI_*

 - Fix a few (unrelated) whitespace bugs in the headers.

 - Reorder a few mmc_host fields, removing several bytes of padding

None of these changes affect current code.

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>

David Brownell   authored and   Pierre Ossman   commited 2007-09-23 21:37:51 +02:00
97018580c4
sdio: store vendor strings
Store vendor strings found in CISTPL_VERS_1 so that function drivers
can access them.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>

Pierre Ossman   commited 2007-09-23 21:28:01 +02:00
759bdc7af4
sdio: add sdio_f0_readb() and sdio_f0_writeb()
Add sdio_f0_readb() and sdio_f0_writeb() functions to reading and
writing function 0 registers.  Writes outside the vendor specific CCCR
registers (0xF0 - 0xFF) are not permitted.

Signed-off-by: David Vrabel <david.vrabel@csr.com>
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>

David Vrabel   authored and   Pierre Ossman   commited 2007-09-23 21:24:27 +02:00
7806cdb40f
sdio: set the functions' block size
Before a driver is probed, set the function's block size to the default so the
driver is sure the block size is something sensible and it needn't explicitly
set it.

The default block size is the largest that's supported by both the card and
the host, with a maximum of 512 to ensure aribitrarily sized transfer use the
optimal (least) number of commands.

See http://lkml.org/lkml/2007/8/7/150 for reasons for the block size choice.

Signed-off-by: David Vrabel <david.vrabel@csr.com>
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>

David Vrabel   authored and   Pierre Ossman   commited 2007-09-23 21:19:26 +02:00
9a08f82b3c
sdio: add SDIO_FBR_BASE(f) macro
Signed-off-by: David Vrabel <david.vrabel@csr.com>
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>

David Vrabel   authored and   Pierre Ossman   commited 2007-09-23 21:16:27 +02:00
7616ee95f2
sdio: add interface for host side SDIO interrupt reporting
Signed-off-by: Nicolas Pitre <npitre@mvista.com>
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>

Nicolas Pitre   authored and   Pierre Ossman   commited 2007-09-23 21:13:08 +02:00
17b759aff9
sdio: support IO_RW_EXTENDED
Support the multi-byte transfer operation, including handlers for
common operations like writel()/readl().

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>

Pierre Ossman   commited 2007-09-23 21:09:34 +02:00
112c9db91e
sdio: core support for SDIO function interrupt
Signed-off-by: Nicolas Pitre <npitre@mvista.com>
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>

Nicolas Pitre   authored and   Pierre Ossman   commited 2007-09-23 21:01:33 +02:00
d1496c39e5
sdio: allow for mmc_claim_host to be aborted
It is sometimes necessary to give up on trying to claim the host lock,
especially if that happens in a thread that has to be stopped.

While at it, fix the description for mmc_claim_host() which was wrong.

Signed-off-by: Nicolas Pitre <npitre@mvista.com>
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>

Nicolas Pitre   authored and   Pierre Ossman   commited 2007-09-23 20:55:13 +02:00
2342f3323c
sdio: defines for some standard interface types
Signed-off-by: Nicolas Pitre <npitre@mvista.com>
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>

Nicolas Pitre   authored and   Pierre Ossman   commited 2007-09-23 20:54:47 +02:00
55fe77a0a2
sdio: add device id table and matching
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>

Pierre Ossman   commited 2007-09-23 20:51:27 +02:00
3b38bea0d9
sdio: split up common and function CIS parsing
Add a more clean separation between global, common CIS information
and the function specific one as we need the common information in
places where no specific function is specified.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>

Pierre Ossman   commited 2007-09-23 20:44:22 +02:00
1a632f8cdc
sdio: link unknown CIS tuples to the sdio_func structure
This way those tuples that the core cares about are consumed by the core
code, and tuples that only function drivers might make sense of are
available to drivers.

Signed-off-by: Nicolas Pitre <npitre@mvista.com>
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>

Nicolas Pitre   authored and   Pierre Ossman   commited 2007-09-23 20:31:43 +02:00
b1538bcf75
sdio: basic parsing of FBR
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>

Pierre Ossman   commited 2007-09-23 20:13:52 +02:00
0597007f1b
sdio: read and decode interesting parts of the CCCR
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>

Pierre Ossman   commited 2007-09-23 20:12:18 +02:00
35c66c1908
mmc: enable/disable functions for SDIO
Like many other buses, the devices (functions) on the SDIO bus
must be enabled before they can be used. Add functions that allow
drivers to do so.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>

Pierre Ossman   commited 2007-09-23 20:10:56 +02:00
fa64efa1f2
mmc: add basic SDIO I/O operations
Add command wrappers that simplify register access from SDIO
function drivers.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>

Pierre Ossman   commited 2007-09-23 19:57:03 +02:00
46f555f273
mmc: add SDIO driver handling
Add basic driver handling to the SDIO device model.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>

Pierre Ossman   commited 2007-09-23 19:55:26 +02:00
f76c85154d
mmc: basic SDIO device model
Add the sdio bus type and basic device handling.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>

Pierre Ossman   commited 2007-09-23 19:45:31 +02:00
e29a7d73f4
mmc: implement SDIO IO_RW_DIRECT operation
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>

Pierre Ossman   commited 2007-09-23 19:42:37 +02:00
b2bcc798bb
mmc: detect SDIO cards
Really basic init sequence for SDIO cards.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>

Pierre Ossman   commited 2007-09-23 19:40:07 +02:00
5c4e6f1301
mmc: remove confusing flag
The MMC_DATA_MULTI flag never had a proper definition of what it
means, so remove it and let the drivers check the block count in
the request.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>

Pierre Ossman   commited 2007-09-23 09:15:12 +02:00
be0192aae1
mmc: remove BYTEBLOCK capability
Remove the BYTEBLOCK capability and let the broken hosts fail the
requests with -EINVAL instead.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>

Pierre Ossman   commited 2007-09-23 09:15:05 +02:00
255d01af9a
mmc: mmc_set_data_timeout() parameter write is redundant
The write parameter in mmc_set_data_timeout() is redundant as the
data structure contains information about the direction of the
transfer.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>

Pierre Ossman   commited 2007-09-23 09:15:00 +02:00
b146d26a61
mmc: read ext_csd version number
Make sure we do not try to parse a structure we do not
understand.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>

Pierre Ossman   commited 2007-09-23 09:14:53 +02:00
d7604d7635
mmc: remove custom error codes
Convert the MMC layer to use standard error codes and not its own,
incompatible values.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>

Pierre Ossman   commited 2007-09-23 08:46:48 +02:00
17b0429dde
mmc: update kerneldoc
Make sure the kerneldoc comments are up to date and relevant.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>

Pierre Ossman   commited 2007-07-26 01:53:39 +02:00
67a61c4847
mmc: remove old card states
Remove card states that no longer make any sense.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>

Pierre Ossman   commited 2007-05-01 16:11:57 +02:00
bd76631261
MMC: Fix handling of low-voltage cards
Fix handling of low voltage MMC cards.

The latest MMC and SD specs both agree that support for
low-voltage operations is indicated by bit 7 in the OCR.
The MMC spec states that the low voltage range is
1.65-1.95V while the SD spec leaves the actual voltage
range undefined - meaning that there is still no such
thing as a low voltage SD card.

However, an old Sandisk spec implied that bits 7.0
represented voltages below 2.0V in 1V or 0.5V increments,
and the code was accordingly written with that expectation.

This confusion meant that host drivers attempting to support
the typical low voltage (1.8V) would set the wrong bits in
the host OCR mask (usually bits 5 and/or 6) resulting in the
the low voltage mode never being used.

This change corrects the low voltage range and adds sanity
checks on the reserved bits (0-6) and for SD cards that
claim to support low-voltage operations.

Signed-off-by: Philip Langdale <philipl@overt.org>
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>

Philip Langdale   authored and   Pierre Ossman   commited 2007-05-01 14:14:50 +02:00
55556da012
MMC: Consolidate voltage definitions
Consolidate the list of available voltages.

Up until now, a separate set of defines has been
used for host->vdd than that used for the OCR
voltage mask values. Having two sets of defines
allows them to get out of sync and the current
sets are already inconsistent with one claiming
to describe ranges and the other specific voltages.

Only the SDHCI driver uses the host->vdd defines and
it is easily fixed to use the OCR defines.

Signed-off-by: Philip Langdale <philipl@overt.org>
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>

Philip Langdale   authored and   Pierre Ossman   commited 2007-05-01 13:42:28 +02:00
4be34c99a2
mmc: add bus handler
Delegate protocol handling to "bus handlers". This allows the core to
just handle the task of arbitrating the bus. Initialisation and
pampering of cards is now done by the different bus handlers.

This design also allows MMC and SD (and later SDIO) to be more cleanly
separated, allowing easier maintenance.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>

Pierre Ossman   commited 2007-05-01 13:41:06 +02:00
7ea239d9e6
mmc: Separate out protocol ops
Move protocol operations and definitions into their own files
in an effort to separate protocol handling and bus
arbitration more clearly.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>

Pierre Ossman   commited 2007-05-01 13:04:18 +02:00
da7fbe58d2
mmc: Move core functions to subdir
Create a "core" subdirectory to house the central bus handling
functions.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>

Pierre Ossman   commited 2007-05-01 13:04:18 +02:00
aaac1b470b
mmc: deprecate mmc bus topology
The classic MMC bus was defined as multi card bus
system, which is reflected in the design in the MMC
layer.

When SD showed up, the bus topology was abandoned
and a star topology (one card per host) was mandated.
MMC version 4 has followed this, officially deprecating
the bus topology.

As we do not have any known users of the bus
topology we can remove support for it. This will
simplify the code and rectify some incorrect
assumptions in the newer additions.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>

Pierre Ossman   commited 2007-05-01 13:04:18 +02:00
b855885e3b
mmc: Flush pending detects on host removal
Make sure we kill of any pending detection runs when the host
is removed instead of when it is freed. Also add some debugging
to make sure the driver doesn't queue up more detection after it
has removed the host.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>

Pierre Ossman   commited 2007-05-01 13:04:17 +02:00
3b91e5507c
mmc: Move OCR bit defines
All host drivers were #include:ing mmc/protocol.h just to
get access to the OCR bit defines. Move these to host.h instead.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>

Pierre Ossman   commited 2007-05-01 13:04:16 +02:00
f74d132cec
mmc: add type field to cards
Split out the type of card into its own field as it hardly
qualifies as a state.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>

Pierre Ossman   commited 2007-05-01 13:04:16 +02:00
9c2c0af950
mmc: MMC sector based cards
Support for MMC 4.2 sector based cards. This tweaks the init a
bit and reads a new field out of the EXT_CSD.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>

Pierre Ossman   commited 2007-05-01 13:04:15 +02:00
85a18ad93e
mmc: require explicit support for high-speed
The new high-speed timings are similar to each other and the old
system, but not identical. And although things "just work" most of
the time, sometimes it does not. So we need to start marking which
hosts are known to fully comply with the new timings.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>

Pierre Ossman   commited 2007-03-06 13:26:55 +01:00
cd9277c011
mmc: Allow host drivers to specify max block count
Many controllers have an upper limit on the number of blocks that can be
transferred in one request. Allow the host drivers to specify this and make
sure we avoid hitting this limit.

Also change the max_sectors field to avoid confusion. This makes it map
less directly to the block layer limits, but as they didn't apply directly
on MMC cards anyway, this isn't a great loss.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>

Pierre Ossman   commited 2007-02-04 20:54:10 +01:00
55db890a83
mmc: Allow host drivers to specify a max block size
Most controllers have an upper limit on the block size. Allow the host
drivers to specify this and make sure we avoid hitting this limit.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>

Pierre Ossman   commited 2007-02-04 20:54:10 +01:00
fe4a3c7a20
mmc: Add support for SDHC cards
Thanks to the generous donation of an SDHC card by John Gilmore, and
the surprisingly enlightened decision by the SD Card Association to
publish useful specs, I've been able to bash out support for SDHC. The
changes are not too profound:

i) Add a card flag indicating the card uses block level addressing and
check it in the block driver. As we never took advantage of byte-level
addressing, this simply involves skipping the block -> byte
translation when sending commands.

ii) The layout of the CSD is changed - a set of fields are discarded
to make space for a larger C_SIZE. We did not reference any of the
discarded fields except those related to the C_SIZE.

iii) Read and write timeouts are fixed values and not calculated from
CSD values.

iv) Before invoking SEND_APP_OP_COND, we must invoke the new
SEND_IF_COND to inform the card we support SDHC.

Signed-off-by: Philipl Langdale <philipl@overt.org>
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>

Philip Langdale   authored and   Pierre Ossman   commited 2007-02-04 20:54:07 +01:00
fba68bd2da
mmc: let host be parent of cards
Change the parent of cards to be a specific host (a class
device), not the physical controller. This is particularly
useful when the hardware has multiple slots, meaning
multiple hosts.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>

Pierre Ossman   commited 2007-02-04 20:54:06 +01:00
11354d03af
mmc: replace host->card_busy
As card_busy was only used to indicate if the host was exclusively
claimed and not really used to identify a particular card, replacing
it with just a boolean makes things a lot more easily understandable.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>

Pierre Ossman   commited 2007-02-04 20:54:06 +01:00
f22ee4edf6
mmc: Correct definition of R6
During development of SDHC support, it was discovered that the definition
for R6 was incorrect. This patch fixes that and patches the drivers that
do switch on the response type.

Signed-off-by: Philip Langdale <philipl@overt.org>
Cc: Alex Dubov <oakad@yahoo.com>
Cc: Pavel Pisa <ppisa@pikron.com>
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>

Philip Langdale   authored and   Pierre Ossman   commited 2007-01-15 06:44:03 +01:00
6f949909e8
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
Conflicts:

	drivers/infiniband/core/iwcm.c
	drivers/net/chelsio/cxgb2.c
	drivers/net/wireless/bcm43xx/bcm43xx_main.c
	drivers/net/wireless/prism54/islpci_eth.c
	drivers/usb/core/hub.h
	drivers/usb/input/hid-core.c
	net/core/netpoll.c

Fix up merge failures with Linus's head and fix new compilation failures.

Signed-Off-By: David Howells <dhowells@redhat.com>

David Howells   commited 2006-12-05 14:37:56 +00:00
4c1ac1b491
Merge branch 'for-linus' of master.kernel.org:/pub/scm/linux/kernel/git/drzeus/mmc
* 'for-linus' of master.kernel.org:/pub/scm/linux/kernel/git/drzeus/mmc:
  mmc: correct request error handling
  mmc: Flush block queue when removing card
  mmc: sdhci high speed support
  mmc: Support for high speed SD cards
  mmc: Fix mmc_delay() function
  mmc: Add support for mmc v4 wide-bus modes
  [PATCH] mmc: Add support for mmc v4 high speed mode
  trivial change for mmc/Kconfig: MMC_PXA does not mean only PXA255
  Make general code cleanups
  Add MMC_CAP_{MULTIWRITE,BYTEBLOCK} flags
  Platform device error handling cleanup
  Move register definitions away from the header file
  Change OMAP_MMC_{READ,WRITE} macros to use the host pointer
  Replace base with virt_base and phys_base
  mmc: constify mmc_host_ops vectors
  mmc: remove kernel_thread()

Linus Torvalds   commited 2006-12-02 08:29:04 -08:00
cdb54fac35
Driver core: convert mmc code to use struct device
Converts from using struct "class_device" to "struct device" making
everything show up properly in /sys/devices/ with symlinks from the
/sys/class directory.

Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

Greg Kroah-Hartman   commited 2006-12-01 14:52:00 -08:00
fcaf71fd51
mmc: Support for high speed SD cards
Modern SD cards support a clock speed of 50 MHz. Make sure we test for
this capability and do the song and dance required to activate it.

Activating high speed support actually modifies the TRAN_SPEED field
of the CSD. But as the spec says that the cards must report 50 MHz,
we might as well skip re-reading the CSD.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>

Pierre Ossman   commited 2006-12-01 18:53:37 +01:00
7ccd266e67