All of lore.kernel.org
 help / color / mirror / Atom feed
From: Victor Shih <victorshihgli@gmail.com>
To: ulf.hansson@linaro.org, adrian.hunter@intel.com
Cc: linux-mmc@vger.kernel.org, linux-kernel@vger.kernel.org,
	benchuanggli@gmail.com, HL.Liu@genesyslogic.com.tw,
	Greg.tu@genesyslogic.com.tw, takahiro.akashi@linaro.org,
	dlunev@chromium.org, Victor Shih <victorshihgli@gmail.com>,
	Ben Chuang <ben.chuang@genesyslogic.com.tw>,
	Victor Shih <victor.shih@genesyslogic.com.tw>
Subject: [PATCH V14 10/21] mmc: sdhci-uhs2: dump UHS-II registers
Date: Tue, 23 Jan 2024 14:28:16 +0800	[thread overview]
Message-ID: <20240123062827.8525-11-victorshihgli@gmail.com> (raw)
In-Reply-To: <20240123062827.8525-1-victorshihgli@gmail.com>

From: Victor Shih <victor.shih@genesyslogic.com.tw>

Dump UHS-II specific registers, if available, in sdhci_dumpregs()
for informative/debugging use.

Signed-off-by: Ben Chuang <ben.chuang@genesyslogic.com.tw>
Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
Signed-off-by: Victor Shih <victor.shih@genesyslogic.com.tw>
---

Updates in V14:
 - Use mmc_card_uhs2() to stead sdhci_uhs2_mode() in the
   sdhci_uhs2_dump_regs().

Updates in V7:
 - Use sdhci_uhs2_mode() to simplify code.

Updates in V6:
 - Remove unnecessary code.

---
 drivers/mmc/host/sdhci-uhs2.c | 30 ++++++++++++++++++++++++++++++
 drivers/mmc/host/sdhci-uhs2.h |  4 ++++
 drivers/mmc/host/sdhci.c      |  3 +++
 drivers/mmc/host/sdhci.h      |  1 +
 4 files changed, 38 insertions(+)

diff --git a/drivers/mmc/host/sdhci-uhs2.c b/drivers/mmc/host/sdhci-uhs2.c
index 608f8ad5aaed..9cb0f1b2a37d 100644
--- a/drivers/mmc/host/sdhci-uhs2.c
+++ b/drivers/mmc/host/sdhci-uhs2.c
@@ -18,6 +18,36 @@
 #define DRIVER_NAME "sdhci_uhs2"
 #define DBG(f, x...) \
 	pr_debug(DRIVER_NAME " [%s()]: " f, __func__, ## x)
+#define SDHCI_UHS2_DUMP(f, x...) \
+	pr_err("%s: " DRIVER_NAME ": " f, mmc_hostname(host->mmc), ## x)
+
+void sdhci_uhs2_dump_regs(struct sdhci_host *host)
+{
+	if (!(mmc_card_uhs2(host->mmc)))
+		return;
+
+	SDHCI_UHS2_DUMP("==================== UHS2 ==================\n");
+	SDHCI_UHS2_DUMP("Blk Size:  0x%08x | Blk Cnt:  0x%08x\n",
+			sdhci_readw(host, SDHCI_UHS2_BLOCK_SIZE),
+			sdhci_readl(host, SDHCI_UHS2_BLOCK_COUNT));
+	SDHCI_UHS2_DUMP("Cmd:       0x%08x | Trn mode: 0x%08x\n",
+			sdhci_readw(host, SDHCI_UHS2_CMD),
+			sdhci_readw(host, SDHCI_UHS2_TRANS_MODE));
+	SDHCI_UHS2_DUMP("Int Stat:  0x%08x | Dev Sel : 0x%08x\n",
+			sdhci_readw(host, SDHCI_UHS2_DEV_INT_STATUS),
+			sdhci_readb(host, SDHCI_UHS2_DEV_SELECT));
+	SDHCI_UHS2_DUMP("Dev Int Code:  0x%08x\n",
+			sdhci_readb(host, SDHCI_UHS2_DEV_INT_CODE));
+	SDHCI_UHS2_DUMP("Reset:     0x%08x | Timer:    0x%08x\n",
+			sdhci_readw(host, SDHCI_UHS2_SW_RESET),
+			sdhci_readw(host, SDHCI_UHS2_TIMER_CTRL));
+	SDHCI_UHS2_DUMP("ErrInt:    0x%08x | ErrIntEn: 0x%08x\n",
+			sdhci_readl(host, SDHCI_UHS2_INT_STATUS),
+			sdhci_readl(host, SDHCI_UHS2_INT_STATUS_ENABLE));
+	SDHCI_UHS2_DUMP("ErrSigEn:  0x%08x\n",
+			sdhci_readl(host, SDHCI_UHS2_INT_SIGNAL_ENABLE));
+}
+EXPORT_SYMBOL_GPL(sdhci_uhs2_dump_regs);
 
 /*****************************************************************************\
  *                                                                           *
diff --git a/drivers/mmc/host/sdhci-uhs2.h b/drivers/mmc/host/sdhci-uhs2.h
index e993f41ffb7f..2bfe18d29bca 100644
--- a/drivers/mmc/host/sdhci-uhs2.h
+++ b/drivers/mmc/host/sdhci-uhs2.h
@@ -174,4 +174,8 @@
 #define SDHCI_UHS2_EMBED_CTRL_PTR		0xE6
 #define SDHCI_UHS2_VENDOR_PTR			0xE8
 
+struct sdhci_host;
+
+void sdhci_uhs2_dump_regs(struct sdhci_host *host);
+
 #endif /* __SDHCI_UHS2_H */
diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index c79f73459915..27ea5b875c29 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
@@ -110,6 +110,9 @@ void sdhci_dumpregs(struct sdhci_host *host)
 		}
 	}
 
