This patch series attempts to clean up some debug code paths in the
ufs-qcom driver.
Andrew Halaney (4):
scsi: ufs: ufs-qcom: Drop unnecessary NULL checks
scsi: ufs: ufs-qcom: Clean up dbg_register_dump
scsi: ufs: ufs-qcom: Remove usage of dbg_print_en
scsi: ufs: ufs-qcom: Use dev_err() where possible
drivers/ufs/host/ufs-qcom.c | 135 +++++++++++++-----------------------
drivers/ufs/host/ufs-qcom.h | 11 ---
2 files changed, 48 insertions(+), 98 deletions(-)
--
2.38.1
The current implementation has abstractions that don't give any
benefits.
The print_fn callback (and its only callback implementation,
ufs_qcom_dump_regs_wrapper()) was only used by
ufs_qcom_print_hw_debug_reg_all() and just multiplies len by 4
before calling ufshcd_dump_regs().
ufs_qcom_print_hw_debug_reg_all() is only called by
ufs_qcom_dump_dbg_regs().
There's no real gain in those abstractions, so let's just do the work
directly in ufs_qcom_dump_dbg_regs() (the dbg_register_dump callback).
Signed-off-by: Andrew Halaney <[email protected]>
---
drivers/ufs/host/ufs-qcom.c | 106 ++++++++++++++++--------------------
1 file changed, 47 insertions(+), 59 deletions(-)
diff --git a/drivers/ufs/host/ufs-qcom.c b/drivers/ufs/host/ufs-qcom.c
index 70e25f9f8ca8..1b0dfbbdcdf3 100644
--- a/drivers/ufs/host/ufs-qcom.c
+++ b/drivers/ufs/host/ufs-qcom.c
@@ -52,12 +52,6 @@ static struct ufs_qcom_host *rcdev_to_ufs_host(struct reset_controller_dev *rcd)
return container_of(rcd, struct ufs_qcom_host, rcdev);
}
-static void ufs_qcom_dump_regs_wrapper(struct ufs_hba *hba, int offset, int len,
- const char *prefix, void *priv)
-{
- ufshcd_dump_regs(hba, offset, len * 4, prefix);
-}
-
static int ufs_qcom_host_clk_get(struct device *dev,
const char *name, struct clk **clk_out, bool optional)
{
@@ -1195,58 +1189,6 @@ static int ufs_qcom_clk_scale_notify(struct ufs_hba *hba,
return err;
}
-static void ufs_qcom_print_hw_debug_reg_all(struct ufs_hba *hba,
- void *priv, void (*print_fn)(struct ufs_hba *hba,
- int offset, int num_regs, const char *str, void *priv))
-{
- u32 reg;
- struct ufs_qcom_host *host;
-
- host = ufshcd_get_variant(hba);
- if (!(host->dbg_print_en & UFS_QCOM_DBG_PRINT_REGS_EN))
- return;
-
- reg = ufs_qcom_get_debug_reg_offset(host, UFS_UFS_DBG_RD_REG_OCSC);
- print_fn(hba, reg, 44, "UFS_UFS_DBG_RD_REG_OCSC ", priv);
-
- reg = ufshcd_readl(hba, REG_UFS_CFG1);
- reg |= UTP_DBG_RAMS_EN;
- ufshcd_writel(hba, reg, REG_UFS_CFG1);
-
- reg = ufs_qcom_get_debug_reg_offset(host, UFS_UFS_DBG_RD_EDTL_RAM);
- print_fn(hba, reg, 32, "UFS_UFS_DBG_RD_EDTL_RAM ", priv);
-
- reg = ufs_qcom_get_debug_reg_offset(host, UFS_UFS_DBG_RD_DESC_RAM);
- print_fn(hba, reg, 128, "UFS_UFS_DBG_RD_DESC_RAM ", priv);
-
- reg = ufs_qcom_get_debug_reg_offset(host, UFS_UFS_DBG_RD_PRDT_RAM);
- print_fn(hba, reg, 64, "UFS_UFS_DBG_RD_PRDT_RAM ", priv);
-
- /* clear bit 17 - UTP_DBG_RAMS_EN */
- ufshcd_rmwl(hba, UTP_DBG_RAMS_EN, 0, REG_UFS_CFG1);
-
- reg = ufs_qcom_get_debug_reg_offset(host, UFS_DBG_RD_REG_UAWM);
- print_fn(hba, reg, 4, "UFS_DBG_RD_REG_UAWM ", priv);
-
- reg = ufs_qcom_get_debug_reg_offset(host, UFS_DBG_RD_REG_UARM);
- print_fn(hba, reg, 4, "UFS_DBG_RD_REG_UARM ", priv);
-
- reg = ufs_qcom_get_debug_reg_offset(host, UFS_DBG_RD_REG_TXUC);
- print_fn(hba, reg, 48, "UFS_DBG_RD_REG_TXUC ", priv);
-
- reg = ufs_qcom_get_debug_reg_offset(host, UFS_DBG_RD_REG_RXUC);
- print_fn(hba, reg, 27, "UFS_DBG_RD_REG_RXUC ", priv);
-
- reg = ufs_qcom_get_debug_reg_offset(host, UFS_DBG_RD_REG_DFC);
- print_fn(hba, reg, 19, "UFS_DBG_RD_REG_DFC ", priv);
-
- reg = ufs_qcom_get_debug_reg_offset(host, UFS_DBG_RD_REG_TRLUT);
- print_fn(hba, reg, 34, "UFS_DBG_RD_REG_TRLUT ", priv);
-
- reg = ufs_qcom_get_debug_reg_offset(host, UFS_DBG_RD_REG_TMRLUT);
- print_fn(hba, reg, 9, "UFS_DBG_RD_REG_TMRLUT ", priv);
-}
-
static void ufs_qcom_enable_test_bus(struct ufs_qcom_host *host)
{
if (host->dbg_print_en & UFS_QCOM_DBG_PRINT_TEST_BUS_EN) {
@@ -1365,10 +1307,56 @@ int ufs_qcom_testbus_config(struct ufs_qcom_host *host)
static void ufs_qcom_dump_dbg_regs(struct ufs_hba *hba)
{
+ u32 reg;
+ struct ufs_qcom_host *host;
+
+ host = ufshcd_get_variant(hba);
+
ufshcd_dump_regs(hba, REG_UFS_SYS1CLK_1US, 16 * 4,
"HCI Vendor Specific Registers ");
- ufs_qcom_print_hw_debug_reg_all(hba, NULL, ufs_qcom_dump_regs_wrapper);
+ if (!(host->dbg_print_en & UFS_QCOM_DBG_PRINT_REGS_EN))
+ return;
+
+ reg = ufs_qcom_get_debug_reg_offset(host, UFS_UFS_DBG_RD_REG_OCSC);
+ ufshcd_dump_regs(hba, reg, 44 * 4, "UFS_UFS_DBG_RD_REG_OCSC ");
+
+ reg = ufshcd_readl(hba, REG_UFS_CFG1);
+ reg |= UTP_DBG_RAMS_EN;
+ ufshcd_writel(hba, reg, REG_UFS_CFG1);
+
+ reg = ufs_qcom_get_debug_reg_offset(host, UFS_UFS_DBG_RD_EDTL_RAM);
+ ufshcd_dump_regs(hba, reg, 32 * 4, "UFS_UFS_DBG_RD_EDTL_RAM ");
+
+ reg = ufs_qcom_get_debug_reg_offset(host, UFS_UFS_DBG_RD_DESC_RAM);
+ ufshcd_dump_regs(hba, reg, 128 * 4, "UFS_UFS_DBG_RD_DESC_RAM ");
+
+ reg = ufs_qcom_get_debug_reg_offset(host, UFS_UFS_DBG_RD_PRDT_RAM);
+ ufshcd_dump_regs(hba, reg, 64 * 4, "UFS_UFS_DBG_RD_PRDT_RAM ");
+
+ /* clear bit 17 - UTP_DBG_RAMS_EN */
+ ufshcd_rmwl(hba, UTP_DBG_RAMS_EN, 0, REG_UFS_CFG1);
+
+ reg = ufs_qcom_get_debug_reg_offset(host, UFS_DBG_RD_REG_UAWM);
+ ufshcd_dump_regs(hba, reg, 4 * 4, "UFS_DBG_RD_REG_UAWM ");
+
+ reg = ufs_qcom_get_debug_reg_offset(host, UFS_DBG_RD_REG_UARM);
+ ufshcd_dump_regs(hba, reg, 4 * 4, "UFS_DBG_RD_REG_UARM ");
+
+ reg = ufs_qcom_get_debug_reg_offset(host, UFS_DBG_RD_REG_TXUC);
+ ufshcd_dump_regs(hba, reg, 48 * 4, "UFS_DBG_RD_REG_TXUC ");
+
+ reg = ufs_qcom_get_debug_reg_offset(host, UFS_DBG_RD_REG_RXUC);
+ ufshcd_dump_regs(hba, reg, 27 * 4, "UFS_DBG_RD_REG_RXUC ");
+
+ reg = ufs_qcom_get_debug_reg_offset(host, UFS_DBG_RD_REG_DFC);
+ ufshcd_dump_regs(hba, reg, 19 * 4, "UFS_DBG_RD_REG_DFC ");
+
+ reg = ufs_qcom_get_debug_reg_offset(host, UFS_DBG_RD_REG_TRLUT);
+ ufshcd_dump_regs(hba, reg, 34 * 4, "UFS_DBG_RD_REG_TRLUT ");
+
+ reg = ufs_qcom_get_debug_reg_offset(host, UFS_DBG_RD_REG_TMRLUT);
+ ufshcd_dump_regs(hba, reg, 9 * 4, "UFS_DBG_RD_REG_TMRLUT ");
}
/**
--
2.38.1
This bitmask is unconditionally set in the current driver,
so all conditionals using it can be considered bit rot.
Let's take the current default conditional path everywhere and remove
dbg_print_en from the driver.
Signed-off-by: Andrew Halaney <[email protected]>
---
drivers/ufs/host/ufs-qcom.c | 18 +++---------------
drivers/ufs/host/ufs-qcom.h | 11 -----------
2 files changed, 3 insertions(+), 26 deletions(-)
diff --git a/drivers/ufs/host/ufs-qcom.c b/drivers/ufs/host/ufs-qcom.c
index 1b0dfbbdcdf3..b1fcff1fad0c 100644
--- a/drivers/ufs/host/ufs-qcom.c
+++ b/drivers/ufs/host/ufs-qcom.c
@@ -22,9 +22,6 @@
#include <ufs/ufshci.h>
#include <ufs/ufs_quirks.h>
-#define UFS_QCOM_DEFAULT_DBG_PRINT_EN \
- (UFS_QCOM_DBG_PRINT_REGS_EN | UFS_QCOM_DBG_PRINT_TEST_BUS_EN)
-
enum {
TSTBUS_UAWM,
TSTBUS_UARM,
@@ -1040,7 +1037,6 @@ static int ufs_qcom_init(struct ufs_hba *hba)
if (hba->dev->id < MAX_UFS_QCOM_HOSTS)
ufs_qcom_hosts[hba->dev->id] = host;
- host->dbg_print_en |= UFS_QCOM_DEFAULT_DBG_PRINT_EN;
ufs_qcom_get_default_testbus_cfg(host);
err = ufs_qcom_testbus_config(host);
if (err) {
@@ -1191,14 +1187,9 @@ static int ufs_qcom_clk_scale_notify(struct ufs_hba *hba,
static void ufs_qcom_enable_test_bus(struct ufs_qcom_host *host)
{
- if (host->dbg_print_en & UFS_QCOM_DBG_PRINT_TEST_BUS_EN) {
- ufshcd_rmwl(host->hba, UFS_REG_TEST_BUS_EN,
- UFS_REG_TEST_BUS_EN, REG_UFS_CFG1);
- ufshcd_rmwl(host->hba, TEST_BUS_EN, TEST_BUS_EN, REG_UFS_CFG1);
- } else {
- ufshcd_rmwl(host->hba, UFS_REG_TEST_BUS_EN, 0, REG_UFS_CFG1);
- ufshcd_rmwl(host->hba, TEST_BUS_EN, 0, REG_UFS_CFG1);
- }
+ ufshcd_rmwl(host->hba, UFS_REG_TEST_BUS_EN,
+ UFS_REG_TEST_BUS_EN, REG_UFS_CFG1);
+ ufshcd_rmwl(host->hba, TEST_BUS_EN, TEST_BUS_EN, REG_UFS_CFG1);
}
static void ufs_qcom_get_default_testbus_cfg(struct ufs_qcom_host *host)
@@ -1315,9 +1306,6 @@ static void ufs_qcom_dump_dbg_regs(struct ufs_hba *hba)
ufshcd_dump_regs(hba, REG_UFS_SYS1CLK_1US, 16 * 4,
"HCI Vendor Specific Registers ");
- if (!(host->dbg_print_en & UFS_QCOM_DBG_PRINT_REGS_EN))
- return;
-
reg = ufs_qcom_get_debug_reg_offset(host, UFS_UFS_DBG_RD_REG_OCSC);
ufshcd_dump_regs(hba, reg, 44 * 4, "UFS_UFS_DBG_RD_REG_OCSC ");
diff --git a/drivers/ufs/host/ufs-qcom.h b/drivers/ufs/host/ufs-qcom.h
index 44466a395bb5..e567e4636357 100644
--- a/drivers/ufs/host/ufs-qcom.h
+++ b/drivers/ufs/host/ufs-qcom.h
@@ -113,15 +113,6 @@ enum {
MASK_CLK_NS_REG = 0xFFFC00,
};
-/* QCOM UFS debug print bit mask */
-#define UFS_QCOM_DBG_PRINT_REGS_EN BIT(0)
-#define UFS_QCOM_DBG_PRINT_ICE_REGS_EN BIT(1)
-#define UFS_QCOM_DBG_PRINT_TEST_BUS_EN BIT(2)
-
-#define UFS_QCOM_DBG_PRINT_ALL \
- (UFS_QCOM_DBG_PRINT_REGS_EN | UFS_QCOM_DBG_PRINT_ICE_REGS_EN | \
- UFS_QCOM_DBG_PRINT_TEST_BUS_EN)
-
/* QUniPro Vendor specific attributes */
#define PA_VS_CONFIG_REG1 0x9000
#define DME_VS_CORE_CLK_CTRL 0xD002
@@ -212,8 +203,6 @@ struct ufs_qcom_host {
u32 dev_ref_clk_en_mask;
- /* Bitmask for enabling debug prints */
- u32 dbg_print_en;
struct ufs_qcom_testbus testbus;
/* Reset control of HCI */
--
2.38.1
On Thu, Dec 01 2022 at 15:09 -0800, Andrew Halaney wrote:
>This patch series attempts to clean up some debug code paths in the
>ufs-qcom driver.
>
>Andrew Halaney (4):
> scsi: ufs: ufs-qcom: Drop unnecessary NULL checks
> scsi: ufs: ufs-qcom: Clean up dbg_register_dump
> scsi: ufs: ufs-qcom: Remove usage of dbg_print_en
> scsi: ufs: ufs-qcom: Use dev_err() where possible
>
> drivers/ufs/host/ufs-qcom.c | 135 +++++++++++++-----------------------
> drivers/ufs/host/ufs-qcom.h | 11 ---
> 2 files changed, 48 insertions(+), 98 deletions(-)
>
>--
>2.38.1
>
>
This series makes sense to me. Thanks.
Reviewed-by: Asutosh Das <[email protected]>
-asd
On Thu, Dec 01, 2022 at 05:08:09PM -0600, Andrew Halaney wrote:
> This bitmask is unconditionally set in the current driver,
> so all conditionals using it can be considered bit rot.
>
> Let's take the current default conditional path everywhere and remove
> dbg_print_en from the driver.
>
> Signed-off-by: Andrew Halaney <[email protected]>
Reviewed-by: Manivannan Sadhasivam <[email protected]>
Thanks,
Mani
> ---
> drivers/ufs/host/ufs-qcom.c | 18 +++---------------
> drivers/ufs/host/ufs-qcom.h | 11 -----------
> 2 files changed, 3 insertions(+), 26 deletions(-)
>
> diff --git a/drivers/ufs/host/ufs-qcom.c b/drivers/ufs/host/ufs-qcom.c
> index 1b0dfbbdcdf3..b1fcff1fad0c 100644
> --- a/drivers/ufs/host/ufs-qcom.c
> +++ b/drivers/ufs/host/ufs-qcom.c
> @@ -22,9 +22,6 @@
> #include <ufs/ufshci.h>
> #include <ufs/ufs_quirks.h>
>
> -#define UFS_QCOM_DEFAULT_DBG_PRINT_EN \
> - (UFS_QCOM_DBG_PRINT_REGS_EN | UFS_QCOM_DBG_PRINT_TEST_BUS_EN)
> -
> enum {
> TSTBUS_UAWM,
> TSTBUS_UARM,
> @@ -1040,7 +1037,6 @@ static int ufs_qcom_init(struct ufs_hba *hba)
> if (hba->dev->id < MAX_UFS_QCOM_HOSTS)
> ufs_qcom_hosts[hba->dev->id] = host;
>
> - host->dbg_print_en |= UFS_QCOM_DEFAULT_DBG_PRINT_EN;
> ufs_qcom_get_default_testbus_cfg(host);
> err = ufs_qcom_testbus_config(host);
> if (err) {
> @@ -1191,14 +1187,9 @@ static int ufs_qcom_clk_scale_notify(struct ufs_hba *hba,
>
> static void ufs_qcom_enable_test_bus(struct ufs_qcom_host *host)
> {
> - if (host->dbg_print_en & UFS_QCOM_DBG_PRINT_TEST_BUS_EN) {
> - ufshcd_rmwl(host->hba, UFS_REG_TEST_BUS_EN,
> - UFS_REG_TEST_BUS_EN, REG_UFS_CFG1);
> - ufshcd_rmwl(host->hba, TEST_BUS_EN, TEST_BUS_EN, REG_UFS_CFG1);
> - } else {
> - ufshcd_rmwl(host->hba, UFS_REG_TEST_BUS_EN, 0, REG_UFS_CFG1);
> - ufshcd_rmwl(host->hba, TEST_BUS_EN, 0, REG_UFS_CFG1);
> - }
> + ufshcd_rmwl(host->hba, UFS_REG_TEST_BUS_EN,
> + UFS_REG_TEST_BUS_EN, REG_UFS_CFG1);
> + ufshcd_rmwl(host->hba, TEST_BUS_EN, TEST_BUS_EN, REG_UFS_CFG1);
> }
>
> static void ufs_qcom_get_default_testbus_cfg(struct ufs_qcom_host *host)
> @@ -1315,9 +1306,6 @@ static void ufs_qcom_dump_dbg_regs(struct ufs_hba *hba)
> ufshcd_dump_regs(hba, REG_UFS_SYS1CLK_1US, 16 * 4,
> "HCI Vendor Specific Registers ");
>
> - if (!(host->dbg_print_en & UFS_QCOM_DBG_PRINT_REGS_EN))
> - return;
> -
> reg = ufs_qcom_get_debug_reg_offset(host, UFS_UFS_DBG_RD_REG_OCSC);
> ufshcd_dump_regs(hba, reg, 44 * 4, "UFS_UFS_DBG_RD_REG_OCSC ");
>
> diff --git a/drivers/ufs/host/ufs-qcom.h b/drivers/ufs/host/ufs-qcom.h
> index 44466a395bb5..e567e4636357 100644
> --- a/drivers/ufs/host/ufs-qcom.h
> +++ b/drivers/ufs/host/ufs-qcom.h
> @@ -113,15 +113,6 @@ enum {
> MASK_CLK_NS_REG = 0xFFFC00,
> };
>
> -/* QCOM UFS debug print bit mask */
> -#define UFS_QCOM_DBG_PRINT_REGS_EN BIT(0)
> -#define UFS_QCOM_DBG_PRINT_ICE_REGS_EN BIT(1)
> -#define UFS_QCOM_DBG_PRINT_TEST_BUS_EN BIT(2)
> -
> -#define UFS_QCOM_DBG_PRINT_ALL \
> - (UFS_QCOM_DBG_PRINT_REGS_EN | UFS_QCOM_DBG_PRINT_ICE_REGS_EN | \
> - UFS_QCOM_DBG_PRINT_TEST_BUS_EN)
> -
> /* QUniPro Vendor specific attributes */
> #define PA_VS_CONFIG_REG1 0x9000
> #define DME_VS_CORE_CLK_CTRL 0xD002
> @@ -212,8 +203,6 @@ struct ufs_qcom_host {
>
> u32 dev_ref_clk_en_mask;
>
> - /* Bitmask for enabling debug prints */
> - u32 dbg_print_en;
> struct ufs_qcom_testbus testbus;
>
> /* Reset control of HCI */
> --
> 2.38.1
>
--
மணிவண்ணன் சதாசிவம்
On Thu, Dec 01, 2022 at 05:08:08PM -0600, Andrew Halaney wrote:
> The current implementation has abstractions that don't give any
> benefits.
>
> The print_fn callback (and its only callback implementation,
> ufs_qcom_dump_regs_wrapper()) was only used by
> ufs_qcom_print_hw_debug_reg_all() and just multiplies len by 4
> before calling ufshcd_dump_regs().
>
> ufs_qcom_print_hw_debug_reg_all() is only called by
> ufs_qcom_dump_dbg_regs().
>
> There's no real gain in those abstractions, so let's just do the work
> directly in ufs_qcom_dump_dbg_regs() (the dbg_register_dump callback).
>
> Signed-off-by: Andrew Halaney <[email protected]>
Reviewed-by: Manivannan Sadhasivam <[email protected]>
Thanks,
Mani
> ---
> drivers/ufs/host/ufs-qcom.c | 106 ++++++++++++++++--------------------
> 1 file changed, 47 insertions(+), 59 deletions(-)
>
> diff --git a/drivers/ufs/host/ufs-qcom.c b/drivers/ufs/host/ufs-qcom.c
> index 70e25f9f8ca8..1b0dfbbdcdf3 100644
> --- a/drivers/ufs/host/ufs-qcom.c
> +++ b/drivers/ufs/host/ufs-qcom.c
> @@ -52,12 +52,6 @@ static struct ufs_qcom_host *rcdev_to_ufs_host(struct reset_controller_dev *rcd)
> return container_of(rcd, struct ufs_qcom_host, rcdev);
> }
>
> -static void ufs_qcom_dump_regs_wrapper(struct ufs_hba *hba, int offset, int len,
> - const char *prefix, void *priv)
> -{
> - ufshcd_dump_regs(hba, offset, len * 4, prefix);
> -}
> -
> static int ufs_qcom_host_clk_get(struct device *dev,
> const char *name, struct clk **clk_out, bool optional)
> {
> @@ -1195,58 +1189,6 @@ static int ufs_qcom_clk_scale_notify(struct ufs_hba *hba,
> return err;
> }
>
> -static void ufs_qcom_print_hw_debug_reg_all(struct ufs_hba *hba,
> - void *priv, void (*print_fn)(struct ufs_hba *hba,
> - int offset, int num_regs, const char *str, void *priv))
> -{
> - u32 reg;
> - struct ufs_qcom_host *host;
> -
> - host = ufshcd_get_variant(hba);
> - if (!(host->dbg_print_en & UFS_QCOM_DBG_PRINT_REGS_EN))
> - return;
> -
> - reg = ufs_qcom_get_debug_reg_offset(host, UFS_UFS_DBG_RD_REG_OCSC);
> - print_fn(hba, reg, 44, "UFS_UFS_DBG_RD_REG_OCSC ", priv);
> -
> - reg = ufshcd_readl(hba, REG_UFS_CFG1);
> - reg |= UTP_DBG_RAMS_EN;
> - ufshcd_writel(hba, reg, REG_UFS_CFG1);
> -
> - reg = ufs_qcom_get_debug_reg_offset(host, UFS_UFS_DBG_RD_EDTL_RAM);
> - print_fn(hba, reg, 32, "UFS_UFS_DBG_RD_EDTL_RAM ", priv);
> -
> - reg = ufs_qcom_get_debug_reg_offset(host, UFS_UFS_DBG_RD_DESC_RAM);
> - print_fn(hba, reg, 128, "UFS_UFS_DBG_RD_DESC_RAM ", priv);
> -
> - reg = ufs_qcom_get_debug_reg_offset(host, UFS_UFS_DBG_RD_PRDT_RAM);
> - print_fn(hba, reg, 64, "UFS_UFS_DBG_RD_PRDT_RAM ", priv);
> -
> - /* clear bit 17 - UTP_DBG_RAMS_EN */
> - ufshcd_rmwl(hba, UTP_DBG_RAMS_EN, 0, REG_UFS_CFG1);
> -
> - reg = ufs_qcom_get_debug_reg_offset(host, UFS_DBG_RD_REG_UAWM);
> - print_fn(hba, reg, 4, "UFS_DBG_RD_REG_UAWM ", priv);
> -
> - reg = ufs_qcom_get_debug_reg_offset(host, UFS_DBG_RD_REG_UARM);
> - print_fn(hba, reg, 4, "UFS_DBG_RD_REG_UARM ", priv);
> -
> - reg = ufs_qcom_get_debug_reg_offset(host, UFS_DBG_RD_REG_TXUC);
> - print_fn(hba, reg, 48, "UFS_DBG_RD_REG_TXUC ", priv);
> -
> - reg = ufs_qcom_get_debug_reg_offset(host, UFS_DBG_RD_REG_RXUC);
> - print_fn(hba, reg, 27, "UFS_DBG_RD_REG_RXUC ", priv);
> -
> - reg = ufs_qcom_get_debug_reg_offset(host, UFS_DBG_RD_REG_DFC);
> - print_fn(hba, reg, 19, "UFS_DBG_RD_REG_DFC ", priv);
> -
> - reg = ufs_qcom_get_debug_reg_offset(host, UFS_DBG_RD_REG_TRLUT);
> - print_fn(hba, reg, 34, "UFS_DBG_RD_REG_TRLUT ", priv);
> -
> - reg = ufs_qcom_get_debug_reg_offset(host, UFS_DBG_RD_REG_TMRLUT);
> - print_fn(hba, reg, 9, "UFS_DBG_RD_REG_TMRLUT ", priv);
> -}
> -
> static void ufs_qcom_enable_test_bus(struct ufs_qcom_host *host)
> {
> if (host->dbg_print_en & UFS_QCOM_DBG_PRINT_TEST_BUS_EN) {
> @@ -1365,10 +1307,56 @@ int ufs_qcom_testbus_config(struct ufs_qcom_host *host)
>
> static void ufs_qcom_dump_dbg_regs(struct ufs_hba *hba)
> {
> + u32 reg;
> + struct ufs_qcom_host *host;
> +
> + host = ufshcd_get_variant(hba);
> +
> ufshcd_dump_regs(hba, REG_UFS_SYS1CLK_1US, 16 * 4,
> "HCI Vendor Specific Registers ");
>
> - ufs_qcom_print_hw_debug_reg_all(hba, NULL, ufs_qcom_dump_regs_wrapper);
> + if (!(host->dbg_print_en & UFS_QCOM_DBG_PRINT_REGS_EN))
> + return;
> +
> + reg = ufs_qcom_get_debug_reg_offset(host, UFS_UFS_DBG_RD_REG_OCSC);
> + ufshcd_dump_regs(hba, reg, 44 * 4, "UFS_UFS_DBG_RD_REG_OCSC ");
> +
> + reg = ufshcd_readl(hba, REG_UFS_CFG1);
> + reg |= UTP_DBG_RAMS_EN;
> + ufshcd_writel(hba, reg, REG_UFS_CFG1);
> +
> + reg = ufs_qcom_get_debug_reg_offset(host, UFS_UFS_DBG_RD_EDTL_RAM);
> + ufshcd_dump_regs(hba, reg, 32 * 4, "UFS_UFS_DBG_RD_EDTL_RAM ");
> +
> + reg = ufs_qcom_get_debug_reg_offset(host, UFS_UFS_DBG_RD_DESC_RAM);
> + ufshcd_dump_regs(hba, reg, 128 * 4, "UFS_UFS_DBG_RD_DESC_RAM ");
> +
> + reg = ufs_qcom_get_debug_reg_offset(host, UFS_UFS_DBG_RD_PRDT_RAM);
> + ufshcd_dump_regs(hba, reg, 64 * 4, "UFS_UFS_DBG_RD_PRDT_RAM ");
> +
> + /* clear bit 17 - UTP_DBG_RAMS_EN */
> + ufshcd_rmwl(hba, UTP_DBG_RAMS_EN, 0, REG_UFS_CFG1);
> +
> + reg = ufs_qcom_get_debug_reg_offset(host, UFS_DBG_RD_REG_UAWM);
> + ufshcd_dump_regs(hba, reg, 4 * 4, "UFS_DBG_RD_REG_UAWM ");
> +
> + reg = ufs_qcom_get_debug_reg_offset(host, UFS_DBG_RD_REG_UARM);
> + ufshcd_dump_regs(hba, reg, 4 * 4, "UFS_DBG_RD_REG_UARM ");
> +
> + reg = ufs_qcom_get_debug_reg_offset(host, UFS_DBG_RD_REG_TXUC);
> + ufshcd_dump_regs(hba, reg, 48 * 4, "UFS_DBG_RD_REG_TXUC ");
> +
> + reg = ufs_qcom_get_debug_reg_offset(host, UFS_DBG_RD_REG_RXUC);
> + ufshcd_dump_regs(hba, reg, 27 * 4, "UFS_DBG_RD_REG_RXUC ");
> +
> + reg = ufs_qcom_get_debug_reg_offset(host, UFS_DBG_RD_REG_DFC);
> + ufshcd_dump_regs(hba, reg, 19 * 4, "UFS_DBG_RD_REG_DFC ");
> +
> + reg = ufs_qcom_get_debug_reg_offset(host, UFS_DBG_RD_REG_TRLUT);
> + ufshcd_dump_regs(hba, reg, 34 * 4, "UFS_DBG_RD_REG_TRLUT ");
> +
> + reg = ufs_qcom_get_debug_reg_offset(host, UFS_DBG_RD_REG_TMRLUT);
> + ufshcd_dump_regs(hba, reg, 9 * 4, "UFS_DBG_RD_REG_TMRLUT ");
> }
>
> /**
> --
> 2.38.1
>
--
மணிவண்ணன் சதாசிவம்
Andrew,
> This patch series attempts to clean up some debug code paths in the
> ufs-qcom driver.
Applied to 6.3/scsi-staging, thanks!
--
Martin K. Petersen Oracle Linux Engineering