I had the same problem, and tracked it down to the SYSCFG "KICK" registers
NOT being set to allow writes to the PINMUX registers. During MMC/SD pinmux
setup, appropriate writes were being done to the PINMUX registers, but these
were having no effect because KICK0R and KICK1R were not set to allow
writes.
Perhaps Sudhakar's bootloader leaves the KICK registers enabled and that's
why he's able to have success.
Added unlocking of the KICK registers and my MMC/SD cards now works fine:
void __init da830_init(void)
{
davinci_common_init(&davinci_soc_info_da830);
da8xx_syscfg0_base = ioremap(DA8XX_SYSCFG0_BASE, SZ_4K);
WARN(!da8xx_syscfg0_base, "Unable to map syscfg0 module");
/* Unlock the KICK registers */
__raw_writel(0x83e70b13, da8xx_syscfg0_base + 0x38);
__raw_writel(0x95a4f1e0, da8xx_syscfg0_base + 0x3c);
}
May warrant a more general patch...
Grzegorz Skiba wrote:
>
> I have problem with MMC/SD Linux device driver, I have OMAPL137 EVM board,
> 2.6.33-rc4 linux ver, form DaVinci-PSP-SDK-03.20.00.11. Linux kernel
> doesn't recognize either RS MMC or SD. I commented out part related to LCD
> and NAND to make sure that pinmux configuration is ok. Even with default
> config I'm unable to access to SD or MMC cord. I compiled MMC/SD driver
> with
> debug and I this is what I get:
>
> This is what I get without SD/MMC card:
> 0.070000] Serial: 8250/16550 driver, 3 ports, IRQ sharing disabled
> [ 0.070000] serial8250.0: ttyS0 at MMIO 0x1c42000 (irq = 25) is a
> 16550A
> [ 0.070000] serial8250.0: ttyS1 at MMIO 0x1d0c000 (irq = 53) is a
> 16550A
> [ 0.070000] serial8250.0: ttyS2 at MMIO 0x1d0d000 (irq = 61) is a
> 16550A
> [ 0.080000] brd: module loaded
> [ 0.080000] spi_davinci spi_davinci.0: DaVinci SPI driver in EDMA mode
> [ 0.080000] Using RX channel = 14 , TX channel = 15 and event queue = 1
> [ 0.080000] spi_davinci spi_davinci.0: Controller at 0xfec41000
> [ 0.080000] console [netcon0] enabled
> [ 0.080000] netconsole: network logging started
> [ 0.080000] i2c /dev entries driver
> [ 0.080000] sdhci: Secure Digital Host Controller Interface driver
> [ 0.080000] sdhci: Copyright(c) Pierre Ossman
> [ 0.080000] davinci_mmc davinci_mmc.0: max_phys_segs=16
> [ 0.080000] davinci_mmc davinci_mmc.0: max_hw_segs=16
> [ 0.080000] davinci_mmc davinci_mmc.0: max_blk_size=4095
> [ 0.080000] davinci_mmc davinci_mmc.0: max_req_size=268365825
> [ 0.080000] davinci_mmc davinci_mmc.0: max_seg_size=2097120
> [ 0.080000] mmc0: clock 0Hz busmode 1 powermode 0 cs 0 Vdd 0 width 0
> timing 0
> [ 0.080000] davinci_mmc davinci_mmc.0: clock 0Hz busmode 1 powermode 0
> Vdd 0000
> [ 0.080000] davinci_mmc davinci_mmc.0: Disabling 4 bit mode
> [ 0.080000] davinci_mmc davinci_mmc.0: Using DMA, 4-bit mode
>
> When I plug in SD card:
>
> [ 3.480000] Warning: unable to open an initial console.
> [ 282.080000] mmc0: clock 0Hz busmode 1 powermode 1 cs 0 Vdd 21 width 0
> timing 0
> [ 282.080000] davinci_mmc davinci_mmc.0: clock 0Hz busmode 1 powermode 1
> Vdd 0015
> [ 282.080000] davinci_mmc davinci_mmc.0: Disabling 4 bit mode
> [ 282.100000] mmc0: clock 400000Hz busmode 1 powermode 2 cs 0 Vdd 21
> width
> 0 timing 0
> [ 282.100000] davinci_mmc davinci_mmc.0: clock 400000Hz busmode 1
> powermode
> 2 Vdd 0015
> [ 282.100000] davinci_mmc davinci_mmc.0: Disabling 4 bit mode
> [ 282.120000] mmc0: clock 400000Hz busmode 1 powermode 2 cs 1 Vdd 21
> width
> 0 timing 0
> [ 282.120000] davinci_mmc davinci_mmc.0: clock 400000Hz busmode 1
> powermode
> 2 Vdd 0015
> [ 282.120000] davinci_mmc davinci_mmc.0: Disabling 4 bit mode
> [ 282.120000] mmc0: starting CMD0 arg 00000000 flags 000000c0
> [ 282.120000] davinci_mmc davinci_mmc.0: CMD0, arg 0x00000000, (R?
> response)
> [ 282.120000] davinci_mmc davinci_mmc.0: unknown resp_type 0000
> [ 282.120000] mmc0: req done (CMD0): 0: 00000000 00000000 00000000
> 00000000
> [ 282.120000] mmc0: clock 400000Hz busmode 1 powermode 2 cs 0 Vdd 21
> width
> 0 timing 0
> [ 282.120000] davinci_mmc davinci_mmc.0: clock 400000Hz busmode 1
> powermode
> 2 Vdd 0015
> [ 282.120000] davinci_mmc davinci_mmc.0: Disabling 4 bit mode
> [ 282.120000] mmc0: starting CMD8 arg 000001aa flags 000002f5
> [ 282.120000] davinci_mmc davinci_mmc.0: CMD8, arg 0x000001aa,
> R1/R5/R6/R7
> response
> [ 282.120000] mmc0: req done (CMD8): 0: 00000000 00000000 00000000
> 00000000
> [ 282.120000] mmc0: starting CMD5 arg 00000000 flags 000002e1
> [ 282.120000] davinci_mmc davinci_mmc.0: CMD5, arg 0x00000000, R3/R4
> response
> [ 282.120000] mmc0: req done (CMD5): 0: 00000000 00000000 00000000
> 00000000
> [ 282.120000] mmc0: host doesn't support card's voltages
>
> Here is kernel config related to MMC:
> CONFIG_MMC=y
> CONFIG_MMC_DEBUG=y
> # CONFIG_MMC_UNSAFE_RESUME is not set
>
> #
> # MMC/SD/SDIO Card Drivers
> #
> CONFIG_MMC_BLOCK=y
> CONFIG_MMC_BLOCK_BOUNCE=y
> # CONFIG_SDIO_UART is not set
> # CONFIG_MMC_TEST is not set
>
> #
> # MMC/SD/SDIO Host Controller Drivers
> #
> CONFIG_MMC_SDHCI=y
> # CONFIG_MMC_SDHCI_PLTFM is not set
> # CONFIG_MMC_AT91 is not set
> # CONFIG_MMC_ATMELMCI is not set
> CONFIG_MMC_DAVINCI=y
> # CONFIG_MMC_SPI is not set
>
> Any ideas what I'm doing wrong ? I use 2 MB SD card and 1GB MMC card and I
> have the same result
>
> _______________________________________________
> Davinci-linux-open-source mailing list
> [email protected]
> http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source
>
>
--
View this message in context:
http://davinci-linux-open-source.1494791.n2.nabble.com/MMC-SD-problem-OMAPL137-EVM-tp4946329p5253224.html
Sent from the davinci-linux-open-source mailing list archive at Nabble.com.
_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source