Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'mmc-4.1-rc2' of git://git.linaro.org/people/ulf.hansson/mmc

Pull MMC fixes from Ulf Hansson:
"MMC core:
- Don't access RPMB partitions for normal read/write
- Fix hibernation restore sequence

MMC host:
- dw_mmc: Fix card detection for non removable cards
- dw_mmc: Fix sglist issue in 32-bit mode
- sh_mmcif: Fix timeout value for command request"

* tag 'mmc-4.1-rc2' of git://git.linaro.org/people/ulf.hansson/mmc:
mmc: dw_mmc: dw_mci_get_cd check MMC_CAP_NONREMOVABLE
mmc: dw_mmc: init desc in dw_mci_idmac_init
mmc: card: Don't access RPMB partitions for normal read/write
mmc: sh_mmcif: Fix timeout value for command request
mmc: core: add missing pm event in mmc_pm_notify to fix hib restore

+22 -4
+12
drivers/mmc/card/block.c
··· 1029 1029 md->reset_done &= ~type; 1030 1030 } 1031 1031 1032 + int mmc_access_rpmb(struct mmc_queue *mq) 1033 + { 1034 + struct mmc_blk_data *md = mq->data; 1035 + /* 1036 + * If this is a RPMB partition access, return ture 1037 + */ 1038 + if (md && md->part_type == EXT_CSD_PART_CONFIG_ACC_RPMB) 1039 + return true; 1040 + 1041 + return false; 1042 + } 1043 + 1032 1044 static int mmc_blk_issue_discard_rq(struct mmc_queue *mq, struct request *req) 1033 1045 { 1034 1046 struct mmc_blk_data *md = mq->data;
+1 -1
drivers/mmc/card/queue.c
··· 38 38 return BLKPREP_KILL; 39 39 } 40 40 41 - if (mq && mmc_card_removed(mq->card)) 41 + if (mq && (mmc_card_removed(mq->card) || mmc_access_rpmb(mq))) 42 42 return BLKPREP_KILL; 43 43 44 44 req->cmd_flags |= REQ_DONTPREP;
+2
drivers/mmc/card/queue.h
··· 73 73 extern int mmc_packed_init(struct mmc_queue *, struct mmc_card *); 74 74 extern void mmc_packed_clean(struct mmc_queue *); 75 75 76 + extern int mmc_access_rpmb(struct mmc_queue *); 77 + 76 78 #endif
+1
drivers/mmc/core/core.c
··· 2651 2651 switch (mode) { 2652 2652 case PM_HIBERNATION_PREPARE: 2653 2653 case PM_SUSPEND_PREPARE: 2654 + case PM_RESTORE_PREPARE: 2654 2655 spin_lock_irqsave(&host->lock, flags); 2655 2656 host->rescan_disable = 1; 2656 2657 spin_unlock_irqrestore(&host->lock, flags);
+5 -2
drivers/mmc/host/dw_mmc.c
··· 589 589 host->ring_size = PAGE_SIZE / sizeof(struct idmac_desc); 590 590 591 591 /* Forward link the descriptor list */ 592 - for (i = 0, p = host->sg_cpu; i < host->ring_size - 1; i++, p++) 592 + for (i = 0, p = host->sg_cpu; i < host->ring_size - 1; i++, p++) { 593 593 p->des3 = cpu_to_le32(host->sg_dma + 594 594 (sizeof(struct idmac_desc) * (i + 1))); 595 + p->des1 = 0; 596 + } 595 597 596 598 /* Set the last descriptor as the end-of-ring descriptor */ 597 599 p->des3 = cpu_to_le32(host->sg_dma); ··· 1302 1300 int gpio_cd = mmc_gpio_get_cd(mmc); 1303 1301 1304 1302 /* Use platform get_cd function, else try onboard card detect */ 1305 - if (brd->quirks & DW_MCI_QUIRK_BROKEN_CARD_DETECTION) 1303 + if ((brd->quirks & DW_MCI_QUIRK_BROKEN_CARD_DETECTION) || 1304 + (mmc->caps & MMC_CAP_NONREMOVABLE)) 1306 1305 present = 1; 1307 1306 else if (!IS_ERR_VALUE(gpio_cd)) 1308 1307 present = gpio_cd;
+1 -1
drivers/mmc/host/sh_mmcif.c
··· 1408 1408 host = mmc_priv(mmc); 1409 1409 host->mmc = mmc; 1410 1410 host->addr = reg; 1411 - host->timeout = msecs_to_jiffies(1000); 1411 + host->timeout = msecs_to_jiffies(10000); 1412 1412 host->ccs_enable = !pd || !pd->ccs_unsupported; 1413 1413 host->clk_ctrl2_enable = pd && pd->clk_ctrl2_present; 1414 1414