mmc: mxcmmc: Fix bug when card is present during boot
authorAlexander Shiyan <shc_work@mail.ru>
Sat, 6 Apr 2013 06:13:31 +0000 (10:13 +0400)
committerChris Ball <cjb@laptop.org>
Fri, 12 Apr 2013 18:12:50 +0000 (14:12 -0400)
This patch fixes bug when card is present during boot.
Bug was introduced due commit "mmc: mxcmmc: fix bug that may block a
data transfer forever". When a card is present "mxcmci_setup_data"
function is executed, but the timer is not initialized.

...
i.MX SDHC driver
mmc0: SD Status: Invalid Allocation Unit size.
mmc0: new SD card at address b368
mmcblk0: mmc0:b368 SDC   1.91 GiB
------------[ cut here ]------------
kernel BUG at kernel/timer.c:729!
Internal error: Oops - BUG: 0 [#1] PREEMPT ARM
CPU: 0    Not tainted  (3.9.0-rc5-next-20130404 #2)
PC is at mod_timer+0x168/0x198
LR is at mxcmci_request+0x21c/0x328
...

Signed-off-by: Alexander Shiyan <shc_work@mail.ru>
Acked-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Chris Ball <cjb@laptop.org>
drivers/mmc/host/mxcmmc.c

index a72936eea6fa3953435b2c2809292e1ad138f6db..28e527ebde7557cb54ee6b0ac671d3829763c3dc 100644 (file)
@@ -1052,12 +1052,12 @@ static int mxcmci_probe(struct platform_device *pdev)
                        goto out_free_irq;
        }
 
-       mmc_add_host(mmc);
-
        init_timer(&host->watchdog);
        host->watchdog.function = &mxcmci_watchdog;
        host->watchdog.data = (unsigned long)mmc;
 
+       mmc_add_host(mmc);
+
        return 0;
 
 out_free_irq: