diff options
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gk20a_scale.c | 29 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gk20a_sysfs.c | 28 |
2 files changed, 26 insertions, 31 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a_scale.c b/drivers/gpu/nvgpu/gk20a/gk20a_scale.c index d1fd71fe..8a92828f 100644 --- a/drivers/gpu/nvgpu/gk20a/gk20a_scale.c +++ b/drivers/gpu/nvgpu/gk20a/gk20a_scale.c | |||
@@ -34,30 +34,6 @@ | |||
34 | #include "clk_gk20a.h" | 34 | #include "clk_gk20a.h" |
35 | #include "gk20a_scale.h" | 35 | #include "gk20a_scale.h" |
36 | 36 | ||
37 | static ssize_t gk20a_scale_load_show(struct device *dev, | ||
38 | struct device_attribute *attr, | ||
39 | char *buf) | ||
40 | { | ||
41 | struct platform_device *pdev = to_platform_device(dev); | ||
42 | struct gk20a *g = get_gk20a(pdev); | ||
43 | u32 busy_time; | ||
44 | ssize_t res; | ||
45 | |||
46 | if (!g->power_on) { | ||
47 | busy_time = 0; | ||
48 | } else { | ||
49 | gk20a_busy(g->dev); | ||
50 | gk20a_pmu_load_norm(g, &busy_time); | ||
51 | gk20a_idle(g->dev); | ||
52 | } | ||
53 | |||
54 | res = snprintf(buf, PAGE_SIZE, "%u\n", busy_time); | ||
55 | |||
56 | return res; | ||
57 | } | ||
58 | |||
59 | static DEVICE_ATTR(load, S_IRUGO, gk20a_scale_load_show, NULL); | ||
60 | |||
61 | /* | 37 | /* |
62 | * gk20a_scale_qos_notify() | 38 | * gk20a_scale_qos_notify() |
63 | * | 39 | * |
@@ -293,9 +269,6 @@ void gk20a_scale_init(struct platform_device *pdev) | |||
293 | if (err || !profile->devfreq_profile.max_state) | 269 | if (err || !profile->devfreq_profile.max_state) |
294 | goto err_get_freqs; | 270 | goto err_get_freqs; |
295 | 271 | ||
296 | if (device_create_file(&pdev->dev, &dev_attr_load)) | ||
297 | goto err_create_sysfs_entry; | ||
298 | |||
299 | /* Store device profile so we can access it if devfreq governor | 272 | /* Store device profile so we can access it if devfreq governor |
300 | * init needs that */ | 273 | * init needs that */ |
301 | g->scale_profile = profile; | 274 | g->scale_profile = profile; |
@@ -332,8 +305,6 @@ void gk20a_scale_init(struct platform_device *pdev) | |||
332 | return; | 305 | return; |
333 | 306 | ||
334 | err_get_freqs: | 307 | err_get_freqs: |
335 | device_remove_file(&pdev->dev, &dev_attr_load); | ||
336 | err_create_sysfs_entry: | ||
337 | kfree(g->scale_profile); | 308 | kfree(g->scale_profile); |
338 | g->scale_profile = NULL; | 309 | g->scale_profile = NULL; |
339 | } | 310 | } |
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a_sysfs.c b/drivers/gpu/nvgpu/gk20a/gk20a_sysfs.c index 335c3f3b..f7e0a2b6 100644 --- a/drivers/gpu/nvgpu/gk20a/gk20a_sysfs.c +++ b/drivers/gpu/nvgpu/gk20a/gk20a_sysfs.c | |||
@@ -248,8 +248,8 @@ static ssize_t counters_show(struct device *dev, | |||
248 | 248 | ||
249 | return res; | 249 | return res; |
250 | } | 250 | } |
251 | |||
252 | static DEVICE_ATTR(counters, S_IRUGO, counters_show, NULL); | 251 | static DEVICE_ATTR(counters, S_IRUGO, counters_show, NULL); |
252 | |||
253 | static ssize_t counters_show_reset(struct device *dev, | 253 | static ssize_t counters_show_reset(struct device *dev, |
254 | struct device_attribute *attr, char *buf) | 254 | struct device_attribute *attr, char *buf) |
255 | { | 255 | { |
@@ -261,9 +261,31 @@ static ssize_t counters_show_reset(struct device *dev, | |||
261 | 261 | ||
262 | return res; | 262 | return res; |
263 | } | 263 | } |
264 | |||
265 | static DEVICE_ATTR(counters_reset, S_IRUGO, counters_show_reset, NULL); | 264 | static DEVICE_ATTR(counters_reset, S_IRUGO, counters_show_reset, NULL); |
266 | 265 | ||
266 | static ssize_t gk20a_load_show(struct device *dev, | ||
267 | struct device_attribute *attr, | ||
268 | char *buf) | ||
269 | { | ||
270 | struct platform_device *pdev = to_platform_device(dev); | ||
271 | struct gk20a *g = get_gk20a(pdev); | ||
272 | u32 busy_time; | ||
273 | ssize_t res; | ||
274 | |||
275 | if (!g->power_on) { | ||
276 | busy_time = 0; | ||
277 | } else { | ||
278 | gk20a_busy(g->dev); | ||
279 | gk20a_pmu_load_norm(g, &busy_time); | ||
280 | gk20a_idle(g->dev); | ||
281 | } | ||
282 | |||
283 | res = snprintf(buf, PAGE_SIZE, "%u\n", busy_time); | ||
284 | |||
285 | return res; | ||
286 | } | ||
287 | static DEVICE_ATTR(load, S_IRUGO, gk20a_load_show, NULL); | ||
288 | |||
267 | static ssize_t elpg_enable_store(struct device *device, | 289 | static ssize_t elpg_enable_store(struct device *device, |
268 | struct device_attribute *attr, const char *buf, size_t count) | 290 | struct device_attribute *attr, const char *buf, size_t count) |
269 | { | 291 | { |
@@ -318,6 +340,7 @@ void gk20a_remove_sysfs(struct device *dev) | |||
318 | device_remove_file(dev, &dev_attr_elpg_enable); | 340 | device_remove_file(dev, &dev_attr_elpg_enable); |
319 | device_remove_file(dev, &dev_attr_counters); | 341 | device_remove_file(dev, &dev_attr_counters); |
320 | device_remove_file(dev, &dev_attr_counters_reset); | 342 | device_remove_file(dev, &dev_attr_counters_reset); |
343 | device_remove_file(dev, &dev_attr_load); | ||
321 | device_remove_file(dev, &dev_attr_railgate_delay); | 344 | device_remove_file(dev, &dev_attr_railgate_delay); |
322 | device_remove_file(dev, &dev_attr_clockgate_delay); | 345 | device_remove_file(dev, &dev_attr_clockgate_delay); |
323 | } | 346 | } |
@@ -333,6 +356,7 @@ void gk20a_create_sysfs(struct platform_device *dev) | |||
333 | error |= device_create_file(&dev->dev, &dev_attr_elpg_enable); | 356 | error |= device_create_file(&dev->dev, &dev_attr_elpg_enable); |
334 | error |= device_create_file(&dev->dev, &dev_attr_counters); | 357 | error |= device_create_file(&dev->dev, &dev_attr_counters); |
335 | error |= device_create_file(&dev->dev, &dev_attr_counters_reset); | 358 | error |= device_create_file(&dev->dev, &dev_attr_counters_reset); |
359 | error |= device_create_file(&dev->dev, &dev_attr_load); | ||
336 | error |= device_create_file(&dev->dev, &dev_attr_railgate_delay); | 360 | error |= device_create_file(&dev->dev, &dev_attr_railgate_delay); |
337 | error |= device_create_file(&dev->dev, &dev_attr_clockgate_delay); | 361 | error |= device_create_file(&dev->dev, &dev_attr_clockgate_delay); |
338 | 362 | ||