linux/drivers/mmc/host
Kevin Liu 52983382c7 mmc: sdhci: enhance preset value function
4d55c5a1 ("mmc: sdhci: enable preset value after uhs initialization")
added preset value support and enabled it by default during sd card init.

Below are the enhancements introduced by this patch:

1. In current code, preset value is enabled after setting clock finished,
which means the clock is manually set by driver firstly and then suddenly
switched to preset value at this point. So the first setting is useless
and unnecessary. What's more, the first clock setting may differ from the
preset one.  The better way is enable preset value just after switch to
UHS mode so the preset value can take effect immediately. So move preset
value enable from mmc_sd_init_card to sdhci_set_ios which will be called
during set timing.

2. In current code, preset value is disabled at the beginning of
mmc_attach_sd.  It's too late since low freq (400khz) should be set in
mmc_power_up.  So move preset value disable to sdhci_set_ios which will
be called during power up.

3. host->clock and ios->drv_type should also be updated according to the
preset value if it's enabled. Current code missed this.

4. This patch also introduce a quirk to disable preset value in case
preset value doesn't work.

This patch has been verified on sdhci-pxav3 platform with both preset
enabled and disabled.

Signed-off-by: Kevin Liu <kliu5@marvell.com>
Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Chris Ball <cjb@laptop.org>
2013-02-24 14:37:11 -05:00
..
android-goldfish.c mmc: goldfish: emulated MMC device 2013-02-24 14:37:04 -05:00
atmel-mci-regs.h mmc: atmel-mci: AP700x PDC is not connected to MCI 2012-10-03 10:05:23 -04:00
atmel-mci.c ARM: arm-soc: Header cleanups 2012-12-12 11:45:16 -08:00
au1xmmc.c mmc: remove use of __devexit 2012-11-28 12:28:18 -08:00
bfin_sdh.c mmc: remove use of __devexit 2012-11-28 12:28:18 -08:00
cb710-mmc.c mmc: remove use of __devexit 2012-11-28 12:28:18 -08:00
cb710-mmc.h
davinci_mmc.c MMC highlights for 3.7: 2012-10-10 10:58:42 +09:00
dw_mmc-exynos.c mmc: dw_mmc: exynos: Remove code for wp-gpios 2013-02-24 14:36:54 -05:00
dw_mmc-pci.c Drivers: mmc: remove __dev* attributes. 2013-01-03 15:57:14 -08:00
dw_mmc-pltfm.c Drivers: mmc: remove __dev* attributes. 2013-01-03 15:57:14 -08:00
dw_mmc-pltfm.h mmc: remove use of __devexit 2012-11-28 12:28:18 -08:00
dw_mmc.c mmc: dw_mmc: Remove DW_MCI_QUIRK_NO_WRITE_PROTECT 2013-02-24 14:36:55 -05:00
dw_mmc.h mmc: dw_mmc: add support for implementation specific callbacks 2012-10-03 10:05:19 -04:00
jz4740_mmc.c mmc: remove use of __devexit 2012-11-28 12:28:18 -08:00
Kconfig mmc: goldfish: emulated MMC device 2013-02-24 14:37:04 -05:00
Makefile mmc: goldfish: emulated MMC device 2013-02-24 14:37:04 -05:00
mmc_spi.c mmc: remove use of __devexit 2012-11-28 12:28:18 -08:00
mmci.c Merge branch 'for-linus' of git://git.linaro.org/people/rmk/linux-arm 2012-12-12 11:30:02 -08:00
mmci.h ARM: 7562/2: MMCI: fetch pinctrl handle and set default state 2012-11-04 10:31:46 +00:00
msm_sdcc.c ARM: msm: move platform_data definitions 2012-09-14 11:17:35 +02:00
msm_sdcc.h mmc: msm_sdcc: Use MCI_INT_MASK0 for PIO interrupts 2011-10-26 15:43:37 -04:00
mvsdio.c mmc: mvsdio: add pinctrl integration 2013-02-24 14:36:42 -05:00
mvsdio.h
mxcmmc.c ARM: arm-soc: Cleanups on various subarchitectures 2012-12-12 11:51:39 -08:00
mxs-mmc.c mmc: mxs-mmc: Fix warning due to incorrect type 2013-02-24 14:36:51 -05:00
of_mmc_spi.c mmc: mmc_spi: Fix return value evaluation of irq_of_parse_and_map() 2013-02-24 14:37:10 -05:00
omap.c ARM: arm-soc: Header cleanups 2012-12-12 11:45:16 -08:00
omap_hsmmc.c ARM: arm-soc: Header cleanups 2012-12-12 11:45:16 -08:00
pxamci.c mmc: remove use of __devinit 2012-11-28 12:28:18 -08:00
pxamci.h
rtsx_pci_sdmmc.c mmc: rtsx: Call MFD hook to switch output voltage 2013-01-27 01:29:57 +01:00
s3cmci.c mmc: remove use of __devexit 2012-11-28 12:28:18 -08:00
s3cmci.h
sdhci-acpi.c Drivers: mmc: remove __dev* attributes. 2013-01-03 15:57:14 -08:00
sdhci-bcm2835.c mmc: sdhci-pltfm: Add a common clk API implementation of get_timeout_clock 2013-02-24 14:37:09 -05:00
sdhci-cns3xxx.c mmc: remove use of __devexit 2012-11-28 12:28:18 -08:00
sdhci-dove.c Driver core updates for 3.8-rc1 2012-12-11 13:13:55 -08:00
sdhci-esdhc-imx.c mmc: sdhci-pltfm: Add a common clk API implementation of get_timeout_clock 2013-02-24 14:37:09 -05:00
sdhci-esdhc.h mmc: sdhci-esdhc: break out early if clock is 0 2012-09-04 13:58:06 -04:00
sdhci-of-esdhc.c Driver core updates for 3.8-rc1 2012-12-11 13:13:55 -08:00
sdhci-of-hlwd.c mmc: remove use of __devexit 2012-11-28 12:28:18 -08:00
sdhci-pci-data.c mmc: sdhci-pci: add platform data 2012-01-11 23:58:47 -05:00
sdhci-pci.c mmc: sdhci: rename platform_8bit_width to platform_bus_width 2013-02-24 14:37:02 -05:00
sdhci-pltfm.c mmc: sdhci-pltfm: Add a common clk API implementation of get_timeout_clock 2013-02-24 14:37:09 -05:00
sdhci-pltfm.h mmc: sdhci-pltfm: Add a common clk API implementation of get_timeout_clock 2013-02-24 14:37:09 -05:00
sdhci-pxav2.c mmc: sdhci-pltfm: Add a common clk API implementation of get_timeout_clock 2013-02-24 14:37:09 -05:00
sdhci-pxav3.c mmc: sdhci-pltfm: Add a common clk API implementation of get_timeout_clock 2013-02-24 14:37:09 -05:00
sdhci-s3c.c mmc: sdhci: rename platform_8bit_width to platform_bus_width 2013-02-24 14:37:02 -05:00
sdhci-spear.c Driver core updates for 3.8-rc1 2012-12-11 13:13:55 -08:00
sdhci-tegra.c mmc: sdhci: rename platform_8bit_width to platform_bus_width 2013-02-24 14:37:02 -05:00
sdhci.c mmc: sdhci: enhance preset value function 2013-02-24 14:37:11 -05:00
sdhci.h mmc: sdhci: enhance preset value function 2013-02-24 14:37:11 -05:00
sdricoh_cs.c mmc: Add module.h to drivers/mmc users assuming implicit presence. 2011-10-26 16:32:19 -04:00
sh_mmcif.c mmc: sh_mmcif: simplify IRQ processing 2013-02-11 13:28:45 -05:00
sh_mobile_sdhi.c Driver core updates for 3.8-rc1 2012-12-11 13:13:55 -08:00
tifm_sd.c Autogenerated GPG tag for Rusty D1ADB8F1: 15EE 8D6C AB0E 7F0C F999 BFCB D920 0E6C D1AD B8F1 2012-01-14 12:32:16 -08:00
tmio_mmc.c mmc: remove use of __devexit 2012-11-28 12:28:18 -08:00
tmio_mmc.h mmc: tmio_mmc: remove unused sdio_irq_enabled flag 2012-03-27 12:20:17 -04:00
tmio_mmc_dma.c Merge branch 'next' of git://git.infradead.org/users/vkoul/slave-dma 2012-03-29 15:34:57 -07:00
tmio_mmc_pio.c mmc: remove unncessary mmc_gpio_free_cd() call from slot-gpio users 2013-02-11 12:51:23 -05:00
ushc.c USB: convert some miscellanies drivers to use module_usb_driver() 2011-11-18 09:52:10 -08:00
via-sdmmc.c mmc: remove use of __devexit 2012-11-28 12:28:18 -08:00
vub300.c mmc: vub300: add missing usb_put_dev 2012-12-06 13:55:03 -05:00
wbsd.c mmc: remove use of __devexit 2012-11-28 12:28:18 -08:00
wbsd.h
wmt-sdmmc.c mmc: vt8500: Remove erroneous __exitp in wmt_mci_driver 2013-02-24 14:36:56 -05:00