davinci: MMC platform support
Add SoC and platform-specific data and init for MMC driver. Signed-off-by: Kevin Hilman <khilman@deeprootsystems.com>
This commit is contained in:
@@ -35,6 +35,7 @@
|
||||
#include <mach/i2c.h>
|
||||
#include <mach/serial.h>
|
||||
#include <mach/nand.h>
|
||||
#include <mach/mmc.h>
|
||||
|
||||
#define DAVINCI_ASYNC_EMIF_CONTROL_BASE 0x01e10000
|
||||
#define DAVINCI_ASYNC_EMIF_DATA_CE0_BASE 0x02000000
|
||||
@@ -190,6 +191,30 @@ static void __init dm355_leopard_map_io(void)
|
||||
dm355_init();
|
||||
}
|
||||
|
||||
static int dm355leopard_mmc_get_cd(int module)
|
||||
{
|
||||
if (!gpio_is_valid(leopard_mmc_gpio))
|
||||
return -ENXIO;
|
||||
/* low == card present */
|
||||
return !gpio_get_value_cansleep(leopard_mmc_gpio + 2 * module + 1);
|
||||
}
|
||||
|
||||
static int dm355leopard_mmc_get_ro(int module)
|
||||
{
|
||||
if (!gpio_is_valid(leopard_mmc_gpio))
|
||||
return -ENXIO;
|
||||
/* high == card's write protect switch active */
|
||||
return gpio_get_value_cansleep(leopard_mmc_gpio + 2 * module + 0);
|
||||
}
|
||||
|
||||
static struct davinci_mmc_config dm355leopard_mmc_config = {
|
||||
.get_cd = dm355leopard_mmc_get_cd,
|
||||
.get_ro = dm355leopard_mmc_get_ro,
|
||||
.wires = 4,
|
||||
.max_freq = 50000000,
|
||||
.caps = MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED,
|
||||
};
|
||||
|
||||
/* Don't connect anything to J10 unless you're only using USB host
|
||||
* mode *and* have to do so with some kind of gender-bender. If
|
||||
* you have proper Mini-B or Mini-A cables (or Mini-A adapters)
|
||||
@@ -248,6 +273,9 @@ static __init void dm355_leopard_init(void)
|
||||
/* irlml6401 switches over 1A in under 8 msec */
|
||||
setup_usb(500, 8);
|
||||
|
||||
davinci_setup_mmc(0, &dm355leopard_mmc_config);
|
||||
davinci_setup_mmc(1, &dm355leopard_mmc_config);
|
||||
|
||||
dm355_init_spi0(BIT(0), dm355_leopard_spi_info,
|
||||
ARRAY_SIZE(dm355_leopard_spi_info));
|
||||
}
|
||||
|
Reference in New Issue
Block a user