Loading drivers/scsi/ufs/ufshcd.c +34 −0 Original line number Diff line number Diff line Loading @@ -520,6 +520,36 @@ static void ufshcd_print_tmrs(struct ufs_hba *hba, unsigned long bitmap) } } static void ufshcd_print_host_state(struct ufs_hba *hba) { if (!(hba->ufshcd_dbg_print & UFSHCD_DBG_PRINT_HOST_STATE_EN)) return; dev_err(hba->dev, "UFS Host state=%d\n", hba->ufshcd_state); dev_err(hba->dev, "lrb in use=0x%lx, outstanding reqs=0x%lx tasks=0x%lx\n", hba->lrb_in_use, hba->outstanding_tasks, hba->outstanding_reqs); dev_err(hba->dev, "saved_err=0x%x, saved_uic_err=0x%x\n", hba->saved_err, hba->saved_uic_err); dev_err(hba->dev, "Device power mode=%d, UIC link state=%d\n", hba->curr_dev_pwr_mode, hba->uic_link_state); dev_err(hba->dev, "PM in progress=%d, sys. suspended=%d\n", hba->pm_op_in_progress, hba->is_sys_suspended); dev_err(hba->dev, "Auto BKOPS=%d, Host self-block=%d\n", hba->auto_bkops_enabled, hba->host->host_self_blocked); dev_err(hba->dev, "Clk gate=%d, hibern8 on idle=%d, PM QoS=%d\n", hba->clk_gating.state, hba->hibern8_on_idle.state, hba->pm_qos.state); dev_err(hba->dev, "Clk gate=%d, hibern8 on idle=%d, PM QoS=%d\n", hba->clk_gating.state, hba->hibern8_on_idle.state, hba->pm_qos.state); dev_err(hba->dev, "error handling flags=0x%x, req. abort count=%d\n", hba->eh_flags, hba->req_abort_count); dev_err(hba->dev, "Host capabilities=0x%x, caps=0x%x\n", hba->capabilities, hba->caps); dev_err(hba->dev, "quirks=0x%x, dev. quirks=0x%x\n", hba->quirks, hba->dev_quirks); } /** * ufshcd_print_pwr_info - print power params as saved in hba * power info Loading Loading @@ -4653,6 +4683,7 @@ ufshcd_transfer_rsp_status(struct ufs_hba *hba, struct ufshcd_lrb *lrbp) "OCS error from controller = %x for tag %d\n", ocs, lrbp->task_tag); ufshcd_print_host_regs(hba); ufshcd_print_host_state(hba); break; } /* end of switch */ Loading Loading @@ -5215,6 +5246,7 @@ static void ufshcd_err_handler(struct work_struct *work) __func__, hba->saved_err, hba->saved_uic_err); if (!hba->silence_err_logs) { ufshcd_print_host_regs(hba); ufshcd_print_host_state(hba); ufshcd_print_pwr_info(hba); ufshcd_print_tmrs(hba, hba->outstanding_tasks); } Loading Loading @@ -5762,6 +5794,7 @@ static int ufshcd_abort(struct scsi_cmnd *cmd) scsi_print_command(cmd); if (!hba->req_abort_count) { ufshcd_print_host_regs(hba); ufshcd_print_host_state(hba); ufshcd_print_pwr_info(hba); ufshcd_print_trs(hba, 1 << tag, true); } else { Loading Loading @@ -8299,6 +8332,7 @@ int ufshcd_init(struct ufs_hba *hba, void __iomem *mmio_base, unsigned int irq) if (err) { dev_err(hba->dev, "Host controller enable failed\n"); ufshcd_print_host_regs(hba); ufshcd_print_host_state(hba); goto out_remove_scsi_host; } Loading include/linux/scsi/ufs/ufshcd.h +3 −1 Original line number Diff line number Diff line Loading @@ -427,12 +427,14 @@ enum clk_gating_state { #define UFSHCD_DBG_PRINT_TRS_EN UFS_BIT(3) #define UFSHCD_DBG_PRINT_TMRS_EN UFS_BIT(4) #define UFSHCD_DBG_PRINT_PWR_EN UFS_BIT(5) #define UFSHCD_DBG_PRINT_HOST_STATE_EN UFS_BIT(6) #define UFSHCD_DBG_PRINT_ALL \ (UFSHCD_DBG_PRINT_CLK_FREQ_EN | \ UFSHCD_DBG_PRINT_UIC_ERR_HIST_EN | \ UFSHCD_DBG_PRINT_HOST_REGS_EN | UFSHCD_DBG_PRINT_TRS_EN | \ UFSHCD_DBG_PRINT_TMRS_EN | UFSHCD_DBG_PRINT_PWR_EN) UFSHCD_DBG_PRINT_TMRS_EN | UFSHCD_DBG_PRINT_PWR_EN | \ UFSHCD_DBG_PRINT_HOST_STATE_EN) /** * struct ufs_clk_gating - UFS clock gating related info Loading Loading
drivers/scsi/ufs/ufshcd.c +34 −0 Original line number Diff line number Diff line Loading @@ -520,6 +520,36 @@ static void ufshcd_print_tmrs(struct ufs_hba *hba, unsigned long bitmap) } } static void ufshcd_print_host_state(struct ufs_hba *hba) { if (!(hba->ufshcd_dbg_print & UFSHCD_DBG_PRINT_HOST_STATE_EN)) return; dev_err(hba->dev, "UFS Host state=%d\n", hba->ufshcd_state); dev_err(hba->dev, "lrb in use=0x%lx, outstanding reqs=0x%lx tasks=0x%lx\n", hba->lrb_in_use, hba->outstanding_tasks, hba->outstanding_reqs); dev_err(hba->dev, "saved_err=0x%x, saved_uic_err=0x%x\n", hba->saved_err, hba->saved_uic_err); dev_err(hba->dev, "Device power mode=%d, UIC link state=%d\n", hba->curr_dev_pwr_mode, hba->uic_link_state); dev_err(hba->dev, "PM in progress=%d, sys. suspended=%d\n", hba->pm_op_in_progress, hba->is_sys_suspended); dev_err(hba->dev, "Auto BKOPS=%d, Host self-block=%d\n", hba->auto_bkops_enabled, hba->host->host_self_blocked); dev_err(hba->dev, "Clk gate=%d, hibern8 on idle=%d, PM QoS=%d\n", hba->clk_gating.state, hba->hibern8_on_idle.state, hba->pm_qos.state); dev_err(hba->dev, "Clk gate=%d, hibern8 on idle=%d, PM QoS=%d\n", hba->clk_gating.state, hba->hibern8_on_idle.state, hba->pm_qos.state); dev_err(hba->dev, "error handling flags=0x%x, req. abort count=%d\n", hba->eh_flags, hba->req_abort_count); dev_err(hba->dev, "Host capabilities=0x%x, caps=0x%x\n", hba->capabilities, hba->caps); dev_err(hba->dev, "quirks=0x%x, dev. quirks=0x%x\n", hba->quirks, hba->dev_quirks); } /** * ufshcd_print_pwr_info - print power params as saved in hba * power info Loading Loading @@ -4653,6 +4683,7 @@ ufshcd_transfer_rsp_status(struct ufs_hba *hba, struct ufshcd_lrb *lrbp) "OCS error from controller = %x for tag %d\n", ocs, lrbp->task_tag); ufshcd_print_host_regs(hba); ufshcd_print_host_state(hba); break; } /* end of switch */ Loading Loading @@ -5215,6 +5246,7 @@ static void ufshcd_err_handler(struct work_struct *work) __func__, hba->saved_err, hba->saved_uic_err); if (!hba->silence_err_logs) { ufshcd_print_host_regs(hba); ufshcd_print_host_state(hba); ufshcd_print_pwr_info(hba); ufshcd_print_tmrs(hba, hba->outstanding_tasks); } Loading Loading @@ -5762,6 +5794,7 @@ static int ufshcd_abort(struct scsi_cmnd *cmd) scsi_print_command(cmd); if (!hba->req_abort_count) { ufshcd_print_host_regs(hba); ufshcd_print_host_state(hba); ufshcd_print_pwr_info(hba); ufshcd_print_trs(hba, 1 << tag, true); } else { Loading Loading @@ -8299,6 +8332,7 @@ int ufshcd_init(struct ufs_hba *hba, void __iomem *mmio_base, unsigned int irq) if (err) { dev_err(hba->dev, "Host controller enable failed\n"); ufshcd_print_host_regs(hba); ufshcd_print_host_state(hba); goto out_remove_scsi_host; } Loading
include/linux/scsi/ufs/ufshcd.h +3 −1 Original line number Diff line number Diff line Loading @@ -427,12 +427,14 @@ enum clk_gating_state { #define UFSHCD_DBG_PRINT_TRS_EN UFS_BIT(3) #define UFSHCD_DBG_PRINT_TMRS_EN UFS_BIT(4) #define UFSHCD_DBG_PRINT_PWR_EN UFS_BIT(5) #define UFSHCD_DBG_PRINT_HOST_STATE_EN UFS_BIT(6) #define UFSHCD_DBG_PRINT_ALL \ (UFSHCD_DBG_PRINT_CLK_FREQ_EN | \ UFSHCD_DBG_PRINT_UIC_ERR_HIST_EN | \ UFSHCD_DBG_PRINT_HOST_REGS_EN | UFSHCD_DBG_PRINT_TRS_EN | \ UFSHCD_DBG_PRINT_TMRS_EN | UFSHCD_DBG_PRINT_PWR_EN) UFSHCD_DBG_PRINT_TMRS_EN | UFSHCD_DBG_PRINT_PWR_EN | \ UFSHCD_DBG_PRINT_HOST_STATE_EN) /** * struct ufs_clk_gating - UFS clock gating related info Loading