Skip to content

Commit 7866e12

Browse files
yunfei-mtkmchehab
authored andcommitted
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>
1 parent 2f5d0ae commit 7866e12

5 files changed

Lines changed: 77 additions & 0 deletions

File tree

drivers/media/platform/mediatek/vcodec/Makefile

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,3 +46,9 @@ endif
4646
ifneq ($(CONFIG_VIDEO_MEDIATEK_VCODEC_SCP),)
4747
mtk-vcodec-common-y += mtk_vcodec_fw_scp.o
4848
endif
49+
50+
ifneq ($(CONFIG_DEBUG_FS),)
51+
obj-$(CONFIG_VIDEO_MEDIATEK_VCODEC) += mtk-vcodec-dbgfs.o
52+
53+
mtk-vcodec-dbgfs-y := mtk_vcodec_dbgfs.o
54+
endif
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
// SPDX-License-Identifier: GPL-2.0
2+
/*
3+
* Copyright (c) 2023 MediaTek Inc.
4+
* Author: Yunfei Dong <yunfei.dong@mediatek.com>
5+
*/
6+
7+
#include <linux/debugfs.h>
8+
9+
#include "mtk_vcodec_dbgfs.h"
10+
#include "mtk_vcodec_drv.h"
11+
#include "mtk_vcodec_util.h"
12+
13+
void mtk_vcodec_dbgfs_init(struct mtk_vcodec_dev *vcodec_dev)
14+
{
15+
struct dentry *vcodec_root;
16+
17+
vcodec_dev->dbgfs.vcodec_root = debugfs_create_dir("vcodec-dec", NULL);
18+
if (IS_ERR(vcodec_dev->dbgfs.vcodec_root))
19+
dev_err(&vcodec_dev->plat_dev->dev, "create vcodec dir err:%d\n",
20+
IS_ERR(vcodec_dev->dbgfs.vcodec_root));
21+
22+
vcodec_root = vcodec_dev->dbgfs.vcodec_root;
23+
}
24+
EXPORT_SYMBOL_GPL(mtk_vcodec_dbgfs_init);
25+
26+
void mtk_vcodec_dbgfs_deinit(struct mtk_vcodec_dev *vcodec_dev)
27+
{
28+
debugfs_remove_recursive(vcodec_dev->dbgfs.vcodec_root);
29+
}
30+
EXPORT_SYMBOL_GPL(mtk_vcodec_dbgfs_deinit);
31+
32+
MODULE_LICENSE("GPL v2");
33+
MODULE_DESCRIPTION("Mediatek video codec driver");
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
/* SPDX-License-Identifier: GPL-2.0 */
2+
/*
3+
* Copyright (c) 2023 MediaTek Inc.
4+
* Author: Yunfei Dong <yunfei.dong@mediatek.com>
5+
*/
6+
7+
#ifndef __MTK_VCODEC_DBGFS_H__
8+
#define __MTK_VCODEC_DBGFS_H__
9+
10+
struct mtk_vcodec_dev;
11+
12+
/**
13+
* struct mtk_vcodec_dbgfs - dbgfs information
14+
* @vcodec_root: vcodec dbgfs entry
15+
*/
16+
struct mtk_vcodec_dbgfs {
17+
struct dentry *vcodec_root;
18+
};
19+
20+
#if defined(CONFIG_DEBUG_FS)
21+
void mtk_vcodec_dbgfs_init(struct mtk_vcodec_dev *vcodec_dev);
22+
void mtk_vcodec_dbgfs_deinit(struct mtk_vcodec_dev *vcodec_dev);
23+
#else
24+
static inline void mtk_vcodec_dbgfs_init(struct mtk_vcodec_dev *vcodec_dev)
25+
{
26+
}
27+
28+
static inline void mtk_vcodec_dbgfs_deinit(struct mtk_vcodec_dev *vcodec_dev)
29+
{
30+
}
31+
#endif
32+
#endif

drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_drv.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -422,6 +422,7 @@ static int mtk_vcodec_probe(struct platform_device *pdev)
422422
mtk_v4l2_debug(0, "media registered as /dev/media%d", vfd_dec->minor);
423423
}
424424

425+
mtk_vcodec_dbgfs_init(dev);
425426
mtk_v4l2_debug(0, "decoder registered as /dev/video%d", vfd_dec->minor);
426427

427428
return 0;
@@ -497,6 +498,7 @@ static void mtk_vcodec_dec_remove(struct platform_device *pdev)
497498
if (dev->vfd_dec)
498499
video_unregister_device(dev->vfd_dec);
499500

501+
mtk_vcodec_dbgfs_deinit(dev);
500502
v4l2_device_unregister(&dev->v4l2_dev);
501503
if (!dev->vdec_pdata->is_subdev_supported)
502504
pm_runtime_disable(dev->pm.dev);

drivers/media/platform/mediatek/vcodec/mtk_vcodec_drv.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
#include <media/v4l2-mem2mem.h>
1717
#include <media/videobuf2-core.h>
1818

19+
#include "mtk_vcodec_dbgfs.h"
1920
#include "mtk_vcodec_util.h"
2021
#include "vdec_msg_queue.h"
2122

@@ -471,6 +472,7 @@ struct mtk_vcodec_enc_pdata {
471472
* @dec_active_cnt: used to mark whether need to record register value
472473
* @vdec_racing_info: record register value
473474
* @dec_racing_info_mutex: mutex lock used for inner racing mode
475+
* @dbgfs: debug log related information
474476
*/
475477
struct mtk_vcodec_dev {
476478
struct v4l2_device v4l2_dev;
@@ -520,6 +522,8 @@ struct mtk_vcodec_dev {
520522
u32 vdec_racing_info[132];
521523
/* Protects access to vdec_racing_info data */
522524
struct mutex dec_racing_info_mutex;
525+
526+
struct mtk_vcodec_dbgfs dbgfs;
523527
};
524528

525529
static inline struct mtk_vcodec_ctx *fh_to_ctx(struct v4l2_fh *fh)

0 commit comments

Comments
 (0)