scsi: ufs-mediatek: Introduce event_notify implementation
Introduce event_notify implementation on MediaTek UFS platform. A vendor-specific tracepoint is added that can be used for debugging purposes. Link: https://lore.kernel.org/r/20201205115901.26815-5-stanley.chu@mediatek.com Reviewed-by: Avri Altman <avri.altman@wdc.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:
Родитель
172614a9d0
Коммит
ca1bb061d6
|
@ -0,0 +1,36 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
/*
|
||||
* Copyright (C) 2020 MediaTek Inc.
|
||||
*/
|
||||
#undef TRACE_SYSTEM
|
||||
#define TRACE_SYSTEM ufs_mtk
|
||||
|
||||
#if !defined(_TRACE_EVENT_UFS_MEDIATEK_H) || defined(TRACE_HEADER_MULTI_READ)
|
||||
#define _TRACE_EVENT_UFS_MEDIATEK_H
|
||||
|
||||
#include <linux/tracepoint.h>
|
||||
|
||||
TRACE_EVENT(ufs_mtk_event,
|
||||
TP_PROTO(unsigned int type, unsigned int data),
|
||||
TP_ARGS(type, data),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__field(unsigned int, type)
|
||||
__field(unsigned int, data)
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
__entry->type = type;
|
||||
__entry->data = data;
|
||||
),
|
||||
|
||||
TP_printk("ufs:event=%u data=%u",
|
||||
__entry->type, __entry->data)
|
||||
);
|
||||
#endif
|
||||
|
||||
#undef TRACE_INCLUDE_PATH
|
||||
#undef TRACE_INCLUDE_FILE
|
||||
#define TRACE_INCLUDE_PATH .
|
||||
#define TRACE_INCLUDE_FILE ufs-mediatek-trace
|
||||
#include <trace/define_trace.h>
|
|
@ -24,6 +24,9 @@
|
|||
#include "unipro.h"
|
||||
#include "ufs-mediatek.h"
|
||||
|
||||
#define CREATE_TRACE_POINTS
|
||||
#include "ufs-mediatek-trace.h"
|
||||
|
||||
#define ufs_mtk_smc(cmd, val, res) \
|
||||
arm_smccc_smc(MTK_SIP_UFS_CONTROL, \
|
||||
cmd, val, 0, 0, 0, 0, 0, &(res))
|
||||
|
@ -1002,6 +1005,14 @@ static void ufs_mtk_fixup_dev_quirks(struct ufs_hba *hba)
|
|||
ufshcd_fixup_dev_quirks(hba, ufs_mtk_dev_fixups);
|
||||
}
|
||||
|
||||
static void ufs_mtk_event_notify(struct ufs_hba *hba,
|
||||
enum ufs_event_type evt, void *data)
|
||||
{
|
||||
unsigned int val = *(u32 *)data;
|
||||
|
||||
trace_ufs_mtk_event(evt, val);
|
||||
}
|
||||
|
||||
/*
|
||||
* struct ufs_hba_mtk_vops - UFS MTK specific variant operations
|
||||
*
|
||||
|
@ -1021,6 +1032,7 @@ static const struct ufs_hba_variant_ops ufs_hba_mtk_vops = {
|
|||
.resume = ufs_mtk_resume,
|
||||
.dbg_register_dump = ufs_mtk_dbg_register_dump,
|
||||
.device_reset = ufs_mtk_device_reset,
|
||||
.event_notify = ufs_mtk_event_notify,
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
Загрузка…
Ссылка в новой задаче