1 // SPDX-License-Identifier: GPL-2.0-only
2 /*
3 * Intel MIC Platform Software Stack (MPSS)
4 *
5 * Copyright(c) 2013 Intel Corporation.
6 *
7 * Disclaimer: The codes contained in these modules may be specific to
8 * the Intel Software Development Platform codenamed: Knights Ferry, and
9 * the Intel product codenamed: Knights Corner, and are not backward
10 * compatible with other Intel products. Additionally, Intel will NOT
11 * support the codes or instruction set in future products.
12 *
13 * Intel MIC Card driver.
14 */
15 #include <linux/debugfs.h>
16 #include <linux/delay.h>
17 #include <linux/seq_file.h>
18 #include <linux/interrupt.h>
19 #include <linux/device.h>
20
21 #include "../common/mic_dev.h"
22 #include "mic_device.h"
23
24 /* Debugfs parent dir */
25 static struct dentry *mic_dbg;
26
27 /**
28 * mic_intr_show - Send interrupts to host.
29 */
mic_intr_show(struct seq_file * s,void * unused)30 static int mic_intr_show(struct seq_file *s, void *unused)
31 {
32 struct mic_driver *mdrv = s->private;
33 struct mic_device *mdev = &mdrv->mdev;
34
35 mic_send_intr(mdev, 0);
36 msleep(1000);
37 mic_send_intr(mdev, 1);
38 msleep(1000);
39 mic_send_intr(mdev, 2);
40 msleep(1000);
41 mic_send_intr(mdev, 3);
42 msleep(1000);
43
44 return 0;
45 }
46
47 DEFINE_SHOW_ATTRIBUTE(mic_intr);
48
49 /**
50 * mic_create_card_debug_dir - Initialize MIC debugfs entries.
51 */
mic_create_card_debug_dir(struct mic_driver * mdrv)52 void __init mic_create_card_debug_dir(struct mic_driver *mdrv)
53 {
54 if (!mic_dbg)
55 return;
56
57 mdrv->dbg_dir = debugfs_create_dir(mdrv->name, mic_dbg);
58
59 debugfs_create_file("intr_test", 0444, mdrv->dbg_dir, mdrv,
60 &mic_intr_fops);
61 }
62
63 /**
64 * mic_delete_card_debug_dir - Uninitialize MIC debugfs entries.
65 */
mic_delete_card_debug_dir(struct mic_driver * mdrv)66 void mic_delete_card_debug_dir(struct mic_driver *mdrv)
67 {
68 if (!mdrv->dbg_dir)
69 return;
70
71 debugfs_remove_recursive(mdrv->dbg_dir);
72 }
73
74 /**
75 * mic_init_card_debugfs - Initialize global debugfs entry.
76 */
mic_init_card_debugfs(void)77 void __init mic_init_card_debugfs(void)
78 {
79 mic_dbg = debugfs_create_dir(KBUILD_MODNAME, NULL);
80 }
81
82 /**
83 * mic_exit_card_debugfs - Uninitialize global debugfs entry
84 */
mic_exit_card_debugfs(void)85 void mic_exit_card_debugfs(void)
86 {
87 debugfs_remove(mic_dbg);
88 }
89