Merge "mmc: sdhci: Add mmc tracing events for legacy mode."
This commit is contained in:
commit
f0cd2ed1ad
2 changed files with 41 additions and 1 deletions
|
@ -2,7 +2,7 @@
|
|||
* drivers/mmc/host/sdhci-msm.c - Qualcomm Technologies, Inc. MSM SDHCI Platform
|
||||
* driver source file
|
||||
*
|
||||
* Copyright (c) 2012-2016, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2012-2017, The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 and
|
||||
|
@ -3293,6 +3293,11 @@ void sdhci_msm_dump_vendor_regs(struct sdhci_host *host)
|
|||
if (host->cq_host)
|
||||
sdhci_msm_cmdq_dump_debug_ram(host);
|
||||
|
||||
MMC_TRACE(host->mmc, "Data cnt: 0x%08x | Fifo cnt: 0x%08x\n",
|
||||
sdhci_msm_readl_relaxed(host,
|
||||
msm_host_offset->CORE_MCI_DATA_CNT),
|
||||
sdhci_msm_readl_relaxed(host,
|
||||
msm_host_offset->CORE_MCI_FIFO_CNT));
|
||||
pr_info("Data cnt: 0x%08x | Fifo cnt: 0x%08x | Int sts: 0x%08x\n",
|
||||
sdhci_msm_readl_relaxed(host,
|
||||
msm_host_offset->CORE_MCI_DATA_CNT),
|
||||
|
|
|
@ -111,6 +111,17 @@ static void sdhci_dump_state(struct sdhci_host *host)
|
|||
|
||||
static void sdhci_dumpregs(struct sdhci_host *host)
|
||||
{
|
||||
MMC_TRACE(host->mmc,
|
||||
"%s: 0x04=0x%08x 0x06=0x%08x 0x0E=0x%08x 0x30=0x%08x 0x34=0x%08x 0x38=0x%08x\n",
|
||||
__func__,
|
||||
sdhci_readw(host, SDHCI_BLOCK_SIZE),
|
||||
sdhci_readw(host, SDHCI_BLOCK_COUNT),
|
||||
sdhci_readw(host, SDHCI_COMMAND),
|
||||
sdhci_readl(host, SDHCI_INT_STATUS),
|
||||
sdhci_readl(host, SDHCI_INT_ENABLE),
|
||||
sdhci_readl(host, SDHCI_SIGNAL_ENABLE));
|
||||
mmc_stop_tracing(host->mmc);
|
||||
|
||||
pr_info(DRIVER_NAME ": =========== REGISTER DUMP (%s)===========\n",
|
||||
mmc_hostname(host->mmc));
|
||||
|
||||
|
@ -1013,6 +1024,11 @@ static void sdhci_prepare_data(struct sdhci_host *host, struct mmc_command *cmd)
|
|||
/* Set the DMA boundary value and block size */
|
||||
sdhci_set_blk_size_reg(host, data->blksz, SDHCI_DEFAULT_BOUNDARY_ARG);
|
||||
sdhci_writew(host, data->blocks, SDHCI_BLOCK_COUNT);
|
||||
MMC_TRACE(host->mmc,
|
||||
"%s: 0x28=0x%08x 0x3E=0x%08x 0x06=0x%08x\n", __func__,
|
||||
sdhci_readb(host, SDHCI_HOST_CONTROL),
|
||||
sdhci_readw(host, SDHCI_HOST_CONTROL2),
|
||||
sdhci_readw(host, SDHCI_BLOCK_COUNT));
|
||||
}
|
||||
|
||||
static void sdhci_set_transfer_mode(struct sdhci_host *host,
|
||||
|
@ -1071,6 +1087,9 @@ static void sdhci_set_transfer_mode(struct sdhci_host *host,
|
|||
mode |= SDHCI_TRNS_DMA;
|
||||
|
||||
sdhci_writew(host, mode, SDHCI_TRANSFER_MODE);
|
||||
MMC_TRACE(host->mmc, "%s: 0x00=0x%08x 0x0C=0x%08x\n", __func__,
|
||||
sdhci_readw(host, SDHCI_ARGUMENT2),
|
||||
sdhci_readw(host, SDHCI_TRANSFER_MODE));
|
||||
}
|
||||
|
||||
static void sdhci_finish_data(struct sdhci_host *host)
|
||||
|
@ -1082,6 +1101,8 @@ static void sdhci_finish_data(struct sdhci_host *host)
|
|||
data = host->data;
|
||||
host->data = NULL;
|
||||
|
||||
MMC_TRACE(host->mmc, "%s: 0x24=0x%08x\n", __func__,
|
||||
sdhci_readl(host, SDHCI_PRESENT_STATE));
|
||||
if (host->flags & SDHCI_REQ_USE_DMA) {
|
||||
if (host->flags & SDHCI_USE_ADMA)
|
||||
sdhci_adma_table_post(host, data);
|
||||
|
@ -1210,6 +1231,11 @@ void sdhci_send_command(struct sdhci_host *host, struct mmc_command *cmd)
|
|||
if (cmd->data)
|
||||
host->data_start_time = ktime_get();
|
||||
trace_mmc_cmd_rw_start(cmd->opcode, cmd->arg, cmd->flags);
|
||||
MMC_TRACE(host->mmc,
|
||||
"%s: updated 0x8=0x%08x 0xC=0x%08x 0xE=0x%08x\n", __func__,
|
||||
sdhci_readl(host, SDHCI_ARGUMENT),
|
||||
sdhci_readw(host, SDHCI_TRANSFER_MODE),
|
||||
sdhci_readw(host, SDHCI_COMMAND));
|
||||
sdhci_writew(host, SDHCI_MAKE_CMD(cmd->opcode, flags), SDHCI_COMMAND);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(sdhci_send_command);
|
||||
|
@ -1231,8 +1257,14 @@ static void sdhci_finish_command(struct sdhci_host *host)
|
|||
sdhci_readb(host,
|
||||
SDHCI_RESPONSE + (3-i)*4-1);
|
||||
}
|
||||
MMC_TRACE(host->mmc,
|
||||
"%s: resp 0: 0x%08x resp 1: 0x%08x resp 2: 0x%08x resp 3: 0x%08x\n",
|
||||
__func__, host->cmd->resp[0], host->cmd->resp[1],
|
||||
host->cmd->resp[2], host->cmd->resp[3]);
|
||||
} else {
|
||||
host->cmd->resp[0] = sdhci_readl(host, SDHCI_RESPONSE);
|
||||
MMC_TRACE(host->mmc, "%s: resp 0: 0x%08x\n",
|
||||
__func__, host->cmd->resp[0]);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3169,6 +3201,9 @@ static irqreturn_t sdhci_irq(int irq, void *dev_id)
|
|||
goto out;
|
||||
}
|
||||
|
||||
MMC_TRACE(host->mmc,
|
||||
"%s: intmask: 0x%x\n", __func__, intmask);
|
||||
|
||||
if (intmask & SDHCI_INT_AUTO_CMD_ERR)
|
||||
host->auto_cmd_err_sts = sdhci_readw(host,
|
||||
SDHCI_AUTO_CMD_ERR);
|
||||
|
|
Loading…
Add table
Reference in a new issue