Hi.
The configuration on our 8148 board is mmc0 - wlan, mmc1 - sd-card, mmc2 - sd card. We start working with wlan recently and it still doesn't work. Before it we didn't even configure board to use 3 mmc. We used only mmc1 and mmc2 and they worked well. But now mmc2 permanently fails with all 3 mmc's configured. That is mmc2 is working well, when mmc0 is not configured. Here's the log when all mmcs is configured and a sd-card is inserted in mmc2 slot.
Powering off wl12xx
Powering on wl12xx
mmc0: card claims to support voltages below the defined range. These will be ignore.
mmc0: queuing unknown CIS tuple 0x91 (3 bytes)
mmc0: new SDIO card at address 0001
Powering off wl12xx
mmc1 cd: pstate = 1fa0000
mmc2 cd: pstate = 1fb0000
mmc2: mmc_rescan: trying to init card at 400000 Hz
Unable to handle kernel NULL pointer dereference at virtual address 00000000
pgd = c0004000
[00000000] *pgd=00000000
Internal error: Oops: 805 [#1]
last sysfs file:
Modules linked in:
CPU: 0 Tainted: G W (2.6.37+ #378)
PC is at __bug+0x18/0x24
LR is at __bug+0x14/0x24
pc : [<c003d218>] lr : [<c003d214>] psr: 60000013
sp : e724bdb8 ip : 00011ed0 fp : 00000000
r10: e724c000 r9 : e724dc00 r8 : e724bea4
r7 : e724be78 r6 : e724be48 r5 : 00000002 r4 : e724c240
r3 : 00000000 r2 : e724bdac r1 : c046117a r0 : 00000037
Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment kernel
Control: 10c5387d Table: 80004019 DAC: 00000017
Process kworker/u:1 (pid: 45, stack limit = 0xe724a2e8)
Stack: (0xe724bdb8 to 0xe724c000)
bda0: e724c240 c02a1314
bdc0: fb810100 00000000 e724be78 e724c000 e724c240 e724be78 00000000 c02a1880
bde0: e724bdec e724dd60 00000000 00000004 c04a52cb 00000001 00000008 e724bea4
be00: e724c000 e724bea4 e724dd60 c0296114 00000200 00000064 00000000 00000000
be20: 00000000 00000001 e724be28 e724be28 e724be78 e724be78 00000008 e724be48
be40: e724beb8 c02997f8 00000033 00000000 00000000 00000000 00000000 00000000
be60: 000000b5 00000000 00000000 00000000 e724be78 e724bea4 05f5e100 00000000
be80: 00000008 00000001 00000000 00000200 00000000 00000000 e724bea4 00000001
bea0: e724beb8 e724be48 e724be78 00000000 e724be24 c029665c c0a5f9a2 00000d60
bec0: 00000008 a724dd60 e724c000 e724dc00 00000000 e724dc00 e724bf18 00000000
bee0: 00000000 e724c000 00000000 c02986fc e724c000 e724dc00 e724dc00 00000000
bf00: e724c000 e724bf18 00000000 c0295a74 e724c1c8 c0298f2c 02544d53 44303247
bf20: 60a7736b a100a8a7 e724c000 ffffff92 e724bf5c 00000000 c03c8e28 c02990e0
bf40: e724c000 00ff8000 00000001 e724c000 ffffff92 c0295cf8 e724c1c8 00ff8000
bf60: 60000013 e724c1c8 c05657b8 e722c940 c0565768 e70bca00 00000000 c006ccb8
bf80: e722c940 e722c940 c0565768 00000089 c0565768 c0565768 e722c950 e724a000
bfa0: 00000000 c006d5c0 e724bfd4 e7039f28 e722c940 c006d414 00000000 00000000
bfc0: 00000000 c007132c c003aaf8 00000000 e722c940 00000000 e724bfd8 e724bfd8
bfe0: 00000000 e7039f28 c00712a8 c003aaf8 00000013 c003aaf8 fd9ffffa fd71f5f7
[<c003d218>] (__bug+0x18/0x24) from [<c02a1314>] (omap_hsmmc_start_command+0x168/0x1ec)
[<c02a1314>] (omap_hsmmc_start_command+0x168/0x1ec) from [<c02a1880>] (omap_hsmmc_request+0x3bc/0x3f4)
[<c02a1880>] (omap_hsmmc_request+0x3bc/0x3f4) from [<c0296114>] (mmc_wait_for_req+0x208/0x230)
[<c0296114>] (mmc_wait_for_req+0x208/0x230) from [<c02997f8>] (mmc_app_send_scr+0xec/0x134)
[<c02997f8>] (mmc_app_send_scr+0xec/0x134) from [<c02986fc>] (mmc_sd_setup_card+0x20/0x31c)
[<c02986fc>] (mmc_sd_setup_card+0x20/0x31c) from [<c0298f2c>] (mmc_sd_init_card+0x130/0x1d4)
[<c0298f2c>] (mmc_sd_init_card+0x130/0x1d4) from [<c02990e0>] (mmc_attach_sd+0x110/0x198)
[<c02990e0>] (mmc_attach_sd+0x110/0x198) from [<c0295cf8>] (mmc_rescan+0x284/0x30c)
[<c0295cf8>] (mmc_rescan+0x284/0x30c) from [<c006ccb8>] (process_one_work+0x1e4/0x310)
[<c006ccb8>] (process_one_work+0x1e4/0x310) from [<c006d5c0>] (worker_thread+0x1ac/0x2c8)
[<c006d5c0>] (worker_thread+0x1ac/0x2c8) from [<c007132c>] (kthread+0x84/0x8c)
[<c007132c>] (kthread+0x84/0x8c) from [<c003aaf8>] (kernel_thread_exit+0x0/0x8)
Code: e92d4010 e59f000c eb0d8b58 e3a03000 (e5833000)
---[ end trace 8b3ec1ed54497b8d ]---
And this is our configuration.
static struct omap2_hsmmc_info mmc[] = {
{
#ifdef CONFIG_TI8148EVM_WL12XX
/* WLAN_EN is GP1[21] */
#define GPIO_WLAN_EN ((1 * 32) + 21)
/* WLAN_IRQ is GP0[30] */
#define GPIO_WLAN_IRQ ((0 * 32) + 30)
.mmc = 1,
.caps = MMC_CAP_4_BIT_DATA | MMC_CAP_POWER_OFF_CARD,
.gpio_cd = -EINVAL,
.gpio_wp = -EINVAL,
.ocr_mask = MMC_VDD_165_195,
.nonremovable = true,
},
{
.mmc = 2,
#else
.mmc = 1,
#endif
.caps = MMC_CAP_4_BIT_DATA,
.gpio_cd = -EINVAL, /* Dedicated pins for CD and WP */
.gpio_wp = -EINVAL,
.ocr_mask = MMC_VDD_33_34,
},
{
#ifdef CONFIG_TI8148EVM_WL12XX
.mmc = 3,
#else
.mmc = 2,
#endif
.caps = MMC_CAP_4_BIT_DATA,
.transceiver = false,
//.nonremovable = true,
.gpio_cd = -EINVAL, // Dedicated pins for CD and WP
.gpio_wp = -EINVAL,
.ocr_mask = MMC_VDD_33_34,
},
{} /* Terminator */
};
This is from mmc.h file
#ifdef CONFIG_TI8148EVM_WL12XX
#ifdef CONFIG_MACH_TI8148LPH
#define TI814X_NR_MMC 3
#else
#define TI814X_NR_MMC 2
#endif
#define TI814X_MMC1_BASE 0x48060100 /* TI814X MMC1/SD1 config base */
#define TI814X_MMC1_HL_BASE 0x48060000 /* TI814X HL configuration*/
#define TI814X_MMC2_BASE 0x481D8100 /* TI814X MMC2/SD2 config base */
#define TI814X_MMC2_HL_BASE 0x481D8000 /* TI814X HL configuration*/
#define TI814X_MMC3_BASE 0x47810100 /* TI814X MMC/SD config base */
#define TI814X_MMC3_HL_BASE 0x47810000 /* TI814X HL configuration*/
This is from dma.h
#ifdef CONFIG_TI8148EVM_WL12XX
#define OMAP24XX_DMA_MMC1_TX 24
#define OMAP24XX_DMA_MMC1_RX 25
#else
#define OMAP24XX_DMA_MMC1_RX 3
#define OMAP24XX_DMA_MMC1_TX 2
#endif
#ifdef CONFIG_TI8148EVM_WL12XX
#define OMAP24XX_DMA_MMC2_TX 2
#define OMAP24XX_DMA_MMC2_RX 3
#define OMAP24XX_DMA_MMC3_TX 8
#define OMAP24XX_DMA_MMC3_RX 9
#else
#define OMAP24XX_DMA_MMC2_TX 8 /* E_DMA_MUXED instead of MCASP0TX - SDTXEVT2 */
#define OMAP24XX_DMA_MMC2_RX 9 /* E_DMA_MUXED instead of MCASP0RX - SDRXEVT2 */
#endif
Should something else be configured?
Best regards,
Alexander Vasiljev