scsi: ufs: ufs-mediatek: Provide detailed description for UIC errors
Provide detailed description in logs for UIC errors for easier issue breakdown. Link: https://lore.kernel.org/r/20220802235437.4547-3-stanley.chu@mediatek.com Signed-off-by: Stanley Chu <stanley.chu@mediatek.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
Родитель
de9f43f0d2
Коммит
4d869fe67a
|
@ -46,6 +46,44 @@ static const struct of_device_id ufs_mtk_of_match[] = {
|
||||||
{},
|
{},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Details of UIC Errors
|
||||||
|
*/
|
||||||
|
static const char *const ufs_uic_err_str[] = {
|
||||||
|
"PHY Adapter Layer",
|
||||||
|
"Data Link Layer",
|
||||||
|
"Network Link Layer",
|
||||||
|
"Transport Link Layer",
|
||||||
|
"DME"
|
||||||
|
};
|
||||||
|
|
||||||
|
static const char *const ufs_uic_pa_err_str[] = {
|
||||||
|
"PHY error on Lane 0",
|
||||||
|
"PHY error on Lane 1",
|
||||||
|
"PHY error on Lane 2",
|
||||||
|
"PHY error on Lane 3",
|
||||||
|
"Generic PHY Adapter Error. This should be the LINERESET indication"
|
||||||
|
};
|
||||||
|
|
||||||
|
static const char *const ufs_uic_dl_err_str[] = {
|
||||||
|
"NAC_RECEIVED",
|
||||||
|
"TCx_REPLAY_TIMER_EXPIRED",
|
||||||
|
"AFCx_REQUEST_TIMER_EXPIRED",
|
||||||
|
"FCx_PROTECTION_TIMER_EXPIRED",
|
||||||
|
"CRC_ERROR",
|
||||||
|
"RX_BUFFER_OVERFLOW",
|
||||||
|
"MAX_FRAME_LENGTH_EXCEEDED",
|
||||||
|
"WRONG_SEQUENCE_NUMBER",
|
||||||
|
"AFC_FRAME_SYNTAX_ERROR",
|
||||||
|
"NAC_FRAME_SYNTAX_ERROR",
|
||||||
|
"EOF_SYNTAX_ERROR",
|
||||||
|
"FRAME_SYNTAX_ERROR",
|
||||||
|
"BAD_CTRL_SYMBOL_TYPE",
|
||||||
|
"PA_INIT_ERROR",
|
||||||
|
"PA_ERROR_IND_RECEIVED",
|
||||||
|
"PA_INIT"
|
||||||
|
};
|
||||||
|
|
||||||
static bool ufs_mtk_is_boost_crypt_enabled(struct ufs_hba *hba)
|
static bool ufs_mtk_is_boost_crypt_enabled(struct ufs_hba *hba)
|
||||||
{
|
{
|
||||||
struct ufs_mtk_host *host = ufshcd_get_variant(hba);
|
struct ufs_mtk_host *host = ufshcd_get_variant(hba);
|
||||||
|
@ -1309,8 +1347,28 @@ static void ufs_mtk_event_notify(struct ufs_hba *hba,
|
||||||
enum ufs_event_type evt, void *data)
|
enum ufs_event_type evt, void *data)
|
||||||
{
|
{
|
||||||
unsigned int val = *(u32 *)data;
|
unsigned int val = *(u32 *)data;
|
||||||
|
unsigned long reg;
|
||||||
|
u8 bit;
|
||||||
|
|
||||||
trace_ufs_mtk_event(evt, val);
|
trace_ufs_mtk_event(evt, val);
|
||||||
|
|
||||||
|
/* Print details of UIC Errors */
|
||||||
|
if (evt <= UFS_EVT_DME_ERR) {
|
||||||
|
dev_info(hba->dev,
|
||||||
|
"Host UIC Error Code (%s): %08x\n",
|
||||||
|
ufs_uic_err_str[evt], val);
|
||||||
|
reg = val;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (evt == UFS_EVT_PA_ERR) {
|
||||||
|
for_each_set_bit(bit, ®, ARRAY_SIZE(ufs_uic_pa_err_str))
|
||||||
|
dev_info(hba->dev, "%s\n", ufs_uic_pa_err_str[bit]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (evt == UFS_EVT_DL_ERR) {
|
||||||
|
for_each_set_bit(bit, ®, ARRAY_SIZE(ufs_uic_dl_err_str))
|
||||||
|
dev_info(hba->dev, "%s\n", ufs_uic_dl_err_str[bit]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Загрузка…
Ссылка в новой задаче