Add dbg_register_dump variant vendor implementation in MediaTek
UFS driver.
Signed-off-by: Stanley Chu <[email protected]>
---
drivers/scsi/ufs/ufs-mediatek.c | 16 ++++++++++++++++
drivers/scsi/ufs/ufs-mediatek.h | 5 +++++
2 files changed, 21 insertions(+)
diff --git a/drivers/scsi/ufs/ufs-mediatek.c b/drivers/scsi/ufs/ufs-mediatek.c
index 8d999c0e60fe..d5194d0c4ef5 100644
--- a/drivers/scsi/ufs/ufs-mediatek.c
+++ b/drivers/scsi/ufs/ufs-mediatek.c
@@ -406,6 +406,21 @@ static int ufs_mtk_resume(struct ufs_hba *hba, enum ufs_pm_op pm_op)
return 0;
}
+static void ufs_mtk_dbg_register_dump(struct ufs_hba *hba)
+{
+ ufshcd_dump_regs(hba, REG_UFS_REFCLK_CTRL, 0x4, "Ref-Clk Ctrl ");
+
+ ufshcd_dump_regs(hba, REG_UFS_EXTREG, 0x4, "Ext Reg ");
+
+ ufshcd_dump_regs(hba, REG_UFS_MPHYCTRL,
+ REG_UFS_REJECT_MON - REG_UFS_MPHYCTRL + 4,
+ "MPHY Ctrl ");
+
+ /* Direct debugging information to REG_MTK_PROBE */
+ ufshcd_writel(hba, 0x20, REG_UFS_DEBUG_SEL);
+ ufshcd_dump_regs(hba, REG_UFS_PROBE, 0x4, "Debug Probe ");
+}
+
static int ufs_mtk_apply_dev_quirks(struct ufs_hba *hba,
struct ufs_dev_desc *card)
{
@@ -430,6 +445,7 @@ static struct ufs_hba_variant_ops ufs_hba_mtk_vops = {
.apply_dev_quirks = ufs_mtk_apply_dev_quirks,
.suspend = ufs_mtk_suspend,
.resume = ufs_mtk_resume,
+ .dbg_register_dump = ufs_mtk_dbg_register_dump,
.device_reset = ufs_mtk_device_reset,
};
diff --git a/drivers/scsi/ufs/ufs-mediatek.h b/drivers/scsi/ufs/ufs-mediatek.h
index 31b7fead19eb..fccdd979d6fb 100644
--- a/drivers/scsi/ufs/ufs-mediatek.h
+++ b/drivers/scsi/ufs/ufs-mediatek.h
@@ -13,6 +13,11 @@
* Vendor specific UFSHCI Registers
*/
#define REG_UFS_REFCLK_CTRL 0x144
+#define REG_UFS_EXTREG 0x2100
+#define REG_UFS_MPHYCTRL 0x2200
+#define REG_UFS_REJECT_MON 0x22AC
+#define REG_UFS_DEBUG_SEL 0x22C0
+#define REG_UFS_PROBE 0x22C8
/*
* Ref-clk control
--
2.18.0
Hi Stanley
On Fri, Jan 17, 2020 at 9:44 AM Stanley Chu <[email protected]> wrote:
>
> Add dbg_register_dump variant vendor implementation in MediaTek
> UFS driver.
>
> Signed-off-by: Stanley Chu <[email protected]>
> ---
Reviewed-by: Alim Akhtar <[email protected]>
> drivers/scsi/ufs/ufs-mediatek.c | 16 ++++++++++++++++
> drivers/scsi/ufs/ufs-mediatek.h | 5 +++++
> 2 files changed, 21 insertions(+)
>
> diff --git a/drivers/scsi/ufs/ufs-mediatek.c b/drivers/scsi/ufs/ufs-mediatek.c
> index 8d999c0e60fe..d5194d0c4ef5 100644
> --- a/drivers/scsi/ufs/ufs-mediatek.c
> +++ b/drivers/scsi/ufs/ufs-mediatek.c
> @@ -406,6 +406,21 @@ static int ufs_mtk_resume(struct ufs_hba *hba, enum ufs_pm_op pm_op)
> return 0;
> }
>
> +static void ufs_mtk_dbg_register_dump(struct ufs_hba *hba)
> +{
> + ufshcd_dump_regs(hba, REG_UFS_REFCLK_CTRL, 0x4, "Ref-Clk Ctrl ");
> +
> + ufshcd_dump_regs(hba, REG_UFS_EXTREG, 0x4, "Ext Reg ");
> +
> + ufshcd_dump_regs(hba, REG_UFS_MPHYCTRL,
> + REG_UFS_REJECT_MON - REG_UFS_MPHYCTRL + 4,
> + "MPHY Ctrl ");
> +
> + /* Direct debugging information to REG_MTK_PROBE */
> + ufshcd_writel(hba, 0x20, REG_UFS_DEBUG_SEL);
> + ufshcd_dump_regs(hba, REG_UFS_PROBE, 0x4, "Debug Probe ");
> +}
> +
> static int ufs_mtk_apply_dev_quirks(struct ufs_hba *hba,
> struct ufs_dev_desc *card)
> {
> @@ -430,6 +445,7 @@ static struct ufs_hba_variant_ops ufs_hba_mtk_vops = {
> .apply_dev_quirks = ufs_mtk_apply_dev_quirks,
> .suspend = ufs_mtk_suspend,
> .resume = ufs_mtk_resume,
> + .dbg_register_dump = ufs_mtk_dbg_register_dump,
> .device_reset = ufs_mtk_device_reset,
> };
>
> diff --git a/drivers/scsi/ufs/ufs-mediatek.h b/drivers/scsi/ufs/ufs-mediatek.h
> index 31b7fead19eb..fccdd979d6fb 100644
> --- a/drivers/scsi/ufs/ufs-mediatek.h
> +++ b/drivers/scsi/ufs/ufs-mediatek.h
> @@ -13,6 +13,11 @@
> * Vendor specific UFSHCI Registers
> */
> #define REG_UFS_REFCLK_CTRL 0x144
> +#define REG_UFS_EXTREG 0x2100
> +#define REG_UFS_MPHYCTRL 0x2200
> +#define REG_UFS_REJECT_MON 0x22AC
> +#define REG_UFS_DEBUG_SEL 0x22C0
> +#define REG_UFS_PROBE 0x22C8
>
> /*
> * Ref-clk control
> --
> 2.18.0
--
Regards,
Alim