media: mediatek: vcodec: Add debugfs interface to get debug information
This will be useful when debugging specific issues related to kernel in running status. Signed-off-by: Yunfei Dong <yunfei.dong@mediatek.com> Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
This commit is contained in:
parent
2f5d0aef37
commit
7866e12439
@ -46,3 +46,9 @@ endif
|
||||
ifneq ($(CONFIG_VIDEO_MEDIATEK_VCODEC_SCP),)
|
||||
mtk-vcodec-common-y += mtk_vcodec_fw_scp.o
|
||||
endif
|
||||
|
||||
ifneq ($(CONFIG_DEBUG_FS),)
|
||||
obj-$(CONFIG_VIDEO_MEDIATEK_VCODEC) += mtk-vcodec-dbgfs.o
|
||||
|
||||
mtk-vcodec-dbgfs-y := mtk_vcodec_dbgfs.o
|
||||
endif
|
33
drivers/media/platform/mediatek/vcodec/mtk_vcodec_dbgfs.c
Normal file
33
drivers/media/platform/mediatek/vcodec/mtk_vcodec_dbgfs.c
Normal file
@ -0,0 +1,33 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* Copyright (c) 2023 MediaTek Inc.
|
||||
* Author: Yunfei Dong <yunfei.dong@mediatek.com>
|
||||
*/
|
||||
|
||||
#include <linux/debugfs.h>
|
||||
|
||||
#include "mtk_vcodec_dbgfs.h"
|
||||
#include "mtk_vcodec_drv.h"
|
||||
#include "mtk_vcodec_util.h"
|
||||
|
||||
void mtk_vcodec_dbgfs_init(struct mtk_vcodec_dev *vcodec_dev)
|
||||
{
|
||||
struct dentry *vcodec_root;
|
||||
|
||||
vcodec_dev->dbgfs.vcodec_root = debugfs_create_dir("vcodec-dec", NULL);
|
||||
if (IS_ERR(vcodec_dev->dbgfs.vcodec_root))
|
||||
dev_err(&vcodec_dev->plat_dev->dev, "create vcodec dir err:%d\n",
|
||||
IS_ERR(vcodec_dev->dbgfs.vcodec_root));
|
||||
|
||||
vcodec_root = vcodec_dev->dbgfs.vcodec_root;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(mtk_vcodec_dbgfs_init);
|
||||
|
||||
void mtk_vcodec_dbgfs_deinit(struct mtk_vcodec_dev *vcodec_dev)
|
||||
{
|
||||
debugfs_remove_recursive(vcodec_dev->dbgfs.vcodec_root);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(mtk_vcodec_dbgfs_deinit);
|
||||
|
||||
MODULE_LICENSE("GPL v2");
|
||||
MODULE_DESCRIPTION("Mediatek video codec driver");
|
32
drivers/media/platform/mediatek/vcodec/mtk_vcodec_dbgfs.h
Normal file
32
drivers/media/platform/mediatek/vcodec/mtk_vcodec_dbgfs.h
Normal file
@ -0,0 +1,32 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
/*
|
||||
* Copyright (c) 2023 MediaTek Inc.
|
||||
* Author: Yunfei Dong <yunfei.dong@mediatek.com>
|
||||
*/
|
||||
|
||||
#ifndef __MTK_VCODEC_DBGFS_H__
|
||||
#define __MTK_VCODEC_DBGFS_H__
|
||||
|
||||
struct mtk_vcodec_dev;
|
||||
|
||||
/**
|
||||
* struct mtk_vcodec_dbgfs - dbgfs information
|
||||
* @vcodec_root: vcodec dbgfs entry
|
||||
*/
|
||||
struct mtk_vcodec_dbgfs {
|
||||
struct dentry *vcodec_root;
|
||||
};
|
||||
|
||||
#if defined(CONFIG_DEBUG_FS)
|
||||
void mtk_vcodec_dbgfs_init(struct mtk_vcodec_dev *vcodec_dev);
|
||||
void mtk_vcodec_dbgfs_deinit(struct mtk_vcodec_dev *vcodec_dev);
|
||||
#else
|
||||
static inline void mtk_vcodec_dbgfs_init(struct mtk_vcodec_dev *vcodec_dev)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void mtk_vcodec_dbgfs_deinit(struct mtk_vcodec_dev *vcodec_dev)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
#endif
|
@ -422,6 +422,7 @@ static int mtk_vcodec_probe(struct platform_device *pdev)
|
||||
mtk_v4l2_debug(0, "media registered as /dev/media%d", vfd_dec->minor);
|
||||
}
|
||||
|
||||
mtk_vcodec_dbgfs_init(dev);
|
||||
mtk_v4l2_debug(0, "decoder registered as /dev/video%d", vfd_dec->minor);
|
||||
|
||||
return 0;
|
||||
@ -497,6 +498,7 @@ static void mtk_vcodec_dec_remove(struct platform_device *pdev)
|
||||
if (dev->vfd_dec)
|
||||
video_unregister_device(dev->vfd_dec);
|
||||
|
||||
mtk_vcodec_dbgfs_deinit(dev);
|
||||
v4l2_device_unregister(&dev->v4l2_dev);
|
||||
if (!dev->vdec_pdata->is_subdev_supported)
|
||||
pm_runtime_disable(dev->pm.dev);
|
||||
|
@ -16,6 +16,7 @@
|
||||
#include <media/v4l2-mem2mem.h>
|
||||
#include <media/videobuf2-core.h>
|
||||
|
||||
#include "mtk_vcodec_dbgfs.h"
|
||||
#include "mtk_vcodec_util.h"
|
||||
#include "vdec_msg_queue.h"
|
||||
|
||||
@ -471,6 +472,7 @@ struct mtk_vcodec_enc_pdata {
|
||||
* @dec_active_cnt: used to mark whether need to record register value
|
||||
* @vdec_racing_info: record register value
|
||||
* @dec_racing_info_mutex: mutex lock used for inner racing mode
|
||||
* @dbgfs: debug log related information
|
||||
*/
|
||||
struct mtk_vcodec_dev {
|
||||
struct v4l2_device v4l2_dev;
|
||||
@ -520,6 +522,8 @@ struct mtk_vcodec_dev {
|
||||
u32 vdec_racing_info[132];
|
||||
/* Protects access to vdec_racing_info data */
|
||||
struct mutex dec_racing_info_mutex;
|
||||
|
||||
struct mtk_vcodec_dbgfs dbgfs;
|
||||
};
|
||||
|
||||
static inline struct mtk_vcodec_ctx *fh_to_ctx(struct v4l2_fh *fh)
|
||||
|
Loading…
x
Reference in New Issue
Block a user