media: mediatek: vcodec: Add dbgfs help function
authorYunfei Dong <yunfei.dong@mediatek.com>
Tue, 30 May 2023 12:29:08 +0000 (20:29 +0800)
committerMauro Carvalho Chehab <mchehab@kernel.org>
Fri, 9 Jun 2023 15:38:52 +0000 (16:38 +0100)
Getting dbgfs help information with command "echo -help > vdec"
or "echo > vdec".

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>
drivers/media/platform/mediatek/vcodec/mtk_vcodec_dbgfs.c

index eee82ebeeabd50dd764889ee93ad4e110d6d94c2..b5cdbbfcc388dbe63aea12e70065df47226b09cb 100644 (file)
@@ -52,6 +52,23 @@ static void mtk_vdec_dbgfs_get_format_type(struct mtk_vcodec_ctx *ctx, char *buf
        *used += curr_len;
 }
 
+static void mtk_vdec_dbgfs_get_help(char *buf, int *used, int total)
+{
+       int curr_len;
+
+       curr_len = snprintf(buf + *used, total - *used,
+                           "help: (1: echo -'info' > vdec 2: cat vdec)\n");
+       *used += curr_len;
+
+       curr_len = snprintf(buf + *used, total - *used,
+                           "\t-picinfo: get resolution\n");
+       *used += curr_len;
+
+       curr_len = snprintf(buf + *used, total - *used,
+                           "\t-format: get output & capture queue format\n");
+       *used += curr_len;
+}
+
 static ssize_t mtk_vdec_dbgfs_write(struct file *filp, const char __user *ubuf,
                                    size_t count, loff_t *ppos)
 {
@@ -83,6 +100,11 @@ static ssize_t mtk_vdec_dbgfs_read(struct file *filp, char __user *ubuf,
        if (!buf)
                return -ENOMEM;
 
+       if (strstr(dbgfs->dbgfs_buf, "-help") || dbgfs->buf_size == 1) {
+               mtk_vdec_dbgfs_get_help(buf, &used_len, total_len);
+               goto read_buffer;
+       }
+
        if (strstr(dbgfs->dbgfs_buf, "-picinfo"))
                dbgfs_index[MTK_VDEC_DBGFS_PICINFO] = true;
 
@@ -109,7 +131,7 @@ static ssize_t mtk_vdec_dbgfs_read(struct file *filp, char __user *ubuf,
                        mtk_vdec_dbgfs_get_format_type(ctx, buf, &used_len, total_len);
        }
        mutex_unlock(&dbgfs->dbgfs_lock);
-
+read_buffer:
        ret = simple_read_from_buffer(ubuf, count, ppos, buf, used_len);
        kfree(buf);
        return ret;