[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-id: <DB759C09-975B-4088-B334-79F9010573F8@mac.com>
Date: Fri, 15 Oct 2010 01:48:53 +0400
From: Elvis Dowson <elvis.dowson@....com>
To: Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
Linux OMAP Mailing List <linux-omap@...r.kernel.org>
Subject: Difference between twl4030_hsmmc_info and omap_mmc_platform_data
Hi,
I'm trying to bring up a TI WL1271 wlan module connected to MMC2 controller of a TI OMAP 3530 processor.
I am unclear about the difference between the use of twl4030_hsmmc_info and omap_mmc_platform_data, to set the attributes and constraints for the MMC1 (connected to microSD card) and MMC2 (connected to WLAN module).
The beagleboard uses twl4030_mmc_init, which has a wrapper for omap_mmc_platform_data defined in mmc-twl4030.h.
The board-sholes-hsmmc.c doesn't use twl4030, but directly uses the omap_mmc_platform_data structure.
Example:
board-omap3beagle.c uses twl4030_mmc_init, which internally uses the following structure to define mmc properties.
static struct twl4030_hsmmc_info mmc[] = {
{
.mmc = 1,
.wires = 8,
.gpio_wp = -ENOSYS,
.gpio_cd = -ENOSYS,
.name = "MMC1 controller slot"
},
{
.mmc = 2,
.wires = 4,
.gpio_cd = -EINVAL,
.gpio_wp = -EINVAL,
// .transceiver = true,
.name = "MMC2 controller slot",
.ocr_mask = 0x00000080,
},
{} /* Terminator */
};
For board-sholes-hsmmc.c, it uses a omap_mmc_platform_data
static struct omap_mmc_platform_data mmc1_data = {
.nr_slots = 1,
.init = hsmmc_late_init,
.cleanup = hsmmc_cleanup,
#ifdef CONFIG_PM
.suspend = hsmmc_suspend,
.resume = hsmmc_resume,
#endif
.dma_mask = 0xffffffff,
.slots[0] = {
.wires = 8,
.set_power = hsmmc_set_power,
.ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34 |
MMC_VDD_165_195,
.name = "first slot",
/* we get car_detect_irq later */
.card_detect_irq = 0,
.card_detect = hsmmc_card_detect,
},
};
#if defined(CONFIG_OMAP_HS_MMC2)
#ifdef CONFIG_MMC_EMBEDDED_SDIO
static struct sdio_embedded_func wifi_func_array[] = {
{
.f_class = SDIO_CLASS_NONE,
.f_maxblksize = 0,
},
{
.f_class = SDIO_CLASS_WLAN,
.f_maxblksize = 512,
},
};
static struct embedded_sdio_data sholes_wifi_emb_data = {
.cis = {
.vendor = 0x104c,
.device = 0x9066,
.blksize = 512,
.max_dtr = 24000000,
},
.cccr = {
.multi_block = 1,
.low_speed = 0,
.wide_bus = 1,
.high_power = 0,
.high_speed = 0,
},
.funcs = wifi_func_array,
.num_funcs = 2,
};
#endif
static struct omap_mmc_platform_data mmc2_data = {
.nr_slots = 1,
.init = hsmmc2_late_init,
.cleanup = hsmmc2_cleanup,
#ifdef CONFIG_PM
.suspend = hsmmc2_suspend,
.resume = hsmmc2_resume,
#endif
.dma_mask = 0xffffffff,
#ifndef CONFIG_MMC_EMBEDDED_SDIO
.name = "TIWLAN_SDIO",
#endif
.slots[0] = {
.wires = 4,
.set_power = hsmmc2_set_power,
.ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34 |
MMC_VDD_165_195,
.name = "first slot",
.internal_clock = 1,
.card_detect_irq = 0,
.card_detect = hsmmc2_card_detect,
#ifdef CONFIG_MMC_EMBEDDED_SDIO
.embedded_sdio = &sholes_wifi_emb_data,
.register_status_notify = &sholes_wifi_status_register,
#endif
},
};
#endif
Best regards,
Elvis Dowson
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists