@@ -435,7 +435,8 @@ static int meson_mmc_clk_init(struct meson_host *host)
435
435
clk_reg |= FIELD_PREP (CLK_CORE_PHASE_MASK , CLK_PHASE_180 );
436
436
clk_reg |= FIELD_PREP (CLK_TX_PHASE_MASK , CLK_PHASE_0 );
437
437
clk_reg |= FIELD_PREP (CLK_RX_PHASE_MASK , CLK_PHASE_0 );
438
- clk_reg |= CLK_IRQ_SDIO_SLEEP (host );
438
+ if (host -> mmc -> caps & MMC_CAP_SDIO_IRQ )
439
+ clk_reg |= CLK_IRQ_SDIO_SLEEP (host );
439
440
writel (clk_reg , host -> regs + SD_EMMC_CLOCK );
440
441
441
442
/* get the mux parents */
@@ -948,16 +949,18 @@ static irqreturn_t meson_mmc_irq(int irq, void *dev_id)
948
949
{
949
950
struct meson_host * host = dev_id ;
950
951
struct mmc_command * cmd ;
951
- u32 status , raw_status ;
952
+ u32 status , raw_status , irq_mask = IRQ_EN_MASK ;
952
953
irqreturn_t ret = IRQ_NONE ;
953
954
955
+ if (host -> mmc -> caps & MMC_CAP_SDIO_IRQ )
956
+ irq_mask |= IRQ_SDIO ;
954
957
raw_status = readl (host -> regs + SD_EMMC_STATUS );
955
- status = raw_status & ( IRQ_EN_MASK | IRQ_SDIO ) ;
958
+ status = raw_status & irq_mask ;
956
959
957
960
if (!status ) {
958
961
dev_dbg (host -> dev ,
959
- "Unexpected IRQ! irq_en 0x%08lx - status 0x%08x\n" ,
960
- IRQ_EN_MASK | IRQ_SDIO , raw_status );
962
+ "Unexpected IRQ! irq_en 0x%08x - status 0x%08x\n" ,
963
+ irq_mask , raw_status );
961
964
return IRQ_NONE ;
962
965
}
963
966
@@ -1204,6 +1207,11 @@ static int meson_mmc_probe(struct platform_device *pdev)
1204
1207
goto free_host ;
1205
1208
}
1206
1209
1210
+ mmc -> caps |= MMC_CAP_CMD23 ;
1211
+
1212
+ if (mmc -> caps & MMC_CAP_SDIO_IRQ )
1213
+ mmc -> caps2 |= MMC_CAP2_SDIO_IRQ_NOTHREAD ;
1214
+
1207
1215
host -> data = (struct meson_mmc_data * )
1208
1216
of_device_get_match_data (& pdev -> dev );
1209
1217
if (!host -> data ) {
@@ -1277,11 +1285,6 @@ static int meson_mmc_probe(struct platform_device *pdev)
1277
1285
1278
1286
spin_lock_init (& host -> lock );
1279
1287
1280
- mmc -> caps |= MMC_CAP_CMD23 ;
1281
-
1282
- if (mmc -> caps & MMC_CAP_SDIO_IRQ )
1283
- mmc -> caps2 |= MMC_CAP2_SDIO_IRQ_NOTHREAD ;
1284
-
1285
1288
if (host -> dram_access_quirk ) {
1286
1289
/* Limit segments to 1 due to low available sram memory */
1287
1290
mmc -> max_segs = 1 ;
0 commit comments