scsi: ufs-mediatek: add dbg_register_dump implementation
authorStanley Chu <stanley.chu@mediatek.com>
Fri, 17 Jan 2020 03:51:06 +0000 (11:51 +0800)
committerMartin K. Petersen <martin.petersen@oracle.com>
Tue, 21 Jan 2020 00:09:57 +0000 (19:09 -0500)
Add dbg_register_dump variant vendor implementation in MediaTek UFS driver.

Link: https://lore.kernel.org/r/20200117035108.19699-2-stanley.chu@mediatek.com
Reviewed-by: Alim Akhtar <alim.akhtar@samsung.com>
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/ufs/ufs-mediatek.c
drivers/scsi/ufs/ufs-mediatek.h

index 8d999c0..d5194d0 100644 (file)
@@ -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,
 };
 
index 31b7fea..fccdd97 100644 (file)
  * 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