23
23
#include <linux/init.h>
24
24
#include <linux/io.h>
25
25
#include <linux/pci.h>
26
- #include <linux/seq_file.h>
27
26
28
27
#include <asm/cpu_device_id.h>
29
28
#include <asm/pmc_core.h>
@@ -77,30 +76,18 @@ int intel_pmc_slp_s0_counter_read(u32 *data)
77
76
}
78
77
EXPORT_SYMBOL_GPL (intel_pmc_slp_s0_counter_read );
79
78
80
- #if IS_ENABLED (CONFIG_DEBUG_FS )
81
- static int pmc_core_dev_state_show (struct seq_file * s , void * unused )
79
+ static int pmc_core_dev_state_get (void * data , u64 * val )
82
80
{
83
- struct pmc_dev * pmcdev = s -> private ;
84
- u32 counter_val ;
81
+ struct pmc_dev * pmcdev = data ;
82
+ u32 value ;
85
83
86
- counter_val = pmc_core_reg_read (pmcdev ,
87
- SPT_PMC_SLP_S0_RES_COUNTER_OFFSET );
88
- seq_printf (s , "%u\n" , pmc_core_adjust_slp_s0_step (counter_val ));
84
+ value = pmc_core_reg_read (pmcdev , SPT_PMC_SLP_S0_RES_COUNTER_OFFSET );
85
+ * val = pmc_core_adjust_slp_s0_step (value );
89
86
90
87
return 0 ;
91
88
}
92
89
93
- static int pmc_core_dev_state_open (struct inode * inode , struct file * file )
94
- {
95
- return single_open (file , pmc_core_dev_state_show , inode -> i_private );
96
- }
97
-
98
- static const struct file_operations pmc_core_dev_state_ops = {
99
- .open = pmc_core_dev_state_open ,
100
- .read = seq_read ,
101
- .llseek = seq_lseek ,
102
- .release = single_release ,
103
- };
90
+ DEFINE_DEBUGFS_ATTRIBUTE (pmc_core_dev_state , pmc_core_dev_state_get , NULL , "%llu\n" );
104
91
105
92
static void pmc_core_dbgfs_unregister (struct pmc_dev * pmcdev )
106
93
{
@@ -112,12 +99,12 @@ static int pmc_core_dbgfs_register(struct pmc_dev *pmcdev)
112
99
struct dentry * dir , * file ;
113
100
114
101
dir = debugfs_create_dir ("pmc_core" , NULL );
115
- if (! dir )
102
+ if (IS_ERR_OR_NULL ( dir ) )
116
103
return - ENOMEM ;
117
104
118
105
pmcdev -> dbgfs_dir = dir ;
119
106
file = debugfs_create_file ("slp_s0_residency_usec" , S_IFREG | S_IRUGO ,
120
- dir , pmcdev , & pmc_core_dev_state_ops );
107
+ dir , pmcdev , & pmc_core_dev_state );
121
108
122
109
if (!file ) {
123
110
pmc_core_dbgfs_unregister (pmcdev );
@@ -126,16 +113,6 @@ static int pmc_core_dbgfs_register(struct pmc_dev *pmcdev)
126
113
127
114
return 0 ;
128
115
}
129
- #else
130
- static inline int pmc_core_dbgfs_register (struct pmc_dev * pmcdev )
131
- {
132
- return 0 ;
133
- }
134
-
135
- static inline void pmc_core_dbgfs_unregister (struct pmc_dev * pmcdev )
136
- {
137
- }
138
- #endif /* CONFIG_DEBUG_FS */
139
116
140
117
static const struct x86_cpu_id intel_pmc_core_ids [] = {
141
118
{ X86_VENDOR_INTEL , 6 , 0x4e , X86_FEATURE_MWAIT ,
@@ -182,10 +159,8 @@ static int pmc_core_probe(struct pci_dev *dev, const struct pci_device_id *id)
182
159
}
183
160
184
161
err = pmc_core_dbgfs_register (pmcdev );
185
- if (err < 0 ) {
186
- dev_err (& dev -> dev , "PMC Core: debugfs register failed.\n" );
187
- return err ;
188
- }
162
+ if (err < 0 )
163
+ dev_warn (& dev -> dev , "PMC Core: debugfs register failed.\n" );
189
164
190
165
pmc .has_slp_s0_res = true;
191
166
return 0 ;
0 commit comments