You've already forked linux-rockchip
mirror of
https://github.com/armbian/linux-rockchip.git
synced 2026-01-06 11:08:10 -08:00
mmc: Add a MX2/MX3 specific SDHC driver
This patch adds a MX2/MX3 specific SDHC driver. The hardware is basically the same as in the MX1, but unlike the MX1 controller the MX2 controller just works as expected. Since the MX1 driver has more workarounds for bugs than anything else I had no success with supporting MX1 and MX2 in a sane way in one driver. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
This commit is contained in:
committed by
Pierre Ossman
parent
27421e211a
commit
d96be879ff
36
arch/arm/plat-mxc/include/mach/mmc.h
Normal file
36
arch/arm/plat-mxc/include/mach/mmc.h
Normal file
@@ -0,0 +1,36 @@
|
||||
#ifndef ASMARM_ARCH_MMC_H
|
||||
#define ASMARM_ARCH_MMC_H
|
||||
|
||||
#include <linux/mmc/host.h>
|
||||
|
||||
struct device;
|
||||
|
||||
/* board specific SDHC data, optional.
|
||||
* If not present, a writable card with 3,3V is assumed.
|
||||
*/
|
||||
struct imxmmc_platform_data {
|
||||
/* Return values for the get_ro callback should be:
|
||||
* 0 for a read/write card
|
||||
* 1 for a read-only card
|
||||
* -ENOSYS when not supported (equal to NULL callback)
|
||||
* or a negative errno value when something bad happened
|
||||
*/
|
||||
int (*get_ro)(struct device *);
|
||||
|
||||
/* board specific hook to (de)initialize the SD slot.
|
||||
* The board code can call 'handler' on a card detection
|
||||
* change giving data as argument.
|
||||
*/
|
||||
int (*init)(struct device *dev, irq_handler_t handler, void *data);
|
||||
void (*exit)(struct device *dev, void *data);
|
||||
|
||||
/* available voltages. If not given, assume
|
||||
* MMC_VDD_32_33 | MMC_VDD_33_34
|
||||
*/
|
||||
unsigned int ocr_avail;
|
||||
|
||||
/* adjust slot voltage */
|
||||
void (*setpower)(struct device *, unsigned int vdd);
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -145,6 +145,16 @@ config MMC_IMX
|
||||
|
||||
If unsure, say N.
|
||||
|
||||
config MMC_MXC
|
||||
tristate "Freescale i.MX2/3 Multimedia Card Interface support"
|
||||
depends on ARCH_MXC
|
||||
help
|
||||
This selects the Freescale i.MX2/3 Multimedia card Interface.
|
||||
If you have a i.MX platform with a Multimedia Card slot,
|
||||
say Y or M here.
|
||||
|
||||
If unsure, say N.
|
||||
|
||||
config MMC_TIFM_SD
|
||||
tristate "TI Flash Media MMC/SD Interface support (EXPERIMENTAL)"
|
||||
depends on EXPERIMENTAL && PCI
|
||||
|
||||
@@ -9,6 +9,7 @@ endif
|
||||
obj-$(CONFIG_MMC_ARMMMCI) += mmci.o
|
||||
obj-$(CONFIG_MMC_PXA) += pxamci.o
|
||||
obj-$(CONFIG_MMC_IMX) += imxmmc.o
|
||||
obj-$(CONFIG_MMC_MXC) += mxcmmc.o
|
||||
obj-$(CONFIG_MMC_SDHCI) += sdhci.o
|
||||
obj-$(CONFIG_MMC_SDHCI_PCI) += sdhci-pci.o
|
||||
obj-$(CONFIG_MMC_RICOH_MMC) += ricoh_mmc.o
|
||||
|
||||
880
drivers/mmc/host/mxcmmc.c
Normal file
880
drivers/mmc/host/mxcmmc.c
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user