Loading drivers/mmc/core/mmc.c +4 −1 Original line number Diff line number Diff line Loading @@ -2511,6 +2511,7 @@ static int mmc_suspend(struct mmc_host *host) int err; ktime_t start = ktime_get(); MMC_TRACE(host, "%s: Enter\n", __func__); err = _mmc_suspend(host, true); if (!err) { pm_runtime_disable(&host->card->dev); Loading @@ -2519,6 +2520,7 @@ static int mmc_suspend(struct mmc_host *host) trace_mmc_suspend(mmc_hostname(host), err, ktime_to_us(ktime_sub(ktime_get(), start))); MMC_TRACE(host, "%s: Exit err: %d\n", __func__, err); return err; } Loading Loading @@ -2594,6 +2596,7 @@ static int mmc_resume(struct mmc_host *host) int err = 0; ktime_t start = ktime_get(); MMC_TRACE(host, "%s: Enter\n", __func__); if (!(host->caps & MMC_CAP_RUNTIME_RESUME)) { err = _mmc_resume(host); pm_runtime_set_active(&host->card->dev); Loading @@ -2603,7 +2606,7 @@ static int mmc_resume(struct mmc_host *host) trace_mmc_resume(mmc_hostname(host), err, ktime_to_us(ktime_sub(ktime_get(), start))); MMC_TRACE(host, "%s: Exit err: %d\n", __func__, err); return err; } Loading drivers/mmc/core/sd.c +4 −0 Original line number Diff line number Diff line Loading @@ -1224,11 +1224,13 @@ static int mmc_sd_suspend(struct mmc_host *host) { int err; MMC_TRACE(host, "%s: Enter\n", __func__); err = _mmc_sd_suspend(host); if (!err) { pm_runtime_disable(&host->card->dev); pm_runtime_set_suspended(&host->card->dev); } MMC_TRACE(host, "%s: Exit err: %d\n", __func__, err); return err; } Loading Loading @@ -1294,12 +1296,14 @@ static int mmc_sd_resume(struct mmc_host *host) { int err = 0; MMC_TRACE(host, "%s: Enter\n", __func__); if (!(host->caps & MMC_CAP_RUNTIME_RESUME)) { err = _mmc_sd_resume(host); pm_runtime_set_active(&host->card->dev); pm_runtime_mark_last_busy(&host->card->dev); } pm_runtime_enable(&host->card->dev); MMC_TRACE(host, "%s: Exit err: %d\n", __func__, err); return err; } Loading drivers/mmc/core/sdio.c +4 −0 Original line number Diff line number Diff line Loading @@ -1036,6 +1036,7 @@ static int mmc_sdio_pre_suspend(struct mmc_host *host) */ static int mmc_sdio_suspend(struct mmc_host *host) { MMC_TRACE(host, "%s: Enter\n", __func__); if (mmc_card_keep_power(host) && mmc_card_wake_sdio_irq(host)) { mmc_claim_host(host); sdio_disable_wide(host->card); Loading @@ -1046,6 +1047,7 @@ static int mmc_sdio_suspend(struct mmc_host *host) mmc_power_off(host); else if (host->ios.clock) mmc_gate_clock(host); MMC_TRACE(host, "%s: Exit\n", __func__); return 0; } Loading @@ -1057,6 +1059,7 @@ static int mmc_sdio_resume(struct mmc_host *host) BUG_ON(!host); BUG_ON(!host->card); MMC_TRACE(host, "%s: Enter\n", __func__); /* Basic card reinitialization. */ mmc_claim_host(host); Loading Loading @@ -1108,6 +1111,7 @@ static int mmc_sdio_resume(struct mmc_host *host) host->pm_flags &= ~MMC_PM_KEEP_POWER; host->pm_flags &= ~MMC_PM_WAKE_SDIO_IRQ; MMC_TRACE(host, "%s: Exit err: %d\n", __func__, err); return err; } Loading drivers/mmc/host/cmdq_hci.c +30 −1 Original line number Diff line number Diff line Loading @@ -199,6 +199,14 @@ static void cmdq_dumpregs(struct cmdq_host *cq_host) { struct mmc_host *mmc = cq_host->mmc; MMC_TRACE(mmc, "%s: 0x0C=0x%08x 0x10=0x%08x 0x14=0x%08x 0x18=0x%08x 0x28=0x%08x 0x2C=0x%08x 0x30=0x%08x 0x34=0x%08x 0x54=0x%08x 0x58=0x%08x 0x5C=0x%08x 0x48=0x%08x\n", __func__, cmdq_readl(cq_host, CQCTL), cmdq_readl(cq_host, CQIS), cmdq_readl(cq_host, CQISTE), cmdq_readl(cq_host, CQISGE), cmdq_readl(cq_host, CQTDBR), cmdq_readl(cq_host, CQTCN), cmdq_readl(cq_host, CQDQS), cmdq_readl(cq_host, CQDPT), cmdq_readl(cq_host, CQTERRI), cmdq_readl(cq_host, CQCRI), cmdq_readl(cq_host, CQCRA), cmdq_readl(cq_host, CQCRDCT)); pr_err(DRV_NAME ": ========== REGISTER DUMP (%s)==========\n", mmc_hostname(mmc)); Loading Loading @@ -427,6 +435,7 @@ static int cmdq_enable(struct mmc_host *mmc) pm_ref_count: cmdq_runtime_pm_put(cq_host); out: MMC_TRACE(mmc, "%s: CQ enabled err: %d\n", __func__, err); return err; } Loading @@ -444,6 +453,7 @@ static void cmdq_disable_nosync(struct mmc_host *mmc, bool soft) cq_host->enabled = false; mmc_host_set_cq_disable(mmc); MMC_TRACE(mmc, "%s: CQ disabled\n", __func__); } static void cmdq_disable(struct mmc_host *mmc, bool soft) Loading Loading @@ -526,6 +536,12 @@ static void cmdq_prep_task_desc(struct mmc_request *mrq, REL_WRITE(!!(req_flags & REL_WR)) | BLK_COUNT(mrq->cmdq_req->data.blocks) | BLK_ADDR((u64)mrq->cmdq_req->blk_addr); MMC_TRACE(mrq->host, "%s: Task: 0x%08x | Args: 0x%08x | cnt: 0x%08x\n", __func__, lower_32_bits(*data), upper_32_bits(*data), mrq->cmdq_req->data.blocks); } static int cmdq_dma_map(struct mmc_host *host, struct mmc_request *mrq) Loading Loading @@ -666,6 +682,11 @@ static void cmdq_prep_dcmd_desc(struct mmc_host *mmc, dataddr = (__le64 __force *)(desc + 4); dataddr[0] = cpu_to_le64((u64)mrq->cmd->arg); cmdq_log_task_desc_history(cq_host, *task_desc, true); MMC_TRACE(mrq->host, "%s: DCMD: Task: 0x%08x | Args: 0x%08x\n", __func__, lower_32_bits(*task_desc), upper_32_bits(*task_desc)); } static void cmdq_pm_qos_vote(struct sdhci_host *host, struct mmc_request *mrq) Loading Loading @@ -744,6 +765,7 @@ ring_doorbell: cmdq_dumpregs(cq_host); BUG_ON(1); } MMC_TRACE(mmc, "%s: tag: %d\n", __func__, tag); cmdq_writel(cq_host, 1 << tag, CQTDBR); /* Commit the doorbell write immediately */ wmb(); Loading Loading @@ -786,6 +808,8 @@ irqreturn_t cmdq_irq(struct mmc_host *mmc, int err) if (!status && !err) return IRQ_NONE; MMC_TRACE(mmc, "%s: CQIS: 0x%x err: %d\n", __func__, status, err); if (err || (status & CQIS_RED)) { err_info = cmdq_readl(cq_host, CQTERRI); Loading Loading @@ -921,6 +945,8 @@ skip_cqterri: /* complete the corresponding mrq */ pr_debug("%s: completing tag -> %lu\n", mmc_hostname(mmc), tag); MMC_TRACE(mmc, "%s: completing tag -> %lu\n", __func__, tag); cmdq_finish_data(mmc, tag); } } Loading Loading @@ -998,6 +1024,8 @@ static int cmdq_halt(struct mmc_host *mmc, bool halt) retries--; continue; } else { MMC_TRACE(mmc, "%s: halt done , retries: %d\n", __func__, retries); /* halt done: re-enable legacy interrupts */ if (cq_host->ops->clear_set_irqs) cq_host->ops->clear_set_irqs(mmc, Loading @@ -1015,6 +1043,7 @@ static int cmdq_halt(struct mmc_host *mmc, bool halt) cq_host->ops->set_data_timeout(mmc, 0xf); if (cq_host->ops->clear_set_irqs) cq_host->ops->clear_set_irqs(mmc, true); MMC_TRACE(mmc, "%s: unhalt done\n", __func__); cmdq_writel(cq_host, cmdq_readl(cq_host, CQCTL) & ~HALT, CQCTL); } Loading Loading
drivers/mmc/core/mmc.c +4 −1 Original line number Diff line number Diff line Loading @@ -2511,6 +2511,7 @@ static int mmc_suspend(struct mmc_host *host) int err; ktime_t start = ktime_get(); MMC_TRACE(host, "%s: Enter\n", __func__); err = _mmc_suspend(host, true); if (!err) { pm_runtime_disable(&host->card->dev); Loading @@ -2519,6 +2520,7 @@ static int mmc_suspend(struct mmc_host *host) trace_mmc_suspend(mmc_hostname(host), err, ktime_to_us(ktime_sub(ktime_get(), start))); MMC_TRACE(host, "%s: Exit err: %d\n", __func__, err); return err; } Loading Loading @@ -2594,6 +2596,7 @@ static int mmc_resume(struct mmc_host *host) int err = 0; ktime_t start = ktime_get(); MMC_TRACE(host, "%s: Enter\n", __func__); if (!(host->caps & MMC_CAP_RUNTIME_RESUME)) { err = _mmc_resume(host); pm_runtime_set_active(&host->card->dev); Loading @@ -2603,7 +2606,7 @@ static int mmc_resume(struct mmc_host *host) trace_mmc_resume(mmc_hostname(host), err, ktime_to_us(ktime_sub(ktime_get(), start))); MMC_TRACE(host, "%s: Exit err: %d\n", __func__, err); return err; } Loading
drivers/mmc/core/sd.c +4 −0 Original line number Diff line number Diff line Loading @@ -1224,11 +1224,13 @@ static int mmc_sd_suspend(struct mmc_host *host) { int err; MMC_TRACE(host, "%s: Enter\n", __func__); err = _mmc_sd_suspend(host); if (!err) { pm_runtime_disable(&host->card->dev); pm_runtime_set_suspended(&host->card->dev); } MMC_TRACE(host, "%s: Exit err: %d\n", __func__, err); return err; } Loading Loading @@ -1294,12 +1296,14 @@ static int mmc_sd_resume(struct mmc_host *host) { int err = 0; MMC_TRACE(host, "%s: Enter\n", __func__); if (!(host->caps & MMC_CAP_RUNTIME_RESUME)) { err = _mmc_sd_resume(host); pm_runtime_set_active(&host->card->dev); pm_runtime_mark_last_busy(&host->card->dev); } pm_runtime_enable(&host->card->dev); MMC_TRACE(host, "%s: Exit err: %d\n", __func__, err); return err; } Loading
drivers/mmc/core/sdio.c +4 −0 Original line number Diff line number Diff line Loading @@ -1036,6 +1036,7 @@ static int mmc_sdio_pre_suspend(struct mmc_host *host) */ static int mmc_sdio_suspend(struct mmc_host *host) { MMC_TRACE(host, "%s: Enter\n", __func__); if (mmc_card_keep_power(host) && mmc_card_wake_sdio_irq(host)) { mmc_claim_host(host); sdio_disable_wide(host->card); Loading @@ -1046,6 +1047,7 @@ static int mmc_sdio_suspend(struct mmc_host *host) mmc_power_off(host); else if (host->ios.clock) mmc_gate_clock(host); MMC_TRACE(host, "%s: Exit\n", __func__); return 0; } Loading @@ -1057,6 +1059,7 @@ static int mmc_sdio_resume(struct mmc_host *host) BUG_ON(!host); BUG_ON(!host->card); MMC_TRACE(host, "%s: Enter\n", __func__); /* Basic card reinitialization. */ mmc_claim_host(host); Loading Loading @@ -1108,6 +1111,7 @@ static int mmc_sdio_resume(struct mmc_host *host) host->pm_flags &= ~MMC_PM_KEEP_POWER; host->pm_flags &= ~MMC_PM_WAKE_SDIO_IRQ; MMC_TRACE(host, "%s: Exit err: %d\n", __func__, err); return err; } Loading
drivers/mmc/host/cmdq_hci.c +30 −1 Original line number Diff line number Diff line Loading @@ -199,6 +199,14 @@ static void cmdq_dumpregs(struct cmdq_host *cq_host) { struct mmc_host *mmc = cq_host->mmc; MMC_TRACE(mmc, "%s: 0x0C=0x%08x 0x10=0x%08x 0x14=0x%08x 0x18=0x%08x 0x28=0x%08x 0x2C=0x%08x 0x30=0x%08x 0x34=0x%08x 0x54=0x%08x 0x58=0x%08x 0x5C=0x%08x 0x48=0x%08x\n", __func__, cmdq_readl(cq_host, CQCTL), cmdq_readl(cq_host, CQIS), cmdq_readl(cq_host, CQISTE), cmdq_readl(cq_host, CQISGE), cmdq_readl(cq_host, CQTDBR), cmdq_readl(cq_host, CQTCN), cmdq_readl(cq_host, CQDQS), cmdq_readl(cq_host, CQDPT), cmdq_readl(cq_host, CQTERRI), cmdq_readl(cq_host, CQCRI), cmdq_readl(cq_host, CQCRA), cmdq_readl(cq_host, CQCRDCT)); pr_err(DRV_NAME ": ========== REGISTER DUMP (%s)==========\n", mmc_hostname(mmc)); Loading Loading @@ -427,6 +435,7 @@ static int cmdq_enable(struct mmc_host *mmc) pm_ref_count: cmdq_runtime_pm_put(cq_host); out: MMC_TRACE(mmc, "%s: CQ enabled err: %d\n", __func__, err); return err; } Loading @@ -444,6 +453,7 @@ static void cmdq_disable_nosync(struct mmc_host *mmc, bool soft) cq_host->enabled = false; mmc_host_set_cq_disable(mmc); MMC_TRACE(mmc, "%s: CQ disabled\n", __func__); } static void cmdq_disable(struct mmc_host *mmc, bool soft) Loading Loading @@ -526,6 +536,12 @@ static void cmdq_prep_task_desc(struct mmc_request *mrq, REL_WRITE(!!(req_flags & REL_WR)) | BLK_COUNT(mrq->cmdq_req->data.blocks) | BLK_ADDR((u64)mrq->cmdq_req->blk_addr); MMC_TRACE(mrq->host, "%s: Task: 0x%08x | Args: 0x%08x | cnt: 0x%08x\n", __func__, lower_32_bits(*data), upper_32_bits(*data), mrq->cmdq_req->data.blocks); } static int cmdq_dma_map(struct mmc_host *host, struct mmc_request *mrq) Loading Loading @@ -666,6 +682,11 @@ static void cmdq_prep_dcmd_desc(struct mmc_host *mmc, dataddr = (__le64 __force *)(desc + 4); dataddr[0] = cpu_to_le64((u64)mrq->cmd->arg); cmdq_log_task_desc_history(cq_host, *task_desc, true); MMC_TRACE(mrq->host, "%s: DCMD: Task: 0x%08x | Args: 0x%08x\n", __func__, lower_32_bits(*task_desc), upper_32_bits(*task_desc)); } static void cmdq_pm_qos_vote(struct sdhci_host *host, struct mmc_request *mrq) Loading Loading @@ -744,6 +765,7 @@ ring_doorbell: cmdq_dumpregs(cq_host); BUG_ON(1); } MMC_TRACE(mmc, "%s: tag: %d\n", __func__, tag); cmdq_writel(cq_host, 1 << tag, CQTDBR); /* Commit the doorbell write immediately */ wmb(); Loading Loading @@ -786,6 +808,8 @@ irqreturn_t cmdq_irq(struct mmc_host *mmc, int err) if (!status && !err) return IRQ_NONE; MMC_TRACE(mmc, "%s: CQIS: 0x%x err: %d\n", __func__, status, err); if (err || (status & CQIS_RED)) { err_info = cmdq_readl(cq_host, CQTERRI); Loading Loading @@ -921,6 +945,8 @@ skip_cqterri: /* complete the corresponding mrq */ pr_debug("%s: completing tag -> %lu\n", mmc_hostname(mmc), tag); MMC_TRACE(mmc, "%s: completing tag -> %lu\n", __func__, tag); cmdq_finish_data(mmc, tag); } } Loading Loading @@ -998,6 +1024,8 @@ static int cmdq_halt(struct mmc_host *mmc, bool halt) retries--; continue; } else { MMC_TRACE(mmc, "%s: halt done , retries: %d\n", __func__, retries); /* halt done: re-enable legacy interrupts */ if (cq_host->ops->clear_set_irqs) cq_host->ops->clear_set_irqs(mmc, Loading @@ -1015,6 +1043,7 @@ static int cmdq_halt(struct mmc_host *mmc, bool halt) cq_host->ops->set_data_timeout(mmc, 0xf); if (cq_host->ops->clear_set_irqs) cq_host->ops->clear_set_irqs(mmc, true); MMC_TRACE(mmc, "%s: unhalt done\n", __func__); cmdq_writel(cq_host, cmdq_readl(cq_host, CQCTL) & ~HALT, CQCTL); } Loading