diff options
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/gk20a_sysfs.c')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gk20a_sysfs.c | 22 |
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 | ||
224 | static DEVICE_ATTR(ptimer_scale_factor, | 230 | static DEVICE_ATTR(ptimer_scale_factor, |