Hi All :
I am using beagle board as reference design
which is OMAP DM3730 and kernel version is 2.6.32
I want to use wifi module which is mmc1 and use sdio interface
so , I deciede to porting form TI Mistral EVM board to beagleboard
after modify following code, i find follwoing error message
"mmc1: starting CMD5 arg 00000000 f;ags 000002e1"
"mmc1: reg failed (CMD5) : -110 : 00000000 00000000 00000000 00000000
it seems in /kernel/driver/mmc/core.c "mmc_rescan" function
sdio will return timeout error message if sdio core use mmc_send_io_op_cond to communication with our wifi module
Dose anyone could give me some suggestion how i can do ?
Here is the porting information from TI Mistral evm board to beagle
board-omap3beagle.c
modify:
static struct twl4030_hsmmc_info mmc[] = {
{
.mmc = 1,
.wires = 8,
.gpio_wp = -1,
},
{
.name = "bcm4329_wifi_sdio",
.mmc = 2,
.wires = 4,
.gpio_cd =-1,
.transceiver = true,
//.ocr_mask = 0x00100000, /* 3.3V */
.nonremovable = true,
},
{} /* Terminator */
};
add following variable to board_mux
OMAP3_MUX(UART1_RTS, OMAP_MUX_MODE4 | OMAP_PIN_INPUT),
OMAP3_MUX(UART1_CTS, OMAP_MUX_MODE4 | OMAP_PIN_OUTPUT),
OMAP3_MUX(SDMMC2_CLK, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLUP),
OMAP3_MUX(SDMMC2_CMD, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLUP),
OMAP3_MUX(SDMMC2_DAT0, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLUP),
OMAP3_MUX(SDMMC2_DAT1, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLUP),
OMAP3_MUX(SDMMC2_DAT2, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLUP),
OMAP3_MUX(SDMMC2_DAT3, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLUP),
define new structure :
static struct regulator_consumer_supply omap3evm_vmmc2_supply =
REGULATOR_SUPPLY("vmmc", "mmci-omap-hs.1");
/* VMMC2 for driving the WL12xx module */
static struct regulator_init_data omap3evm_vmmc2 = {
.constraints = {
.valid_ops_mask = REGULATOR_CHANGE_STATUS,
},
.num_consumer_supplies = 1,
.consumer_supplies = &omap3evm_vmmc2_supply,
};
static struct fixed_voltage_config omap3evm_vwlan = {
.supply_name = "vwl1271",
.microvolts = 1800000, /* 1.80V */
//.gpio = OMAP3EVM_WLAN_PMENA_GPIO,
.enable_high = 1,
.enabled_at_boot = 0,
.init_data = &omap3evm_vmmc2,
};
static struct platform_device omap3evm_wlan_regulator = {
.name = "reg-fixed-voltage",
.id = 1,
.dev = {
.platform_data = &omap3evm_vwlan,
},
};
finally , register it on omap3_beagle_init
platform_device_register(&omap3evm_wlan_regulator);