mmc: fix spinlock bf in irq env
authorlintao <lintao@rock-chips.com>
Wed, 10 Sep 2014 07:21:15 +0000 (15:21 +0800)
committerlintao <lintao@rock-chips.com>
Wed, 10 Sep 2014 07:21:15 +0000 (15:21 +0800)
drivers/mmc/host/rk_sdmmc.c

index 586b91479e3a0d88f439702f650ab6c76de52431..4f3c0d3b9ae4206835075ac4a75c1babf86021f7 100755 (executable)
@@ -1694,10 +1694,11 @@ static void dw_mci_enable_sdio_irq(struct mmc_host *mmc, int enb)
 {
        struct dw_mci_slot *slot = mmc_priv(mmc);
        struct dw_mci *host = slot->host;
+       unsigned long flags;
        u32 int_mask;
        u32 sdio_int;
 
-        spin_lock_bh(&host->lock);
+        spin_lock_irqsave(&host->lock, flags);
 
        /* Enable/disable Slot Specific SDIO interrupt */
        int_mask = mci_readl(host, INTMASK);
@@ -1723,7 +1724,7 @@ static void dw_mci_enable_sdio_irq(struct mmc_host *mmc, int enb)
                           (int_mask & ~sdio_int));
        }
 
-       spin_unlock_bh(&host->lock);
+       spin_unlock_irqrestore(&host->lock, flags);
 }
 
 #ifdef CONFIG_MMC_DW_ROCKCHIP_SWITCH_VOLTAGE