blob: 6db0afc68c30069e6362243e3dbe8df96c45635c [file] [log] [blame]
developer38937342024-07-05 15:43:05 +08001// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 * Copyright (C) 2024 MediaTek Inc.
4 *
5 * Author: Frank-zj Lin <frank-zj.lin@mediatek.com>
6 */
7
8#include <linux/debugfs.h>
9#include <linux/spinlock.h>
10
11#include <pce/cdrt.h>
12
13#include "crypto-eip/crypto-eip.h"
14
15struct dentry *mtk_crypto_debugfs_root;
16
17static int mtk_crypto_debugfs_read(struct seq_file *s, void *private)
18{
19 struct xfrm_params_list *xfrm_params_list;
20 struct mtk_xfrm_params *xfrm_params;
21 unsigned long flags;
22
23 xfrm_params_list = mtk_xfrm_params_list_get();
24
25 spin_lock_irqsave(&xfrm_params_list->lock, flags);
26
27 list_for_each_entry(xfrm_params, &xfrm_params_list->list, node) {
28 seq_printf(s, "XFRM STATE: spi 0x%x, cdrt_idx %3d: ",
29 htonl(xfrm_params->xs->id.spi),
30 xfrm_params->cdrt->idx);
31
32 if (xfrm_params->cdrt->type == CDRT_DECRYPT)
33 seq_puts(s, "DECRYPT\n");
34 else if (xfrm_params->cdrt->type == CDRT_ENCRYPT)
35 seq_puts(s, "ENCRYPT\n");
36 else
37 seq_puts(s, "\n");
38 }
39
40 spin_unlock_irqrestore(&xfrm_params_list->lock, flags);
41
42 return 0;
43}
44
45static int mtk_crypto_debugfs_open(struct inode *inode, struct file *file)
46{
47 return single_open(file, mtk_crypto_debugfs_read, file->private_data);
48}
49
50static ssize_t mtk_crypto_debugfs_write(struct file *file,
51 const char __user *ubuf,
52 size_t count, loff_t *ppos)
53{
54 return count;
55}
56
57static const struct file_operations mtk_crypto_debugfs_fops = {
58 .open = mtk_crypto_debugfs_open,
59 .read = seq_read,
60 .llseek = seq_lseek,
61 .write = mtk_crypto_debugfs_write,
62 .release = single_release,
63};
64
65int mtk_crypto_debugfs_init(void)
66{
67 mtk_crypto_debugfs_root = debugfs_create_dir("mtk_crypto", NULL);
68
69 debugfs_create_file("xfrm_params", 0644, mtk_crypto_debugfs_root, NULL,
70 &mtk_crypto_debugfs_fops);
71
72 return 0;
73}
74
75void mtk_crypto_debugfs_exit(void)
76{
77 debugfs_remove_recursive(mtk_crypto_debugfs_root);
78}