summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/gk20a_sysfs.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/gk20a_sysfs.c')
-rw-r--r--drivers/gpu/nvgpu/gk20a/gk20a_sysfs.c22
1 files changed, 14 insertions, 8 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a_sysfs.c b/drivers/gpu/nvgpu/gk20a/gk20a_sysfs.c
index 945b332d..2d803d0e 100644
--- a/drivers/gpu/nvgpu/gk20a/gk20a_sysfs.c
+++ b/drivers/gpu/nvgpu/gk20a/gk20a_sysfs.c
@@ -23,7 +23,6 @@
23#include <linux/kernel.h> 23#include <linux/kernel.h>
24#include <linux/fb.h> 24#include <linux/fb.h>
25#include <linux/gk20a.h> 25#include <linux/gk20a.h>
26
27#include <mach/clk.h> 26#include <mach/clk.h>
28 27
29#include "gk20a.h" 28#include "gk20a.h"
@@ -33,9 +32,6 @@
33 32
34 33
35#define PTIMER_FP_FACTOR 1000000 34#define PTIMER_FP_FACTOR 1000000
36/* PTIMER_REF_FREQ_HZ corresponds to a period of 32 nanoseconds. 32 ns is
37 the resolution of ptimer. */
38#define PTIMER_REF_FREQ_HZ 31250000
39 35
40#define ROOTRW (S_IRWXU|S_IRGRP|S_IROTH) 36#define ROOTRW (S_IRWXU|S_IRGRP|S_IROTH)
41 37
@@ -208,17 +204,27 @@ static ssize_t ptimer_scale_factor_show(struct device *dev,
208 struct device_attribute *attr, 204 struct device_attribute *attr,
209 char *buf) 205 char *buf)
210{ 206{
211 u32 tsc_freq_hz = clk_get_rate(clk_get_sys(NULL, "clk_m")); 207 struct gk20a_platform *platform = dev_get_drvdata(dev);
212 u32 scaling_factor_fp = (u32)(PTIMER_REF_FREQ_HZ) / 208 u32 src_freq_hz = platform->ptimer_src_freq;
213 ((u32)(tsc_freq_hz) / 209 u32 scaling_factor_fp;
210 ssize_t res;
211
212 if (!src_freq_hz) {
213 dev_err(dev, "reference clk_m rate is not set correctly\n");
214 return -EINVAL;
215 }
216
217 scaling_factor_fp = (u32)(PTIMER_REF_FREQ_HZ) /
218 ((u32)(src_freq_hz) /
214 (u32)(PTIMER_FP_FACTOR)); 219 (u32)(PTIMER_FP_FACTOR));
215 ssize_t res = snprintf(buf, 220 res = snprintf(buf,
216 PAGE_SIZE, 221 PAGE_SIZE,
217 "%u.%u\n", 222 "%u.%u\n",
218 scaling_factor_fp / PTIMER_FP_FACTOR, 223 scaling_factor_fp / PTIMER_FP_FACTOR,
219 scaling_factor_fp % PTIMER_FP_FACTOR); 224 scaling_factor_fp % PTIMER_FP_FACTOR);
220 225
221 return res; 226 return res;
227
222} 228}
223 229
224static DEVICE_ATTR(ptimer_scale_factor, 230static DEVICE_ATTR(ptimer_scale_factor,