+	if (host->ops->dump_uhs2_regs)
+		host->ops->dump_uhs2_regs(host);
+
 	if (host->ops->dump_vendor_regs)
 		host->ops->dump_vendor_regs(host);
 
diff --git a/drivers/mmc/host/sdhci.h b/drivers/mmc/host/sdhci.h
index 51751e82434d..782c399fae15 100644
--- a/drivers/mmc/host/sdhci.h
+++ b/drivers/mmc/host/sdhci.h
@@ -720,6 +720,7 @@ struct sdhci_ops {
 	void	(*request_done)(struct sdhci_host *host,
 				struct mmc_request *mrq);
 	void    (*dump_vendor_regs)(struct sdhci_host *host);
+	void	(*dump_uhs2_regs)(struct sdhci_host *host);
 };
 
 #ifdef CONFIG_MMC_SDHCI_IO_ACCESSORS
-- 
2.25.1


  parent reply	other threads:[~2024-01-23  6:29 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-01-23  6:28 [PATCH V14 00/21] Add support UHS-II for GL9755 Victor Shih
2024-01-23  6:28 ` [PATCH V14 01/21] mmc: core: Cleanup printing of speed mode at card insertion Victor Shih
2024-01-23  6:28 ` [PATCH V14 02/21] mmc: core: Prepare to support SD UHS-II cards Victor Shih
2024-01-23  6:28 ` [PATCH V14 03/21] mmc: core: Announce successful insertion of an SD UHS-II card Victor Shih
2024-01-23  6:28 ` [PATCH V14 04/21] mmc: core: Extend support for mmc regulators with a vqmmc2 Victor Shih
2024-01-23  6:28 ` [PATCH V14 05/21] mmc: core: Add definitions for SD UHS-II cards Victor Shih
2024-01-23  6:28 ` [PATCH V14 06/21] mmc: core: Add New function to re-factoring the code Victor Shih
2024-01-23  6:28 ` [PATCH V14 07/21] mmc: core: Support UHS-II card control and access Victor Shih
2024-01-27  8:28   ` Victor Shih
2024-01-30  9:36     ` Adrian Hunter
2024-01-23  6:28 ` [PATCH V14 08/21] mmc: sdhci: add UHS-II related definitions in headers Victor Shih
2024-01-23  6:28 ` [PATCH V14 09/21] mmc: sdhci: add UHS-II module and add a kernel configuration Victor Shih
2024-01-23  6:28 ` Victor Shih [this message]
2024-01-23  6:28 ` [PATCH V14 11/21] mmc: sdhci-uhs2: add reset function function Victor Shih
2024-01-23  6:28 ` [PATCH V14 12/21] mmc: sdhci-uhs2: add set_power() to support vdd2 Victor Shih
2024-01-23  6:28 ` [PATCH V14 13/21] mmc: sdhci-uhs2: add set_timeout() Victor Shih
2024-01-23  6:28 ` [PATCH V14 14/21] mmc: sdhci-uhs2: add set_ios() Victor Shih
2024-01-23  6:28 ` [PATCH V14 15/21] mmc: sdhci-uhs2: add uhs2_control() to initialise the interface Victor Shih
2024-01-23  6:28 ` [PATCH V14 16/21] mmc: sdhci-uhs2: add request() and others Victor Shih
2024-01-30 15:31   ` Adrian Hunter
2024-01-23  6:28 ` [PATCH V14 17/21] mmc: sdhci-uhs2: add irq() " Victor Shih
2024-01-23  6:28 ` [PATCH V14 18/21] mmc: sdhci-uhs2: add add_host() and others to set up the driver Victor Shih
2024-01-23  6:28 ` [PATCH V14 19/21] mmc: sdhci-uhs2: add pre-detect_init hook Victor Shih
2024-01-23  6:28 ` [PATCH V14 20/21] mmc: sdhci-pci: add UHS-II support framework Victor Shih
2024-01-23  6:28 ` [PATCH V14 21/21] mmc: sdhci-pci-gli: enable UHS-II mode for GL9755 Victor Shih
2024-03-16 19:54 ` [PATCH V14 00/21] Add support UHS-II " Victor Shih

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240123062827.8525-11-victorshihgli@gmail.com \
    --to=victorshihgli@gmail.com \
    --cc=Greg.tu@genesyslogic.com.tw \
    --cc=HL.Liu@genesyslogic.com.tw \
    --cc=adrian.hunter@intel.com \
    --cc=ben.chuang@genesyslogic.com.tw \
    --cc=benchuanggli@gmail.com \
    --cc=dlunev@chromium.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mmc@vger.kernel.org \
    --cc=takahiro.akashi@linaro.org \
    --cc=ulf.hansson@linaro.org \
    --cc=victor.shih@genesyslogic.com.tw \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.